<?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>96018</bug_id>
          
          <creation_ts>2012-09-06 13:33:32 -0700</creation_ts>
          <short_desc>[chromium] Do not delete CCPrioritizedTexture::Backing structures on the main thread</short_desc>
          <delta_ts>2012-09-09 16:59:23 -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>
          <dependson>96117</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Christopher Cameron">ccameron</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>fsamuel</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713636</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-06 13:33:32 -0700</bug_when>
    <thetext>[chromium] Do not delete CCPrioritizedTexture::Backing structures on the main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713638</commentid>
    <comment_count>1</comment_count>
      <attachid>162571</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-06 13:36:46 -0700</bug_when>
    <thetext>Created attachment 162571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713639</commentid>
    <comment_count>2</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-06 13:37:57 -0700</bug_when>
    <thetext>Adding jamesr and epenner for review.

This is a step towards simplifying the change for bug 95057.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713699</commentid>
    <comment_count>3</comment_count>
      <attachid>162571</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-06 14:23:31 -0700</bug_when>
    <thetext>Comment on attachment 162571
Patch

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

&gt; Source/WebCore/ChangeLog:17
&gt; +        No new tests (OOPS!).

You&apos;ll have to do something about this line or an svn presubmit will reject your patch.  Describing the existing tests that cover this would be sufficient IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713707</commentid>
    <comment_count>4</comment_count>
      <attachid>162586</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-06 14:27:18 -0700</bug_when>
    <thetext>Created attachment 162586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713708</commentid>
    <comment_count>5</comment_count>
      <attachid>162571</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-09-06 14:27:26 -0700</bug_when>
    <thetext>Comment on attachment 162571
Patch

Seems okay to me. I&apos;d be fine creating a one-off list for the impl thread to use and keep this totally single threaded, but by splitting ownership of this class between threads we won&apos;t even need such a list?

It looks like the only function that executes on the main thread and touches m_backings is PrioritizeTextures(), so it shouldn&apos;t be too hard to never touch m_backings on the main thread with a bit more work. Everything else occurs during the commit.

I&apos;m fine with this as long as at the end of the day this class can still be used on one thread as well (by just removing the thread asserts if that ever happens).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713713</commentid>
    <comment_count>6</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-06 14:31:12 -0700</bug_when>
    <thetext>Thanks!  ChangeLog fixed.

