<?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>91644</bug_id>
          
          <creation_ts>2012-07-18 11:20:13 -0700</creation_ts>
          <short_desc>[BlackBerry] Allow nested suspend/resume screen &amp; backingstore calls</short_desc>
          <delta_ts>2012-07-19 11:42:47 -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>WebKit BlackBerry</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>
          
          <blocked>91686</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jakob Petsovits">jpetsovits</reporter>
          <assigned_to name="Jakob Petsovits">jpetsovits</assigned_to>
          <cc>anilsson</cc>
    
    <cc>manyoso</cc>
    
    <cc>mifenton</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672556</commentid>
    <comment_count>0</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-18 11:20:13 -0700</bug_when>
    <thetext>From the commit message (patch below):

We expose suspendScreenAndBackingStoreUpdates() to the outside API, but also use it internally when reacting to a number of happenings, i.e. zooming, viewport resize, resetting view state on Committed state or when restoring it from previous pages, etc.

These two can clash. For instance, if we get a suspend call from outside that suspends us for app inactivity, or we are told to suspend because the main target surface is not available at the time, and while being suspended we try to rotate, finish loading a page, the we&apos;ll end up resuming operations even though we shouldn&apos;t.

This patch changes the suspend flag to be a counter instead, allowing nested suspend/resume calls and making suspend/resume more robust this way. It also changes several call sites to make sure suspend/resume calls are paired up correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672584</commentid>
    <comment_count>1</comment_count>
      <attachid>153060</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-18 11:41:38 -0700</bug_when>
    <thetext>Created attachment 153060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672597</commentid>
    <comment_count>2</comment_count>
      <attachid>153060</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2012-07-18 11:53:14 -0700</bug_when>
    <thetext>Comment on attachment 153060
Patch

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

See comments.

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:286
&gt; +        return;

Uhm, you are returning here... not increasing the counter.  What gives?

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:313
&gt; +            &quot;Call mismatch: Backingstore hasn&apos;t been suspended, therefore won&apos;t resume!&quot;);

How about: &quot;Call mismatch: Screen and backingstore haven&apos;t been suspended, therefore won&apos;t resume!&quot;

&gt; Source/WebKit/blackberry/Api/BackingStore_p.h:339
&gt; +    int m_suspendBackingStoreUpdates;

unsigned int here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672622</commentid>
    <comment_count>3</comment_count>
      <attachid>153066</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-18 12:30:31 -0700</bug_when>
    <thetext>Created attachment 153066
Better &amp; smaller patch

This one incorporates Adam&apos;s suggestions (good catch for the bad return) and simplifies the patch by not changing the zoomAboutPoint() signature, instead putting resume calls after zoomAboutPoint() in the two cases where we would before use that method to resume implicitly. This makes the zoomChanged() notification come before the render/blit, but nothing says that zoomChanged() needs to come after the target surface has been updated so that should be ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672723</commentid>
    <comment_count>4</comment_count>
      <attachid>153066</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-18 13:56:03 -0700</bug_when>
    <thetext>Comment on attachment 153066
Better &amp; smaller patch

Tested and still works, setting cq? flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672742</commentid>
    <comment_count>5</comment_count>
      <attachid>153066</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-07-18 14:20:07 -0700</bug_when>
    <thetext>Comment on attachment 153066
Better &amp; smaller patch

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