(In reply to comment #5)
&gt; (From update of attachment 162571 [details])
&gt; Seems okay to me. I&apos;d be fine creating a one-off list for the impl thread to use and keep this totally single threaded, but by splitting ownership of this class between threads we won&apos;t even need such a list?

Yes, we&apos;ll be able to avoid the extra list.

&gt; It looks like the only function that executes on the main thread and touches m_backings is PrioritizeTextures(), so it shouldn&apos;t be too hard to never touch m_backings on the main thread with a bit more work. Everything else occurs during the commit.

Yes, looks like it won&apos;t need to do that much.

&gt; I&apos;m fine with this as long as at the end of the day this class can still be used on one thread as well (by just removing the thread asserts if that ever happens).

Yes, if/when we need it to be single-threaded (e.g, impl side painting), we&apos;ll need to kill off the asserts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714074</commentid>
    <comment_count>7</comment_count>
      <attachid>162586</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 21:39:27 -0700</bug_when>
    <thetext>Comment on attachment 162586
Patch

Clearing flags on attachment: 162586

Committed r127820: &lt;http://trac.webkit.org/changeset/127820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714075</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 21:39:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714607</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 09:37:34 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714838</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 12:17:36 -0700</bug_when>
    <thetext>Fady - do you have any links or logs from failing runs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714989</commentid>
    <comment_count>11</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 14:31:22 -0700</bug_when>
    <thetext>Try running all the webkit_unit_tests in debug. I was seeing an assertion on &quot;isMainThread&quot; there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714991</commentid>
    <comment_count>12</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-09-07 14:33:11 -0700</bug_when>
    <thetext>Aha I found it in my scrollback also:

[ RUN      ] WebLayerTreeViewSingleThreadTest.InstrumentationCallbacks
ASSERTION FAILED: s_mainThread
../../third_party/WebKit/Source/WebCore/platform/graphics/chromium/cc/CCProxy.cpp(84) : static bool WebCore::CCProxy::isMainThread()
1   0x7f52cce762cd
2   0x7f52cce46e37
3   0x7f52cce469d9
4   0x7f52cba09f27
5   0x7f52cba09df6 WebKit::WebLayerTreeView::create(WebKit::WebLayerTreeViewClient*, WebKit::WebLayer const&amp;, WebKit::WebLayerTreeView::Settings const&amp;)
6   0x7f52cb9a98a6
7   0x7f52cbab8173
8   0x7f52cbaaeb5e
9   0x7f52cbaa5fe3
10  0x7f52cbaa673b
11  0x7f52cbaa6ca7
12  0x7f52cbaaafc5
13  0x7f52cbab4c43
14  0x7f52cbab02ae
15  0x7f52cbaaacb4
16  0x7f52cbf4ff35
17  0x7f52cb54361a WebKit::RunAllUnitTests()
18  0x4345cc
19  0x7f52c587c76d __libc_start_main
20  0x4344d9
[18972:18972:0907/163532:237955112578:ERROR:process_util_posix.cc(143)] Received signal 11
	base::debug::StackTrace::StackTrace() [0x7f52cfe277fe]
	base::(anonymous namespace)::StackDumpSignalHandler() [0x7f52cfe9d2e4]
	0x7f52c58914c0
	WebCore::CCProxy::isMainThread() [0x7f52cce762dc]
	WebCore::CCLayerTreeHost::CCLayerTreeHost() [0x7f52cce46e37]
	WebCore::CCLayerTreeHost::create() [0x7f52cce469d9]
	WebKit::WebLayerTreeViewImpl::initialize() [0x7f52cba09f27]
	WebKit::WebLayerTreeView::create() [0x7f52cba09df6]
	(anonymous namespace)::WebLayerTreeViewTestBase::SetUp() [0x7f52cb9a98a6]
	testing::internal::HandleSehExceptionsInMethodIfSupported&lt;&gt;() [0x7f52cbab8173]
	testing::internal::HandleExceptionsInMethodIfSupported&lt;&gt;() [0x7f52cbaaeb5e]
	testing::Test::Run() [0x7f52cbaa5fe3]
	testing::TestInfo::Run() [0x7f52cbaa673b]
	testing::TestCase::Run() [0x7f52cbaa6ca7]
	testing::internal::UnitTestImpl::RunAllTests() [0x7f52cbaaafc5]
	testing::internal::HandleSehExceptionsInMethodIfSupported&lt;&gt;() [0x7f52cbab4c43]
	testing::internal::HandleExceptionsInMethodIfSupported&lt;&gt;() [0x7f52cbab02ae]
	testing::UnitTest::Run() [0x7f52cbaaacb4]
	base::TestSuite::Run() [0x7f52cbf4ff35]
	WebKit::RunAllUnitTests() [0x7f52cb54361a]
	main [0x4345cc]
	0x7f52c587c76d
	0x4344d9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714992</commentid>
    <comment_count>13</comment_count>
    <who name="Fady Samuel">fsamuel</who>
    <bug_when>2012-09-07 14:33:38 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Try running all the webkit_unit_tests in debug. I was seeing an assertion on &quot;isMainThread&quot; there.

Thanks Dana! I saw this assert fail in garden-o-matic and rolled out the patch forgetting to update the bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714998</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-07 14:41:18 -0700</bug_when>
    <thetext>Looks like this test didn&apos;t WebCompositorSupport::initialize() so our debug statics aren&apos;t set up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715056</commentid>
    <comment_count>15</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-07 15:37:41 -0700</bug_when>
    <thetext>This was a different issue -- stack trace is

ASSERTION FAILED: CCProxy::isImplThread() &amp;&amp; CCProxy::isMainThreadBlocked()
WebCore::CCPrioritizedTextureManager::clearAllMemory(WebCore::CCResourceProvider *)
WebCore::CCPrioritizedTextureManager::clearAllMemory(WebCore::CCResourceProvider*)
WebCore::CCLayerTreeHost::deleteContentsTexturesOnImplThread(WebCore::CCResourceProvider*)
WebCore::CCSingleThreadProxy::recreateContext()
WebCore::CCLayerTreeHost::recreateContext()
WebCore::CCLayerTreeHost::initializeRendererIfNeeded()
WebCore::CCSingleThreadProxy::commitAndComposite()
WebCore::CCSingleThreadProxy::compositeAndReadback(void*, WebCore::IntRect const&amp;)
WebCore::CCLayerTreeHost::compositeAndReadback(void*, WebCore::IntRect const&amp;)
...

The issue is that CCSingleThreadProxy::recreateContext doesn&apos;t correctly specify that the main thread is blocked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715077</commentid>
    <comment_count>16</comment_count>
      <attachid>162892</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-09-07 15:54:12 -0700</bug_when>
    <thetext>Created attachment 162892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715635</commentid>
    <comment_count>17</comment_count>
      <attachid>162892</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 16:59:18 -0700</bug_when>
    <thetext>Comment on attachment 162892
Patch

Clearing flags on attachment: 162892

Committed r128005: &lt;http://trac.webkit.org/changeset/128005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715636</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-09 16:59:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162571</attachid>
            <date>2012-09-06 13:36:46 -0700</date>
            <delta_ts>2012-09-07 15:54:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96018-20120906133626.patch</filename>
            <type>text/plain</type>
            <size>10806</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEzOThhZjJmNmQ0MTNi
M2RhNTdlMmMxZjUwOGUwZDdjODI0MWEwZC4uYWE3NDM2MTNlM2QyYzgxNzUxNTBlNTkwZjU4OWNj
NTRjYTRjYWRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA5LTA2ICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRG8gbm90IGRlbGV0ZSB0ZXh0dXJlIGJhY2tpbmcgc3RydWN0dXJlcyBvbiB0aGUgbWFp
biB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk2MDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RG8gbm90IGRlbGV0ZSBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyBzdHJ1Y3R1cmVzIG9u
IHRoZSBtYWluCisgICAgICAgIHRocmVhZC4gIEluc3RlYWQsIHVubGluayB0aGVtIGZyb20gdGhl
aXIgb3duaW5nIENDUHJpb3JpdGl6ZWRUZXh0dXJlCisgICAgICAgIGluIHRoZSBtYWluIHRocmVh
ZCwgYW5kIGhhdmUgdGhlIGltcGwgdGhyZWFkIHRoZW4gZGVsZXRlIGFsbCB1bmxpbmtlZAorICAg
ICAgICB0ZXh0dXJlcy4KKworICAgICAgICBUaGlzIGlzIHRvd2FyZHMgaGF2aW5nIHRoZSBtYWlu
IHRocmVhZCBub3QgYWNjZXNzIHRoZSBtX2JhY2tpbmdzIHNldCwKKyAgICAgICAgd2hpY2ggd2ls
bCBhbGxvdyB0aGUgaW1wbCB0aHJlYWQgdG8gdHJhdmVyc2UgdGhhdCBzZXQgd2hlbiBkZWxldGlu
ZworICAgICAgICByZXNvdXJjZXMgaW4gcmVzcG9uc2UgdG8gR1BVIG1lbW9yeSBtYW5hZ2VtZW50
IGV2ZW50cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnVubGlua0FsbENvbnRlbnRUZXh0dXJlcyk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6ZGVs
ZXRlVW5saW5rZWRUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmNsZWFyQWxsTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6dW5saW5rQWxsQmFja2luZ3MpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUFsbFVubGlu
a2VkQmFja2luZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oOgorICAgICAgICAoQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJv
eHk6OmNvbW1pdEFuZENvbXBvc2l0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6CisKIDIwMTItMDktMDUgIEJydW5vIGRlIE9saXZl
aXJhIEFiaW5hZGVyICA8YnJ1bm8uYWJpbmFkZXJAYmFzeXNrb20uY29tPgogCiAgICAgICAgIE1h
a2UgUmVuZGVyU3R5bGU6OmNvbG9ySW5jbHVkaW5nRmFsbGJhY2sgdXNlIHByaXZhdGUgZ2V0dGVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNDAyNmVlODIzZGRiMDE0NzBl
N2Y2ZDY3ODY5MmU2NWU2MTMzMTdiOC4uODA1MGQzYTViZDEzYjE3NDFkZDE4OTExMWNiMWVkZGVi
ZWQwNDE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00MTQsMTEgKzQx
NCwxOCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAg
ICAgbV9wcm94eS0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmV2aWN0QWxsQ29udGVudFRleHR1cmVzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1bmxp
bmtBbGxDb250ZW50VGV4dHVyZXMoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKG1fY29udGVudHNUZXh0dXJlTWFuYWdlci5nZXQoKSk7Ci0gICAg
bV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5hbGxCYWNraW5nVGV4dHVyZXNXZXJlRGVsZXRlZCgp
OworICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+dW5saW5rQWxsQmFja2luZ3MoKTsKK30K
Kwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZVVubGlua2VkVGV4dHVyZXMoKQoreworICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRC
bG9ja2VkKCkpOworICAgIEFTU0VSVChtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwor
ICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZGVsZXRlQWxsVW5saW5rZWRCYWNraW5ncygp
OwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBzY2FsZSwg
ZG91YmxlIGR1cmF0aW9uU2VjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA3NDI3
ODhjNzA2NzgzYmI2MzhmNTNkNjI2ZjJkYzVjYzFlM2E1ODBhLi41ODE4MGZhNWU0YjM0ZGRjNTY1
ODlmOGJhMjlhNDc0MGNmMTY5MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAt
MjEyLDExICsyMTIsOCBAQCBwdWJsaWM6CiAKICAgICBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIqIGNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKIAotICAgIC8vIFRoaXMgd2lsbCBj
YXVzZSBjb250ZW50cyB0ZXh0dXJlIG1hbmFnZXIgdG8gZXZpY3QgYWxsIHRleHR1cmVzLCBidXQK
LSAgICAvLyB3aXRob3V0IGRlbGV0aW5nIHRoZW0uIFRoaXMgaGFwcGVucyBhZnRlciBhbGwgY29u
dGVudCB0ZXh0dXJlcyBoYXZlCi0gICAgLy8gYWxyZWFkeSBiZWVuIGRlbGV0ZWQgb24gaW1wbCwg
YWZ0ZXIgZ2V0dGluZyBhIDAgYWxsb2NhdGlvbiBsaW1pdC4KLSAgICAvLyBTZXQgZHVyaW5nIGEg
Y29tbWl0LCBidXQgYmVmb3JlIHVwZGF0ZUxheWVycy4KLSAgICB2b2lkIGV2aWN0QWxsQ29udGVu
dFRleHR1cmVzKCk7CisgICAgdm9pZCB1bmxpbmtBbGxDb250ZW50VGV4dHVyZXMoKTsKKyAgICB2
b2lkIGRlbGV0ZVVubGlua2VkVGV4dHVyZXMoKTsKIAogICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQogICAgIHZvaWQgc2V0VmlzaWJsZShib29sKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDgz
ZDY4YWQwNzFlZGI2NTgyODI4ODlhYmJiMDA3ZjU3OGViYTI0NjAuLjlkM2VmYjRhMTIwMzEzNGQx
ZThiZDliZDAzNDYzZTgyNDA1MmZlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcApAQCAtMjQ4LDYgKzI0OCw4IEBAIHZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpCiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFs
bE1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CisgICAgQVNT
RVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpICYmIENDUHJveHk6OmlzTWFpblRocmVhZEJsb2Nr
ZWQoKSk7CisgICAgQVNTRVJUKHJlc291cmNlUHJvdmlkZXIpOwogICAgIC8vIFVubGluayBhbmQg
ZGVzdHJveSBhbGwgYmFja2luZyB0ZXh0dXJlcy4KICAgICB3aGlsZSAobV9iYWNraW5ncy5zaXpl
KCkgPiAwKSB7CiAgICAgICAgIEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5i
ZWdpbigpOwpAQCAtMjU3LDEyICsyNTksMjQgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmNsZWFyQWxsTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm8KICAg
ICB9CiB9CiAKLXZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphbGxCYWNraW5nVGV4
dHVyZXNXZXJlRGVsZXRlZCgpCit2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5s
aW5rQWxsQmFja2luZ3MoKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CisgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsg
aXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkKKyAgICAgICAgaWYgKCgqaXQpLT5vd25lcigp
KQorICAgICAgICAgICAgKCppdCktPm93bmVyKCktPnVubGluaygpOworfQorCit2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6ZGVsZXRlQWxsVW5saW5rZWRCYWNraW5ncygpCiB7Ci0g
ICAgLy8gU2FtZSBhcyBjbGVhckFsbE1lbW9yeSwgZXhjZXB0IGFsbCBvdXIgdGV4dHVyZXMgd2Vy
ZSBhbHJlYWR5Ci0gICAgLy8gZGVsZXRlZCBleHRlcm5hbGx5LCBzbyB3ZSBkb24ndCBkZWxldGUg
dGhlbS4gUGFzc2luZyBubwotICAgIC8vIHJlc291cmNlUHJvdmlkZXIgcmVzdWx0cyBpbiBsZWFr
aW5nIHRoZSAobm93IGludmFsaWQpIHRleHR1cmUgaWRzLgotICAgIGNsZWFyQWxsTWVtb3J5KDAp
OworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01haW5U
aHJlYWRCbG9ja2VkKCkpOworICAgIEJhY2tpbmdWZWN0b3IgYmFja2luZ3NUb0RlbGV0ZTsKKyAg
ICBmb3IgKEJhY2tpbmdTZXQ6Oml0ZXJhdG9yIGl0ID0gbV9iYWNraW5ncy5iZWdpbigpOyBpdCAh
PSBtX2JhY2tpbmdzLmVuZCgpOyArK2l0KQorICAgICAgICBpZiAoISgqaXQpLT5vd25lcigpKQor
ICAgICAgICAgICAgYmFja2luZ3NUb0RlbGV0ZS5hcHBlbmQoKCppdCkpOworCisgICAgZm9yIChC
YWNraW5nVmVjdG9yOjppdGVyYXRvciBpdCA9IGJhY2tpbmdzVG9EZWxldGUuYmVnaW4oKTsgaXQg
IT0gYmFja2luZ3NUb0RlbGV0ZS5lbmQoKTsgKytpdCkKKyAgICAgICAgZGVzdHJveUJhY2tpbmco
KCppdCksIDApOwogfQogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVnaXN0
ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAppbmRleCAxM2RiYzUxNzZiY2Q3OGVl
Mjk3MDkwYTY3NjUxMjQ1ZjliZDc2NGNhLi5lOTBiMjUzNTVlYmRjYTBjNjU4OGNhYWY4Y2FhNmFj
OGYzZDhkYWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIuaApAQCAtNzgsNyArNzgsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlZHVjZU1lbW9y
eShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKICAgICB2b2lkIGNsZWFyQWxsTWVtb3J5KENDUmVzb3Vy
Y2VQcm92aWRlciopOwotICAgIHZvaWQgYWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKTsK
KyAgICB2b2lkIHVubGlua0FsbEJhY2tpbmdzKCk7CisgICAgdm9pZCBkZWxldGVBbGxVbmxpbmtl
ZEJhY2tpbmdzKCk7CiAKICAgICB2b2lkIGFjcXVpcmVCYWNraW5nVGV4dHVyZUlmTmVlZGVkKEND
UHJpb3JpdGl6ZWRUZXh0dXJlKiwgQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNjg3NmVhMjE4OGJhZjY2NjhhMjlhYzM3
YzFjZDM4YzhjYjQ0MWNlOS4uZTMyYjA3YTAyYjU4ZWEyMGQ5MTY5ZDVkOTliMTk5NDg2ZWVjOWQ0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTI5NywxMiAr
Mjk3LDE0IEBAIGJvb2wgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9zaXRlKCkK
IHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCi0KICAgICBpZiAoIW1f
bGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZVJlbmRlcmVySWZOZWVkZWQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZXNQdXJnZWQoKSkKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT5ldmljdEFsbENvbnRlbnRUZXh0
dXJlcygpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzUHVy
Z2VkKCkpIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51bmxpbmtBbGxDb250ZW50VGV4dHVy
ZXMoKTsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2Nr
ZWQgaW1wbEFuZE1haW5CbG9ja2VkOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZVVu
bGlua2VkVGV4dHVyZXMoKTsKKyAgICB9CiAKICAgICBDQ1RleHR1cmVVcGRhdGVRdWV1ZSBxdWV1
ZTsKICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhxdWV1ZSwgbV9sYXllclRyZWVI
b3N0SW1wbC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IGIzYWY1OGU5MzJhZTMyYjVkMmIyODgyMjBlMTE2N2Q4MTA2MTcwYjQu
LjU5YmI3OTdmMDA0ODI2MWUwZDBkZGM3ZTc3Y2EzMWE5Nzc4MWU2NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lKCkKICAgICB9CiAKICAgICBpZiAocmVxdWVzdC0+Y29udGVudHNUZXh0dXJlc1dl
cmVEZWxldGVkKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmV2aWN0QWxsQ29udGVudFRleHR1
cmVzKCk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dW5saW5rQWxsQ29udGVudFRleHR1cmVz
KCk7CiAKICAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+IHF1ZXVlID0gYWRvcHRQdHIo
bmV3IENDVGV4dHVyZVVwZGF0ZVF1ZXVlKTsKICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxh
eWVycygqKHF1ZXVlLmdldCgpKSwgcmVxdWVzdC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMp
OwpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBs
ZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiB7CiAgICAgVFJB
Q0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQiKTsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
KTsKLSAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQo
KSAmJiBpc01haW5UaHJlYWRCbG9ja2VkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1w
bFRocmVhZCk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5k
aW5nKCkpOwogCkBAIC02MDcsMTUgKzYwNywyMCBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFjb250ZW50c1RleHR1cmVzV2VyZURl
bGV0ZWQgJiYgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpKSB7
CisgICAgaWYgKGNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkgeworICAgICAgICBBU1NFUlQo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpKTsKKyAgICAgICAg
Ly8gV2UgdW5saW5rZWQgYWxsIHRleHR1cmVzIG9uIHRoZSBtYWluIHRocmVhZCwgZGVsZXRlIHRo
ZW0gbm93LgorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmRlbGV0ZVVubGlua2VkVGV4dHVyZXMo
KTsKKyAgICAgICAgLy8gTWFyayB0aGF0IHdlIGNhbiBzdGFydCBkcmF3aW5nIGFnYWluIHdoZW4g
dGhpcyBjb21taXQgaXMgY29tcGxldGUuCisgICAgICAgIG1fcmVzZXRDb250ZW50c1RleHR1cmVz
UHVyZ2VkQWZ0ZXJDb21taXRPbkltcGxUaHJlYWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpKSB7CiAgICAgICAgIC8v
IFdlIHB1cmdlZCB0aGUgY29udGVudCB0ZXh0dXJlcyBvbiB0aGUgaW1wbCB0aHJlYWQgYmV0d2Vl
biB0aGUgdGltZSB3ZQogICAgICAgICAvLyBwb3N0ZWQgdGhlIGJlZ2luRnJhbWUgdGFzayBhbmQg
bm93LCBtZWFuaW5nIHdlIGhhdmUgYSBidW5jaCBvZgogICAgICAgICAvLyB1cGxvYWRzIHRoYXQg
YXJlIG5vdyBpbnZhbGlkLiBDbGVhciB0aGUgdXBsb2FkcyAodGhleSBhbGwgZ28gdG8KICAgICAg
ICAgLy8gY29udGVudCB0ZXh0dXJlcyksIGFuZCBraWNrIGFub3RoZXIgY29tbWl0IHRvIGZpbGwg
dGhlbSBhZ2Fpbi4KICAgICAgICAgcXVldWUtPmNsZWFyVXBsb2FkcygpOwogICAgICAgICBzZXRO
ZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwotICAgIH0gZWxzZQotICAgICAgICBtX3Jlc2V0Q29u
dGVudHNUZXh0dXJlc1B1cmdlZEFmdGVyQ29tbWl0T25JbXBsVGhyZWFkID0gdHJ1ZTsKKyAgICB9
CiAKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZCA9IEND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OmNyZWF0ZShDQ1Byb3h5OjppbXBsVGhyZWFkKCksIHF1
ZXVlLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPnJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1w
bC0+cmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCkpOwogICAgIG1fY29tbWl0Q29tcGxldGlv
bkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162586</attachid>
            <date>2012-09-06 14:27:18 -0700</date>
            <delta_ts>2012-09-07 15:54:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96018-20120906142659.patch</filename>
            <type>text/plain</type>
            <size>10900</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEzOThhZjJmNmQ0MTNi
M2RhNTdlMmMxZjUwOGUwZDdjODI0MWEwZC4uMjAxMjQ2ZjQ5MzJlOTE0NzY1MGIzYzU5ZTU0OTM4
ZDcyZjE2ZDcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA5LTA2ICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRG8gbm90IGRlbGV0ZSB0ZXh0dXJlIGJhY2tpbmcgc3RydWN0dXJlcyBvbiB0aGUgbWFp
biB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk2MDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RG8gbm90IGRlbGV0ZSBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyBzdHJ1Y3R1cmVzIG9u
IHRoZSBtYWluCisgICAgICAgIHRocmVhZC4gIEluc3RlYWQsIHVubGluayB0aGVtIGZyb20gdGhl
aXIgb3duaW5nIENDUHJpb3JpdGl6ZWRUZXh0dXJlCisgICAgICAgIGluIHRoZSBtYWluIHRocmVh
ZCwgYW5kIGhhdmUgdGhlIGltcGwgdGhyZWFkIHRoZW4gZGVsZXRlIGFsbCB1bmxpbmtlZAorICAg
ICAgICB0ZXh0dXJlcy4KKworICAgICAgICBUaGlzIGlzIHRvd2FyZHMgaGF2aW5nIHRoZSBtYWlu
IHRocmVhZCBub3QgYWNjZXNzIHRoZSBtX2JhY2tpbmdzIHNldCwKKyAgICAgICAgd2hpY2ggd2ls
bCBhbGxvdyB0aGUgaW1wbCB0aHJlYWQgdG8gdHJhdmVyc2UgdGhhdCBzZXQgd2hlbiBkZWxldGlu
ZworICAgICAgICByZXNvdXJjZXMgaW4gcmVzcG9uc2UgdG8gR1BVIG1lbW9yeSBtYW5hZ2VtZW50
IGV2ZW50cy4KKworICAgICAgICBUZXN0ZWQgYnkgZXhpc3RpbmcgZXZpY3Rpb24gdGVzdHMgKEND
TGF5ZXJUcmVlSG9zdFRlc3QncworICAgICAgICBUZXN0RXZpY3RUZXh0dXJlcywgTG9zdENvbnRl
eHRBZnRlckV2aWN0VGV4dHVyZXMpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0Ojp1bmxpbmtBbGxDb250ZW50VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZVVubGlua2VkVGV4dHVyZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGlua0Fs
bEJhY2tpbmdzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWxldGVBbGxVbmxpbmtlZEJhY2tpbmdzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3Np
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQpOgorCiAyMDEyLTA5LTA1ICBCcnVubyBkZSBPbGl2ZWlyYSBBYmluYWRlciAgPGJydW5v
LmFiaW5hZGVyQGJhc3lza29tLmNvbT4KIAogICAgICAgICBNYWtlIFJlbmRlclN0eWxlOjpjb2xv
ckluY2x1ZGluZ0ZhbGxiYWNrIHVzZSBwcml2YXRlIGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDQwMjZlZTgyM2RkYjAxNDcwZTdmNmQ2Nzg2OTJlNjVlNjEzMzE3
YjguLjgwNTBkM2E1YmQxM2IxNzQxZGQxODkxMTFjYjFlZGRlYmVkMDQxNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNDE0LDExICs0MTQsMTggQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fcHJveHktPnNldFZpc2li
bGUodmlzaWJsZSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpldmljdEFsbENvbnRlbnRU
ZXh0dXJlcygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dW5saW5rQWxsQ29udGVudFRleHR1cmVz
KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCht
X2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwotICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlci0+YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKTsKKyAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPnVubGlua0FsbEJhY2tpbmdzKCk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjpkZWxldGVVbmxpbmtlZFRleHR1cmVzKCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgpKTsKKyAgICBBU1NF
UlQobV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVy
ZU1hbmFnZXItPmRlbGV0ZUFsbFVubGlua2VkQmFja2luZ3MoKTsKIH0KIAogdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBv
c2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNzQyNzg4YzcwNjc4M2JiNjM4ZjUzZDYy
NmYyZGM1Y2MxZTNhNTgwYS4uNTgxODBmYTVlNGIzNGRkYzU2NTg5ZjhiYTI5YTQ3NDBjZjE2OTJk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTIxMiwxMSArMjEyLDggQEAgcHVi
bGljOgogCiAgICAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBjb250ZW50c1RleHR1cmVN
YW5hZ2VyKCkgY29uc3Q7CiAKLSAgICAvLyBUaGlzIHdpbGwgY2F1c2UgY29udGVudHMgdGV4dHVy
ZSBtYW5hZ2VyIHRvIGV2aWN0IGFsbCB0ZXh0dXJlcywgYnV0Ci0gICAgLy8gd2l0aG91dCBkZWxl
dGluZyB0aGVtLiBUaGlzIGhhcHBlbnMgYWZ0ZXIgYWxsIGNvbnRlbnQgdGV4dHVyZXMgaGF2ZQot
ICAgIC8vIGFscmVhZHkgYmVlbiBkZWxldGVkIG9uIGltcGwsIGFmdGVyIGdldHRpbmcgYSAwIGFs
bG9jYXRpb24gbGltaXQuCi0gICAgLy8gU2V0IGR1cmluZyBhIGNvbW1pdCwgYnV0IGJlZm9yZSB1
cGRhdGVMYXllcnMuCi0gICAgdm9pZCBldmljdEFsbENvbnRlbnRUZXh0dXJlcygpOworICAgIHZv
aWQgdW5saW5rQWxsQ29udGVudFRleHR1cmVzKCk7CisgICAgdm9pZCBkZWxldGVVbmxpbmtlZFRl
eHR1cmVzKCk7CiAKICAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7
IH0KICAgICB2b2lkIHNldFZpc2libGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcAppbmRleCA4M2Q2OGFkMDcxZWRiNjU4MjgyODg5
YWJiYjAwN2Y1NzhlYmEyNDYwLi45ZDNlZmI0YTEyMDMxMzRkMWU4YmQ5YmQwMzQ2M2U4MjQwNTJm
ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
ci5jcHAKQEAgLTI0OCw2ICsyNDgsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6cmVkdWNlTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aQogCiB2b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJBbGxNZW1vcnkoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpOworICAgIEFTU0VSVChy
ZXNvdXJjZVByb3ZpZGVyKTsKICAgICAvLyBVbmxpbmsgYW5kIGRlc3Ryb3kgYWxsIGJhY2tpbmcg
dGV4dHVyZXMuCiAgICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkgewogICAgICAgICBC
YWNraW5nU2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsKQEAgLTI1NywxMiAr
MjU5LDI0IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9y
eShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvCiAgICAgfQogfQogCi12b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKQor
dm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGlua0FsbEJhY2tpbmdzKCkKK3sK
KyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworICAgIGZvciAoQmFja2luZ1Nl
dDo6aXRlcmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IG1fYmFja2luZ3MuZW5k
KCk7ICsraXQpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSkKKyAgICAgICAgICAgICgqaXQp
LT5vd25lcigpLT51bmxpbmsoKTsKK30KKwordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OmRlbGV0ZUFsbFVubGlua2VkQmFja2luZ3MoKQogewotICAgIC8vIFNhbWUgYXMgY2xlYXJB
bGxNZW1vcnksIGV4Y2VwdCBhbGwgb3VyIHRleHR1cmVzIHdlcmUgYWxyZWFkeQotICAgIC8vIGRl
bGV0ZWQgZXh0ZXJuYWxseSwgc28gd2UgZG9uJ3QgZGVsZXRlIHRoZW0uIFBhc3Npbmcgbm8KLSAg
ICAvLyByZXNvdXJjZVByb3ZpZGVyIHJlc3VsdHMgaW4gbGVha2luZyB0aGUgKG5vdyBpbnZhbGlk
KSB0ZXh0dXJlIGlkcy4KLSAgICBjbGVhckFsbE1lbW9yeSgwKTsKKyAgICBBU1NFUlQoQ0NQcm94
eTo6aXNJbXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgpKTsKKyAg
ICBCYWNraW5nVmVjdG9yIGJhY2tpbmdzVG9EZWxldGU7CisgICAgZm9yIChCYWNraW5nU2V0Ojpp
dGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsg
KytpdCkKKyAgICAgICAgaWYgKCEoKml0KS0+b3duZXIoKSkKKyAgICAgICAgICAgIGJhY2tpbmdz
VG9EZWxldGUuYXBwZW5kKCgqaXQpKTsKKworICAgIGZvciAoQmFja2luZ1ZlY3Rvcjo6aXRlcmF0
b3IgaXQgPSBiYWNraW5nc1RvRGVsZXRlLmJlZ2luKCk7IGl0ICE9IGJhY2tpbmdzVG9EZWxldGUu
ZW5kKCk7ICsraXQpCisgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCAwKTsKIH0KIAogdm9p
ZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRp
emVkVGV4dHVyZSogdGV4dHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyLmgKaW5kZXggMTNkYmM1MTc2YmNkNzhlZTI5NzA5MGE2NzY1MTI0NWY5YmQ3
NjRjYS4uZTkwYjI1MzU1ZWJkY2EwYzY1ODhjYWFmOGNhYTZhYzhmM2Q4ZGFlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKQEAgLTc4LDcgKzc4
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVy
Kik7CiAgICAgdm9pZCBjbGVhckFsbE1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2
b2lkIGFsbEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKCk7CisgICAgdm9pZCB1bmxpbmtBbGxC
YWNraW5ncygpOworICAgIHZvaWQgZGVsZXRlQWxsVW5saW5rZWRCYWNraW5ncygpOwogCiAgICAg
dm9pZCBhY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSos
IENDUmVzb3VyY2VQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwCmluZGV4IDY4NzZlYTIxODhiYWY2NjY4YTI5YWMzN2MxY2QzOGM4Y2I0NDFjZTkuLmUz
MmIwN2EwMmI1OGVhMjBkOTE2OWQ1ZDk5YjE5OTQ4NmVlYzlkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0yOTcsMTIgKzI5NywxNCBAQCBib29sIENDU2lu
Z2xlVGhyZWFkUHJveHk6OmNvbW1pdEFuZENvbXBvc2l0ZSgpCiB7CiAgICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKIAotCiAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmluaXRp
YWxpemVSZW5kZXJlcklmTmVlZGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzUHVyZ2VkKCkpCi0gICAgICAg
IG1fbGF5ZXJUcmVlSG9zdC0+ZXZpY3RBbGxDb250ZW50VGV4dHVyZXMoKTsKKyAgICBpZiAobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1cmdlZCgpKSB7CisgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dW5saW5rQWxsQ29udGVudFRleHR1cmVzKCk7CisgICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkIGltcGxBbmRNYWluQmxvY2tl
ZDsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5kZWxldGVVbmxpbmtlZFRleHR1cmVzKCk7Cisg
ICAgfQogCiAgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUgcXVldWU7CiAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMocXVldWUsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFsbG9j
YXRpb25MaW1pdEJ5dGVzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBiM2Fm
NThlOTMyYWUzMmI1ZDJiMjg4MjIwZTExNjdkODEwNjE3MGI0Li41OWJiNzk3ZjAwNDgyNjFlMGQw
ZGRjN2U3N2NhMzFhOTc3ODFlNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAt
NTU1LDcgKzU1NSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgfQog
CiAgICAgaWYgKHJlcXVlc3QtPmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkKLSAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5ldmljdEFsbENvbnRlbnRUZXh0dXJlcygpOworICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnVubGlua0FsbENvbnRlbnRUZXh0dXJlcygpOwogCiAgICAgT3duUHRyPEND
VGV4dHVyZVVwZGF0ZVF1ZXVlPiBxdWV1ZSA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVR
dWV1ZSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKihxdWV1ZS5nZXQoKSks
IHJlcXVlc3QtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKTsKQEAgLTU5Nyw3ICs1OTcsNyBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCogY29tcGxldGlvbgogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NU
aHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIik7CiAgICAgQVNTRVJU
KCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKGlzSW1w
bFRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkgJiYgaXNNYWluVGhyZWFkQmxv
Y2tlZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwogICAgIEFTU0VS
VChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKIApAQCAtNjA3LDE1
ICs2MDcsMjAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmICghY29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkICYmIG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkgeworICAgIGlmIChjb250ZW50c1Rl
eHR1cmVzV2VyZURlbGV0ZWQpIHsKKyAgICAgICAgQVNTRVJUKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSk7CisgICAgICAgIC8vIFdlIHVubGlua2VkIGFsbCB0
ZXh0dXJlcyBvbiB0aGUgbWFpbiB0aHJlYWQsIGRlbGV0ZSB0aGVtIG5vdy4KKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5kZWxldGVVbmxpbmtlZFRleHR1cmVzKCk7CisgICAgICAgIC8vIE1hcmsg
dGhhdCB3ZSBjYW4gc3RhcnQgZHJhd2luZyBhZ2FpbiB3aGVuIHRoaXMgY29tbWl0IGlzIGNvbXBs
ZXRlLgorICAgICAgICBtX3Jlc2V0Q29udGVudHNUZXh0dXJlc1B1cmdlZEFmdGVyQ29tbWl0T25J
bXBsVGhyZWFkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkgewogICAgICAgICAvLyBXZSBwdXJnZWQgdGhlIGNvbnRl
bnQgdGV4dHVyZXMgb24gdGhlIGltcGwgdGhyZWFkIGJldHdlZW4gdGhlIHRpbWUgd2UKICAgICAg
ICAgLy8gcG9zdGVkIHRoZSBiZWdpbkZyYW1lIHRhc2sgYW5kIG5vdywgbWVhbmluZyB3ZSBoYXZl
IGEgYnVuY2ggb2YKICAgICAgICAgLy8gdXBsb2FkcyB0aGF0IGFyZSBub3cgaW52YWxpZC4gQ2xl
YXIgdGhlIHVwbG9hZHMgKHRoZXkgYWxsIGdvIHRvCiAgICAgICAgIC8vIGNvbnRlbnQgdGV4dHVy
ZXMpLCBhbmQga2ljayBhbm90aGVyIGNvbW1pdCB0byBmaWxsIHRoZW0gYWdhaW4uCiAgICAgICAg
IHF1ZXVlLT5jbGVhclVwbG9hZHMoKTsKICAgICAgICAgc2V0TmVlZHNDb21taXRPbkltcGxUaHJl
YWQoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbV9yZXNldENvbnRlbnRzVGV4dHVyZXNQdXJnZWRB
ZnRlckNvbW1pdE9uSW1wbFRocmVhZCA9IHRydWU7CisgICAgfQogCiAgICAgbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQgPSBDQ1RleHR1cmVVcGRhdGVDb250cm9s
bGVyOjpjcmVhdGUoQ0NQcm94eTo6aW1wbFRocmVhZCgpLCBxdWV1ZSwgbV9sYXllclRyZWVIb3N0
SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZW5kZXJlcigp
LT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlbmRlcmVyKCktPnRleHR1
cmVVcGxvYWRlcigpKTsKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9
IGNvbXBsZXRpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162892</attachid>
            <date>2012-09-07 15:54:12 -0700</date>
            <delta_ts>2012-09-09 16:59:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96018-20120907155351.patch</filename>
            <type>text/plain</type>
            <size>11315</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M4ZmNhM2IzZGI5ZTQ0
ZjMwZDllMzRlOTljNWNmOTZiMmRiZDg1ZS4uY2NkMGZlYzA1NjllMDM5NTY4ZTRmMTNlMjNiNmE1
OWZjNmY5ZDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA5LTA3ICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gRG8gbm90IGRlbGV0ZSB0ZXh0dXJlIGJhY2tpbmcgc3RydWN0dXJlcyBvbiB0aGUgbWFp
biB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk2MDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RG8gbm90IGRlbGV0ZSBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyBzdHJ1Y3R1cmVzIG9u
IHRoZSBtYWluCisgICAgICAgIHRocmVhZC4gIEluc3RlYWQsIHVubGluayB0aGVtIGZyb20gdGhl
aXIgb3duaW5nIENDUHJpb3JpdGl6ZWRUZXh0dXJlCisgICAgICAgIGluIHRoZSBtYWluIHRocmVh
ZCwgYW5kIGhhdmUgdGhlIGltcGwgdGhyZWFkIHRoZW4gZGVsZXRlIGFsbCB1bmxpbmtlZAorICAg
ICAgICB0ZXh0dXJlcy4KKworICAgICAgICBUaGlzIGlzIHRvd2FyZHMgaGF2aW5nIHRoZSBtYWlu
IHRocmVhZCBub3QgYWNjZXNzIHRoZSBtX2JhY2tpbmdzIHNldCwKKyAgICAgICAgd2hpY2ggd2ls
bCBhbGxvdyB0aGUgaW1wbCB0aHJlYWQgdG8gdHJhdmVyc2UgdGhhdCBzZXQgd2hlbiBkZWxldGlu
ZworICAgICAgICByZXNvdXJjZXMgaW4gcmVzcG9uc2UgdG8gR1BVIG1lbW9yeSBtYW5hZ2VtZW50
IGV2ZW50cy4KKworICAgICAgICBUZXN0ZWQgYnkgZXhpc3RpbmcgZXZpY3Rpb24gdGVzdHMgKEND
TGF5ZXJUcmVlSG9zdFRlc3QncworICAgICAgICBUZXN0RXZpY3RUZXh0dXJlcywgTG9zdENvbnRl
eHRBZnRlckV2aWN0VGV4dHVyZXMpCisKKyAgICAgICAgRml4IGEgcGxhY2Ugd2hlcmUgc2luZ2xl
IHRocmVhZCBwcm94eSB3YXNuJ3Qgc2V0dGluZyB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgYmxv
Y2tlZCBzdGF0ZSBjb3JyZWN0bHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0Ojp1bmxpbmtBbGxDb250ZW50VGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZVVubGlua2VkVGV4dHVyZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGlua0Fs
bEJhY2tpbmdzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZWxldGVBbGxVbmxpbmtlZEJhY2tpbmdzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXIuaDoKKyAgICAgICAgKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3Np
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQpOgorCiAyMDEyLTA5LTA3ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTWFjIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwCmluZGV4IDcwMzFlODIyYTE4Y2JjNzI2NjgzODg0NWNkM2JkMmRkYjMxNzNlYjkuLjAy
YjJiYjMyNmMyNWU2M2I2ODlhYTBhMzAzMGI5ZjcwMjc4ZWU3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcApAQCAtNDE0LDExICs0MTQsMTggQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogICAgIG1fcHJveHktPnNldFZpc2libGUodmlz
aWJsZSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpldmljdEFsbENvbnRlbnRUZXh0dXJl
cygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dW5saW5rQWxsQ29udGVudFRleHR1cmVzKCkKIHsK
ICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2NvbnRl
bnRzVGV4dHVyZU1hbmFnZXIuZ2V0KCkpOwotICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+
YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1h
bmFnZXItPnVubGlua0FsbEJhY2tpbmdzKCk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpk
ZWxldGVVbmxpbmtlZFRleHR1cmVzKCkKK3sKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhy
ZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgpKTsKKyAgICBBU1NFUlQobV9j
b250ZW50c1RleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXItPmRlbGV0ZUFsbFVubGlua2VkQmFja2luZ3MoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9u
LCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNzQyNzg4YzcwNjc4M2JiNjM4ZjUzZDYyNmYyZGM1
Y2MxZTNhNTgwYS4uNTgxODBmYTVlNGIzNGRkYzU2NTg5ZjhiYTI5YTQ3NDBjZjE2OTJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTIxMiwxMSArMjEyLDggQEAgcHVibGljOgog
CiAgICAgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyKiBjb250ZW50c1RleHR1cmVNYW5hZ2Vy
KCkgY29uc3Q7CiAKLSAgICAvLyBUaGlzIHdpbGwgY2F1c2UgY29udGVudHMgdGV4dHVyZSBtYW5h
Z2VyIHRvIGV2aWN0IGFsbCB0ZXh0dXJlcywgYnV0Ci0gICAgLy8gd2l0aG91dCBkZWxldGluZyB0
aGVtLiBUaGlzIGhhcHBlbnMgYWZ0ZXIgYWxsIGNvbnRlbnQgdGV4dHVyZXMgaGF2ZQotICAgIC8v
IGFscmVhZHkgYmVlbiBkZWxldGVkIG9uIGltcGwsIGFmdGVyIGdldHRpbmcgYSAwIGFsbG9jYXRp
b24gbGltaXQuCi0gICAgLy8gU2V0IGR1cmluZyBhIGNvbW1pdCwgYnV0IGJlZm9yZSB1cGRhdGVM
YXllcnMuCi0gICAgdm9pZCBldmljdEFsbENvbnRlbnRUZXh0dXJlcygpOworICAgIHZvaWQgdW5s
aW5rQWxsQ29udGVudFRleHR1cmVzKCk7CisgICAgdm9pZCBkZWxldGVVbmxpbmtlZFRleHR1cmVz
KCk7CiAKICAgICBib29sIHZpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KICAg
ICB2b2lkIHNldFZpc2libGUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0
aXplZFRleHR1cmVNYW5hZ2VyLmNwcAppbmRleCA4M2Q2OGFkMDcxZWRiNjU4MjgyODg5YWJiYjAw
N2Y1NzhlYmEyNDYwLi45ZDNlZmI0YTEyMDMxMzRkMWU4YmQ5YmQwMzQ2M2U4MjQwNTJmZWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAK
QEAgLTI0OCw2ICsyNDgsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVk
dWNlTWVtb3J5KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aQogCiB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJBbGxNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVy
KiByZXNvdXJjZVByb3ZpZGVyKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpOworICAgIEFTU0VSVChyZXNvdXJj
ZVByb3ZpZGVyKTsKICAgICAvLyBVbmxpbmsgYW5kIGRlc3Ryb3kgYWxsIGJhY2tpbmcgdGV4dHVy
ZXMuCiAgICAgd2hpbGUgKG1fYmFja2luZ3Muc2l6ZSgpID4gMCkgewogICAgICAgICBCYWNraW5n
U2V0OjppdGVyYXRvciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsKQEAgLTI1NywxMiArMjU5LDI0
IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhckFsbE1lbW9yeShDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvCiAgICAgfQogfQogCi12b2lkIENDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6YWxsQmFja2luZ1RleHR1cmVzV2VyZURlbGV0ZWQoKQordm9pZCBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnVubGlua0FsbEJhY2tpbmdzKCkKK3sKKyAgICBB
U1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworICAgIGZvciAoQmFja2luZ1NldDo6aXRl
cmF0b3IgaXQgPSBtX2JhY2tpbmdzLmJlZ2luKCk7IGl0ICE9IG1fYmFja2luZ3MuZW5kKCk7ICsr
aXQpCisgICAgICAgIGlmICgoKml0KS0+b3duZXIoKSkKKyAgICAgICAgICAgICgqaXQpLT5vd25l
cigpLT51bmxpbmsoKTsKK30KKwordm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmRl
bGV0ZUFsbFVubGlua2VkQmFja2luZ3MoKQogewotICAgIC8vIFNhbWUgYXMgY2xlYXJBbGxNZW1v
cnksIGV4Y2VwdCBhbGwgb3VyIHRleHR1cmVzIHdlcmUgYWxyZWFkeQotICAgIC8vIGRlbGV0ZWQg
ZXh0ZXJuYWxseSwgc28gd2UgZG9uJ3QgZGVsZXRlIHRoZW0uIFBhc3Npbmcgbm8KLSAgICAvLyBy
ZXNvdXJjZVByb3ZpZGVyIHJlc3VsdHMgaW4gbGVha2luZyB0aGUgKG5vdyBpbnZhbGlkKSB0ZXh0
dXJlIGlkcy4KLSAgICBjbGVhckFsbE1lbW9yeSgwKTsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgpKTsKKyAgICBCYWNr
aW5nVmVjdG9yIGJhY2tpbmdzVG9EZWxldGU7CisgICAgZm9yIChCYWNraW5nU2V0OjppdGVyYXRv
ciBpdCA9IG1fYmFja2luZ3MuYmVnaW4oKTsgaXQgIT0gbV9iYWNraW5ncy5lbmQoKTsgKytpdCkK
KyAgICAgICAgaWYgKCEoKml0KS0+b3duZXIoKSkKKyAgICAgICAgICAgIGJhY2tpbmdzVG9EZWxl
dGUuYXBwZW5kKCgqaXQpKTsKKworICAgIGZvciAoQmFja2luZ1ZlY3Rvcjo6aXRlcmF0b3IgaXQg
PSBiYWNraW5nc1RvRGVsZXRlLmJlZ2luKCk7IGl0ICE9IGJhY2tpbmdzVG9EZWxldGUuZW5kKCk7
ICsraXQpCisgICAgICAgIGRlc3Ryb3lCYWNraW5nKCgqaXQpLCAwKTsKIH0KIAogdm9pZCBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4
dHVyZSogdGV4dHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyLmgKaW5kZXggMTNkYmM1MTc2YmNkNzhlZTI5NzA5MGE2NzY1MTI0NWY5YmQ3NjRjYS4u
ZTkwYjI1MzU1ZWJkY2EwYzY1ODhjYWFmOGNhYTZhYzhmM2Q4ZGFlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRl
eHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmgKQEAgLTc4LDcgKzc4LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCByZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKik7CiAg
ICAgdm9pZCBjbGVhckFsbE1lbW9yeShDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2b2lkIGFs
bEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKCk7CisgICAgdm9pZCB1bmxpbmtBbGxCYWNraW5n
cygpOworICAgIHZvaWQgZGVsZXRlQWxsVW5saW5rZWRCYWNraW5ncygpOwogCiAgICAgdm9pZCBh
Y3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSosIENDUmVz
b3VyY2VQcm92aWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CmluZGV4IDY4NzZlYTIxODhiYWY2NjY4YTI5YWMzN2MxY2QzOGM4Y2I0NDFjZTkuLjA5OTRiZGFi
NDBhZWYzMDk2NGU0NjFkYzgwNmJlMGNkMTVjMmFmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNTUsNiArMTU1LDcgQEAgYm9vbCBDQ1NpbmdsZVRocmVh
ZFByb3h5OjpyZWNyZWF0ZUNvbnRleHQoKQogCiAgICAgYm9vbCBpbml0aWFsaXplZDsKICAgICB7
CisgICAgICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbWFpblRocmVhZEJsb2Nr
ZWQ7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBpZiAo
IW1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQoKSkKICAgICAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCkpOwpAQCAtMjk3LDEyICsyOTgs
MTQgQEAgYm9vbCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRBbmRDb21wb3NpdGUoKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAKLQogICAgIGlmICghbV9sYXll
clRyZWVIb3N0LT5pbml0aWFsaXplUmVuZGVyZXJJZk5lZWRlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1B1
cmdlZCgpKQotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmV2aWN0QWxsQ29udGVudFRleHR1cmVz
KCk7CisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNQdXJnZWQo
KSkgeworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVubGlua0FsbENvbnRlbnRUZXh0dXJlcygp
OworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBp
bXBsQW5kTWFpbkJsb2NrZWQ7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlVW5saW5r
ZWRUZXh0dXJlcygpOworICAgIH0KIAogICAgIENDVGV4dHVyZVVwZGF0ZVF1ZXVlIHF1ZXVlOwog
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHF1ZXVlLCBtX2xheWVyVHJlZUhvc3RJ
bXBsLT5tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAKaW5kZXggYjNhZjU4ZTkzMmFlMzJiNWQyYjI4ODIyMGUxMTY3ZDgxMDYxNzBiNC4uNTli
Yjc5N2YwMDQ4MjYxZTBkMGRkYzdlNzdjYTMxYTk3NzgxZTY1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWUoKQogICAgIH0KIAogICAgIGlmIChyZXF1ZXN0LT5jb250ZW50c1RleHR1cmVzV2VyZURl
bGV0ZWQpCi0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZXZpY3RBbGxDb250ZW50VGV4dHVyZXMo
KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51bmxpbmtBbGxDb250ZW50VGV4dHVyZXMoKTsK
IAogICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVRdWV1ZT4gcXVldWUgPSBhZG9wdFB0cihuZXcg
Q0NUZXh0dXJlVXBkYXRlUXVldWUpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KCoocXVldWUuZ2V0KCkpLCByZXF1ZXN0LT5tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyk7CkBA
IC01OTcsNyArNTk3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIHsKICAgICBUUkFDRV9F
VkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVh
ZCIpOwogICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwot
ICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpICYm
IGlzTWFpblRocmVhZEJsb2NrZWQoKSk7CiAgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhy
ZWFkKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmco
KSk7CiAKQEAgLTYwNywxNSArNjA3LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRl
ZCAmJiBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzUHVyZ2VkKCkpIHsKKyAg
ICBpZiAoY29udGVudHNUZXh0dXJlc1dlcmVEZWxldGVkKSB7CisgICAgICAgIEFTU0VSVChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzUHVyZ2VkKCkpOworICAgICAgICAvLyBX
ZSB1bmxpbmtlZCBhbGwgdGV4dHVyZXMgb24gdGhlIG1haW4gdGhyZWFkLCBkZWxldGUgdGhlbSBu
b3cuCisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGVsZXRlVW5saW5rZWRUZXh0dXJlcygpOwor
ICAgICAgICAvLyBNYXJrIHRoYXQgd2UgY2FuIHN0YXJ0IGRyYXdpbmcgYWdhaW4gd2hlbiB0aGlz
IGNvbW1pdCBpcyBjb21wbGV0ZS4KKyAgICAgICAgbV9yZXNldENvbnRlbnRzVGV4dHVyZXNQdXJn
ZWRBZnRlckNvbW1pdE9uSW1wbFRocmVhZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzUHVyZ2VkKCkpIHsKICAgICAgICAgLy8gV2Ug
cHVyZ2VkIHRoZSBjb250ZW50IHRleHR1cmVzIG9uIHRoZSBpbXBsIHRocmVhZCBiZXR3ZWVuIHRo
ZSB0aW1lIHdlCiAgICAgICAgIC8vIHBvc3RlZCB0aGUgYmVnaW5GcmFtZSB0YXNrIGFuZCBub3cs
IG1lYW5pbmcgd2UgaGF2ZSBhIGJ1bmNoIG9mCiAgICAgICAgIC8vIHVwbG9hZHMgdGhhdCBhcmUg
bm93IGludmFsaWQuIENsZWFyIHRoZSB1cGxvYWRzICh0aGV5IGFsbCBnbyB0bwogICAgICAgICAv
LyBjb250ZW50IHRleHR1cmVzKSwgYW5kIGtpY2sgYW5vdGhlciBjb21taXQgdG8gZmlsbCB0aGVt
IGFnYWluLgogICAgICAgICBxdWV1ZS0+Y2xlYXJVcGxvYWRzKCk7CiAgICAgICAgIHNldE5lZWRz
Q29tbWl0T25JbXBsVGhyZWFkKCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fcmVzZXRDb250ZW50
c1RleHR1cmVzUHVyZ2VkQWZ0ZXJDb21taXRPbkltcGxUaHJlYWQgPSB0cnVlOworICAgIH0KIAog
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkID0gQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlcjo6Y3JlYXRlKENDUHJveHk6OmltcGxUaHJlYWQoKSwgcXVldWUs
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRyZWVIb3N0
SW1wbC0+cmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5y
ZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSk7CiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>