I need this patch! nice work.

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:310
&gt; +    if (m_suspendScreenUpdates &lt;= 0 || m_suspendBackingStoreUpdates &lt;= 0) {

i would assert negative values instead. they should not happen

&gt; Source/WebKit/blackberry/Api/BackingStore_p.h:339
&gt; +    unsigned int m_suspendScreenUpdates;
&gt; +    unsigned int m_suspendBackingStoreUpdates;

nit: unsigned is enough</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673512</commentid>
    <comment_count>6</comment_count>
      <attachid>153265</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-19 07:57:45 -0700</bug_when>
    <thetext>Created attachment 153265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673516</commentid>
    <comment_count>7</comment_count>
      <attachid>153265</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-19 08:00:57 -0700</bug_when>
    <thetext>Comment on attachment 153265
Patch

This one modifies the assertion/early-return things to use boolean conditions rather than greater-than/less-than operators. After all, with the values now being unsigned, we can never be less than 0. Incorporates the nitpick of leaving out &quot;int&quot; from &quot;unsigned int&quot;. Antonio, we do assert three lines above the line that you mentioned. I thought it&apos;s still a good idea to leave in the warning, because it doesn&apos;t hurt and makes it easier if we get a bug report from somebody who&apos;s been running in release mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673522</commentid>
    <comment_count>8</comment_count>
      <attachid>153265</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-07-19 08:12:01 -0700</bug_when>
    <thetext>Comment on attachment 153265
Patch

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

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:319
&gt; +    // Out of all nested resume calls, resume with the maximum-impact operation.
&gt; +    if (op == BackingStore::RenderAndBlit
&gt; +        || (m_resumeOperation == BackingStore::None &amp;&amp; op == BackingStore::Blit))
&gt; +        m_resumeOperation = op;

that would read better if we could have the values in the enum in precedence order (i.e. None, blit, RenderAndBlit), and compare them with &quot;&gt;&quot; (even if a static_cast to int was needed).

&gt; Source/WebKit/blackberry/Api/BackingStore.cpp:329
&gt; +    --m_suspendBackingStoreUpdates;

can not we decrease the --m_suspendScreenUpdates right below this like here as well, since it is going to happen in both code paths below anyways?

&gt; Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp:1071
&gt; -        m_webPagePrivate-&gt;m_backingStore-&gt;d-&gt;renderVisibleContents();
&gt; +    bool didZoom = m_webPagePrivate-&gt;zoomAboutPoint(scale, m_frame-&gt;view()-&gt;scrollPosition(), true /* enforceScaleClamping */, true /*forceRendering*/, true /*isRestoringZoomLevel*/);
&gt; +    // If we&apos;re already at that scale, then we should still force rendering
&gt; +    // since our scroll position changed.
&gt; +    m_webPagePrivate-&gt;m_backingStore-&gt;d-&gt;resumeScreenAndBackingStoreUpdates(BackingStore::RenderAndBlit);

is this semantically the same now? Could you explain this piece of the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673533</commentid>
    <comment_count>9</comment_count>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-19 08:34:30 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 153265 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=153265&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/blackberry/Api/BackingStore.cpp:319
&gt; &gt; +    // Out of all nested resume calls, resume with the maximum-impact operation.
&gt; &gt; +    if (op == BackingStore::RenderAndBlit
&gt; &gt; +        || (m_resumeOperation == BackingStore::None &amp;&amp; op == BackingStore::Blit))
&gt; &gt; +        m_resumeOperation = op;
&gt; 
&gt; that would read better if we could have the values in the enum in precedence order (i.e. None, blit, RenderAndBlit), and compare them with &quot;&gt;&quot; (even if a static_cast to int was needed).

I think it would look cleaner, but I&apos;m not sure if it also conveys the meaning as nicely. You&apos;d have to look into the header file to make the connection. I&apos;m on the fence about this, if you&apos;ve got a strong opinion then I&apos;ll change it but I&apos;m not sure it makes too much of a positive impact.

&gt; &gt; Source/WebKit/blackberry/Api/BackingStore.cpp:329
&gt; &gt; +    --m_suspendBackingStoreUpdates;
&gt; 
&gt; can not we decrease the --m_suspendScreenUpdates right below this like here as well, since it is going to happen in both code paths below anyways?

Err, no. The values for both are always the same, only the timing of setting them is different because of synchronization with the UI thread (without using mutexes to block). Adam can tell you more about this as he wrote that code; however, the reason why we have to values in the first place is because we can&apos;t assign them in the same place or we&apos;d have to do something else to account for proper synchronization. I actually have a question for Adam about this, but anyways if we change this then it should be part of a different bug/patch.

&gt; &gt; Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp:1071
&gt; &gt; -        m_webPagePrivate-&gt;m_backingStore-&gt;d-&gt;renderVisibleContents();
&gt; &gt; +    bool didZoom = m_webPagePrivate-&gt;zoomAboutPoint(scale, m_frame-&gt;view()-&gt;scrollPosition(), true /* enforceScaleClamping */, true /*forceRendering*/, true /*isRestoringZoomLevel*/);
&gt; &gt; +    // If we&apos;re already at that scale, then we should still force rendering
&gt; &gt; +    // since our scroll position changed.
&gt; &gt; +    m_webPagePrivate-&gt;m_backingStore-&gt;d-&gt;resumeScreenAndBackingStoreUpdates(BackingStore::RenderAndBlit);
&gt; 
&gt; is this semantically the same now? Could you explain this piece of the change?

Yes, it&apos;s semantically the same. What&apos;s happening here is that this method calls suspendScreenAndBackingStoreUpdates() further up, and then relied on zoomAboutPoint() to resume it. This version of the patch (as opposed to the first attempt, see obsolete patches) removes any asymmetry from zoomAboutPoint(), it now always calls one suspend and one resume, or none of both.

In the context of restoreViewState(), that means the suspend and resume calls in zoomAboutPoint() are going to be nested within the suspend and resume calls in restoreViewState(). I&apos;m adding the resume call to restoreViewState() to pair it up properly, replacing the &quot;Will restore updates to backingstore guaranteed!&quot; comment with an actual unconditional resume call. The only semantic difference that this brings is that the zoomChanged() notification for the WebPageClient now occurs before we resume rendering/blitting operations, but zoomChanged() is not meant to tell about any blits (it only notifies about the state change itself) so that should be ok.

The call in zoomAboutPointTimerFired() has the same change. All other calls did not previously suspend the backingstore, so we don&apos;t have to resume afterwards. Anyways, making this resume call explicit on the caller side avoids adding a &quot;resumeScreenAndBackingStoreUpdates&quot; bool argument to zoomAboutPoint() and I think adds to readability too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673622</commentid>
    <comment_count>10</comment_count>
      <attachid>153291</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-19 10:13:04 -0700</bug_when>
    <thetext>Created attachment 153291
Patch as r+ed above, with both Adam and Antonio listed as reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673624</commentid>
    <comment_count>11</comment_count>
      <attachid>153292</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2012-07-19 10:15:10 -0700</bug_when>
    <thetext>Created attachment 153292
Patch as r+ed above, with both Adam and Antonio *actually* listed as reviewers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673737</commentid>
    <comment_count>12</comment_count>
      <attachid>153292</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 11:42:42 -0700</bug_when>
    <thetext>Comment on attachment 153292
Patch as r+ed above, with both Adam and Antonio *actually* listed as reviewers

Clearing flags on attachment: 153292

Committed r123129: &lt;http://trac.webkit.org/changeset/123129&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673738</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-19 11:42:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153060</attachid>
            <date>2012-07-18 11:41:38 -0700</date>
            <delta_ts>2012-07-18 12:30:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91644-20120718144050.patch</filename>
            <type>text/plain</type>
            <size>15384</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwZTlhNzlmMWM5NDJhN2EyOTA0MzUwM2IxOWVlZjEzZTgxODMyZWQ5Li42NTQ1ODkwNWY2
ZGRkNzEzNDBhYTdmODI0MjliZjMwMjk1YTZhM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxMi0wNy0xOCAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBuZXN0ZWQgc3Vz
cGVuZC9yZXN1bWUgc2NyZWVuICYgYmFja2luZ3N0b3JlIGNhbGxzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2NDQKKyAgICAgICAgUklNIFBSIDE3
NDM2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGV4cG9zZSBzdXNwZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpIHRvIHRoZQorICAg
ICAgICBvdXRzaWRlIEFQSSwgYnV0IGFsc28gdXNlIGl0IGludGVybmFsbHkgd2hlbiByZWFjdGlu
ZworICAgICAgICB0byBhIG51bWJlciBvZiBoYXBwZW5pbmdzLCBpLmUuIHpvb21pbmcsIHZpZXdw
b3J0IHJlc2l6ZSwKKyAgICAgICAgcmVzZXR0aW5nIHZpZXcgc3RhdGUgb24gQ29tbWl0dGVkIHN0
YXRlIG9yIHdoZW4gcmVzdG9yaW5nCisgICAgICAgIGl0IGZyb20gcHJldmlvdXMgcGFnZXMsIGV0
Yy4KKworICAgICAgICBUaGVzZSB0d28gY2FuIGNsYXNoLiBGb3IgaW5zdGFuY2UsIGlmIHdlIGdl
dCBhIHN1c3BlbmQKKyAgICAgICAgY2FsbCBmcm9tIG91dHNpZGUgdGhhdCBzdXNwZW5kcyB1cyBm
b3IgYXBwIGluYWN0aXZpdHksCisgICAgICAgIG9yIHdlIGFyZSB0b2xkIHRvIHN1c3BlbmQgYmVj
YXVzZSB0aGUgbWFpbiB0YXJnZXQgc3VyZmFjZQorICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGF0
IHRoZSB0aW1lLCBhbmQgd2hpbGUgYmVpbmcgc3VzcGVuZGVkCisgICAgICAgIHdlIHRyeSB0byBy
b3RhdGUsIGZpbmlzaCBsb2FkaW5nIGEgcGFnZSwgdGhlIHdlJ2xsIGVuZCB1cAorICAgICAgICBy
ZXN1bWluZyBvcGVyYXRpb25zIGV2ZW4gdGhvdWdoIHdlIHNob3VsZG4ndC4KKworICAgICAgICBU
aGlzIHBhdGNoIGNoYW5nZXMgdGhlIHN1c3BlbmQgZmxhZyB0byBiZSBhIGNvdW50ZXIKKyAgICAg
ICAgaW5zdGVhZCwgYWxsb3dpbmcgbmVzdGVkIHN1c3BlbmQvcmVzdW1lIGNhbGxzIGFuZCBtYWtp
bmcKKyAgICAgICAgc3VzcGVuZC9yZXN1bWUgbW9yZSByb2J1c3QgdGhpcyB3YXkuIEl0IGFsc28g
Y2hhbmdlcworICAgICAgICBzZXZlcmFsIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIHN1c3BlbmQv
cmVzdW1lIGNhbGxzIGFyZQorICAgICAgICBwYWlyZWQgdXAgY29ycmVjdGx5LgorCisgICAgICAg
ICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kU2NyZWVuQW5kQmFja2lu
Z1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9y
ZVByaXZhdGU6OnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMpOgorICAgICAgICAq
IEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6Cisg
ICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6c2hvdWxkWm9vbUFib3V0UG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnQpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnRUaW1lckZpcmVk
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmJsb2NrWm9v
bVJlY3RGb3JOb2RlKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6CisgICAgICAgIChXZWJQ
YWdlUHJpdmF0ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tC
ZXJyeTo6cmVzdG9yZVZpZXdTdGF0ZSk6CisKIDIwMTItMDctMTcgIEpha29iIFBldHNvdml0cyAg
PGpwZXRzb3ZpdHNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUmVtb3ZlIHVubmVj
ZXNzYXJ5IGNsZWFyV2luZG93KCkgY2FsbHMgYW5kIHRoZSBtZXRob2QgaXRzZWxmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5jcHAKaW5kZXggZjRkZDY2MjQx
ZGRiZTc2NmI1NGQzMmQxOTRlNzQ4MmMxOWU2MjY3OC4uY2VlYTlmOWRkNGQ0NDg5ZWIxNGQ0YjVh
YWY3MjNiNjAwYTE1NDlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0Fw
aS9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFj
a2luZ1N0b3JlLmNwcApAQCAtMTk2LDggKzE5Niw5IEBAIFBsYXRmb3JtOjpJbnRTaXplIEJhY2tp
bmdTdG9yZUdlb21ldHJ5OjpiYWNraW5nU3RvcmVTaXplKCkgY29uc3QKIH0KIAogQmFja2luZ1N0
b3JlUHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSgpCi0gICAgOiBtX3N1c3BlbmRTY3JlZW5V
cGRhdGVzKGZhbHNlKQotICAgICwgbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcyhmYWxzZSkK
KyAgICA6IG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMoMCkKKyAgICAsIG1fc3VzcGVuZEJhY2tpbmdT
dG9yZVVwZGF0ZXMoMCkKKyAgICAsIG1fcmVzdW1lT3BlcmF0aW9uKEJhY2tpbmdTdG9yZTo6Tm9u
ZSkKICAgICAsIG1fc3VzcGVuZFJlbmRlckpvYnMoZmFsc2UpCiAgICAgLCBtX3N1c3BlbmRSZWd1
bGFyUmVuZGVySm9icyhmYWxzZSkKICAgICAsIG1faXNTY3JvbGxpbmdPclpvb21pbmcoZmFsc2Up
CkBAIC0yNzksMTIgKzI4MCwxOSBAQCBib29sIEJhY2tpbmdTdG9yZVByaXZhdGU6OmlzT3BlbkdM
Q29tcG9zaXRpbmcoKSBjb25zdAogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3BlbmRT
Y3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKCkKIHsKLSAgICBtX3N1c3BlbmRCYWNraW5nU3Rv
cmVVcGRhdGVzID0gdHJ1ZTsKKyAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlcykgeworICAg
ICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dM
ZXZlbEluZm8sCisgICAgICAgICAgICAiU2NyZWVuICYgYmFja2luZ3N0b3JlIGFscmVhZHkgc3Vz
cGVuZGVkLCBpbmNyZWFzaW5nIHN1c3BlbmQgY291bnRlci4iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgICsrbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlczsKIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGUgdXNlciBpbnRlcmZhY2UgdGhyZWFkIGdldHMgdGhlIG1lc3NhZ2UgYmVmb3Jl
IHdlIHByb2NlZWQKICAgICAvLyBiZWNhdXNlIGJsaXRDb250ZW50cyBjYW4gYmUgY2FsbGVkIGZy
b20gdGhpcyB0aHJlYWQgYW5kIGl0IG11c3QgaG9ub3IKICAgICAvLyB0aGlzIGZsYWcuCi0gICAg
bV9zdXNwZW5kU2NyZWVuVXBkYXRlcyA9IHRydWU7CisgICAgKyttX3N1c3BlbmRTY3JlZW5VcGRh
dGVzOworCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNz
YWdlQ2xpZW50KCktPnN5bmNUb0N1cnJlbnRNZXNzYWdlKCk7CiAKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCkBAIC0yOTQsMTQgKzMwMiw0MiBAQCB2b2lkIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OnN1c3BlbmRTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKCkKIAogdm9pZCBCYWNr
aW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tp
bmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW9uIG9wKQogewotICAgIG1fc3VzcGVuZEJhY2tp
bmdTdG9yZVVwZGF0ZXMgPSBmYWxzZTsKKyAgICBBU1NFUlQobV9zdXNwZW5kU2NyZWVuVXBkYXRl
cyA+IDApOworICAgIEFTU0VSVChtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID4gMCk7CisK
KyAgICAvLyBCb3RoIHZhcmlhYmxlcyBhcmUgc2ltaWxhciBleGNlcHQgZm9yIHRoZSB0aW1pbmcg
b2Ygc2V0dGluZyB0aGVtLgorICAgIEFTU0VSVChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzID09IG1f
c3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMpOworCisgICAgaWYgKG1fc3VzcGVuZFNjcmVlblVw
ZGF0ZXMgPD0gMCB8fCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzIDw9IDApIHsKKyAgICAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAgICAgICJDYWxsIG1pc21hdGNoOiBCYWNraW5nc3Rv
cmUgaGFzbid0IGJlZW4gc3VzcGVuZGVkLCB0aGVyZWZvcmUgd29uJ3QgcmVzdW1lISIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gT3V0IG9mIGFsbCBuZXN0ZWQgcmVzdW1lIGNh
bGxzLCByZXN1bWUgd2l0aCB0aGUgbWF4aW11bS1pbXBhY3Qgb3BlcmF0aW9uLgorICAgIGlmIChv
cCA9PSBCYWNraW5nU3RvcmU6OlJlbmRlckFuZEJsaXQKKyAgICAgICAgfHwgKG1fcmVzdW1lT3Bl
cmF0aW9uID09IEJhY2tpbmdTdG9yZTo6Tm9uZSAmJiBvcCA9PSBCYWNraW5nU3RvcmU6OkJsaXQp
KQorICAgICAgICBtX3Jlc3VtZU9wZXJhdGlvbiA9IG9wOworCisgICAgaWYgKG1fc3VzcGVuZFNj
cmVlblVwZGF0ZXMgPj0gMiAmJiBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID49IDIpIHsg
Ly8gd2UncmUgc3RpbGwgc3VzcGVuZGVkCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjps
b2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgICAgICJTY3Jl
ZW4gJiBiYWNraW5nc3RvcmUgc3RpbGwgc3VzcGVuZGVkLCBkZWNyZWFzaW5nIHN1c3BlbmQgY291
bnRlci4iKTsKKyAgICAgICAgLS1tX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOworICAgICAg
ICAtLW1fc3VzcGVuZFNjcmVlblVwZGF0ZXM7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAtLW1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXM7CisKKyAgICBvcCA9IG1fcmVzdW1lT3Bl
cmF0aW9uOworICAgIG1fcmVzdW1lT3BlcmF0aW9uID0gQmFja2luZ1N0b3JlOjpOb25lOwogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChvcCAhPSBCYWNraW5nU3Rv
cmU6Ok5vbmUpIHsKICAgICAgICAgaWYgKGlzT3BlbkdMQ29tcG9zaXRpbmcoKSAmJiAhaXNBY3Rp
dmUoKSkgewogICAgICAgICAgICAgbV93ZWJQYWdlLT5kLT5zZXRDb21wb3NpdG9yRHJhd3NSb290
TGF5ZXIodHJ1ZSk7CiAgICAgICAgICAgICBtX3dlYlBhZ2UtPmQtPnNldE5lZWRzT25lU2hvdERy
YXdpbmdTeW5jaHJvbml6YXRpb24oKTsKLSAgICAgICAgICAgIG1fc3VzcGVuZFNjcmVlblVwZGF0
ZXMgPSBmYWxzZTsKKyAgICAgICAgICAgIC0tbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKICAgICAg
ICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNs
aWVudCgpLT5zeW5jVG9DdXJyZW50TWVzc2FnZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0zMjIsNyArMzU4LDcgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpyZXN1
bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVzdW0KICAgICAv
LyBNYWtlIHN1cmUgdGhlIHVzZXIgaW50ZXJmYWNlIHRocmVhZCBnZXRzIHRoZSBtZXNzYWdlIGJl
Zm9yZSB3ZSBwcm9jZWVkCiAgICAgLy8gYmVjYXVzZSBibGl0Q29udGVudHMgY2FuIGJlIGNhbGxl
ZCBmcm9tIHRoZSB1c2VyIGludGVyZmFjZSB0aHJlYWQgYW5kCiAgICAgLy8gaXQgbXVzdCBob25v
ciB0aGlzIGZsYWcuCi0gICAgbV9zdXNwZW5kU2NyZWVuVXBkYXRlcyA9IGZhbHNlOworICAgIC0t
bV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlcklu
dGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKIAog
ICAgIC8vIERvIHNvbWUgYmxpdHRpbmcgaWYgbmVjZXNzYXJ5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCmluZGV4IDMyNjUxNTY1OTZjM2I1MTNiZjI3
ZjM0NmRlNDRkNWM3MTlmY2EzYzYuLjA1Yjk2NTNlMDVkMTgyMTM0MzE5MDA5YWM4NGIyOWNhZDM2
YjgxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0
b3JlX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9w
LmgKQEAgLTMzNSw4ICszMzUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2ViUGFnZSogc19j
dXJyZW50QmFja2luZ1N0b3JlT3duZXI7CiAKLSAgICBib29sIG1fc3VzcGVuZFNjcmVlblVwZGF0
ZXM7Ci0gICAgYm9vbCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOworICAgIGludCBtX3N1
c3BlbmRTY3JlZW5VcGRhdGVzOworICAgIGludCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVz
OworICAgIEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW9uIG1fcmVzdW1lT3BlcmF0
aW9uOwogCiAgICAgYm9vbCBtX3N1c3BlbmRSZW5kZXJKb2JzOwogICAgIGJvb2wgbV9zdXNwZW5k
UmVndWxhclJlbmRlckpvYnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
QXBpL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNw
cAppbmRleCA4ZjMxNjk1MGVlM2Q5ZDVmNmUzZGEyYzIxM2RjMWViMmQyMmNhYTU4Li44MWViMjhm
YjYzYWZiYmE2MmI0ZWUzOTFmZjYxYTJmZWM0YTVlZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZS5jcHAKQEAgLTExODcsOCArMTE4Nyw2IEBAIGJvb2wgV2ViUGFnZVBy
aXZhdGU6OnNob3VsZFpvb21BYm91dFBvaW50KGRvdWJsZSBzY2FsZSwgY29uc3QgRmxvYXRQb2lu
dCYsIGJvb2wKICAgICAqY2xhbXBlZFNjYWxlID0gc2NhbGU7CiAKICAgICBpZiAoY3VycmVudFNj
YWxlKCkgPT0gc2NhbGUpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIGJhY2tpbmdzdG9yZSB1cGRh
dGVzIHJlc3VtZSBmcm9tIHBpbmNoIHpvb20gaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGZpbmFsIHpv
b20gbGV2ZWwgZG9lc24ndCBjaGFuZ2UuCi0gICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXN1
bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9yZTo6Tm9uZSk7CiAgICAg
ICAgIG1fY2xpZW50LT56b29tQ2hhbmdlZChtX3dlYlBhZ2UtPmlzTWluWm9vbWVkKCksIG1fd2Vi
UGFnZS0+aXNNYXhab29tZWQoKSwgIXNob3VsZFpvb21PbkVzY2FwZSgpLCBjdXJyZW50U2NhbGUo
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMTk2LDcgKzExOTQsNyBAQCBi
b29sIFdlYlBhZ2VQcml2YXRlOjpzaG91bGRab29tQWJvdXRQb2ludChkb3VibGUgc2NhbGUsIGNv
bnN0IEZsb2F0UG9pbnQmLCBib29sCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUGFn
ZVByaXZhdGU6Onpvb21BYm91dFBvaW50KGRvdWJsZSB1bmNsYW1wZWRTY2FsZSwgY29uc3QgRmxv
YXRQb2ludCYgYW5jaG9yLCBib29sIGVuZm9yY2VTY2FsZUNsYW1waW5nLCBib29sIGZvcmNlUmVu
ZGVyaW5nLCBib29sIGlzUmVzdG9yaW5nWm9vbUxldmVsKQorYm9vbCBXZWJQYWdlUHJpdmF0ZTo6
em9vbUFib3V0UG9pbnQoZG91YmxlIHVuY2xhbXBlZFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBh
bmNob3IsIGJvb2wgZW5mb3JjZVNjYWxlQ2xhbXBpbmcsIGJvb2wgZm9yY2VSZW5kZXJpbmcsIGJv
b2wgaXNSZXN0b3Jpbmdab29tTGV2ZWwsIGJvb2wgcmVzdW1lU2NyZWVuQW5kQmFja2luZ1N0b3Jl
VXBkYXRlcykKIHsKICAgICBpZiAoIWlzUmVzdG9yaW5nWm9vbUxldmVsKSB7CiAgICAgICAgIC8v
IENsZWFyIGFueSBleGlzdGluZyBibG9jayB6b29tLiAgKElmIHdlIGFyZSByZXN0b3JpbmcgYSBz
YXZlZCB6b29tIGxldmVsIG9uIHBhZ2UgbG9hZCwKQEAgLTEyMTQsNiArMTIxMiwxMSBAQCBib29s
IFdlYlBhZ2VQcml2YXRlOjp6b29tQWJvdXRQb2ludChkb3VibGUgdW5jbGFtcGVkU2NhbGUsIGNv
bnN0IEZsb2F0UG9pbnQmIGFuYwogCiAgICAgZG91YmxlIHNjYWxlOwogICAgIGlmICghc2hvdWxk
Wm9vbUFib3V0UG9pbnQodW5jbGFtcGVkU2NhbGUsIGFuY2hvciwgZW5mb3JjZVNjYWxlQ2xhbXBp
bmcsICZzY2FsZSkpIHsKKyAgICAgICAgaWYgKHJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVw
ZGF0ZXMpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBiYWNraW5nc3RvcmUgdXBkYXRlcyBy
ZXN1bWUgZnJvbSBwaW5jaCB6b29tIGluIHRoZQorICAgICAgICAgICAgLy8gY2FzZSB3aGVyZSB0
aGUgZmluYWwgem9vbSBsZXZlbCBkb2Vzbid0IGNoYW5nZS4KKyAgICAgICAgICAgIG1fYmFja2lu
Z1N0b3JlLT5kLT5yZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9y
ZTo6Tm9uZSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fd2ViUGFnZS0+c2V0dGluZ3MoKS0+
dGV4dFJlZmxvd01vZGUoKSA9PSBXZWJTZXR0aW5nczo6VGV4dFJlZmxvd0VuYWJsZWQpIHsKICAg
ICAgICAgICAgIG1fY3VycmVudFBpbmNoWm9vbU5vZGUgPSAwOwogICAgICAgICAgICAgbV9hbmNo
b3JJbk5vZGVSZWN0UmF0aW8gPSBGbG9hdFBvaW50KC0xLCAtMSk7CkBAIC0xMjQ0LDggKzEyNDcs
MTIgQEAgYm9vbCBXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnQoZG91YmxlIHVuY2xhbXBl
ZFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBhbmMKICAgICAvLyBBY3R1YWwgem9vbS4KICAgICAq
bV90cmFuc2Zvcm1hdGlvbk1hdHJpeCA9IHpvb207CiAKLSAgICAvLyBTdXNwZW5kIGFsbCBzY3Jl
ZW4gdXBkYXRlcyB0byB0aGUgYmFja2luZ3N0b3JlLgotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5z
dXNwZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpOworICAgIGlmICghcmVzdW1lU2Ny
ZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcykgeworICAgICAgICAvLyBTdXNwZW5kIGFsbCBzY3Jl
ZW4gdXBkYXRlcyB0byB0aGUgYmFja2luZ3N0b3JlLiBJZiB3ZSdyZSBjYWxsZWQgd2l0aAorICAg
ICAgICAvLyByZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzID09IHRydWUsIHRoZW4g
d2UncmUgYWxyZWFkeQorICAgICAgICAvLyBzdXNwZW5kZWQgYW5kIHdpbGwgdW5kbyB0aGF0IHN1
c3BlbnNpb24gZnVydGhlciBkb3duIGluc3RlYWQuCisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5k
LT5zdXNwZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpOworICAgIH0KIAogICAgIHVw
ZGF0ZVZpZXdwb3J0U2l6ZSgpOwogCkBAIC0xMzc5LDcgKzEzODYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cml2YXRlOjp1bnNjaGVkdWxlWm9vbUFib3V0UG9pbnQoKQogCiB2b2lkIFdlYlBhZ2VQcml2YXRl
Ojp6b29tQWJvdXRQb2ludFRpbWVyRmlyZWQoVGltZXI8V2ViUGFnZVByaXZhdGU+KikKIHsKLSAg
ICB6b29tQWJvdXRQb2ludChtX2RlbGF5ZWRab29tQXJndW1lbnRzLnNjYWxlLCBtX2RlbGF5ZWRa
b29tQXJndW1lbnRzLmFuY2hvciwgbV9kZWxheWVkWm9vbUFyZ3VtZW50cy5lbmZvcmNlU2NhbGVD
bGFtcGluZywgbV9kZWxheWVkWm9vbUFyZ3VtZW50cy5mb3JjZVJlbmRlcmluZyk7CisgICAgem9v
bUFib3V0UG9pbnQobV9kZWxheWVkWm9vbUFyZ3VtZW50cy5zY2FsZSwgbV9kZWxheWVkWm9vbUFy
Z3VtZW50cy5hbmNob3IsIG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZW5mb3JjZVNjYWxlQ2xhbXBp
bmcsIG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZm9yY2VSZW5kZXJpbmcsIGZhbHNlIC8qaXNSZXN0
b3Jpbmdab29tTGV2ZWwqLywgdHJ1ZSAvKnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0
ZXMqLyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByaXZhdGU6OnNldE5lZWRzTGF5b3V0KCkKQEAgLTMw
OTEsMjAgKzMwOTgsMjUgQEAgSW50UmVjdCBXZWJQYWdlUHJpdmF0ZTo6YmxvY2tab29tUmVjdEZv
ck5vZGUoTm9kZSogbm9kZSkKICAgICBjbGlwVG9UcmFuc2Zvcm1lZENvbnRlbnRzUmVjdChibG9j
a1JlY3QpOwogCiAjaWYgREVCVUdfQkxPQ0tfWk9PTQotICAgIC8vIFJlLXBhaW50IHRoZSBiYWNr
aW5nc3RvcmUgdG8gc2NyZWVuIHRvIGVyYXNlIG90aGVyIGFubm90YXRpb25zLgotICAgIG1fYmFj
a2luZ1N0b3JlLT5kLT5yZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdT
dG9yZTo6QmxpdCk7Ci0KLSAgICAvLyBSZW5kZXIgYSBibGFjayBzcXVhcmUgb3ZlciB0aGUgY2Fs
Y3VsYXRlZCBibG9jayBhbmQgYSBncmF5IHNxdWFyZSBvdmVyIHRoZSBvcmlnaW5hbCBibG9jayBm
b3IgdmlzdWFsIGluc3BlY3Rpb24uCi0gICAgb3JpZ2luYWxSZWN0ID0gbWFwVG9UcmFuc2Zvcm1l
ZChvcmlnaW5hbFJlY3QpOwotICAgIGNsaXBUb1RyYW5zZm9ybWVkQ29udGVudHNSZWN0KG9yaWdp
bmFsUmVjdCk7Ci0gICAgSW50UmVjdCByZW5kZXJSZWN0ID0gbWFwRnJvbVRyYW5zZm9ybWVkQ29u
dGVudHNUb1RyYW5zZm9ybWVkVmlld3BvcnQoYmxvY2tSZWN0KTsKLSAgICBJbnRSZWN0IG9yaWdp
bmFsUmVuZGVyUmVjdCA9IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFuc2Zvcm1lZFZp
ZXdwb3J0KG9yaWdpbmFsUmVjdCk7Ci0gICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSB0cmFuc2Zv
cm1lZFZpZXdwb3J0U2l6ZSgpOwotICAgIHJlbmRlclJlY3QuaW50ZXJzZWN0KEludFJlY3QoMCwg
MCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkpOwotICAgIG9y
aWdpbmFsUmVuZGVyUmVjdC5pbnRlcnNlY3QoSW50UmVjdCgwLCAwLCB2aWV3cG9ydFNpemUud2lk
dGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSk7Ci0gICAgbV9iYWNraW5nU3RvcmUtPmQtPmNs
ZWFyV2luZG93KHJlbmRlclJlY3QsIDAsIDAsIDApOwotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5j
bGVhcldpbmRvdyhvcmlnaW5hbFJlbmRlclJlY3QsIDEyMCwgMTIwLCAxMjApOwotICAgIG1fYmFj
a2luZ1N0b3JlLT5kLT5pbnZhbGlkYXRlV2luZG93KHJlbmRlclJlY3QpOworICAgIGlmICghbV9i
YWNraW5nU3RvcmUtPmQtPmlzU3VzcGVuZGVkKCkpIHsKKyAgICAgICAgLy8gUmUtcGFpbnQgdGhl
IGJhY2tpbmdzdG9yZSB0byBzY3JlZW4gdG8gZXJhc2Ugb3RoZXIgYW5ub3RhdGlvbnMuCisgICAg
ICAgIGlmIChtX2JhY2tpbmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3co
KSkKKyAgICAgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZW5kZXJWaXNpYmxlQ29udGVudHMo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmJsaXRWaXNp
YmxlQ29udGVudHMoKTsKKworICAgICAgICAvLyBSZW5kZXIgYSBibGFjayBzcXVhcmUgb3ZlciB0
aGUgY2FsY3VsYXRlZCBibG9jayBhbmQgYSBncmF5IHNxdWFyZSBvdmVyIHRoZSBvcmlnaW5hbCBi
bG9jayBmb3IgdmlzdWFsIGluc3BlY3Rpb24uCisgICAgICAgIG9yaWdpbmFsUmVjdCA9IG1hcFRv
VHJhbnNmb3JtZWQob3JpZ2luYWxSZWN0KTsKKyAgICAgICAgY2xpcFRvVHJhbnNmb3JtZWRDb250
ZW50c1JlY3Qob3JpZ2luYWxSZWN0KTsKKyAgICAgICAgSW50UmVjdCByZW5kZXJSZWN0ID0gbWFw
RnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9ybWVkVmlld3BvcnQoYmxvY2tSZWN0KTsK
KyAgICAgICAgSW50UmVjdCBvcmlnaW5hbFJlbmRlclJlY3QgPSBtYXBGcm9tVHJhbnNmb3JtZWRD
b250ZW50c1RvVHJhbnNmb3JtZWRWaWV3cG9ydChvcmlnaW5hbFJlY3QpOworICAgICAgICBJbnRT
aXplIHZpZXdwb3J0U2l6ZSA9IHRyYW5zZm9ybWVkVmlld3BvcnRTaXplKCk7CisgICAgICAgIHJl
bmRlclJlY3QuaW50ZXJzZWN0KEludFJlY3QoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSkpOworICAgICAgICBvcmlnaW5hbFJlbmRlclJlY3QuaW50ZXJz
ZWN0KEludFJlY3QoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWln
aHQoKSkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+Y2xlYXJXaW5kb3cocmVuZGVyUmVj
dCwgMCwgMCwgMCk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5jbGVhcldpbmRvdyhvcmln
aW5hbFJlbmRlclJlY3QsIDEyMCwgMTIwLCAxMjApOworICAgICAgICBtX2JhY2tpbmdTdG9yZS0+
ZC0+aW52YWxpZGF0ZVdpbmRvdyhyZW5kZXJSZWN0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHJl
dHVybiBibG9ja1JlY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2VfcC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaApp
bmRleCBiZTg4Y2IyODllZmViZjIzODg4ODFlNWJhOTVjNWZhZGI5ODk3NDA4Li5kNDBjOGQxMjc0
MzBjNjBjMDI3ODVlZTIyYzliN2Q2ZjAxOGY2MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZV9wLmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
aG91bGRab29tQWJvdXRQb2ludChkb3VibGUgc2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmIGFuY2hvciwgYm9vbCBlbmZvcmVTY2FsZUNsYW1waW5nLCBkb3VibGUqIGNsYW1wZWRTY2Fs
ZSk7CiAKICAgICAvLyBTY2FsZSB0aGUgcGFnZSB0byB0aGUgZ2l2ZW4gc2NhbGUgYW5kIGFuY2hv
ciBhYm91dCB0aGUgcG9pbnQgd2hpY2ggaXMgc3BlY2lmaWVkIGluIHVudHJhbnNmb3JtZWQgY29u
dGVudCBjb29yZGluYXRlcy4KLSAgICBib29sIHpvb21BYm91dFBvaW50KGRvdWJsZSBzY2FsZSwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgYW5jaG9yLCBib29sIGVuZm9yY2VTY2FsZUNsYW1w
aW5nID0gdHJ1ZSwgYm9vbCBmb3JjZVJlbmRlcmluZyA9IGZhbHNlLCBib29sIGlzUmVzdG9yaW5n
Wm9vbUxldmVsID0gZmFsc2UpOworICAgIGJvb2wgem9vbUFib3V0UG9pbnQoZG91YmxlIHNjYWxl
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBhbmNob3IsIGJvb2wgZW5mb3JjZVNjYWxlQ2xh
bXBpbmcgPSB0cnVlLCBib29sIGZvcmNlUmVuZGVyaW5nID0gZmFsc2UsIGJvb2wgaXNSZXN0b3Jp
bmdab29tTGV2ZWwgPSBmYWxzZSwgYm9vbCByZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRh
dGVzID0gZmFsc2UpOwogICAgIGJvb2wgc2NoZWR1bGVab29tQWJvdXRQb2ludChkb3VibGUgc2Nh
bGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFuY2hvciwgYm9vbCBlbmZvcmNlU2NhbGVD
bGFtcGluZyA9IHRydWUsIGJvb2wgZm9yY2VSZW5kZXJpbmcgPSBmYWxzZSk7CiAgICAgdm9pZCB1
bnNjaGVkdWxlWm9vbUFib3V0UG9pbnQoKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBjYWxjdWxh
dGVSZWZsb3dlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGFuY2hv
ck9mZnNldCwgZG91YmxlIGludmVyc2VTY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEJsYWNrQmVycnkuY3BwCmluZGV4IDg5N2JlYWY3MWUzNjA2YzY5MjBkNDhhYzQ1NzgxY2Q5
ZDJjMjQzNDguLjAyOTRiM2RiZTIzN2E2NGM0OGJiZjBmMWE1YzJiYWNkMTFlNDhjNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCkBAIC0xMDU4LDcgKzEw
NTgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6cmVzdG9yZVZpZXdTdGF0
ZSgpCiAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9zaG91bGRSZWZsb3dCbG9jayA9IHZpZXdTdGF0
ZS5zaG91bGRSZWZsb3dCbG9jazsKIAogICAgIC8vIFdpbGwgcmVzdG9yZSB1cGRhdGVzIHRvIGJh
Y2tpbmdzdG9yZSBndWFyYW50ZWVkIQotICAgIGlmICghbV93ZWJQYWdlUHJpdmF0ZS0+em9vbUFi
b3V0UG9pbnQoc2NhbGUsIG1fZnJhbWUtPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKSwgdHJ1ZSAv
KiBlbmZvcmNlU2NhbGVDbGFtcGluZyAqLywgdHJ1ZSAvKmZvcmNlUmVuZGVyaW5nKi8sIHRydWUg
Lyppc1Jlc3RvcmluZ1pvb21MZXZlbCovKSkgeworICAgIGlmICghbV93ZWJQYWdlUHJpdmF0ZS0+
em9vbUFib3V0UG9pbnQoc2NhbGUsIG1fZnJhbWUtPnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKSwg
dHJ1ZSAvKiBlbmZvcmNlU2NhbGVDbGFtcGluZyAqLywgdHJ1ZSAvKmZvcmNlUmVuZGVyaW5nKi8s
IHRydWUgLyppc1Jlc3RvcmluZ1pvb21MZXZlbCovLCB0cnVlIC8qcmVzdW1lU2NyZWVuQW5kQmFj
a2luZ1N0b3JlVXBkYXRlcyovKSkgewogICAgICAgICAvLyBJZiB3ZSdyZSBhbHJlYWR5IGF0IHRo
YXQgc2NhbGUsIHRoZW4gd2Ugc2hvdWxkIHN0aWxsIGZvcmNlIHJlbmRlcmluZyBzaW5jZQogICAg
ICAgICAvLyBvdXIgc2Nyb2xsIHBvc2l0aW9uIGNoYW5nZWQuCiAgICAgICAgIG1fd2ViUGFnZVBy
aXZhdGUtPm1fYmFja2luZ1N0b3JlLT5kLT5yZW5kZXJWaXNpYmxlQ29udGVudHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153066</attachid>
            <date>2012-07-18 12:30:31 -0700</date>
            <delta_ts>2012-07-19 07:57:40 -0700</delta_ts>
            <desc>Better &amp; smaller patch</desc>
            <filename>bug-91644-20120718152942.patch</filename>
            <type>text/plain</type>
            <size>12403</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyNTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwZTlhNzlmMWM5NDJhN2EyOTA0MzUwM2IxOWVlZjEzZTgxODMyZWQ5Li4yNTNkZmYxYTY3
NzNhYzdhM2I4NjlhYmU3YzgyMmQwOGI1Mzk4MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wNy0xOCAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBuZXN0ZWQgc3Vz
cGVuZC9yZXN1bWUgc2NyZWVuICYgYmFja2luZ3N0b3JlIGNhbGxzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2NDQKKyAgICAgICAgUklNIFBSIDE3
NDM2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGV4cG9zZSBzdXNwZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpIHRvIHRoZQorICAg
ICAgICBvdXRzaWRlIEFQSSwgYnV0IGFsc28gdXNlIGl0IGludGVybmFsbHkgd2hlbiByZWFjdGlu
ZworICAgICAgICB0byBhIG51bWJlciBvZiBoYXBwZW5pbmdzLCBpLmUuIHpvb21pbmcsIHZpZXdw
b3J0IHJlc2l6ZSwKKyAgICAgICAgcmVzZXR0aW5nIHZpZXcgc3RhdGUgb24gQ29tbWl0dGVkIHN0
YXRlIG9yIHdoZW4gcmVzdG9yaW5nCisgICAgICAgIGl0IGZyb20gcHJldmlvdXMgcGFnZXMsIGV0
Yy4KKworICAgICAgICBUaGVzZSB0d28gY2FuIGNsYXNoLiBGb3IgaW5zdGFuY2UsIGlmIHdlIGdl
dCBhIHN1c3BlbmQKKyAgICAgICAgY2FsbCBmcm9tIG91dHNpZGUgdGhhdCBzdXNwZW5kcyB1cyBm
b3IgYXBwIGluYWN0aXZpdHksCisgICAgICAgIG9yIHdlIGFyZSB0b2xkIHRvIHN1c3BlbmQgYmVj
YXVzZSB0aGUgbWFpbiB0YXJnZXQgc3VyZmFjZQorICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGF0
IHRoZSB0aW1lLCBhbmQgd2hpbGUgYmVpbmcgc3VzcGVuZGVkCisgICAgICAgIHdlIHRyeSB0byBy
b3RhdGUsIGZpbmlzaCBsb2FkaW5nIGEgcGFnZSwgdGhlIHdlJ2xsIGVuZCB1cAorICAgICAgICBy
ZXN1bWluZyBvcGVyYXRpb25zIGV2ZW4gdGhvdWdoIHdlIHNob3VsZG4ndC4KKworICAgICAgICBU
aGlzIHBhdGNoIGNoYW5nZXMgdGhlIHN1c3BlbmQgZmxhZyB0byBiZSBhIGNvdW50ZXIKKyAgICAg
ICAgaW5zdGVhZCwgYWxsb3dpbmcgbmVzdGVkIHN1c3BlbmQvcmVzdW1lIGNhbGxzIGFuZCBtYWtp
bmcKKyAgICAgICAgc3VzcGVuZC9yZXN1bWUgbW9yZSByb2J1c3QgdGhpcyB3YXkuIEl0IGFsc28g
Y2hhbmdlcworICAgICAgICBzZXZlcmFsIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIHN1c3BlbmQv
cmVzdW1lIGNhbGxzIGFyZQorICAgICAgICBwYWlyZWQgdXAgY29ycmVjdGx5LgorCisgICAgICAg
ICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kU2NyZWVuQW5kQmFja2lu
Z1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9y
ZVByaXZhdGU6OnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMpOgorICAgICAgICAq
IEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6Cisg
ICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6c2hvdWxkWm9vbUFib3V0UG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnRUaW1lckZpcmVkKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmJsb2NrWm9vbVJlY3RG
b3JOb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpyZXN0b3JlVmlld1N0YXRlKToKKwogMjAxMi0wNy0xNyAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSZW1vdmUgdW5uZWNlc3Nh
cnkgY2xlYXJXaW5kb3coKSBjYWxscyBhbmQgdGhlIG1ldGhvZCBpdHNlbGYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcAppbmRleCBmNGRkNjYyNDFkZGJl
NzY2YjU0ZDMyZDE5NGU3NDgyYzE5ZTYyNjc4Li44OGM4MDFjZTlhMWNiYjBhNGRhNjU0NDI0NjA2
N2M5YWM5OWY0MDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0Jh
Y2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5n
U3RvcmUuY3BwCkBAIC0xOTYsOCArMTk2LDkgQEAgUGxhdGZvcm06OkludFNpemUgQmFja2luZ1N0
b3JlR2VvbWV0cnk6OmJhY2tpbmdTdG9yZVNpemUoKSBjb25zdAogfQogCiBCYWNraW5nU3RvcmVQ
cml2YXRlOjpCYWNraW5nU3RvcmVQcml2YXRlKCkKLSAgICA6IG1fc3VzcGVuZFNjcmVlblVwZGF0
ZXMoZmFsc2UpCi0gICAgLCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzKGZhbHNlKQorICAg
IDogbV9zdXNwZW5kU2NyZWVuVXBkYXRlcygwKQorICAgICwgbV9zdXNwZW5kQmFja2luZ1N0b3Jl
VXBkYXRlcygwKQorICAgICwgbV9yZXN1bWVPcGVyYXRpb24oQmFja2luZ1N0b3JlOjpOb25lKQog
ICAgICwgbV9zdXNwZW5kUmVuZGVySm9icyhmYWxzZSkKICAgICAsIG1fc3VzcGVuZFJlZ3VsYXJS
ZW5kZXJKb2JzKGZhbHNlKQogICAgICwgbV9pc1Njcm9sbGluZ09yWm9vbWluZyhmYWxzZSkKQEAg
LTI3OSwxMiArMjgwLDE4IEBAIGJvb2wgQmFja2luZ1N0b3JlUHJpdmF0ZTo6aXNPcGVuR0xDb21w
b3NpdGluZygpIGNvbnN0CiAKIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c3VzcGVuZFNjcmVl
bkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogewotICAgIG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVw
ZGF0ZXMgPSB0cnVlOworICAgIGlmIChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKSB7CisgICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVs
SW5mbywKKyAgICAgICAgICAgICJTY3JlZW4gYW5kIGJhY2tpbmdzdG9yZSBhbHJlYWR5IHN1c3Bl
bmRlZCwgaW5jcmVhc2luZyBzdXNwZW5kIGNvdW50ZXIuIik7CisgICAgfQorCisgICAgKyttX3N1
c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSB1c2VyIGlu
dGVyZmFjZSB0aHJlYWQgZ2V0cyB0aGUgbWVzc2FnZSBiZWZvcmUgd2UgcHJvY2VlZAogICAgIC8v
IGJlY2F1c2UgYmxpdENvbnRlbnRzIGNhbiBiZSBjYWxsZWQgZnJvbSB0aGlzIHRocmVhZCBhbmQg
aXQgbXVzdCBob25vcgogICAgIC8vIHRoaXMgZmxhZy4KLSAgICBtX3N1c3BlbmRTY3JlZW5VcGRh
dGVzID0gdHJ1ZTsKKyAgICArK21fc3VzcGVuZFNjcmVlblVwZGF0ZXM7CisKICAgICBCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQoKS0+c3luY1Rv
Q3VycmVudE1lc3NhZ2UoKTsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAg
LTI5NCwxNCArMzAxLDQyIEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6c3VzcGVuZFNjcmVl
bkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoKQogCiB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJl
c3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bWVVcGRh
dGVPcGVyYXRpb24gb3ApCiB7Ci0gICAgbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcyA9IGZh
bHNlOworICAgIEFTU0VSVChtX3N1c3BlbmRTY3JlZW5VcGRhdGVzID4gMCk7CisgICAgQVNTRVJU
KG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgPiAwKTsKKworICAgIC8vIEJvdGggdmFyaWFi
bGVzIGFyZSBzaW1pbGFyIGV4Y2VwdCBmb3IgdGhlIHRpbWluZyBvZiBzZXR0aW5nIHRoZW0uCisg
ICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPT0gbV9zdXNwZW5kQmFja2luZ1N0b3Jl
VXBkYXRlcyk7CisKKyAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBkYXRlcyA8PSAwIHx8IG1fc3Vz
cGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgPD0gMCkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLAor
ICAgICAgICAgICAgIkNhbGwgbWlzbWF0Y2g6IFNjcmVlbiBhbmQgYmFja2luZ3N0b3JlIGhhdmVu
J3QgYmVlbiBzdXNwZW5kZWQsIHRoZXJlZm9yZSB3b24ndCByZXN1bWUhIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBPdXQgb2YgYWxsIG5lc3RlZCByZXN1bWUgY2FsbHMsIHJl
c3VtZSB3aXRoIHRoZSBtYXhpbXVtLWltcGFjdCBvcGVyYXRpb24uCisgICAgaWYgKG9wID09IEJh
Y2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdAorICAgICAgICB8fCAobV9yZXN1bWVPcGVyYXRpb24g
PT0gQmFja2luZ1N0b3JlOjpOb25lICYmIG9wID09IEJhY2tpbmdTdG9yZTo6QmxpdCkpCisgICAg
ICAgIG1fcmVzdW1lT3BlcmF0aW9uID0gb3A7CisKKyAgICBpZiAobV9zdXNwZW5kU2NyZWVuVXBk
YXRlcyA+PSAyICYmIG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgPj0gMikgeyAvLyB3ZSdy
ZSBzdGlsbCBzdXNwZW5kZWQKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAgICAgIlNjcmVlbiBhbmQg
YmFja2luZ3N0b3JlIHN0aWxsIHN1c3BlbmRlZCwgZGVjcmVhc2luZyBzdXNwZW5kIGNvdW50ZXIu
Iik7CisgICAgICAgIC0tbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlczsKKyAgICAgICAgLS1t
X3N1c3BlbmRTY3JlZW5VcGRhdGVzOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLS1t
X3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOworCisgICAgb3AgPSBtX3Jlc3VtZU9wZXJhdGlv
bjsKKyAgICBtX3Jlc3VtZU9wZXJhdGlvbiA9IEJhY2tpbmdTdG9yZTo6Tm9uZTsKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAob3AgIT0gQmFja2luZ1N0b3JlOjpO
b25lKSB7CiAgICAgICAgIGlmIChpc09wZW5HTENvbXBvc2l0aW5nKCkgJiYgIWlzQWN0aXZlKCkp
IHsKICAgICAgICAgICAgIG1fd2ViUGFnZS0+ZC0+c2V0Q29tcG9zaXRvckRyYXdzUm9vdExheWVy
KHRydWUpOwogICAgICAgICAgICAgbV93ZWJQYWdlLT5kLT5zZXROZWVkc09uZVNob3REcmF3aW5n
U3luY2hyb25pemF0aW9uKCk7Ci0gICAgICAgICAgICBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzID0g
ZmFsc2U7CisgICAgICAgICAgICAtLW1fc3VzcGVuZFNjcmVlblVwZGF0ZXM7CiAgICAgICAgICAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VDbGllbnQo
KS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMzIyLDcgKzM1Nyw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lU2Ny
ZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6OlJlc3VtCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSB1c2VyIGludGVyZmFjZSB0aHJlYWQgZ2V0cyB0aGUgbWVzc2FnZSBiZWZvcmUg
d2UgcHJvY2VlZAogICAgIC8vIGJlY2F1c2UgYmxpdENvbnRlbnRzIGNhbiBiZSBjYWxsZWQgZnJv
bSB0aGUgdXNlciBpbnRlcmZhY2UgdGhyZWFkIGFuZAogICAgIC8vIGl0IG11c3QgaG9ub3IgdGhp
cyBmbGFnLgotICAgIG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPSBmYWxzZTsKKyAgICAtLW1fc3Vz
cGVuZFNjcmVlblVwZGF0ZXM7CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZh
Y2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPnN5bmNUb0N1cnJlbnRNZXNzYWdlKCk7CiAKICAgICAv
LyBEbyBzb21lIGJsaXR0aW5nIGlmIG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAppbmRleCAzMjY1MTU2NTk2YzNiNTEzYmYyN2YzNDZk
ZTQ0ZDVjNzE5ZmNhM2M2Li43OWMyODA1ZTdkYzk4YmY0ZjI5ODAxMDI1ZTA0ZDViYmRlMDZjMjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZV9w
LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCkBA
IC0zMzUsOCArMzM1LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYlBhZ2UqIHNfY3VycmVu
dEJhY2tpbmdTdG9yZU93bmVyOwogCi0gICAgYm9vbCBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzOwot
ICAgIGJvb2wgbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlczsKKyAgICB1bnNpZ25lZCBpbnQg
bV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKKyAgICB1bnNpZ25lZCBpbnQgbV9zdXNwZW5kQmFja2lu
Z1N0b3JlVXBkYXRlczsKKyAgICBCYWNraW5nU3RvcmU6OlJlc3VtZVVwZGF0ZU9wZXJhdGlvbiBt
X3Jlc3VtZU9wZXJhdGlvbjsKIAogICAgIGJvb2wgbV9zdXNwZW5kUmVuZGVySm9iczsKICAgICBi
b29sIG1fc3VzcGVuZFJlZ3VsYXJSZW5kZXJKb2JzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9B
cGkvV2ViUGFnZS5jcHAKaW5kZXggOGYzMTY5NTBlZTNkOWQ1ZjZlM2RhMmMyMTNkYzFlYjJkMjJj
YWE1OC4uNWM4ZTU2YWMwZDY5YTZkYzk0ZjAzNjEyYzQ3YzViYjQ5NmI4YjAzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0xMTg3LDggKzExODcsNiBAQCBi
b29sIFdlYlBhZ2VQcml2YXRlOjpzaG91bGRab29tQWJvdXRQb2ludChkb3VibGUgc2NhbGUsIGNv
bnN0IEZsb2F0UG9pbnQmLCBib29sCiAgICAgKmNsYW1wZWRTY2FsZSA9IHNjYWxlOwogCiAgICAg
aWYgKGN1cnJlbnRTY2FsZSgpID09IHNjYWxlKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSBiYWNr
aW5nc3RvcmUgdXBkYXRlcyByZXN1bWUgZnJvbSBwaW5jaCB6b29tIGluIHRoZSBjYXNlIHdoZXJl
IHRoZSBmaW5hbCB6b29tIGxldmVsIGRvZXNuJ3QgY2hhbmdlLgotICAgICAgICBtX2JhY2tpbmdT
dG9yZS0+ZC0+cmVzdW1lU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6
Ok5vbmUpOwogICAgICAgICBtX2NsaWVudC0+em9vbUNoYW5nZWQobV93ZWJQYWdlLT5pc01pblpv
b21lZCgpLCBtX3dlYlBhZ2UtPmlzTWF4Wm9vbWVkKCksICFzaG91bGRab29tT25Fc2NhcGUoKSwg
Y3VycmVudFNjYWxlKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTM4MCw2
ICsxMzc4LDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6dW5zY2hlZHVsZVpvb21BYm91dFBvaW50
KCkKIHZvaWQgV2ViUGFnZVByaXZhdGU6Onpvb21BYm91dFBvaW50VGltZXJGaXJlZChUaW1lcjxX
ZWJQYWdlUHJpdmF0ZT4qKQogewogICAgIHpvb21BYm91dFBvaW50KG1fZGVsYXllZFpvb21Bcmd1
bWVudHMuc2NhbGUsIG1fZGVsYXllZFpvb21Bcmd1bWVudHMuYW5jaG9yLCBtX2RlbGF5ZWRab29t
QXJndW1lbnRzLmVuZm9yY2VTY2FsZUNsYW1waW5nLCBtX2RlbGF5ZWRab29tQXJndW1lbnRzLmZv
cmNlUmVuZGVyaW5nKTsKKyAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+cmVzdW1lU2NyZWVuQW5kQmFj
a2luZ1N0b3JlVXBkYXRlcyhtX2RlbGF5ZWRab29tQXJndW1lbnRzLmZvcmNlUmVuZGVyaW5nID8g
QmFja2luZ1N0b3JlOjpSZW5kZXJBbmRCbGl0IDogQmFja2luZ1N0b3JlOjpOb25lKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6c2V0TmVlZHNMYXlvdXQoKQpAQCAtMzA5MSwyMCArMzA5MCwy
NSBAQCBJbnRSZWN0IFdlYlBhZ2VQcml2YXRlOjpibG9ja1pvb21SZWN0Rm9yTm9kZShOb2RlKiBu
b2RlKQogICAgIGNsaXBUb1RyYW5zZm9ybWVkQ29udGVudHNSZWN0KGJsb2NrUmVjdCk7CiAKICNp
ZiBERUJVR19CTE9DS19aT09NCi0gICAgLy8gUmUtcGFpbnQgdGhlIGJhY2tpbmdzdG9yZSB0byBz
Y3JlZW4gdG8gZXJhc2Ugb3RoZXIgYW5ub3RhdGlvbnMuCi0gICAgbV9iYWNraW5nU3RvcmUtPmQt
PnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoQmFja2luZ1N0b3JlOjpCbGl0KTsK
LQotICAgIC8vIFJlbmRlciBhIGJsYWNrIHNxdWFyZSBvdmVyIHRoZSBjYWxjdWxhdGVkIGJsb2Nr
IGFuZCBhIGdyYXkgc3F1YXJlIG92ZXIgdGhlIG9yaWdpbmFsIGJsb2NrIGZvciB2aXN1YWwgaW5z
cGVjdGlvbi4KLSAgICBvcmlnaW5hbFJlY3QgPSBtYXBUb1RyYW5zZm9ybWVkKG9yaWdpbmFsUmVj
dCk7Ci0gICAgY2xpcFRvVHJhbnNmb3JtZWRDb250ZW50c1JlY3Qob3JpZ2luYWxSZWN0KTsKLSAg
ICBJbnRSZWN0IHJlbmRlclJlY3QgPSBtYXBGcm9tVHJhbnNmb3JtZWRDb250ZW50c1RvVHJhbnNm
b3JtZWRWaWV3cG9ydChibG9ja1JlY3QpOwotICAgIEludFJlY3Qgb3JpZ2luYWxSZW5kZXJSZWN0
ID0gbWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9ybWVkVmlld3BvcnQob3JpZ2lu
YWxSZWN0KTsKLSAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHRyYW5zZm9ybWVkVmlld3BvcnRT
aXplKCk7Ci0gICAgcmVuZGVyUmVjdC5pbnRlcnNlY3QoSW50UmVjdCgwLCAwLCB2aWV3cG9ydFNp
emUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSk7Ci0gICAgb3JpZ2luYWxSZW5kZXJS
ZWN0LmludGVyc2VjdChJbnRSZWN0KDAsIDAsIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9y
dFNpemUuaGVpZ2h0KCkpKTsKLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+Y2xlYXJXaW5kb3cocmVu
ZGVyUmVjdCwgMCwgMCwgMCk7Ci0gICAgbV9iYWNraW5nU3RvcmUtPmQtPmNsZWFyV2luZG93KG9y
aWdpbmFsUmVuZGVyUmVjdCwgMTIwLCAxMjAsIDEyMCk7Ci0gICAgbV9iYWNraW5nU3RvcmUtPmQt
PmludmFsaWRhdGVXaW5kb3cocmVuZGVyUmVjdCk7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+
ZC0+aXNTdXNwZW5kZWQoKSkgeworICAgICAgICAvLyBSZS1wYWludCB0aGUgYmFja2luZ3N0b3Jl
IHRvIHNjcmVlbiB0byBlcmFzZSBvdGhlciBhbm5vdGF0aW9ucy4KKyAgICAgICAgaWYgKG1fYmFj
a2luZ1N0b3JlLT5kLT5zaG91bGREaXJlY3RSZW5kZXJpbmdUb1dpbmRvdygpKQorICAgICAgICAg
ICAgbV9iYWNraW5nU3RvcmUtPmQtPnJlbmRlclZpc2libGVDb250ZW50cygpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+YmxpdFZpc2libGVDb250ZW50cygp
OworCisgICAgICAgIC8vIFJlbmRlciBhIGJsYWNrIHNxdWFyZSBvdmVyIHRoZSBjYWxjdWxhdGVk
IGJsb2NrIGFuZCBhIGdyYXkgc3F1YXJlIG92ZXIgdGhlIG9yaWdpbmFsIGJsb2NrIGZvciB2aXN1
YWwgaW5zcGVjdGlvbi4KKyAgICAgICAgb3JpZ2luYWxSZWN0ID0gbWFwVG9UcmFuc2Zvcm1lZChv
cmlnaW5hbFJlY3QpOworICAgICAgICBjbGlwVG9UcmFuc2Zvcm1lZENvbnRlbnRzUmVjdChvcmln
aW5hbFJlY3QpOworICAgICAgICBJbnRSZWN0IHJlbmRlclJlY3QgPSBtYXBGcm9tVHJhbnNmb3Jt
ZWRDb250ZW50c1RvVHJhbnNmb3JtZWRWaWV3cG9ydChibG9ja1JlY3QpOworICAgICAgICBJbnRS
ZWN0IG9yaWdpbmFsUmVuZGVyUmVjdCA9IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFu
c2Zvcm1lZFZpZXdwb3J0KG9yaWdpbmFsUmVjdCk7CisgICAgICAgIEludFNpemUgdmlld3BvcnRT
aXplID0gdHJhbnNmb3JtZWRWaWV3cG9ydFNpemUoKTsKKyAgICAgICAgcmVuZGVyUmVjdC5pbnRl
cnNlY3QoSW50UmVjdCgwLCAwLCB2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhl
aWdodCgpKSk7CisgICAgICAgIG9yaWdpbmFsUmVuZGVyUmVjdC5pbnRlcnNlY3QoSW50UmVjdCgw
LCAwLCB2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSk7CisgICAg
ICAgIG1fYmFja2luZ1N0b3JlLT5kLT5jbGVhcldpbmRvdyhyZW5kZXJSZWN0LCAwLCAwLCAwKTsK
KyAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmNsZWFyV2luZG93KG9yaWdpbmFsUmVuZGVyUmVj
dCwgMTIwLCAxMjAsIDEyMCk7CisgICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5pbnZhbGlkYXRl
V2luZG93KHJlbmRlclJlY3QpOworICAgIH0KICNlbmRpZgogCiAgICAgcmV0dXJuIGJsb2NrUmVj
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKaW5kZXggODk3
YmVhZjcxZTM2MDZjNjkyMGQ0OGFjNDU3ODFjZDlkMmMyNDM0OC4uYmUyYjE5YTAzYTViYzJlYTU1
MmVlZjEyN2Y0ZDk5MTZhNTBlMzk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeS5jcHAKQEAgLTEwNTcsMTIgKzEwNTcsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNs
aWVudEJsYWNrQmVycnk6OnJlc3RvcmVWaWV3U3RhdGUoKQogCiAgICAgbV93ZWJQYWdlUHJpdmF0
ZS0+bV9zaG91bGRSZWZsb3dCbG9jayA9IHZpZXdTdGF0ZS5zaG91bGRSZWZsb3dCbG9jazsKIAot
ICAgIC8vIFdpbGwgcmVzdG9yZSB1cGRhdGVzIHRvIGJhY2tpbmdzdG9yZSBndWFyYW50ZWVkIQot
ICAgIGlmICghbV93ZWJQYWdlUHJpdmF0ZS0+em9vbUFib3V0UG9pbnQoc2NhbGUsIG1fZnJhbWUt
PnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24oKSwgdHJ1ZSAvKiBlbmZvcmNlU2NhbGVDbGFtcGluZyAq
LywgdHJ1ZSAvKmZvcmNlUmVuZGVyaW5nKi8sIHRydWUgLyppc1Jlc3RvcmluZ1pvb21MZXZlbCov
KSkgewotICAgICAgICAvLyBJZiB3ZSdyZSBhbHJlYWR5IGF0IHRoYXQgc2NhbGUsIHRoZW4gd2Ug
c2hvdWxkIHN0aWxsIGZvcmNlIHJlbmRlcmluZyBzaW5jZQotICAgICAgICAvLyBvdXIgc2Nyb2xs
IHBvc2l0aW9uIGNoYW5nZWQuCi0gICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm1fYmFja2luZ1N0
b3JlLT5kLT5yZW5kZXJWaXNpYmxlQ29udGVudHMoKTsKKyAgICBib29sIGRpZFpvb20gPSBtX3dl
YlBhZ2VQcml2YXRlLT56b29tQWJvdXRQb2ludChzY2FsZSwgbV9mcmFtZS0+dmlldygpLT5zY3Jv
bGxQb3NpdGlvbigpLCB0cnVlIC8qIGVuZm9yY2VTY2FsZUNsYW1waW5nICovLCB0cnVlIC8qZm9y
Y2VSZW5kZXJpbmcqLywgdHJ1ZSAvKmlzUmVzdG9yaW5nWm9vbUxldmVsKi8pOworICAgIC8vIElm
IHdlJ3JlIGFscmVhZHkgYXQgdGhhdCBzY2FsZSwgdGhlbiB3ZSBzaG91bGQgc3RpbGwgZm9yY2Ug
cmVuZGVyaW5nCisgICAgLy8gc2luY2Ugb3VyIHNjcm9sbCBwb3NpdGlvbiBjaGFuZ2VkLgorICAg
IG1fd2ViUGFnZVByaXZhdGUtPm1fYmFja2luZ1N0b3JlLT5kLT5yZXN1bWVTY3JlZW5BbmRCYWNr
aW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdCk7CiAKKyAgICBpZiAo
IWRpZFpvb20pIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byBub3RpZnkgdGhlIGNsaWVudCBvZiB0
aGUgc2Nyb2xsIHBvc2l0aW9uIGFuZCBjb250ZW50IHNpemUgY2hhbmdlKHMpIGFib3ZlIGV2ZW4g
aWYgd2UgZGlkbid0IHNjYWxlLgogICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5ub3RpZnlUcmFu
c2Zvcm1lZENvbnRlbnRzU2l6ZUNoYW5nZWQoKTsKICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+
bm90aWZ5VHJhbnNmb3JtZWRTY3JvbGxDaGFuZ2VkKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153265</attachid>
            <date>2012-07-19 07:57:45 -0700</date>
            <delta_ts>2012-07-19 10:12:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91644-20120719105655.patch</filename>
            <type>text/plain</type>
            <size>12330</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwMWE5M2VkMzI4MmM4NWJjNmJhMjkxY2RlOGI3NDdiNTJhZDdmZTQ4Li4yNTE4MmNhMWE1
MmY1NGVmMWE1OTIxMmEzMjZhODE5ZTk3M2NhNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wNy0xOCAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBuZXN0ZWQgc3Vz
cGVuZC9yZXN1bWUgc2NyZWVuICYgYmFja2luZ3N0b3JlIGNhbGxzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2NDQKKyAgICAgICAgUklNIFBSIDE3
NDM2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGV4cG9zZSBzdXNwZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpIHRvIHRoZQorICAg
ICAgICBvdXRzaWRlIEFQSSwgYnV0IGFsc28gdXNlIGl0IGludGVybmFsbHkgd2hlbiByZWFjdGlu
ZworICAgICAgICB0byBhIG51bWJlciBvZiBoYXBwZW5pbmdzLCBpLmUuIHpvb21pbmcsIHZpZXdw
b3J0IHJlc2l6ZSwKKyAgICAgICAgcmVzZXR0aW5nIHZpZXcgc3RhdGUgb24gQ29tbWl0dGVkIHN0
YXRlIG9yIHdoZW4gcmVzdG9yaW5nCisgICAgICAgIGl0IGZyb20gcHJldmlvdXMgcGFnZXMsIGV0
Yy4KKworICAgICAgICBUaGVzZSB0d28gY2FuIGNsYXNoLiBGb3IgaW5zdGFuY2UsIGlmIHdlIGdl
dCBhIHN1c3BlbmQKKyAgICAgICAgY2FsbCBmcm9tIG91dHNpZGUgdGhhdCBzdXNwZW5kcyB1cyBm
b3IgYXBwIGluYWN0aXZpdHksCisgICAgICAgIG9yIHdlIGFyZSB0b2xkIHRvIHN1c3BlbmQgYmVj
YXVzZSB0aGUgbWFpbiB0YXJnZXQgc3VyZmFjZQorICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGF0
IHRoZSB0aW1lLCBhbmQgd2hpbGUgYmVpbmcgc3VzcGVuZGVkCisgICAgICAgIHdlIHRyeSB0byBy
b3RhdGUsIGZpbmlzaCBsb2FkaW5nIGEgcGFnZSwgdGhlIHdlJ2xsIGVuZCB1cAorICAgICAgICBy
ZXN1bWluZyBvcGVyYXRpb25zIGV2ZW4gdGhvdWdoIHdlIHNob3VsZG4ndC4KKworICAgICAgICBU
aGlzIHBhdGNoIGNoYW5nZXMgdGhlIHN1c3BlbmQgZmxhZyB0byBiZSBhIGNvdW50ZXIKKyAgICAg
ICAgaW5zdGVhZCwgYWxsb3dpbmcgbmVzdGVkIHN1c3BlbmQvcmVzdW1lIGNhbGxzIGFuZCBtYWtp
bmcKKyAgICAgICAgc3VzcGVuZC9yZXN1bWUgbW9yZSByb2J1c3QgdGhpcyB3YXkuIEl0IGFsc28g
Y2hhbmdlcworICAgICAgICBzZXZlcmFsIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIHN1c3BlbmQv
cmVzdW1lIGNhbGxzIGFyZQorICAgICAgICBwYWlyZWQgdXAgY29ycmVjdGx5LgorCisgICAgICAg
ICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kU2NyZWVuQW5kQmFja2lu
Z1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9y
ZVByaXZhdGU6OnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMpOgorICAgICAgICAq
IEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6Cisg
ICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6c2hvdWxkWm9vbUFib3V0UG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnRUaW1lckZpcmVkKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmJsb2NrWm9vbVJlY3RG
b3JOb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpyZXN0b3JlVmlld1N0YXRlKToKKwogMjAxMi0wNy0xNiAgWW9uZyBMaSAgPHlvbGlAcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gSW1wcm92ZSBhYm91dDptZW1vcnkgcGFnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGY0ZGQ2
NjI0MWRkYmU3NjZiNTRkMzJkMTk0ZTc0ODJjMTllNjI2NzguLjEyZjM1ZDgxMjMxN2JiODc2Zjdi
ZDE0ZGNhZDYxNzQ3YzhhMGIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L0JhY2tpbmdTdG9yZS5jcHAKQEAgLTE5Niw4ICsxOTYsOSBAQCBQbGF0Zm9ybTo6SW50U2l6ZSBC
YWNraW5nU3RvcmVHZW9tZXRyeTo6YmFja2luZ1N0b3JlU2l6ZSgpIGNvbnN0CiB9CiAKIEJhY2tp
bmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUoKQotICAgIDogbV9zdXNwZW5kU2Ny
ZWVuVXBkYXRlcyhmYWxzZSkKLSAgICAsIG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoZmFs
c2UpCisgICAgOiBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKDApCisgICAgLCBtX3N1c3BlbmRCYWNr
aW5nU3RvcmVVcGRhdGVzKDApCisgICAgLCBtX3Jlc3VtZU9wZXJhdGlvbihCYWNraW5nU3RvcmU6
Ok5vbmUpCiAgICAgLCBtX3N1c3BlbmRSZW5kZXJKb2JzKGZhbHNlKQogICAgICwgbV9zdXNwZW5k
UmVndWxhclJlbmRlckpvYnMoZmFsc2UpCiAgICAgLCBtX2lzU2Nyb2xsaW5nT3Jab29taW5nKGZh
bHNlKQpAQCAtMjc5LDEyICsyODAsMTggQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjppc09w
ZW5HTENvbXBvc2l0aW5nKCkgY29uc3QKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNw
ZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpCiB7Ci0gICAgbV9zdXNwZW5kQmFja2lu
Z1N0b3JlVXBkYXRlcyA9IHRydWU7CisgICAgaWYgKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMpIHsK
KyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
TG9nTGV2ZWxJbmZvLAorICAgICAgICAgICAgIlNjcmVlbiBhbmQgYmFja2luZ3N0b3JlIGFscmVh
ZHkgc3VzcGVuZGVkLCBpbmNyZWFzaW5nIHN1c3BlbmQgY291bnRlci4iKTsKKyAgICB9CisKKyAg
ICArK21fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXM7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhl
IHVzZXIgaW50ZXJmYWNlIHRocmVhZCBnZXRzIHRoZSBtZXNzYWdlIGJlZm9yZSB3ZSBwcm9jZWVk
CiAgICAgLy8gYmVjYXVzZSBibGl0Q29udGVudHMgY2FuIGJlIGNhbGxlZCBmcm9tIHRoaXMgdGhy
ZWFkIGFuZCBpdCBtdXN0IGhvbm9yCiAgICAgLy8gdGhpcyBmbGFnLgotICAgIG1fc3VzcGVuZFNj
cmVlblVwZGF0ZXMgPSB0cnVlOworICAgICsrbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKKwogICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgp
LT5zeW5jVG9DdXJyZW50TWVzc2FnZSgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpAQCAtMjk0LDE0ICszMDEsNDIgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNw
ZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpCiAKIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6cmVzdW1lU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6OlJl
c3VtZVVwZGF0ZU9wZXJhdGlvbiBvcCkKIHsKLSAgICBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRh
dGVzID0gZmFsc2U7CisgICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMpOworICAgIEFT
U0VSVChtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzKTsKKworICAgIC8vIEJvdGggdmFyaWFi
bGVzIGFyZSBzaW1pbGFyIGV4Y2VwdCBmb3IgdGhlIHRpbWluZyBvZiBzZXR0aW5nIHRoZW0uCisg
ICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPT0gbV9zdXNwZW5kQmFja2luZ1N0b3Jl
VXBkYXRlcyk7CisKKyAgICBpZiAoIW1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgfHwgIW1fc3VzcGVu
ZEJhY2tpbmdTdG9yZVVwZGF0ZXMpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Omxv
Z0Fsd2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAg
ICAgICJDYWxsIG1pc21hdGNoOiBTY3JlZW4gYW5kIGJhY2tpbmdzdG9yZSBoYXZlbid0IGJlZW4g
c3VzcGVuZGVkLCB0aGVyZWZvcmUgd29uJ3QgcmVzdW1lISIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gT3V0IG9mIGFsbCBuZXN0ZWQgcmVzdW1lIGNhbGxzLCByZXN1bWUgd2l0
aCB0aGUgbWF4aW11bS1pbXBhY3Qgb3BlcmF0aW9uLgorICAgIGlmIChvcCA9PSBCYWNraW5nU3Rv
cmU6OlJlbmRlckFuZEJsaXQKKyAgICAgICAgfHwgKG1fcmVzdW1lT3BlcmF0aW9uID09IEJhY2tp
bmdTdG9yZTo6Tm9uZSAmJiBvcCA9PSBCYWNraW5nU3RvcmU6OkJsaXQpKQorICAgICAgICBtX3Jl
c3VtZU9wZXJhdGlvbiA9IG9wOworCisgICAgaWYgKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPj0g
MiAmJiBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID49IDIpIHsgLy8gd2UncmUgc3RpbGwg
c3VzcGVuZGVkCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2coQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgICAgICJTY3JlZW4gYW5kIGJhY2tpbmdz
dG9yZSBzdGlsbCBzdXNwZW5kZWQsIGRlY3JlYXNpbmcgc3VzcGVuZCBjb3VudGVyLiIpOworICAg
ICAgICAtLW1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXM7CisgICAgICAgIC0tbV9zdXNwZW5k
U2NyZWVuVXBkYXRlczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC0tbV9zdXNwZW5k
QmFja2luZ1N0b3JlVXBkYXRlczsKKworICAgIG9wID0gbV9yZXN1bWVPcGVyYXRpb247CisgICAg
bV9yZXN1bWVPcGVyYXRpb24gPSBCYWNraW5nU3RvcmU6Ok5vbmU7CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG9wICE9IEJhY2tpbmdTdG9yZTo6Tm9uZSkgewog
ICAgICAgICBpZiAoaXNPcGVuR0xDb21wb3NpdGluZygpICYmICFpc0FjdGl2ZSgpKSB7CiAgICAg
ICAgICAgICBtX3dlYlBhZ2UtPmQtPnNldENvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcih0cnVlKTsK
ICAgICAgICAgICAgIG1fd2ViUGFnZS0+ZC0+c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOwotICAgICAgICAgICAgbV9zdXNwZW5kU2NyZWVuVXBkYXRlcyA9IGZhbHNlOwor
ICAgICAgICAgICAgLS1tX3N1c3BlbmRTY3JlZW5VcGRhdGVzOwogICAgICAgICAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPnN5bmNU
b0N1cnJlbnRNZXNzYWdlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMy
Miw3ICszNTcsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZVNjcmVlbkFuZEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bQogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgdXNlciBpbnRlcmZhY2UgdGhyZWFkIGdldHMgdGhlIG1lc3NhZ2UgYmVmb3JlIHdlIHByb2Nl
ZWQKICAgICAvLyBiZWNhdXNlIGJsaXRDb250ZW50cyBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIHVz
ZXIgaW50ZXJmYWNlIHRocmVhZCBhbmQKICAgICAvLyBpdCBtdXN0IGhvbm9yIHRoaXMgZmxhZy4K
LSAgICBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzID0gZmFsc2U7CisgICAgLS1tX3N1c3BlbmRTY3Jl
ZW5VcGRhdGVzOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFk
TWVzc2FnZUNsaWVudCgpLT5zeW5jVG9DdXJyZW50TWVzc2FnZSgpOwogCiAgICAgLy8gRG8gc29t
ZSBibGl0dGluZyBpZiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L0JhY2tpbmdTdG9yZV9wLmgKaW5kZXggMzI2NTE1NjU5NmMzYjUxM2JmMjdmMzQ2ZGU0NGQ1Yzcx
OWZjYTNjNi4uYTdmMDVlMDFlNmExMjRhODRlYjllM2VkM2ZhNjBkMDc3ZWU0MGRiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaApAQCAtMzM1LDgg
KzMzNSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWJQYWdlKiBzX2N1cnJlbnRCYWNraW5n
U3RvcmVPd25lcjsKIAotICAgIGJvb2wgbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLSAgICBib29s
IG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXM7CisgICAgdW5zaWduZWQgbV9zdXNwZW5kU2Ny
ZWVuVXBkYXRlczsKKyAgICB1bnNpZ25lZCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOwor
ICAgIEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW9uIG1fcmVzdW1lT3BlcmF0aW9u
OwogCiAgICAgYm9vbCBtX3N1c3BlbmRSZW5kZXJKb2JzOwogICAgIGJvb2wgbV9zdXNwZW5kUmVn
dWxhclJlbmRlckpvYnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApp
bmRleCBkZTE3N2E0ZTIyMWZjNjkyNTljZDlmNTFiNTk1ZjU0NjQzZTAyYThhLi5iZDY3MTYwZWU2
NmMzYjRmZjY3ZjA1ZTg4ZmE3OGVmYWY0MzdlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKQEAgLTExODksOCArMTE4OSw2IEBAIGJvb2wgV2ViUGFnZVByaXZh
dGU6OnNob3VsZFpvb21BYm91dFBvaW50KGRvdWJsZSBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYs
IGJvb2wKICAgICAqY2xhbXBlZFNjYWxlID0gc2NhbGU7CiAKICAgICBpZiAoY3VycmVudFNjYWxl
KCkgPT0gc2NhbGUpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIGJhY2tpbmdzdG9yZSB1cGRhdGVz
IHJlc3VtZSBmcm9tIHBpbmNoIHpvb20gaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGZpbmFsIHpvb20g
bGV2ZWwgZG9lc24ndCBjaGFuZ2UuCi0gICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXN1bWVT
Y3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9yZTo6Tm9uZSk7CiAgICAgICAg
IG1fY2xpZW50LT56b29tQ2hhbmdlZChtX3dlYlBhZ2UtPmlzTWluWm9vbWVkKCksIG1fd2ViUGFn
ZS0+aXNNYXhab29tZWQoKSwgIXNob3VsZFpvb21PbkVzY2FwZSgpLCBjdXJyZW50U2NhbGUoKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMzgyLDYgKzEzODAsNyBAQCB2b2lk
IFdlYlBhZ2VQcml2YXRlOjp1bnNjaGVkdWxlWm9vbUFib3V0UG9pbnQoKQogdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6em9vbUFib3V0UG9pbnRUaW1lckZpcmVkKFRpbWVyPFdlYlBhZ2VQcml2YXRlPiop
CiB7CiAgICAgem9vbUFib3V0UG9pbnQobV9kZWxheWVkWm9vbUFyZ3VtZW50cy5zY2FsZSwgbV9k
ZWxheWVkWm9vbUFyZ3VtZW50cy5hbmNob3IsIG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZW5mb3Jj
ZVNjYWxlQ2xhbXBpbmcsIG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZm9yY2VSZW5kZXJpbmcpOwor
ICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVz
KG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZm9yY2VSZW5kZXJpbmcgPyBCYWNraW5nU3RvcmU6OlJl
bmRlckFuZEJsaXQgOiBCYWNraW5nU3RvcmU6Ok5vbmUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcml2
YXRlOjpzZXROZWVkc0xheW91dCgpCkBAIC0zMDg1LDIwICszMDg0LDI1IEBAIEludFJlY3QgV2Vi
UGFnZVByaXZhdGU6OmJsb2NrWm9vbVJlY3RGb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgY2xpcFRv
VHJhbnNmb3JtZWRDb250ZW50c1JlY3QoYmxvY2tSZWN0KTsKIAogI2lmIERFQlVHX0JMT0NLX1pP
T00KLSAgICAvLyBSZS1wYWludCB0aGUgYmFja2luZ3N0b3JlIHRvIHNjcmVlbiB0byBlcmFzZSBv
dGhlciBhbm5vdGF0aW9ucy4KLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+cmVzdW1lU2NyZWVuQW5k
QmFja2luZ1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6OkJsaXQpOwotCi0gICAgLy8gUmVuZGVy
IGEgYmxhY2sgc3F1YXJlIG92ZXIgdGhlIGNhbGN1bGF0ZWQgYmxvY2sgYW5kIGEgZ3JheSBzcXVh
cmUgb3ZlciB0aGUgb3JpZ2luYWwgYmxvY2sgZm9yIHZpc3VhbCBpbnNwZWN0aW9uLgotICAgIG9y
aWdpbmFsUmVjdCA9IG1hcFRvVHJhbnNmb3JtZWQob3JpZ2luYWxSZWN0KTsKLSAgICBjbGlwVG9U
cmFuc2Zvcm1lZENvbnRlbnRzUmVjdChvcmlnaW5hbFJlY3QpOwotICAgIEludFJlY3QgcmVuZGVy
UmVjdCA9IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFuc2Zvcm1lZFZpZXdwb3J0KGJs
b2NrUmVjdCk7Ci0gICAgSW50UmVjdCBvcmlnaW5hbFJlbmRlclJlY3QgPSBtYXBGcm9tVHJhbnNm
b3JtZWRDb250ZW50c1RvVHJhbnNmb3JtZWRWaWV3cG9ydChvcmlnaW5hbFJlY3QpOwotICAgIElu
dFNpemUgdmlld3BvcnRTaXplID0gdHJhbnNmb3JtZWRWaWV3cG9ydFNpemUoKTsKLSAgICByZW5k
ZXJSZWN0LmludGVyc2VjdChJbnRSZWN0KDAsIDAsIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3
cG9ydFNpemUuaGVpZ2h0KCkpKTsKLSAgICBvcmlnaW5hbFJlbmRlclJlY3QuaW50ZXJzZWN0KElu
dFJlY3QoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkp
OwotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5jbGVhcldpbmRvdyhyZW5kZXJSZWN0LCAwLCAwLCAw
KTsKLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+Y2xlYXJXaW5kb3cob3JpZ2luYWxSZW5kZXJSZWN0
LCAxMjAsIDEyMCwgMTIwKTsKLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+aW52YWxpZGF0ZVdpbmRv
dyhyZW5kZXJSZWN0KTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kLT5pc1N1c3BlbmRlZCgp
KSB7CisgICAgICAgIC8vIFJlLXBhaW50IHRoZSBiYWNraW5nc3RvcmUgdG8gc2NyZWVuIHRvIGVy
YXNlIG90aGVyIGFubm90YXRpb25zLgorICAgICAgICBpZiAobV9iYWNraW5nU3RvcmUtPmQtPnNo
b3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9y
ZS0+ZC0+cmVuZGVyVmlzaWJsZUNvbnRlbnRzKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYmFja2luZ1N0b3JlLT5kLT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7CisKKyAgICAgICAgLy8g
UmVuZGVyIGEgYmxhY2sgc3F1YXJlIG92ZXIgdGhlIGNhbGN1bGF0ZWQgYmxvY2sgYW5kIGEgZ3Jh
eSBzcXVhcmUgb3ZlciB0aGUgb3JpZ2luYWwgYmxvY2sgZm9yIHZpc3VhbCBpbnNwZWN0aW9uLgor
ICAgICAgICBvcmlnaW5hbFJlY3QgPSBtYXBUb1RyYW5zZm9ybWVkKG9yaWdpbmFsUmVjdCk7Cisg
ICAgICAgIGNsaXBUb1RyYW5zZm9ybWVkQ29udGVudHNSZWN0KG9yaWdpbmFsUmVjdCk7CisgICAg
ICAgIEludFJlY3QgcmVuZGVyUmVjdCA9IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFu
c2Zvcm1lZFZpZXdwb3J0KGJsb2NrUmVjdCk7CisgICAgICAgIEludFJlY3Qgb3JpZ2luYWxSZW5k
ZXJSZWN0ID0gbWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9ybWVkVmlld3BvcnQo
b3JpZ2luYWxSZWN0KTsKKyAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSB0cmFuc2Zvcm1l
ZFZpZXdwb3J0U2l6ZSgpOworICAgICAgICByZW5kZXJSZWN0LmludGVyc2VjdChJbnRSZWN0KDAs
IDAsIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpKTsKKyAgICAg
ICAgb3JpZ2luYWxSZW5kZXJSZWN0LmludGVyc2VjdChJbnRSZWN0KDAsIDAsIHZpZXdwb3J0U2l6
ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPmQtPmNsZWFyV2luZG93KHJlbmRlclJlY3QsIDAsIDAsIDApOworICAgICAgICBtX2JhY2tp
bmdTdG9yZS0+ZC0+Y2xlYXJXaW5kb3cob3JpZ2luYWxSZW5kZXJSZWN0LCAxMjAsIDEyMCwgMTIw
KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmludmFsaWRhdGVXaW5kb3cocmVuZGVyUmVj
dCk7CisgICAgfQogI2VuZGlmCiAKICAgICByZXR1cm4gYmxvY2tSZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA1ZmJmZmI2OTM1YjQyZjQxNjNk
ZTYwZmNlNmFmMWIyMTA3ZjgxNWI1Li45MmI0OWIxNmJmYTBiY2FiMzA3NjI4MDMyOTg1MmJhMmQ1
ZjFiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcApA
QCAtMTA2NSwxMiArMTA2NSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6
cmVzdG9yZVZpZXdTdGF0ZSgpCiAKICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX3Nob3VsZFJlZmxv
d0Jsb2NrID0gdmlld1N0YXRlLnNob3VsZFJlZmxvd0Jsb2NrOwogCi0gICAgLy8gV2lsbCByZXN0
b3JlIHVwZGF0ZXMgdG8gYmFja2luZ3N0b3JlIGd1YXJhbnRlZWQhCi0gICAgaWYgKCFtX3dlYlBh
Z2VQcml2YXRlLT56b29tQWJvdXRQb2ludChzY2FsZSwgbV9mcmFtZS0+dmlldygpLT5zY3JvbGxQ
b3NpdGlvbigpLCB0cnVlIC8qIGVuZm9yY2VTY2FsZUNsYW1waW5nICovLCB0cnVlIC8qZm9yY2VS
ZW5kZXJpbmcqLywgdHJ1ZSAvKmlzUmVzdG9yaW5nWm9vbUxldmVsKi8pKSB7Ci0gICAgICAgIC8v
IElmIHdlJ3JlIGFscmVhZHkgYXQgdGhhdCBzY2FsZSwgdGhlbiB3ZSBzaG91bGQgc3RpbGwgZm9y
Y2UgcmVuZGVyaW5nIHNpbmNlCi0gICAgICAgIC8vIG91ciBzY3JvbGwgcG9zaXRpb24gY2hhbmdl
ZC4KLSAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9iYWNraW5nU3RvcmUtPmQtPnJlbmRlclZp
c2libGVDb250ZW50cygpOworICAgIGJvb2wgZGlkWm9vbSA9IG1fd2ViUGFnZVByaXZhdGUtPnpv
b21BYm91dFBvaW50KHNjYWxlLCBtX2ZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCksIHRy
dWUgLyogZW5mb3JjZVNjYWxlQ2xhbXBpbmcgKi8sIHRydWUgLypmb3JjZVJlbmRlcmluZyovLCB0
cnVlIC8qaXNSZXN0b3Jpbmdab29tTGV2ZWwqLyk7CisgICAgLy8gSWYgd2UncmUgYWxyZWFkeSBh
dCB0aGF0IHNjYWxlLCB0aGVuIHdlIHNob3VsZCBzdGlsbCBmb3JjZSByZW5kZXJpbmcKKyAgICAv
LyBzaW5jZSBvdXIgc2Nyb2xsIHBvc2l0aW9uIGNoYW5nZWQuCisgICAgbV93ZWJQYWdlUHJpdmF0
ZS0+bV9iYWNraW5nU3RvcmUtPmQtPnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMo
QmFja2luZ1N0b3JlOjpSZW5kZXJBbmRCbGl0KTsKIAorICAgIGlmICghZGlkWm9vbSkgewogICAg
ICAgICAvLyBXZSBuZWVkIHRvIG5vdGlmeSB0aGUgY2xpZW50IG9mIHRoZSBzY3JvbGwgcG9zaXRp
b24gYW5kIGNvbnRlbnQgc2l6ZSBjaGFuZ2UocykgYWJvdmUgZXZlbiBpZiB3ZSBkaWRuJ3Qgc2Nh
bGUuCiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm5vdGlmeVRyYW5zZm9ybWVkQ29udGVudHNT
aXplQ2hhbmdlZCgpOwogICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5ub3RpZnlUcmFuc2Zvcm1l
ZFNjcm9sbENoYW5nZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153291</attachid>
            <date>2012-07-19 10:13:04 -0700</date>
            <delta_ts>2012-07-19 10:14:43 -0700</delta_ts>
            <desc>Patch as r+ed above, with both Adam and Antonio listed as reviewers</desc>
            <filename>bug-91644-20120719131210.patch</filename>
            <type>text/plain</type>
            <size>12330</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwMWE5M2VkMzI4MmM4NWJjNmJhMjkxY2RlOGI3NDdiNTJhZDdmZTQ4Li4yNTE4MmNhMWE1
MmY1NGVmMWE1OTIxMmEzMjZhODE5ZTk3M2NhNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wNy0xOCAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBuZXN0ZWQgc3Vz
cGVuZC9yZXN1bWUgc2NyZWVuICYgYmFja2luZ3N0b3JlIGNhbGxzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2NDQKKyAgICAgICAgUklNIFBSIDE3
NDM2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IGV4cG9zZSBzdXNwZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpIHRvIHRoZQorICAg
ICAgICBvdXRzaWRlIEFQSSwgYnV0IGFsc28gdXNlIGl0IGludGVybmFsbHkgd2hlbiByZWFjdGlu
ZworICAgICAgICB0byBhIG51bWJlciBvZiBoYXBwZW5pbmdzLCBpLmUuIHpvb21pbmcsIHZpZXdw
b3J0IHJlc2l6ZSwKKyAgICAgICAgcmVzZXR0aW5nIHZpZXcgc3RhdGUgb24gQ29tbWl0dGVkIHN0
YXRlIG9yIHdoZW4gcmVzdG9yaW5nCisgICAgICAgIGl0IGZyb20gcHJldmlvdXMgcGFnZXMsIGV0
Yy4KKworICAgICAgICBUaGVzZSB0d28gY2FuIGNsYXNoLiBGb3IgaW5zdGFuY2UsIGlmIHdlIGdl
dCBhIHN1c3BlbmQKKyAgICAgICAgY2FsbCBmcm9tIG91dHNpZGUgdGhhdCBzdXNwZW5kcyB1cyBm
b3IgYXBwIGluYWN0aXZpdHksCisgICAgICAgIG9yIHdlIGFyZSB0b2xkIHRvIHN1c3BlbmQgYmVj
YXVzZSB0aGUgbWFpbiB0YXJnZXQgc3VyZmFjZQorICAgICAgICBpcyBub3QgYXZhaWxhYmxlIGF0
IHRoZSB0aW1lLCBhbmQgd2hpbGUgYmVpbmcgc3VzcGVuZGVkCisgICAgICAgIHdlIHRyeSB0byBy
b3RhdGUsIGZpbmlzaCBsb2FkaW5nIGEgcGFnZSwgdGhlIHdlJ2xsIGVuZCB1cAorICAgICAgICBy
ZXN1bWluZyBvcGVyYXRpb25zIGV2ZW4gdGhvdWdoIHdlIHNob3VsZG4ndC4KKworICAgICAgICBU
aGlzIHBhdGNoIGNoYW5nZXMgdGhlIHN1c3BlbmQgZmxhZyB0byBiZSBhIGNvdW50ZXIKKyAgICAg
ICAgaW5zdGVhZCwgYWxsb3dpbmcgbmVzdGVkIHN1c3BlbmQvcmVzdW1lIGNhbGxzIGFuZCBtYWtp
bmcKKyAgICAgICAgc3VzcGVuZC9yZXN1bWUgbW9yZSByb2J1c3QgdGhpcyB3YXkuIEl0IGFsc28g
Y2hhbmdlcworICAgICAgICBzZXZlcmFsIGNhbGwgc2l0ZXMgdG8gbWFrZSBzdXJlIHN1c3BlbmQv
cmVzdW1lIGNhbGxzIGFyZQorICAgICAgICBwYWlyZWQgdXAgY29ycmVjdGx5LgorCisgICAgICAg
ICogQXBpL0JhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJh
Y2tpbmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUpOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNwZW5kU2NyZWVuQW5kQmFja2lu
Z1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9y
ZVByaXZhdGU6OnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMpOgorICAgICAgICAq
IEFwaS9CYWNraW5nU3RvcmVfcC5oOgorICAgICAgICAoQmFja2luZ1N0b3JlUHJpdmF0ZSk6Cisg
ICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpX
ZWJQYWdlUHJpdmF0ZTo6c2hvdWxkWm9vbUFib3V0UG9pbnQpOgorICAgICAgICAoQmxhY2tCZXJy
eTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6em9vbUFib3V0UG9pbnRUaW1lckZpcmVkKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmJsb2NrWm9vbVJlY3RG
b3JOb2RlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNr
QmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5
OjpyZXN0b3JlVmlld1N0YXRlKToKKwogMjAxMi0wNy0xNiAgWW9uZyBMaSAgPHlvbGlAcmltLmNv
bT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gSW1wcm92ZSBhYm91dDptZW1vcnkgcGFnZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGY0ZGQ2
NjI0MWRkYmU3NjZiNTRkMzJkMTk0ZTc0ODJjMTllNjI2NzguLjEyZjM1ZDgxMjMxN2JiODc2Zjdi
ZDE0ZGNhZDYxNzQ3YzhhMGIwMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L0JhY2tpbmdTdG9yZS5jcHAKQEAgLTE5Niw4ICsxOTYsOSBAQCBQbGF0Zm9ybTo6SW50U2l6ZSBC
YWNraW5nU3RvcmVHZW9tZXRyeTo6YmFja2luZ1N0b3JlU2l6ZSgpIGNvbnN0CiB9CiAKIEJhY2tp
bmdTdG9yZVByaXZhdGU6OkJhY2tpbmdTdG9yZVByaXZhdGUoKQotICAgIDogbV9zdXNwZW5kU2Ny
ZWVuVXBkYXRlcyhmYWxzZSkKLSAgICAsIG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoZmFs
c2UpCisgICAgOiBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKDApCisgICAgLCBtX3N1c3BlbmRCYWNr
aW5nU3RvcmVVcGRhdGVzKDApCisgICAgLCBtX3Jlc3VtZU9wZXJhdGlvbihCYWNraW5nU3RvcmU6
Ok5vbmUpCiAgICAgLCBtX3N1c3BlbmRSZW5kZXJKb2JzKGZhbHNlKQogICAgICwgbV9zdXNwZW5k
UmVndWxhclJlbmRlckpvYnMoZmFsc2UpCiAgICAgLCBtX2lzU2Nyb2xsaW5nT3Jab29taW5nKGZh
bHNlKQpAQCAtMjc5LDEyICsyODAsMTggQEAgYm9vbCBCYWNraW5nU3RvcmVQcml2YXRlOjppc09w
ZW5HTENvbXBvc2l0aW5nKCkgY29uc3QKIAogdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNw
ZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpCiB7Ci0gICAgbV9zdXNwZW5kQmFja2lu
Z1N0b3JlVXBkYXRlcyA9IHRydWU7CisgICAgaWYgKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMpIHsK
KyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
TG9nTGV2ZWxJbmZvLAorICAgICAgICAgICAgIlNjcmVlbiBhbmQgYmFja2luZ3N0b3JlIGFscmVh
ZHkgc3VzcGVuZGVkLCBpbmNyZWFzaW5nIHN1c3BlbmQgY291bnRlci4iKTsKKyAgICB9CisKKyAg
ICArK21fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXM7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhl
IHVzZXIgaW50ZXJmYWNlIHRocmVhZCBnZXRzIHRoZSBtZXNzYWdlIGJlZm9yZSB3ZSBwcm9jZWVk
CiAgICAgLy8gYmVjYXVzZSBibGl0Q29udGVudHMgY2FuIGJlIGNhbGxlZCBmcm9tIHRoaXMgdGhy
ZWFkIGFuZCBpdCBtdXN0IGhvbm9yCiAgICAgLy8gdGhpcyBmbGFnLgotICAgIG1fc3VzcGVuZFNj
cmVlblVwZGF0ZXMgPSB0cnVlOworICAgICsrbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKKwogICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFkTWVzc2FnZUNsaWVudCgp
LT5zeW5jVG9DdXJyZW50TWVzc2FnZSgpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpAQCAtMjk0LDE0ICszMDEsNDIgQEAgdm9pZCBCYWNraW5nU3RvcmVQcml2YXRlOjpzdXNw
ZW5kU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcygpCiAKIHZvaWQgQmFja2luZ1N0b3JlUHJp
dmF0ZTo6cmVzdW1lU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6OlJl
c3VtZVVwZGF0ZU9wZXJhdGlvbiBvcCkKIHsKLSAgICBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRh
dGVzID0gZmFsc2U7CisgICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMpOworICAgIEFT
U0VSVChtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzKTsKKworICAgIC8vIEJvdGggdmFyaWFi
bGVzIGFyZSBzaW1pbGFyIGV4Y2VwdCBmb3IgdGhlIHRpbWluZyBvZiBzZXR0aW5nIHRoZW0uCisg
ICAgQVNTRVJUKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPT0gbV9zdXNwZW5kQmFja2luZ1N0b3Jl
VXBkYXRlcyk7CisKKyAgICBpZiAoIW1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgfHwgIW1fc3VzcGVu
ZEJhY2tpbmdTdG9yZVVwZGF0ZXMpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Omxv
Z0Fsd2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxDcml0aWNhbCwKKyAgICAgICAg
ICAgICJDYWxsIG1pc21hdGNoOiBTY3JlZW4gYW5kIGJhY2tpbmdzdG9yZSBoYXZlbid0IGJlZW4g
c3VzcGVuZGVkLCB0aGVyZWZvcmUgd29uJ3QgcmVzdW1lISIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgLy8gT3V0IG9mIGFsbCBuZXN0ZWQgcmVzdW1lIGNhbGxzLCByZXN1bWUgd2l0
aCB0aGUgbWF4aW11bS1pbXBhY3Qgb3BlcmF0aW9uLgorICAgIGlmIChvcCA9PSBCYWNraW5nU3Rv
cmU6OlJlbmRlckFuZEJsaXQKKyAgICAgICAgfHwgKG1fcmVzdW1lT3BlcmF0aW9uID09IEJhY2tp
bmdTdG9yZTo6Tm9uZSAmJiBvcCA9PSBCYWNraW5nU3RvcmU6OkJsaXQpKQorICAgICAgICBtX3Jl
c3VtZU9wZXJhdGlvbiA9IG9wOworCisgICAgaWYgKG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPj0g
MiAmJiBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID49IDIpIHsgLy8gd2UncmUgc3RpbGwg
c3VzcGVuZGVkCisgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2coQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkxvZ0xldmVsSW5mbywKKyAgICAgICAgICAgICJTY3JlZW4gYW5kIGJhY2tpbmdz
dG9yZSBzdGlsbCBzdXNwZW5kZWQsIGRlY3JlYXNpbmcgc3VzcGVuZCBjb3VudGVyLiIpOworICAg
ICAgICAtLW1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXM7CisgICAgICAgIC0tbV9zdXNwZW5k
U2NyZWVuVXBkYXRlczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC0tbV9zdXNwZW5k
QmFja2luZ1N0b3JlVXBkYXRlczsKKworICAgIG9wID0gbV9yZXN1bWVPcGVyYXRpb247CisgICAg
bV9yZXN1bWVPcGVyYXRpb24gPSBCYWNraW5nU3RvcmU6Ok5vbmU7CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG9wICE9IEJhY2tpbmdTdG9yZTo6Tm9uZSkgewog
ICAgICAgICBpZiAoaXNPcGVuR0xDb21wb3NpdGluZygpICYmICFpc0FjdGl2ZSgpKSB7CiAgICAg
ICAgICAgICBtX3dlYlBhZ2UtPmQtPnNldENvbXBvc2l0b3JEcmF3c1Jvb3RMYXllcih0cnVlKTsK
ICAgICAgICAgICAgIG1fd2ViUGFnZS0+ZC0+c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOwotICAgICAgICAgICAgbV9zdXNwZW5kU2NyZWVuVXBkYXRlcyA9IGZhbHNlOwor
ICAgICAgICAgICAgLS1tX3N1c3BlbmRTY3JlZW5VcGRhdGVzOwogICAgICAgICAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPnN5bmNU
b0N1cnJlbnRNZXNzYWdlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMy
Miw3ICszNTcsNyBAQCB2b2lkIEJhY2tpbmdTdG9yZVByaXZhdGU6OnJlc3VtZVNjcmVlbkFuZEJh
Y2tpbmdTdG9yZVVwZGF0ZXMoQmFja2luZ1N0b3JlOjpSZXN1bQogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgdXNlciBpbnRlcmZhY2UgdGhyZWFkIGdldHMgdGhlIG1lc3NhZ2UgYmVmb3JlIHdlIHByb2Nl
ZWQKICAgICAvLyBiZWNhdXNlIGJsaXRDb250ZW50cyBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIHVz
ZXIgaW50ZXJmYWNlIHRocmVhZCBhbmQKICAgICAvLyBpdCBtdXN0IGhvbm9yIHRoaXMgZmxhZy4K
LSAgICBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzID0gZmFsc2U7CisgICAgLS1tX3N1c3BlbmRTY3Jl
ZW5VcGRhdGVzOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjp1c2VySW50ZXJmYWNlVGhyZWFk
TWVzc2FnZUNsaWVudCgpLT5zeW5jVG9DdXJyZW50TWVzc2FnZSgpOwogCiAgICAgLy8gRG8gc29t
ZSBibGl0dGluZyBpZiBuZWNlc3NhcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL0JhY2tpbmdTdG9yZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L0JhY2tpbmdTdG9yZV9wLmgKaW5kZXggMzI2NTE1NjU5NmMzYjUxM2JmMjdmMzQ2ZGU0NGQ1Yzcx
OWZjYTNjNi4uYTdmMDVlMDFlNmExMjRhODRlYjllM2VkM2ZhNjBkMDc3ZWU0MGRiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVfcC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaApAQCAtMzM1LDgg
KzMzNSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBXZWJQYWdlKiBzX2N1cnJlbnRCYWNraW5n
U3RvcmVPd25lcjsKIAotICAgIGJvb2wgbV9zdXNwZW5kU2NyZWVuVXBkYXRlczsKLSAgICBib29s
IG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXM7CisgICAgdW5zaWduZWQgbV9zdXNwZW5kU2Ny
ZWVuVXBkYXRlczsKKyAgICB1bnNpZ25lZCBtX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOwor
ICAgIEJhY2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW9uIG1fcmVzdW1lT3BlcmF0aW9u
OwogCiAgICAgYm9vbCBtX3N1c3BlbmRSZW5kZXJKb2JzOwogICAgIGJvb2wgbV9zdXNwZW5kUmVn
dWxhclJlbmRlckpvYnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApp
bmRleCBkZTE3N2E0ZTIyMWZjNjkyNTljZDlmNTFiNTk1ZjU0NjQzZTAyYThhLi5iZDY3MTYwZWU2
NmMzYjRmZjY3ZjA1ZTg4ZmE3OGVmYWY0MzdlMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKQEAgLTExODksOCArMTE4OSw2IEBAIGJvb2wgV2ViUGFnZVByaXZh
dGU6OnNob3VsZFpvb21BYm91dFBvaW50KGRvdWJsZSBzY2FsZSwgY29uc3QgRmxvYXRQb2ludCYs
IGJvb2wKICAgICAqY2xhbXBlZFNjYWxlID0gc2NhbGU7CiAKICAgICBpZiAoY3VycmVudFNjYWxl
KCkgPT0gc2NhbGUpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIGJhY2tpbmdzdG9yZSB1cGRhdGVz
IHJlc3VtZSBmcm9tIHBpbmNoIHpvb20gaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGZpbmFsIHpvb20g
bGV2ZWwgZG9lc24ndCBjaGFuZ2UuCi0gICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXN1bWVT
Y3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9yZTo6Tm9uZSk7CiAgICAgICAg
IG1fY2xpZW50LT56b29tQ2hhbmdlZChtX3dlYlBhZ2UtPmlzTWluWm9vbWVkKCksIG1fd2ViUGFn
ZS0+aXNNYXhab29tZWQoKSwgIXNob3VsZFpvb21PbkVzY2FwZSgpLCBjdXJyZW50U2NhbGUoKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMzgyLDYgKzEzODAsNyBAQCB2b2lk
IFdlYlBhZ2VQcml2YXRlOjp1bnNjaGVkdWxlWm9vbUFib3V0UG9pbnQoKQogdm9pZCBXZWJQYWdl
UHJpdmF0ZTo6em9vbUFib3V0UG9pbnRUaW1lckZpcmVkKFRpbWVyPFdlYlBhZ2VQcml2YXRlPiop
CiB7CiAgICAgem9vbUFib3V0UG9pbnQobV9kZWxheWVkWm9vbUFyZ3VtZW50cy5zY2FsZSwgbV9k
ZWxheWVkWm9vbUFyZ3VtZW50cy5hbmNob3IsIG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZW5mb3Jj
ZVNjYWxlQ2xhbXBpbmcsIG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZm9yY2VSZW5kZXJpbmcpOwor
ICAgIG1fYmFja2luZ1N0b3JlLT5kLT5yZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVz
KG1fZGVsYXllZFpvb21Bcmd1bWVudHMuZm9yY2VSZW5kZXJpbmcgPyBCYWNraW5nU3RvcmU6OlJl
bmRlckFuZEJsaXQgOiBCYWNraW5nU3RvcmU6Ok5vbmUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcml2
YXRlOjpzZXROZWVkc0xheW91dCgpCkBAIC0zMDg1LDIwICszMDg0LDI1IEBAIEludFJlY3QgV2Vi
UGFnZVByaXZhdGU6OmJsb2NrWm9vbVJlY3RGb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgY2xpcFRv
VHJhbnNmb3JtZWRDb250ZW50c1JlY3QoYmxvY2tSZWN0KTsKIAogI2lmIERFQlVHX0JMT0NLX1pP
T00KLSAgICAvLyBSZS1wYWludCB0aGUgYmFja2luZ3N0b3JlIHRvIHNjcmVlbiB0byBlcmFzZSBv
dGhlciBhbm5vdGF0aW9ucy4KLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+cmVzdW1lU2NyZWVuQW5k
QmFja2luZ1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6OkJsaXQpOwotCi0gICAgLy8gUmVuZGVy
IGEgYmxhY2sgc3F1YXJlIG92ZXIgdGhlIGNhbGN1bGF0ZWQgYmxvY2sgYW5kIGEgZ3JheSBzcXVh
cmUgb3ZlciB0aGUgb3JpZ2luYWwgYmxvY2sgZm9yIHZpc3VhbCBpbnNwZWN0aW9uLgotICAgIG9y
aWdpbmFsUmVjdCA9IG1hcFRvVHJhbnNmb3JtZWQob3JpZ2luYWxSZWN0KTsKLSAgICBjbGlwVG9U
cmFuc2Zvcm1lZENvbnRlbnRzUmVjdChvcmlnaW5hbFJlY3QpOwotICAgIEludFJlY3QgcmVuZGVy
UmVjdCA9IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFuc2Zvcm1lZFZpZXdwb3J0KGJs
b2NrUmVjdCk7Ci0gICAgSW50UmVjdCBvcmlnaW5hbFJlbmRlclJlY3QgPSBtYXBGcm9tVHJhbnNm
b3JtZWRDb250ZW50c1RvVHJhbnNmb3JtZWRWaWV3cG9ydChvcmlnaW5hbFJlY3QpOwotICAgIElu
dFNpemUgdmlld3BvcnRTaXplID0gdHJhbnNmb3JtZWRWaWV3cG9ydFNpemUoKTsKLSAgICByZW5k
ZXJSZWN0LmludGVyc2VjdChJbnRSZWN0KDAsIDAsIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3
cG9ydFNpemUuaGVpZ2h0KCkpKTsKLSAgICBvcmlnaW5hbFJlbmRlclJlY3QuaW50ZXJzZWN0KElu
dFJlY3QoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkp
OwotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5jbGVhcldpbmRvdyhyZW5kZXJSZWN0LCAwLCAwLCAw
KTsKLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+Y2xlYXJXaW5kb3cob3JpZ2luYWxSZW5kZXJSZWN0
LCAxMjAsIDEyMCwgMTIwKTsKLSAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+aW52YWxpZGF0ZVdpbmRv
dyhyZW5kZXJSZWN0KTsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kLT5pc1N1c3BlbmRlZCgp
KSB7CisgICAgICAgIC8vIFJlLXBhaW50IHRoZSBiYWNraW5nc3RvcmUgdG8gc2NyZWVuIHRvIGVy
YXNlIG90aGVyIGFubm90YXRpb25zLgorICAgICAgICBpZiAobV9iYWNraW5nU3RvcmUtPmQtPnNo
b3VsZERpcmVjdFJlbmRlcmluZ1RvV2luZG93KCkpCisgICAgICAgICAgICBtX2JhY2tpbmdTdG9y
ZS0+ZC0+cmVuZGVyVmlzaWJsZUNvbnRlbnRzKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG1fYmFja2luZ1N0b3JlLT5kLT5ibGl0VmlzaWJsZUNvbnRlbnRzKCk7CisKKyAgICAgICAgLy8g
UmVuZGVyIGEgYmxhY2sgc3F1YXJlIG92ZXIgdGhlIGNhbGN1bGF0ZWQgYmxvY2sgYW5kIGEgZ3Jh
eSBzcXVhcmUgb3ZlciB0aGUgb3JpZ2luYWwgYmxvY2sgZm9yIHZpc3VhbCBpbnNwZWN0aW9uLgor
ICAgICAgICBvcmlnaW5hbFJlY3QgPSBtYXBUb1RyYW5zZm9ybWVkKG9yaWdpbmFsUmVjdCk7Cisg
ICAgICAgIGNsaXBUb1RyYW5zZm9ybWVkQ29udGVudHNSZWN0KG9yaWdpbmFsUmVjdCk7CisgICAg
ICAgIEludFJlY3QgcmVuZGVyUmVjdCA9IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFu
c2Zvcm1lZFZpZXdwb3J0KGJsb2NrUmVjdCk7CisgICAgICAgIEludFJlY3Qgb3JpZ2luYWxSZW5k
ZXJSZWN0ID0gbWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9ybWVkVmlld3BvcnQo
b3JpZ2luYWxSZWN0KTsKKyAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSB0cmFuc2Zvcm1l
ZFZpZXdwb3J0U2l6ZSgpOworICAgICAgICByZW5kZXJSZWN0LmludGVyc2VjdChJbnRSZWN0KDAs
IDAsIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpKTsKKyAgICAg
ICAgb3JpZ2luYWxSZW5kZXJSZWN0LmludGVyc2VjdChJbnRSZWN0KDAsIDAsIHZpZXdwb3J0U2l6
ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPmQtPmNsZWFyV2luZG93KHJlbmRlclJlY3QsIDAsIDAsIDApOworICAgICAgICBtX2JhY2tp
bmdTdG9yZS0+ZC0+Y2xlYXJXaW5kb3cob3JpZ2luYWxSZW5kZXJSZWN0LCAxMjAsIDEyMCwgMTIw
KTsKKyAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmludmFsaWRhdGVXaW5kb3cocmVuZGVyUmVj
dCk7CisgICAgfQogI2VuZGlmCiAKICAgICByZXR1cm4gYmxvY2tSZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAppbmRleCA1ZmJmZmI2OTM1YjQyZjQxNjNk
ZTYwZmNlNmFmMWIyMTA3ZjgxNWI1Li45MmI0OWIxNmJmYTBiY2FiMzA3NjI4MDMyOTg1MmJhMmQ1
ZjFiZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcApA
QCAtMTA2NSwxMiArMTA2NSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeTo6
cmVzdG9yZVZpZXdTdGF0ZSgpCiAKICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX3Nob3VsZFJlZmxv
d0Jsb2NrID0gdmlld1N0YXRlLnNob3VsZFJlZmxvd0Jsb2NrOwogCi0gICAgLy8gV2lsbCByZXN0
b3JlIHVwZGF0ZXMgdG8gYmFja2luZ3N0b3JlIGd1YXJhbnRlZWQhCi0gICAgaWYgKCFtX3dlYlBh
Z2VQcml2YXRlLT56b29tQWJvdXRQb2ludChzY2FsZSwgbV9mcmFtZS0+dmlldygpLT5zY3JvbGxQ
b3NpdGlvbigpLCB0cnVlIC8qIGVuZm9yY2VTY2FsZUNsYW1waW5nICovLCB0cnVlIC8qZm9yY2VS
ZW5kZXJpbmcqLywgdHJ1ZSAvKmlzUmVzdG9yaW5nWm9vbUxldmVsKi8pKSB7Ci0gICAgICAgIC8v
IElmIHdlJ3JlIGFscmVhZHkgYXQgdGhhdCBzY2FsZSwgdGhlbiB3ZSBzaG91bGQgc3RpbGwgZm9y
Y2UgcmVuZGVyaW5nIHNpbmNlCi0gICAgICAgIC8vIG91ciBzY3JvbGwgcG9zaXRpb24gY2hhbmdl
ZC4KLSAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bV9iYWNraW5nU3RvcmUtPmQtPnJlbmRlclZp
c2libGVDb250ZW50cygpOworICAgIGJvb2wgZGlkWm9vbSA9IG1fd2ViUGFnZVByaXZhdGUtPnpv
b21BYm91dFBvaW50KHNjYWxlLCBtX2ZyYW1lLT52aWV3KCktPnNjcm9sbFBvc2l0aW9uKCksIHRy
dWUgLyogZW5mb3JjZVNjYWxlQ2xhbXBpbmcgKi8sIHRydWUgLypmb3JjZVJlbmRlcmluZyovLCB0
cnVlIC8qaXNSZXN0b3Jpbmdab29tTGV2ZWwqLyk7CisgICAgLy8gSWYgd2UncmUgYWxyZWFkeSBh
dCB0aGF0IHNjYWxlLCB0aGVuIHdlIHNob3VsZCBzdGlsbCBmb3JjZSByZW5kZXJpbmcKKyAgICAv
LyBzaW5jZSBvdXIgc2Nyb2xsIHBvc2l0aW9uIGNoYW5nZWQuCisgICAgbV93ZWJQYWdlUHJpdmF0
ZS0+bV9iYWNraW5nU3RvcmUtPmQtPnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMo
QmFja2luZ1N0b3JlOjpSZW5kZXJBbmRCbGl0KTsKIAorICAgIGlmICghZGlkWm9vbSkgewogICAg
ICAgICAvLyBXZSBuZWVkIHRvIG5vdGlmeSB0aGUgY2xpZW50IG9mIHRoZSBzY3JvbGwgcG9zaXRp
b24gYW5kIGNvbnRlbnQgc2l6ZSBjaGFuZ2UocykgYWJvdmUgZXZlbiBpZiB3ZSBkaWRuJ3Qgc2Nh
bGUuCiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm5vdGlmeVRyYW5zZm9ybWVkQ29udGVudHNT
aXplQ2hhbmdlZCgpOwogICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5ub3RpZnlUcmFuc2Zvcm1l
ZFNjcm9sbENoYW5nZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153292</attachid>
            <date>2012-07-19 10:15:10 -0700</date>
            <delta_ts>2012-07-19 11:42:42 -0700</delta_ts>
            <desc>Patch as r+ed above, with both Adam and Antonio *actually* listed as reviewers</desc>
            <filename>bug-91644-20120719131416.patch</filename>
            <type>text/plain</type>
            <size>12344</size>
            <attacher name="Jakob Petsovits">jpetsovits</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpp
bmRleCAwMWE5M2VkMzI4MmM4NWJjNmJhMjkxY2RlOGI3NDdiNTJhZDdmZTQ4Li40NTk4ZWQ5ZWVi
ODA1OTY0ZGQyYjJmNDM2NTZlYjJlYTkwNjUwYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wNy0xOCAgSmFrb2IgUGV0c292aXRzICA8anBl
dHNvdml0c0ByaW0uY29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBBbGxvdyBuZXN0ZWQgc3Vz
cGVuZC9yZXN1bWUgc2NyZWVuICYgYmFja2luZ3N0b3JlIGNhbGxzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE2NDQKKyAgICAgICAgUklNIFBSIDE3
NDM2NQorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gVHJlYXQgYW5kIEFudG9uaW8gR29tZXMu
CisKKyAgICAgICAgV2UgZXhwb3NlIHN1c3BlbmRTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVz
KCkgdG8gdGhlCisgICAgICAgIG91dHNpZGUgQVBJLCBidXQgYWxzbyB1c2UgaXQgaW50ZXJuYWxs
eSB3aGVuIHJlYWN0aW5nCisgICAgICAgIHRvIGEgbnVtYmVyIG9mIGhhcHBlbmluZ3MsIGkuZS4g
em9vbWluZywgdmlld3BvcnQgcmVzaXplLAorICAgICAgICByZXNldHRpbmcgdmlldyBzdGF0ZSBv
biBDb21taXR0ZWQgc3RhdGUgb3Igd2hlbiByZXN0b3JpbmcKKyAgICAgICAgaXQgZnJvbSBwcmV2
aW91cyBwYWdlcywgZXRjLgorCisgICAgICAgIFRoZXNlIHR3byBjYW4gY2xhc2guIEZvciBpbnN0
YW5jZSwgaWYgd2UgZ2V0IGEgc3VzcGVuZAorICAgICAgICBjYWxsIGZyb20gb3V0c2lkZSB0aGF0
IHN1c3BlbmRzIHVzIGZvciBhcHAgaW5hY3Rpdml0eSwKKyAgICAgICAgb3Igd2UgYXJlIHRvbGQg
dG8gc3VzcGVuZCBiZWNhdXNlIHRoZSBtYWluIHRhcmdldCBzdXJmYWNlCisgICAgICAgIGlzIG5v
dCBhdmFpbGFibGUgYXQgdGhlIHRpbWUsIGFuZCB3aGlsZSBiZWluZyBzdXNwZW5kZWQKKyAgICAg
ICAgd2UgdHJ5IHRvIHJvdGF0ZSwgZmluaXNoIGxvYWRpbmcgYSBwYWdlLCB0aGUgd2UnbGwgZW5k
IHVwCisgICAgICAgIHJlc3VtaW5nIG9wZXJhdGlvbnMgZXZlbiB0aG91Z2ggd2Ugc2hvdWxkbid0
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgc3VzcGVuZCBmbGFnIHRvIGJlIGEg
Y291bnRlcgorICAgICAgICBpbnN0ZWFkLCBhbGxvd2luZyBuZXN0ZWQgc3VzcGVuZC9yZXN1bWUg
Y2FsbHMgYW5kIG1ha2luZworICAgICAgICBzdXNwZW5kL3Jlc3VtZSBtb3JlIHJvYnVzdCB0aGlz
IHdheS4gSXQgYWxzbyBjaGFuZ2VzCisgICAgICAgIHNldmVyYWwgY2FsbCBzaXRlcyB0byBtYWtl
IHN1cmUgc3VzcGVuZC9yZXN1bWUgY2FsbHMgYXJlCisgICAgICAgIHBhaXJlZCB1cCBjb3JyZWN0
bHkuCisKKyAgICAgICAgKiBBcGkvQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSk6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OkJhY2tpbmdTdG9yZVByaXZhdGU6OnN1c3BlbmRT
Y3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6QmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVzdW1lU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRl
cyk6CisgICAgICAgICogQXBpL0JhY2tpbmdTdG9yZV9wLmg6CisgICAgICAgIChCYWNraW5nU3Rv
cmVQcml2YXRlKToKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpzaG91bGRab29tQWJvdXRQb2ludCk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjp6b29tQWJvdXRQb2ludFRp
bWVyRmlyZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6
YmxvY2tab29tUmVjdEZvck5vZGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEJsYWNrQmVycnk6OnJlc3RvcmVWaWV3U3RhdGUpOgorCiAyMDEyLTA3LTE2ICBZb25nIExp
ICA8eW9saUByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXByb3ZlIGFib3V0Om1l
bW9yeSBwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdTdG9yZS5j
cHAKaW5kZXggZjRkZDY2MjQxZGRiZTc2NmI1NGQzMmQxOTRlNzQ4MmMxOWU2MjY3OC4uMTJmMzVk
ODEyMzE3YmI4NzZmN2JkMTRkY2FkNjE3NDdjOGEwYjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlLmNwcApAQCAtMTk2LDggKzE5Niw5IEBAIFBsYXRm
b3JtOjpJbnRTaXplIEJhY2tpbmdTdG9yZUdlb21ldHJ5OjpiYWNraW5nU3RvcmVTaXplKCkgY29u
c3QKIH0KIAogQmFja2luZ1N0b3JlUHJpdmF0ZTo6QmFja2luZ1N0b3JlUHJpdmF0ZSgpCi0gICAg
OiBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzKGZhbHNlKQotICAgICwgbV9zdXNwZW5kQmFja2luZ1N0
b3JlVXBkYXRlcyhmYWxzZSkKKyAgICA6IG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMoMCkKKyAgICAs
IG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoMCkKKyAgICAsIG1fcmVzdW1lT3BlcmF0aW9u
KEJhY2tpbmdTdG9yZTo6Tm9uZSkKICAgICAsIG1fc3VzcGVuZFJlbmRlckpvYnMoZmFsc2UpCiAg
ICAgLCBtX3N1c3BlbmRSZWd1bGFyUmVuZGVySm9icyhmYWxzZSkKICAgICAsIG1faXNTY3JvbGxp
bmdPclpvb21pbmcoZmFsc2UpCkBAIC0yNzksMTIgKzI4MCwxOCBAQCBib29sIEJhY2tpbmdTdG9y
ZVByaXZhdGU6OmlzT3BlbkdMQ29tcG9zaXRpbmcoKSBjb25zdAogCiB2b2lkIEJhY2tpbmdTdG9y
ZVByaXZhdGU6OnN1c3BlbmRTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKCkKIHsKLSAgICBt
X3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzID0gdHJ1ZTsKKyAgICBpZiAobV9zdXNwZW5kU2Ny
ZWVuVXBkYXRlcykgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sCisgICAgICAgICAgICAiU2NyZWVuIGFuZCBiYWNr
aW5nc3RvcmUgYWxyZWFkeSBzdXNwZW5kZWQsIGluY3JlYXNpbmcgc3VzcGVuZCBjb3VudGVyLiIp
OworICAgIH0KKworICAgICsrbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlczsKIAogICAgIC8v
IE1ha2Ugc3VyZSB0aGUgdXNlciBpbnRlcmZhY2UgdGhyZWFkIGdldHMgdGhlIG1lc3NhZ2UgYmVm
b3JlIHdlIHByb2NlZWQKICAgICAvLyBiZWNhdXNlIGJsaXRDb250ZW50cyBjYW4gYmUgY2FsbGVk
IGZyb20gdGhpcyB0aHJlYWQgYW5kIGl0IG11c3QgaG9ub3IKICAgICAvLyB0aGlzIGZsYWcuCi0g
ICAgbV9zdXNwZW5kU2NyZWVuVXBkYXRlcyA9IHRydWU7CisgICAgKyttX3N1c3BlbmRTY3JlZW5V
cGRhdGVzOworCiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJbnRlcmZhY2VUaHJlYWRN
ZXNzYWdlQ2xpZW50KCktPnN5bmNUb0N1cnJlbnRNZXNzYWdlKCk7CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCkBAIC0yOTQsMTQgKzMwMSw0MiBAQCB2b2lkIEJhY2tpbmdTdG9y
ZVByaXZhdGU6OnN1c3BlbmRTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKCkKIAogdm9pZCBC
YWNraW5nU3RvcmVQcml2YXRlOjpyZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJh
Y2tpbmdTdG9yZTo6UmVzdW1lVXBkYXRlT3BlcmF0aW9uIG9wKQogewotICAgIG1fc3VzcGVuZEJh
Y2tpbmdTdG9yZVVwZGF0ZXMgPSBmYWxzZTsKKyAgICBBU1NFUlQobV9zdXNwZW5kU2NyZWVuVXBk
YXRlcyk7CisgICAgQVNTRVJUKG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMpOworCisgICAg
Ly8gQm90aCB2YXJpYWJsZXMgYXJlIHNpbWlsYXIgZXhjZXB0IGZvciB0aGUgdGltaW5nIG9mIHNl
dHRpbmcgdGhlbS4KKyAgICBBU1NFUlQobV9zdXNwZW5kU2NyZWVuVXBkYXRlcyA9PSBtX3N1c3Bl
bmRCYWNraW5nU3RvcmVVcGRhdGVzKTsKKworICAgIGlmICghbV9zdXNwZW5kU2NyZWVuVXBkYXRl
cyB8fCAhbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlcykgeworICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRp
Y2FsLAorICAgICAgICAgICAgIkNhbGwgbWlzbWF0Y2g6IFNjcmVlbiBhbmQgYmFja2luZ3N0b3Jl
IGhhdmVuJ3QgYmVlbiBzdXNwZW5kZWQsIHRoZXJlZm9yZSB3b24ndCByZXN1bWUhIik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPdXQgb2YgYWxsIG5lc3RlZCByZXN1bWUgY2Fs
bHMsIHJlc3VtZSB3aXRoIHRoZSBtYXhpbXVtLWltcGFjdCBvcGVyYXRpb24uCisgICAgaWYgKG9w
ID09IEJhY2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdAorICAgICAgICB8fCAobV9yZXN1bWVPcGVy
YXRpb24gPT0gQmFja2luZ1N0b3JlOjpOb25lICYmIG9wID09IEJhY2tpbmdTdG9yZTo6QmxpdCkp
CisgICAgICAgIG1fcmVzdW1lT3BlcmF0aW9uID0gb3A7CisKKyAgICBpZiAobV9zdXNwZW5kU2Ny
ZWVuVXBkYXRlcyA+PSAyICYmIG1fc3VzcGVuZEJhY2tpbmdTdG9yZVVwZGF0ZXMgPj0gMikgeyAv
LyB3ZSdyZSBzdGlsbCBzdXNwZW5kZWQKKyAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Omxv
ZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLAorICAgICAgICAgICAgIlNjcmVl
biBhbmQgYmFja2luZ3N0b3JlIHN0aWxsIHN1c3BlbmRlZCwgZGVjcmVhc2luZyBzdXNwZW5kIGNv
dW50ZXIuIik7CisgICAgICAgIC0tbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlczsKKyAgICAg
ICAgLS1tX3N1c3BlbmRTY3JlZW5VcGRhdGVzOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLS1tX3N1c3BlbmRCYWNraW5nU3RvcmVVcGRhdGVzOworCisgICAgb3AgPSBtX3Jlc3VtZU9w
ZXJhdGlvbjsKKyAgICBtX3Jlc3VtZU9wZXJhdGlvbiA9IEJhY2tpbmdTdG9yZTo6Tm9uZTsKIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAob3AgIT0gQmFja2luZ1N0
b3JlOjpOb25lKSB7CiAgICAgICAgIGlmIChpc09wZW5HTENvbXBvc2l0aW5nKCkgJiYgIWlzQWN0
aXZlKCkpIHsKICAgICAgICAgICAgIG1fd2ViUGFnZS0+ZC0+c2V0Q29tcG9zaXRvckRyYXdzUm9v
dExheWVyKHRydWUpOwogICAgICAgICAgICAgbV93ZWJQYWdlLT5kLT5zZXROZWVkc09uZVNob3RE
cmF3aW5nU3luY2hyb25pemF0aW9uKCk7Ci0gICAgICAgICAgICBtX3N1c3BlbmRTY3JlZW5VcGRh
dGVzID0gZmFsc2U7CisgICAgICAgICAgICAtLW1fc3VzcGVuZFNjcmVlblVwZGF0ZXM7CiAgICAg
ICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6dXNlckludGVyZmFjZVRocmVhZE1lc3NhZ2VD
bGllbnQoKS0+c3luY1RvQ3VycmVudE1lc3NhZ2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzIyLDcgKzM1Nyw3IEBAIHZvaWQgQmFja2luZ1N0b3JlUHJpdmF0ZTo6cmVz
dW1lU2NyZWVuQW5kQmFja2luZ1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6OlJlc3VtCiAgICAg
Ly8gTWFrZSBzdXJlIHRoZSB1c2VyIGludGVyZmFjZSB0aHJlYWQgZ2V0cyB0aGUgbWVzc2FnZSBi
ZWZvcmUgd2UgcHJvY2VlZAogICAgIC8vIGJlY2F1c2UgYmxpdENvbnRlbnRzIGNhbiBiZSBjYWxs
ZWQgZnJvbSB0aGUgdXNlciBpbnRlcmZhY2UgdGhyZWFkIGFuZAogICAgIC8vIGl0IG11c3QgaG9u
b3IgdGhpcyBmbGFnLgotICAgIG1fc3VzcGVuZFNjcmVlblVwZGF0ZXMgPSBmYWxzZTsKKyAgICAt
LW1fc3VzcGVuZFNjcmVlblVwZGF0ZXM7CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnVzZXJJ
bnRlcmZhY2VUaHJlYWRNZXNzYWdlQ2xpZW50KCktPnN5bmNUb0N1cnJlbnRNZXNzYWdlKCk7CiAK
ICAgICAvLyBEbyBzb21lIGJsaXR0aW5nIGlmIG5lY2Vzc2FyeS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvQmFja2luZ1N0b3JlX3AuaAppbmRleCAzMjY1MTU2NTk2YzNiNTEzYmYy
N2YzNDZkZTQ0ZDVjNzE5ZmNhM2M2Li5hN2YwNWUwMWU2YTEyNGE4NGViOWUzZWQzZmE2MGQwNzdl
ZTQwZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL0JhY2tpbmdT
dG9yZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9CYWNraW5nU3RvcmVf
cC5oCkBAIC0zMzUsOCArMzM1LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYlBhZ2UqIHNf
Y3VycmVudEJhY2tpbmdTdG9yZU93bmVyOwogCi0gICAgYm9vbCBtX3N1c3BlbmRTY3JlZW5VcGRh
dGVzOwotICAgIGJvb2wgbV9zdXNwZW5kQmFja2luZ1N0b3JlVXBkYXRlczsKKyAgICB1bnNpZ25l
ZCBtX3N1c3BlbmRTY3JlZW5VcGRhdGVzOworICAgIHVuc2lnbmVkIG1fc3VzcGVuZEJhY2tpbmdT
dG9yZVVwZGF0ZXM7CisgICAgQmFja2luZ1N0b3JlOjpSZXN1bWVVcGRhdGVPcGVyYXRpb24gbV9y
ZXN1bWVPcGVyYXRpb247CiAKICAgICBib29sIG1fc3VzcGVuZFJlbmRlckpvYnM7CiAgICAgYm9v
bCBtX3N1c3BlbmRSZWd1bGFyUmVuZGVySm9iczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwCmluZGV4IGRlMTc3YTRlMjIxZmM2OTI1OWNkOWY1MWI1OTVmNTQ2NDNlMDJh
OGEuLmJkNjcxNjBlZTY2YzNiNGZmNjdmMDVlODhmYTc4ZWZhZjQzN2UxNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTE4OSw4ICsxMTg5LDYgQEAgYm9v
bCBXZWJQYWdlUHJpdmF0ZTo6c2hvdWxkWm9vbUFib3V0UG9pbnQoZG91YmxlIHNjYWxlLCBjb25z
dCBGbG9hdFBvaW50JiwgYm9vbAogICAgICpjbGFtcGVkU2NhbGUgPSBzY2FsZTsKIAogICAgIGlm
IChjdXJyZW50U2NhbGUoKSA9PSBzY2FsZSkgewotICAgICAgICAvLyBNYWtlIHN1cmUgYmFja2lu
Z3N0b3JlIHVwZGF0ZXMgcmVzdW1lIGZyb20gcGluY2ggem9vbSBpbiB0aGUgY2FzZSB3aGVyZSB0
aGUgZmluYWwgem9vbSBsZXZlbCBkb2Vzbid0IGNoYW5nZS4KLSAgICAgICAgbV9iYWNraW5nU3Rv
cmUtPmQtPnJlc3VtZVNjcmVlbkFuZEJhY2tpbmdTdG9yZVVwZGF0ZXMoQmFja2luZ1N0b3JlOjpO
b25lKTsKICAgICAgICAgbV9jbGllbnQtPnpvb21DaGFuZ2VkKG1fd2ViUGFnZS0+aXNNaW5ab29t
ZWQoKSwgbV93ZWJQYWdlLT5pc01heFpvb21lZCgpLCAhc2hvdWxkWm9vbU9uRXNjYXBlKCksIGN1
cnJlbnRTY2FsZSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEzODIsNiAr
MTM4MCw3IEBAIHZvaWQgV2ViUGFnZVByaXZhdGU6OnVuc2NoZWR1bGVab29tQWJvdXRQb2ludCgp
CiB2b2lkIFdlYlBhZ2VQcml2YXRlOjp6b29tQWJvdXRQb2ludFRpbWVyRmlyZWQoVGltZXI8V2Vi
UGFnZVByaXZhdGU+KikKIHsKICAgICB6b29tQWJvdXRQb2ludChtX2RlbGF5ZWRab29tQXJndW1l
bnRzLnNjYWxlLCBtX2RlbGF5ZWRab29tQXJndW1lbnRzLmFuY2hvciwgbV9kZWxheWVkWm9vbUFy
Z3VtZW50cy5lbmZvcmNlU2NhbGVDbGFtcGluZywgbV9kZWxheWVkWm9vbUFyZ3VtZW50cy5mb3Jj
ZVJlbmRlcmluZyk7CisgICAgbV9iYWNraW5nU3RvcmUtPmQtPnJlc3VtZVNjcmVlbkFuZEJhY2tp
bmdTdG9yZVVwZGF0ZXMobV9kZWxheWVkWm9vbUFyZ3VtZW50cy5mb3JjZVJlbmRlcmluZyA/IEJh
Y2tpbmdTdG9yZTo6UmVuZGVyQW5kQmxpdCA6IEJhY2tpbmdTdG9yZTo6Tm9uZSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByaXZhdGU6OnNldE5lZWRzTGF5b3V0KCkKQEAgLTMwODUsMjAgKzMwODQsMjUg
QEAgSW50UmVjdCBXZWJQYWdlUHJpdmF0ZTo6YmxvY2tab29tUmVjdEZvck5vZGUoTm9kZSogbm9k
ZSkKICAgICBjbGlwVG9UcmFuc2Zvcm1lZENvbnRlbnRzUmVjdChibG9ja1JlY3QpOwogCiAjaWYg
REVCVUdfQkxPQ0tfWk9PTQotICAgIC8vIFJlLXBhaW50IHRoZSBiYWNraW5nc3RvcmUgdG8gc2Ny
ZWVuIHRvIGVyYXNlIG90aGVyIGFubm90YXRpb25zLgotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5y
ZXN1bWVTY3JlZW5BbmRCYWNraW5nU3RvcmVVcGRhdGVzKEJhY2tpbmdTdG9yZTo6QmxpdCk7Ci0K
LSAgICAvLyBSZW5kZXIgYSBibGFjayBzcXVhcmUgb3ZlciB0aGUgY2FsY3VsYXRlZCBibG9jayBh
bmQgYSBncmF5IHNxdWFyZSBvdmVyIHRoZSBvcmlnaW5hbCBibG9jayBmb3IgdmlzdWFsIGluc3Bl
Y3Rpb24uCi0gICAgb3JpZ2luYWxSZWN0ID0gbWFwVG9UcmFuc2Zvcm1lZChvcmlnaW5hbFJlY3Qp
OwotICAgIGNsaXBUb1RyYW5zZm9ybWVkQ29udGVudHNSZWN0KG9yaWdpbmFsUmVjdCk7Ci0gICAg
SW50UmVjdCByZW5kZXJSZWN0ID0gbWFwRnJvbVRyYW5zZm9ybWVkQ29udGVudHNUb1RyYW5zZm9y
bWVkVmlld3BvcnQoYmxvY2tSZWN0KTsKLSAgICBJbnRSZWN0IG9yaWdpbmFsUmVuZGVyUmVjdCA9
IG1hcEZyb21UcmFuc2Zvcm1lZENvbnRlbnRzVG9UcmFuc2Zvcm1lZFZpZXdwb3J0KG9yaWdpbmFs
UmVjdCk7Ci0gICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSB0cmFuc2Zvcm1lZFZpZXdwb3J0U2l6
ZSgpOwotICAgIHJlbmRlclJlY3QuaW50ZXJzZWN0KEludFJlY3QoMCwgMCwgdmlld3BvcnRTaXpl
LndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkpOwotICAgIG9yaWdpbmFsUmVuZGVyUmVj
dC5pbnRlcnNlY3QoSW50UmVjdCgwLCAwLCB2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRT
aXplLmhlaWdodCgpKSk7Ci0gICAgbV9iYWNraW5nU3RvcmUtPmQtPmNsZWFyV2luZG93KHJlbmRl
clJlY3QsIDAsIDAsIDApOwotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5jbGVhcldpbmRvdyhvcmln
aW5hbFJlbmRlclJlY3QsIDEyMCwgMTIwLCAxMjApOwotICAgIG1fYmFja2luZ1N0b3JlLT5kLT5p
bnZhbGlkYXRlV2luZG93KHJlbmRlclJlY3QpOworICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmQt
PmlzU3VzcGVuZGVkKCkpIHsKKyAgICAgICAgLy8gUmUtcGFpbnQgdGhlIGJhY2tpbmdzdG9yZSB0
byBzY3JlZW4gdG8gZXJhc2Ugb3RoZXIgYW5ub3RhdGlvbnMuCisgICAgICAgIGlmIChtX2JhY2tp
bmdTdG9yZS0+ZC0+c2hvdWxkRGlyZWN0UmVuZGVyaW5nVG9XaW5kb3coKSkKKyAgICAgICAgICAg
IG1fYmFja2luZ1N0b3JlLT5kLT5yZW5kZXJWaXNpYmxlQ29udGVudHMoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbV9iYWNraW5nU3RvcmUtPmQtPmJsaXRWaXNpYmxlQ29udGVudHMoKTsK
KworICAgICAgICAvLyBSZW5kZXIgYSBibGFjayBzcXVhcmUgb3ZlciB0aGUgY2FsY3VsYXRlZCBi
bG9jayBhbmQgYSBncmF5IHNxdWFyZSBvdmVyIHRoZSBvcmlnaW5hbCBibG9jayBmb3IgdmlzdWFs
IGluc3BlY3Rpb24uCisgICAgICAgIG9yaWdpbmFsUmVjdCA9IG1hcFRvVHJhbnNmb3JtZWQob3Jp
Z2luYWxSZWN0KTsKKyAgICAgICAgY2xpcFRvVHJhbnNmb3JtZWRDb250ZW50c1JlY3Qob3JpZ2lu
YWxSZWN0KTsKKyAgICAgICAgSW50UmVjdCByZW5kZXJSZWN0ID0gbWFwRnJvbVRyYW5zZm9ybWVk
Q29udGVudHNUb1RyYW5zZm9ybWVkVmlld3BvcnQoYmxvY2tSZWN0KTsKKyAgICAgICAgSW50UmVj
dCBvcmlnaW5hbFJlbmRlclJlY3QgPSBtYXBGcm9tVHJhbnNmb3JtZWRDb250ZW50c1RvVHJhbnNm
b3JtZWRWaWV3cG9ydChvcmlnaW5hbFJlY3QpOworICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6
ZSA9IHRyYW5zZm9ybWVkVmlld3BvcnRTaXplKCk7CisgICAgICAgIHJlbmRlclJlY3QuaW50ZXJz
ZWN0KEludFJlY3QoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWln
aHQoKSkpOworICAgICAgICBvcmlnaW5hbFJlbmRlclJlY3QuaW50ZXJzZWN0KEludFJlY3QoMCwg
MCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkpOworICAgICAg
ICBtX2JhY2tpbmdTdG9yZS0+ZC0+Y2xlYXJXaW5kb3cocmVuZGVyUmVjdCwgMCwgMCwgMCk7Cisg
ICAgICAgIG1fYmFja2luZ1N0b3JlLT5kLT5jbGVhcldpbmRvdyhvcmlnaW5hbFJlbmRlclJlY3Qs
IDEyMCwgMTIwLCAxMjApOworICAgICAgICBtX2JhY2tpbmdTdG9yZS0+ZC0+aW52YWxpZGF0ZVdp
bmRvdyhyZW5kZXJSZWN0KTsKKyAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBibG9ja1JlY3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCmluZGV4IDVmYmZm
YjY5MzViNDJmNDE2M2RlNjBmY2U2YWYxYjIxMDdmODE1YjUuLjkyYjQ5YjE2YmZhMGJjYWIzMDc2
MjgwMzI5ODUyYmEyZDVmMWJkMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJs
YWNrQmVycnkuY3BwCkBAIC0xMDY1LDEyICsxMDY1LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRCbGFja0JlcnJ5OjpyZXN0b3JlVmlld1N0YXRlKCkKIAogICAgIG1fd2ViUGFnZVByaXZhdGUt
Pm1fc2hvdWxkUmVmbG93QmxvY2sgPSB2aWV3U3RhdGUuc2hvdWxkUmVmbG93QmxvY2s7CiAKLSAg
ICAvLyBXaWxsIHJlc3RvcmUgdXBkYXRlcyB0byBiYWNraW5nc3RvcmUgZ3VhcmFudGVlZCEKLSAg
ICBpZiAoIW1fd2ViUGFnZVByaXZhdGUtPnpvb21BYm91dFBvaW50KHNjYWxlLCBtX2ZyYW1lLT52
aWV3KCktPnNjcm9sbFBvc2l0aW9uKCksIHRydWUgLyogZW5mb3JjZVNjYWxlQ2xhbXBpbmcgKi8s
IHRydWUgLypmb3JjZVJlbmRlcmluZyovLCB0cnVlIC8qaXNSZXN0b3Jpbmdab29tTGV2ZWwqLykp
IHsKLSAgICAgICAgLy8gSWYgd2UncmUgYWxyZWFkeSBhdCB0aGF0IHNjYWxlLCB0aGVuIHdlIHNo
b3VsZCBzdGlsbCBmb3JjZSByZW5kZXJpbmcgc2luY2UKLSAgICAgICAgLy8gb3VyIHNjcm9sbCBw
b3NpdGlvbiBjaGFuZ2VkLgotICAgICAgICBtX3dlYlBhZ2VQcml2YXRlLT5tX2JhY2tpbmdTdG9y
ZS0+ZC0+cmVuZGVyVmlzaWJsZUNvbnRlbnRzKCk7CisgICAgYm9vbCBkaWRab29tID0gbV93ZWJQ
YWdlUHJpdmF0ZS0+em9vbUFib3V0UG9pbnQoc2NhbGUsIG1fZnJhbWUtPnZpZXcoKS0+c2Nyb2xs
UG9zaXRpb24oKSwgdHJ1ZSAvKiBlbmZvcmNlU2NhbGVDbGFtcGluZyAqLywgdHJ1ZSAvKmZvcmNl
UmVuZGVyaW5nKi8sIHRydWUgLyppc1Jlc3RvcmluZ1pvb21MZXZlbCovKTsKKyAgICAvLyBJZiB3
ZSdyZSBhbHJlYWR5IGF0IHRoYXQgc2NhbGUsIHRoZW4gd2Ugc2hvdWxkIHN0aWxsIGZvcmNlIHJl
bmRlcmluZworICAgIC8vIHNpbmNlIG91ciBzY3JvbGwgcG9zaXRpb24gY2hhbmdlZC4KKyAgICBt
X3dlYlBhZ2VQcml2YXRlLT5tX2JhY2tpbmdTdG9yZS0+ZC0+cmVzdW1lU2NyZWVuQW5kQmFja2lu
Z1N0b3JlVXBkYXRlcyhCYWNraW5nU3RvcmU6OlJlbmRlckFuZEJsaXQpOwogCisgICAgaWYgKCFk
aWRab29tKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gbm90aWZ5IHRoZSBjbGllbnQgb2YgdGhl
IHNjcm9sbCBwb3NpdGlvbiBhbmQgY29udGVudCBzaXplIGNoYW5nZShzKSBhYm92ZSBldmVuIGlm
IHdlIGRpZG4ndCBzY2FsZS4KICAgICAgICAgbV93ZWJQYWdlUHJpdmF0ZS0+bm90aWZ5VHJhbnNm
b3JtZWRDb250ZW50c1NpemVDaGFuZ2VkKCk7CiAgICAgICAgIG1fd2ViUGFnZVByaXZhdGUtPm5v
dGlmeVRyYW5zZm9ybWVkU2Nyb2xsQ2hhbmdlZCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>