<?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>102555</bug_id>
          
          <creation_ts>2012-11-16 13:36:06 -0800</creation_ts>
          <short_desc>Store MutationObserver callback in a hidden property for V8</short_desc>
          <delta_ts>2012-11-20 12:00:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102328</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>769633</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 13:36:06 -0800</bug_when>
    <thetext>Store MutationObserver callback in a hidden property for V8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769636</commentid>
    <comment_count>1</comment_count>
      <attachid>174752</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 13:39:13 -0800</bug_when>
    <thetext>Created attachment 174752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769637</commentid>
    <comment_count>2</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 13:40:04 -0800</bug_when>
    <thetext>This is the smallest possible change, and it allows us to keep all the existing code related to callback handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769667</commentid>
    <comment_count>3</comment_count>
      <attachid>174752</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-16 14:09:05 -0800</bug_when>
    <thetext>Comment on attachment 174752
Patch

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

This looks great.  My only question is whether V8WeakCallback is really a property of the MutationCallback or whether it is functionality that all callbacks should have that V8MutationObserver activates in V8MutationObserver::constructorCallback.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3325
&gt; +        ${className}* wrapper = static_cast&lt;${className}*&gt;(parameter);

I&apos;m not sure wrapper is the right term here.  Perhaps |object| ?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3386
&gt; +        m_callback.Dispose();

Should m_callback be a ScopedPersistent?  You seem to be re-implementing the ScopedPersistent pattern.  We can fix that in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769669</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-16 14:12:35 -0800</bug_when>
    <thetext>*** Bug 102553 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769697</commentid>
    <comment_count>5</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 15:05:10 -0800</bug_when>
    <thetext>So this fixes the leak with cycles and the callback, but interestingly it seems v8 is smart enough to not keep objects that are not reachable alive so:

var observer = new WebKitMutationObserver(function() {});

doesn&apos;t actually leak without this patch because v8 knows the callback can&apos;t reach observer.

but

var observer = new WebKitMutationObserver(function() { observer });

does leak.

I think there&apos;s something even more fundamentally leaky in MutationObservers, because even without leaks once you observe() a node you leak:

&lt;script&gt;
function noCycles(fn) {
  var observer = new WebKitMutationObserver(fn);
  observer.observe(document.body, {attributes:true}) // LEAK!!!
}

for (i=0; i &lt; 1000; i++) noCycles(function(){});

gc();

window.location.href = &apos;about:blank&apos;;
&lt;/script&gt;

In this test observers and nodes never get collected.

Try loading the file in DRT several times: DumpRenderTree /test.html /test.html /test.html

and you get:

Content-Type: text/plain
layer at (0,0) size 800x600
  RenderView at (0,0) size 800x600
layer at (0,0) size 800x8
  RenderBlock {HTML} at (0,0) size 800x8
    RenderBody {BODY} at (8,8) size 784x0
#EOF
#EOF
#EOF
LEAK: 32 WebCoreNode

and if you instrument the constructor and destructor for MutationObserver you have 3000 live MutationObservers when DRT closes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769701</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 15:06:51 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; ...
&gt; I think there&apos;s something even more fundamentally leaky in MutationObservers, because even without leaks once you observe() a node you leak:
&gt; 

That should say &quot;even without *cycles*&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769737</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-11-16 15:59:48 -0800</bug_when>
    <thetext>I can reproduce Elliott&apos;s other leak, but am at something of a loss to explain it. Somehow it appears the Document is being kept alive, and that in turn is keeping all nodes in its tree, as well as any registered observers, alive. So my question is, what&apos;s keeping the Document alive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769789</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-11-16 17:07:43 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; I can reproduce Elliott&apos;s other leak, but am at something of a loss to explain it. Somehow it appears the Document is being kept alive, and that in turn is keeping all nodes in its tree, as well as any registered observers, alive. So my question is, what&apos;s keeping the Document alive?

For the record, this appears to be due to http://trac.webkit.org/changeset/134830, which made MutationObserver an ActiveDOMObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769793</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-11-16 17:21:04 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; I can reproduce Elliott&apos;s other leak, but am at something of a loss to explain it. Somehow it appears the Document is being kept alive, and that in turn is keeping all nodes in its tree, as well as any registered observers, alive. So my question is, what&apos;s keeping the Document alive?
&gt; 
&gt; For the record, this appears to be due to http://trac.webkit.org/changeset/134830, which made MutationObserver an ActiveDOMObject.

And, for the record, something like that ActiveDOMObject patch is required for the patch on this bug to be correct, since we now rely on the wrapper to keep things alive appropriately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769817</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-16 18:06:48 -0800</bug_when>
    <thetext>Yes.  We just need to make sure not to claim we have pending activity after stop() is called on the mutation observer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769823</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 18:11:44 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Yes.  We just need to make sure not to claim we have pending activity after stop() is called on the mutation observer.

Yeah, the complication is that they want observation of Nodes from different documents to work:

var OtherFramesObserverClass = iframe.contentWIndow.MutationObserver;
var observer = new OtherFramesObserverClass(function() {});
iframe.parentNode.removeChild(iframe);
observer.observe(node, { ... });

so stopping all pending activity when the original window&apos;s document goes away is not right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769854</commentid>
    <comment_count>12</comment_count>
      <attachid>174795</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 19:24:17 -0800</bug_when>
    <thetext>Created attachment 174795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769865</commentid>
    <comment_count>13</comment_count>
      <attachid>174799</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 19:45:30 -0800</bug_when>
    <thetext>Created attachment 174799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769866</commentid>
    <comment_count>14</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-16 19:47:16 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 174752 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174752&amp;action=review
&gt; 
&gt; This looks great.  My only question is whether V8WeakCallback is really a property of the MutationCallback or whether it is functionality that all callbacks should have that V8MutationObserver activates in V8MutationObserver::constructorCallback.

I added a new argument to ::create() that lets you pass an owner and put it into a dependent retained like mode.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3325
&gt; &gt; +        ${className}* wrapper = static_cast&lt;${className}*&gt;(parameter);
&gt; 
&gt; I&apos;m not sure wrapper is the right term here.  Perhaps |object| ?

Done.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3386
&gt; &gt; +        m_callback.Dispose();
&gt; 
&gt; Should m_callback be a ScopedPersistent?  You seem to be re-implementing the ScopedPersistent pattern.  We can fix that in a followup patch.

Yeah. I added a patch that used ScopedPersistent but I&apos;m nervous about trying to change both things at the same time so I uploaded another without it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769937</commentid>
    <comment_count>15</comment_count>
      <attachid>174799</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-17 05:06:44 -0800</bug_when>
    <thetext>Comment on attachment 174799
Patch

Attachment 174799 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14859738

New failing tests:
fast/mutation/leak-cycle-observer-wrapper.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769956</commentid>
    <comment_count>16</comment_count>
      <attachid>174799</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-17 09:50:36 -0800</bug_when>
    <thetext>Comment on attachment 174799
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3287
&gt; -    static PassRefPtr&lt;${className}&gt; create(v8::Local&lt;v8::Value&gt; value, ScriptExecutionContext* context)
&gt; +    static PassRefPtr&lt;${className}&gt; create(v8::Local&lt;v8::Value&gt; value, ScriptExecutionContext* context, v8::Local&lt;v8::Object&gt; owner = (v8::Object*)0)

Is there some reason to require a Local handle here?  Also, the way to make a default parameter is as follows:

v8::Handle&lt;v8::Object&gt; owner = v8::Handle&lt;v8::Object&gt;()

In principle, we don&apos;t know that 0 maps to empty (and we don&apos;t use C-style casts in WebKit).

&gt; Source/WebCore/bindings/v8/V8HiddenPropertyName.h:52
&gt; +    V(callback)

Please put this in alphabetical order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769965</commentid>
    <comment_count>17</comment_count>
      <attachid>174799</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-17 10:09:12 -0800</bug_when>
    <thetext>Comment on attachment 174799
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3287
&gt;&gt; +    static PassRefPtr&lt;${className}&gt; create(v8::Local&lt;v8::Value&gt; value, ScriptExecutionContext* context, v8::Local&lt;v8::Object&gt; owner = (v8::Object*)0)
&gt; 
&gt; Is there some reason to require a Local handle here?  Also, the way to make a default parameter is as follows:
&gt; 
&gt; v8::Handle&lt;v8::Object&gt; owner = v8::Handle&lt;v8::Object&gt;()
&gt; 
&gt; In principle, we don&apos;t know that 0 maps to empty (and we don&apos;t use C-style casts in WebKit).

I used a Local because that&apos;s what value is as well. I can change to just v8::Handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769966</commentid>
    <comment_count>18</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-17 10:15:03 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 174799 [details])
&gt; Attachment 174799 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14859738
&gt; 
&gt; New failing tests:
&gt; fast/mutation/leak-cycle-observer-wrapper.html

Hmm, this is really weird that the test has different output on mac but passes on cr-linux...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770949</commentid>
    <comment_count>19</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-19 12:38:17 -0800</bug_when>
    <thetext>adamk rolled out my ActiveDOMObject patch so we can&apos;t land this now. I&apos;m blocked until we resolve the wrapper drop off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771324</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-11-19 17:59:38 -0800</bug_when>
    <thetext>The patch on bug 102328 is in the cq and fixes the wrapper dropoff bug. Once it lands, this patch should also be safe to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772048</commentid>
    <comment_count>21</comment_count>
      <attachid>175254</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-11-20 11:37:21 -0800</bug_when>
    <thetext>Created attachment 175254
Patch for landing (on behalf of esprehn)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772060</commentid>
    <comment_count>22</comment_count>
      <attachid>175254</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 11:59:57 -0800</bug_when>
    <thetext>Comment on attachment 175254
Patch for landing (on behalf of esprehn)

Clearing flags on attachment: 175254

Committed r135305: &lt;http://trac.webkit.org/changeset/135305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772063</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 12:00:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174752</attachid>
            <date>2012-11-16 13:39:13 -0800</date>
            <delta_ts>2012-11-16 19:24:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102555-20121116133708.patch</filename>
            <type>text/plain</type>
            <size>5388</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU2NjM4ZDA1ZjAyOWU3
NmZlNTViZjEyNjIxMzBlNjU0ODExZjlmYi4uYTlmN2I5ZDY1M2VkYzdjM2I2ZDUxZGFhOWIzNjdh
NjJmMDY4ZDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTE2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN0b3JlIE11dGF0
aW9uT2JzZXJ2ZXIgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgZm9yIFY4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IGNpcmN1
bGFyIHJlZmVyZW5jZSBsZWFrcyB3ZSBzaG91bGQgc3RvcmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIK
KyAgICAgICAgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgb24gdGhlIHdyYXBwZXIgb2Yg
dGhlIG9ic2VydmVyLgorCisgICAgICAgIFRoaXMgdXNlcyBhIG5ldyBpZGwgYXR0cmlidXRlIFY4
V2Vha0NhbGxiYWNrIHRoYXQgbWFrZXMgdGhlIGdlbmVyYXRlZAorICAgICAgICBjYWxsYmFjayBj
b2RlIG9ubHkgc3RvcmUgYSB3ZWFrIGhhbmRsZSB0byB0aGUgY2FsbGJhY2suIEl0J3MgdGhlbiB0
aGUKKyAgICAgICAgcmVzcG9uc2liaWxpdHkgb2YgdGhlIG93bmVyIHRvIHN0b3JlIHRoZSBjYWxs
YmFjayBzb21ld2hlcmUgd2l0aCB0aGUgcmlnaHQKKyAgICAgICAgbGlmZXRpbWUgc2VtYW50aWNz
IHRvIGtlZXAgaXQgYWxpdmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbTogQWRkIG5ldyBWOFdl
YWtDYWxsYmFjayBpZGwgYXR0cmlidXRlLgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0hlYWRl
cik6CisgICAgICAgIChHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAg
ICAgICAgKiBkb20vTXV0YXRpb25DYWxsYmFjay5pZGw6CisKIDIwMTItMTEtMTYgIFRvbW15IFdp
ZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgTWVkaWFTdHJlYW0gQVBJ
OiBVcGRhdGUgUlRDUGVlckNvbm5lY3Rpb24gc3RhdGVzIHRvIG1hdGNoIHRoZSBsYXRlc3QgZWRp
dG9ycyBkcmFmdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCBmMWY5NDAxM2IyNmVlODgxZDBkYWJmNDFhODljMmY2MzE3MmY5
NjZlLi4zNmZiMzc4YTZmYTk4YzE0OThiZjNkNDNhMjNhNWI4YTU4OGEyZDIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
MzMxNyw2ICszMzE3LDE4IEBAIEVORAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4V2Vha0NhbGxiYWNrIn0pIHsKKyAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCB3
ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFt
ZXRlcikKKyAgICB7CisgICAgICAgICR7Y2xhc3NOYW1lfSogd3JhcHBlciA9IHN0YXRpY19jYXN0
PCR7Y2xhc3NOYW1lfSo+KHBhcmFtZXRlcik7CisgICAgICAgIHdyYXBwZXItPm1fY2FsbGJhY2su
RGlzcG9zZSgpOworICAgICAgICB3cmFwcGVyLT5tX2NhbGxiYWNrLkNsZWFyKCk7CisgICAgfQor
RU5ECisgICAgfQorCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogCiBwcml2YXRl
OgpAQCAtMzM1NywxMSArMzM2OSwyMSBAQCAke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfSh2ODo6
TG9jYWw8djg6Ok9iamVjdD4gY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgICwg
bV9jYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGNhbGxiYWNrKSkKICAg
ICAsIG1fd29ybGRDb250ZXh0KFVzZUN1cnJlbnRXb3JsZCkKIHsKK0VORAorCisgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4V2Vha0NhbGxiYWNrIn0pIHsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICBtX2NhbGxiYWNrLk1ha2VXZWFrKHRo
aXMsICYke2NsYXNzTmFtZX06OndlYWtDYWxsYmFjayk7CitFTkQKKyAgICB9CisKKyAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwogfQogCiAke2NsYXNzTmFtZX06On4ke2NsYXNzTmFtZX0o
KQogewotICAgIG1fY2FsbGJhY2suRGlzcG9zZSgpOworICAgIGlmICghbV9jYWxsYmFjay5Jc0Vt
cHR5KCkpCisgICAgICAgIG1fY2FsbGJhY2suRGlzcG9zZSgpOwogfQogCiBFTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0CmluZGV4IDcw
OTBmNjYzZWEyZThhOTZjMmUzOGU1OThiZjVjYWQxZjdjMmMzMmIuLjYzYmJhMGUxYjE0MGE1YmI2
N2JiMmE1YTYyMjc1MDA2ZDcwYWRhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dApAQCAtMTIzLDMgKzEyMyw0IEBAIFY4Tm9XcmFw
cGVyQ2FjaGUKIFY4TWVhc3VyZUFzPSoKIFY4UmVhZE9ubHkKIFY4VW5mb3JnZWFibGUKK1Y4V2Vh
a0NhbGxiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9w
ZXJ0eU5hbWUuaAppbmRleCAyZjM3OWQwOWYyMzIwODliNjg0N2Q3ZDVhZTAxZThmNGRmM2YzMjhl
Li43NzUzNDhmZmM2MzRiMmViYWRjODc5NDZkNjMzNTJlYWM4Nzk2NDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKQEAgLTQ4LDcg
KzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYoc2xlZXBGdW5jdGlvbikgXAogICAg
IFYoc3RhdGUpIFwKICAgICBWKHRleHRUcmFja3MpIFwKLSAgICBWKHRvU3RyaW5nU3RyaW5nKQor
ICAgIFYodG9TdHJpbmdTdHJpbmcpIFwKKyAgICBWKGNhbGxiYWNrKSBcCiAKICAgICBlbnVtIFY4
SGlkZGVuUHJvcGVydHlDcmVhdGlvblR5cGUgeyBOZXdTeW1ib2wsIE5ld1N0cmluZyB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IDBkYjY1YjE2ZjUyZTM4MDA2ZjFmYmU2NzVl
ZDA4OGYzMjIyNmIyOTkuLjhlMzRiODBkMmJkZWE1MGQ3NzIxNGYzYzc2ZTI3YWUzMzEwMWJkZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9u
T2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAjaW5j
bHVkZSAiVjhNdXRhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKIApA
QCAtNjYsNiArNjcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNdXRhdGlvbk9ic2VydmVy
Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAogICAgIFJlZlB0cjxNdXRh
dGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShjb250ZXh0
LCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKKyAgICB3cmFwcGVyLT5TZXRIaWRkZW5WYWx1ZShWOEhpZGRl
blByb3BlcnR5TmFtZTo6Y2FsbGJhY2soKSwgYXJnKTsKICAgICBWOERPTVdyYXBwZXI6OmNyZWF0
ZURPTVdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAgICAgcmV0
dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25D
YWxsYmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5pZGwKaW5k
ZXggOWM3NmUxOGUyY2QyMmNkYjYzZmZhOWY0N2NlZjg2NGVhYzc4ZTcxZC4uYWQxMjM0ZDVkMDkx
Yzc4ODIzNjA4MGMxN2FjZjYzNTVhM2Q5MDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uQ2FsbGJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bkNhbGxiYWNrLmlkbApAQCAtMzAsNyArMzAsOCBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9TVVU
QVRJT05fT0JTRVJWRVJTLAotICAgIENhbGxiYWNrCisgICAgQ2FsbGJhY2ssCisgICAgVjhXZWFr
Q2FsbGJhY2sKIF0gaW50ZXJmYWNlIE11dGF0aW9uQ2FsbGJhY2sgewogICAgIFtDdXN0b21dIGJv
b2xlYW4gaGFuZGxlRXZlbnQoaW4gTXV0YXRpb25SZWNvcmRBcnJheSBtdXRhdGlvbnMsIGluIE11
dGF0aW9uT2JzZXJ2ZXIgb2JzZXJ2ZXIpOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174795</attachid>
            <date>2012-11-16 19:24:17 -0800</date>
            <delta_ts>2012-11-16 19:45:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102555-20121116192212.patch</filename>
            <type>text/plain</type>
            <size>11078</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU2NjM4ZDA1ZjAyOWU3
NmZlNTViZjEyNjIxMzBlNjU0ODExZjlmYi4uYzg3NzA0YjYwM2VlNmU4NzA1NGJlYjhhZmEyNmI3
MTVjNTBiZDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTExLTE2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN0b3JlIE11dGF0
aW9uT2JzZXJ2ZXIgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgZm9yIFY4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IGNpcmN1
bGFyIHJlZmVyZW5jZSBsZWFrcyB3ZSBzaG91bGQgc3RvcmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIK
KyAgICAgICAgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgb24gdGhlIHdyYXBwZXIgb2Yg
dGhlIG9ic2VydmVyLgorCisgICAgICAgIFRoaXMgaXMgZG9uZSBieSBleHRlbmRpbmcgdGhlIGNv
ZGUgZ2VuZXJhdG9yIHRvIHN1cHBvcnQgYSBuZXcgb3duZXIKKyAgICAgICAgYXJndW1lbnQgdG8g
OjpjcmVhdGUoKSB0aGF0IGxldHMgeW91IHNldCB0aGUgb3duZXIgb2YgdGhlIGNhbGxiYWNrIHdo
ZXJlCisgICAgICAgIHRoZSBoaWRkZW4gcHJvcGVydHkgc2hvdWxkIGJlIHN0b3JlZC4KKworICAg
ICAgICBUZXN0OiBmYXN0L211dGF0aW9uL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3JhcHBlci5odG1s
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0lt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbkNhbGxiYWNrQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4TXV0YXRpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAg
CiAyMDEyLTExLTE2ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIFJUQ1BlZXJDb25uZWN0aW9uIHN0YXRlcyB0
byBtYXRjaCB0aGUgbGF0ZXN0IGVkaXRvcnMgZHJhZnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZjFmOTQwMTNiMjZlZTg4
MWQwZGFiZjQxYTg5YzJmNjMxNzJmOTY2ZS4uNDZjY2FlMDEwY2RhMDk5ZjU1Zjc1OTEyYjdkNmUw
MjE1ODkyMTcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KQEAgLTMyNzMsNiArMzI3Myw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxi
YWNrSGVhZGVyCiAgICAgbXkgQHVuc29ydGVkSW5jbHVkZXMgPSAoKTsKICAgICBwdXNoKEB1bnNv
cnRlZEluY2x1ZGVzLCAiI2luY2x1ZGUgXCJBY3RpdmVET01DYWxsYmFjay5oXCIiKTsKICAgICBw
dXNoKEB1bnNvcnRlZEluY2x1ZGVzLCAiI2luY2x1ZGUgXCIkaW50ZXJmYWNlTmFtZS5oXCIiKTsK
KyAgICBwdXNoKEB1bnNvcnRlZEluY2x1ZGVzLCAiI2luY2x1ZGUgXCJTY29wZWRQZXJzaXN0ZW50
LmhcIiIpOwogICAgIHB1c2goQHVuc29ydGVkSW5jbHVkZXMsICIjaW5jbHVkZSBcIldvcmxkQ29u
dGV4dEhhbmRsZS5oXCIiKTsKICAgICBwdXNoKEB1bnNvcnRlZEluY2x1ZGVzLCAiI2luY2x1ZGUg
PHY4Lmg+Iik7CiAgICAgcHVzaChAdW5zb3J0ZWRJbmNsdWRlcywgIiNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPiIpOwpAQCAtMzI4NCwxMSArMzI4NSwxMSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0hl
YWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPCR7Y2xhc3NOYW1lfT4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPCR7Y2xhc3NOYW1lfT4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb3du
ZXIgPSAodjg6Ok9iamVjdCopMCkKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmpl
Y3QoKSk7CiAgICAgICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyAke2NsYXNzTmFtZX0odmFsdWUtPlRvT2JqZWN0KCksIGNvbnRleHQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyAke2NsYXNzTmFtZX0odmFsdWUtPlRvT2JqZWN0KCksIGNvbnRl
eHQsIG93bmVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+JHtjbGFzc05hbWV9KCk7CkBAIC0z
MzIwLDkgKzMzMjEsMTUgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwog
CiBwcml2YXRlOgotICAgICR7Y2xhc3NOYW1lfSh2ODo6TG9jYWw8djg6Ok9iamVjdD4sIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAke2NsYXNzTmFtZX0odjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdjg6OkxvY2FsPHY4OjpPYmplY3Q+KTsKIAot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgc3RhdGljIHZv
aWQgd2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlciwgdm9pZCog
cGFyYW1ldGVyKQorICAgIHsKKyAgICAgICAgJHtjbGFzc05hbWV9KiBvYmplY3QgPSBzdGF0aWNf
Y2FzdDwke2NsYXNzTmFtZX0qPihwYXJhbWV0ZXIpOworICAgICAgICBvYmplY3QtPm1fY2FsbGJh
Y2suY2xlYXIoKTsKKyAgICB9CisKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1f
Y2FsbGJhY2s7CiAgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250ZXh0OwogfTsKIApA
QCAtMzM1MiwxNiArMzM1OSwxOSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9u
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD5cblxu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0ke2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1l
fSh2ODo6TG9jYWw8djg6Ok9iamVjdD4gY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCiske2NsYXNzTmFtZX06OiR7Y2xhc3NOYW1lfSh2ODo6TG9jYWw8djg6Ok9iamVj
dD4gY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpMb2NhbDx2
ODo6T2JqZWN0PiBvd25lcikKICAgICA6IEFjdGl2ZURPTUNhbGxiYWNrKGNvbnRleHQpCi0gICAg
LCBtX2NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoY2FsbGJhY2spKQor
ICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAsIG1fd29ybGRDb250ZXh0KFVzZUN1cnJl
bnRXb3JsZCkKIHsKKyAgICBpZiAoIW93bmVyLklzRW1wdHkoKSkgeworICAgICAgICBvd25lci0+
U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmNhbGxiYWNrKCksIGNhbGxiYWNr
KTsKKyAgICAgICAgbV9jYWxsYmFjay5nZXQoKS5NYWtlV2Vhayh0aGlzLCAmJHtjbGFzc05hbWV9
Ojp3ZWFrQ2FsbGJhY2spOworICAgIH0KIH0KIAogJHtjbGFzc05hbWV9Ojp+JHtjbGFzc05hbWV9
KCkKIHsKLSAgICBtX2NhbGxiYWNrLkRpc3Bvc2UoKTsKIH0KIAogRU5ECkBAIC0zNDMxLDExICsz
NDQxLDExIEBAIEVORAogICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAcGFyYW1z
KSB7CiAgICAgICAgICAgICAgICAgICAgIG5leHQgaWYgJHBhcmFtLT50eXBlIG5lICR0aGlzVHlw
ZTsKICAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtTmFtZSA9ICRwYXJhbS0+bmFtZTsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICFpbnZva2VD
YWxsYmFjayhtX2NhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KCR7cGFyYW1O
YW1lfUhhbmRsZSksICIgLiBzY2FsYXIoQHBhcmFtcykgLiAiLCBhcmd2LCBjYWxsYmFja1JldHVy
blZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiAhaW52b2tlQ2FsbGJhY2sobV9jYWxs
YmFjay5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCgke3BhcmFtTmFtZX1IYW5k
bGUpLCAiIC4gc2NhbGFyKEBwYXJhbXMpIC4gIiwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBsYXN0
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICFpbnZva2VDYWxsYmFjayhtX2NhbGxi
YWNrLCAiIC4gc2NhbGFyKEBwYXJhbXMpIC4gIiwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiAhaW52b2tlQ2FsbGJhY2sobV9jYWxsYmFjay5nZXQoKSwg
IiAuIHNjYWxhcihAcGFyYW1zKSAuICIsIGFyZ3YsIGNhbGxiYWNrUmV0dXJuVmFsdWUsIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCmluZGV4IDJmMzc5ZDA5ZjIzMjA4
OWI2ODQ3ZDdkNWFlMDFlOGY0ZGYzZjMyOGUuLmRmYTBiMzE2NzdmNzY0OTgwOGQzMmJlMmYyZmVh
Nzk4NmMxOTQyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlk
ZGVuUHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRk
ZW5Qcm9wZXJ0eU5hbWUuaApAQCAtNDgsNyArNDgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgVihzbGVlcEZ1bmN0aW9uKSBcCiAgICAgVihzdGF0ZSkgXAogICAgIFYodGV4dFRyYWNrcykg
XAotICAgIFYodG9TdHJpbmdTdHJpbmcpCisgICAgVih0b1N0cmluZ1N0cmluZykgXAorICAgIFYo
Y2FsbGJhY2spCiAKICAgICBlbnVtIFY4SGlkZGVuUHJvcGVydHlDcmVhdGlvblR5cGUgeyBOZXdT
eW1ib2wsIE5ld1N0cmluZyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwCmluZGV4IGI5N2Y3ZDc2YjZjYzY0ZGMzY2E3NDVkZDg4ZTcxNTQ5YjM0MzU5Mjcu
Ljc5NTIzOThkYTM0ZWUzNWFmNWZlZWZjNDBiZmFiYzYzNDY2NjFjMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVudEVycm9y
Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1
c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wg
VjhTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24sIFNRTEVyCiAgICAgLy8gc3RhdGVtZW50LCBpZiBhbnksIG9yIG9udG8gdGhl
IG5leHQgb3ZlcmFsbCBzdGVwIG90aGVyd2lzZS4gT3RoZXJ3aXNlLAogICAgIC8vIHRoZSBlcnJv
ciBjYWxsYmFjayBkaWQgbm90IHJldHVybiBmYWxzZSwgb3IgdGhlcmUgd2FzIG5vIGVycm9yIGNh
bGxiYWNrLgogICAgIC8vIEp1bXAgdG8gdGhlIGxhc3Qgc3RlcCBpbiB0aGUgb3ZlcmFsbCBzdGVw
cy4KLSAgICByZXR1cm4gaW52b2tlQ2FsbGJhY2sobV9jYWxsYmFjaywgMiwgYXJndiwgY2FsbGJh
Y2tSZXR1cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB8fCBjYWxsYmFja1JldHVy
blZhbHVlOworICAgIHJldHVybiBpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLmdldCgpLCAyLCBh
cmd2LCBjYWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHx8IGNh
bGxiYWNrUmV0dXJuVmFsdWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uQ2FsbGJhY2tD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25D
YWxsYmFja0N1c3RvbS5jcHAKaW5kZXggZWUzZTY4MDIyNGQ4Mjk5MmVhY2U4MDNjZDg2NGRkZTJh
NjE2Yjk4NC4uYjhlOGQwOWM0OGNhYzVmNWZkNTk4YzRlOTcxZjUxMDdiNmYxMjBmMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25DYWxsYmFj
a0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0
YXRpb25DYWxsYmFja0N1c3RvbS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBWOE11dGF0aW9u
Q2FsbGJhY2s6OmhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqIG11dGF0aW9ucywgTXV0
YXRpb25PYnMKICAgICB9OwogCiAgICAgYm9vbCBjYWxsYmFja1JldHVyblZhbHVlID0gZmFsc2U7
Ci0gICAgcmV0dXJuICFpbnZva2VDYWxsYmFjayhtX2NhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KG9ic2VydmVySGFuZGxlKSwgMiwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1
ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICByZXR1cm4gIWludm9rZUNhbGxiYWNr
KG1fY2FsbGJhY2suZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qob2JzZXJ2ZXJI
YW5kbGUpLCAyLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwCmluZGV4IDBkYjY1YjE2ZjUyZTM4MDA2ZjFmYmU2NzVlZDA4OGYzMjIyNmIyOTkuLjdh
M2UxNzUzNDYzZjM1NzgwZjA0NDQ4OGI2NzczODcxMzNiZTRjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCkBAIC02MSwxMSArNjEsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQK
ICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5H
ZXRJc29sYXRlKCkpOwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdl
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2Fs
bGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRleHQpOworICAgIFJl
ZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFY4TXV0YXRpb25DYWxsYmFjazo6Y3Jl
YXRlKGFyZywgY29udGV4dCwgd3JhcHBlcik7CiAgICAgUmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+
IG9ic2VydmVyID0gTXV0YXRpb25PYnNlcnZlcjo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrLnJl
bGVhc2UoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwogICAgIFY4RE9NV3JhcHBlcjo6Y3JlYXRlRE9NV3JhcHBlcihvYnNlcnZlci5yZWxl
YXNlKCksICZpbmZvLCB3cmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5
MDIwZjM3YjJiNjUwOWUwYWQwYzM3MmNkMTIzOGM4MjZmNDk3MWY5Li5kZmZlOTg3MzIzMGFlNThj
YTQxYzllMzViMzQ5YzhhYzllYTczOTMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTEt
MTYgIEVsbGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3Rv
cmUgTXV0YXRpb25PYnNlcnZlciBjYWxsYmFjayBpbiBhIGhpZGRlbiBwcm9wZXJ0eSBmb3IgVjgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU1NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3QgZm9y
IHJlZmVyZW5jZSBjeWNsZSBsZWFrcyB3aXRoIG11dGF0aW9uIG9ic2VydmVycy4gVGhlcmUgZG9l
c24ndCBzZWVtCisgICAgICAgIHRvIGJlIGEgd2F5IHRvIGNoZWNrIHRoaXMgZm9yIHY4LCBidXQg
aWYgeW91IG1hbnVhbGx5IHJ1biB5b3UgY2FuIHNlZSBpZiBpdAorICAgICAgICBsZWFrcyBvYnNl
cnZlcnMuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3Jh
cHBlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbXV0YXRpb24vbGVhay1j
eWNsZS1vYnNlcnZlci13cmFwcGVyLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTE2ICBEaW1pdHJp
IEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBh
ZGp1c3RpbmcgZXhwZWN0YXRpb25zIGZvciBjaGVja2VyYm9hcmQuaHRtbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9sZWFrLWN5Y2xlLW9ic2VydmVyLXdyYXBwZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9sZWFrLWN5Y2xlLW9ic2VydmVy
LXdyYXBwZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkMDgzYjU1ZDFhY2E0MTc5ZWQzMDQ1
OTUwZTBiYzQyODg3MDAzMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211
dGF0aW9uL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3JhcHBlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSBAQAorVGVzdHMgdGhhdCByZWZlcmVuY2UgY3ljbGVzIGJldHdlZW4gdGhlIG9ic2VydmVyIGFu
ZCB0aGUgY2FsbGJhY2sgZG8gbm90IGNyZWF0ZSBsZWFrcy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbXV0YXRpb24vbGVhay1jeWNsZS1vYnNlcnZlci13cmFwcGVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3JhcHBlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU4MTNmMzdiZDA2YmQ5YmE3ZGZkYmFiMDQwZDFkMzAzMjg3ZTgyMDEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2xlYWstY3ljbGUtb2JzZXJ2
ZXItd3JhcHBlci5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorCis8cD4K
KyAgICBUZXN0cyB0aGF0IHJlZmVyZW5jZSBjeWNsZXMgYmV0d2VlbiB0aGUgb2JzZXJ2ZXIgYW5k
IHRoZSBjYWxsYmFjayBkbyBub3QKKyAgICBjcmVhdGUgbGVha3MuCis8L3A+CisKKzxzY3JpcHQ+
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKworICAgIGZ1bmN0aW9uIGxlYWsoKSB7CisgICAgICAgIHZhciBvYnNlcnZlciA9IG5l
dyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkgeyBvYnNlcnZlci5kaXNjb25uZWN0
KCk7IH0pOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgMTAwMDsgaSsrKSBsZWFrKCk7Cisg
ICAgZ2MoKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174799</attachid>
            <date>2012-11-16 19:45:30 -0800</date>
            <delta_ts>2012-11-20 11:37:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102555-20121116194325.patch</filename>
            <type>text/plain</type>
            <size>7518</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU2NjM4ZDA1ZjAyOWU3
NmZlNTViZjEyNjIxMzBlNjU0ODExZjlmYi4uMWY4OGEyNDZiOWE5YTZjZTQzNDc4NWQ5NzVjMzkx
NTdiMzY1ZTFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTExLTE2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN0b3JlIE11dGF0
aW9uT2JzZXJ2ZXIgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgZm9yIFY4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBwcmV2ZW50IGNpcmN1
bGFyIHJlZmVyZW5jZSBsZWFrcyB3ZSBzaG91bGQgc3RvcmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIK
KyAgICAgICAgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgb24gdGhlIHdyYXBwZXIgb2Yg
dGhlIG9ic2VydmVyLgorCisgICAgICAgIFRoaXMgaXMgZG9uZSBieSBleHRlbmRpbmcgdGhlIGNv
ZGUgZ2VuZXJhdG9yIHRvIHN1cHBvcnQgYSBuZXcgb3duZXIKKyAgICAgICAgYXJndW1lbnQgdG8g
OjpjcmVhdGUoKSB0aGF0IGxldHMgeW91IHNldCB0aGUgb3duZXIgb2YgdGhlIGNhbGxiYWNrIHdo
ZXJlCisgICAgICAgIHRoZSBoaWRkZW4gcHJvcGVydHkgc2hvdWxkIGJlIHN0b3JlZC4KKworICAg
ICAgICBUZXN0OiBmYXN0L211dGF0aW9uL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3JhcHBlci5odG1s
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0lt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFt
ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKToKKwogMjAxMi0xMS0xNiAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSBSVENQZWVyQ29ubmVj
dGlvbiBzdGF0ZXMgdG8gbWF0Y2ggdGhlIGxhdGVzdCBlZGl0b3JzIGRyYWZ0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGYx
Zjk0MDEzYjI2ZWU4ODFkMGRhYmY0MWE4OWMyZjYzMTcyZjk2NmUuLjAyNjczNDAwNDVkZmM4OGM4
NmNhMGY3YmZiMjcyMTdhMzNjOTQ1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zMjg0LDExICszMjg0LDExIEBAIHN1
YiBHZW5lcmF0ZUNhbGxiYWNrSGVhZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVO
RCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8JHtjbGFzc05hbWV9PiBjcmVhdGUo
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8JHtjbGFzc05hbWV9PiBjcmVhdGUodjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBvd25lciA9ICh2ODo6T2JqZWN0KikwKQogICAgIHsKICAgICAgICAg
QVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3ICR7Y2xhc3NOYW1lfSh2YWx1ZS0+VG9PYmplY3QoKSwg
Y29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3ICR7Y2xhc3NOYW1lfSh2YWx1
ZS0+VG9PYmplY3QoKSwgY29udGV4dCwgb3duZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH4k
e2NsYXNzTmFtZX0oKTsKQEAgLTMzMjAsOCArMzMyMCwxNiBAQCBFTkQKICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCA8PEVORCk7CiAKIHByaXZhdGU6Ci0gICAgJHtjbGFzc05hbWV9KHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgICR7Y2xhc3NOYW1l
fSh2ODo6TG9jYWw8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6TG9j
YWw8djg6Ok9iamVjdD4pOwogCisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlciwgdm9pZCogcGFyYW1ldGVyKQorICAgIHsKKyAgICAg
ICAgJHtjbGFzc05hbWV9KiBvYmplY3QgPSBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPihwYXJh
bWV0ZXIpOworICAgICAgICBvYmplY3QtPm1fY2FsbGJhY2suRGlzcG9zZSgpOworICAgICAgICBv
YmplY3QtPm1fY2FsbGJhY2suQ2xlYXIoKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogbV9jYWxs
YmFjayBzaG91bGQgYmUgYSBTY29wZWRQZXJzaXN0ZW50LgogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IG1fY2FsbGJhY2s7CiAgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29ybGRDb250
ZXh0OwogfTsKQEAgLTMzNTIsMTYgKzMzNjAsMjEgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+XG5cbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAibmFtZXNwYWNlIFdlYkNvcmUg
e1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotJHtjbGFzc05hbWV9Ojok
e2NsYXNzTmFtZX0odjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorJHtjbGFzc05hbWV9Ojoke2NsYXNzTmFtZX0odjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gb3duZXIpCiAgICAgOiBBY3RpdmVET01DYWxsYmFjayhjb250
ZXh0KQogICAgICwgbV9jYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGNh
bGxiYWNrKSkKICAgICAsIG1fd29ybGRDb250ZXh0KFVzZUN1cnJlbnRXb3JsZCkKIHsKKyAgICBp
ZiAoIW93bmVyLklzRW1wdHkoKSkgeworICAgICAgICBvd25lci0+U2V0SGlkZGVuVmFsdWUoVjhI
aWRkZW5Qcm9wZXJ0eU5hbWU6OmNhbGxiYWNrKCksIGNhbGxiYWNrKTsKKyAgICAgICAgbV9jYWxs
YmFjay5NYWtlV2Vhayh0aGlzLCAmJHtjbGFzc05hbWV9Ojp3ZWFrQ2FsbGJhY2spOworICAgIH0K
IH0KIAogJHtjbGFzc05hbWV9Ojp+JHtjbGFzc05hbWV9KCkKIHsKLSAgICBtX2NhbGxiYWNrLkRp
c3Bvc2UoKTsKKyAgICBpZiAoIW1fY2FsbGJhY2suSXNFbXB0eSgpKQorICAgICAgICBtX2NhbGxi
YWNrLkRpc3Bvc2UoKTsKIH0KIAogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAppbmRleCAyZjM3OWQwOWYyMzIwODliNjg0N2Q3ZDVh
ZTAxZThmNGRmM2YzMjhlLi5kZmEwYjMxNjc3Zjc2NDk4MDhkMzJiZTJmMmZlYTc5ODZjMTk0Mjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5
TmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlO
YW1lLmgKQEAgLTQ4LDcgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYoc2xlZXBG
dW5jdGlvbikgXAogICAgIFYoc3RhdGUpIFwKICAgICBWKHRleHRUcmFja3MpIFwKLSAgICBWKHRv
U3RyaW5nU3RyaW5nKQorICAgIFYodG9TdHJpbmdTdHJpbmcpIFwKKyAgICBWKGNhbGxiYWNrKQog
CiAgICAgZW51bSBWOEhpZGRlblByb3BlcnR5Q3JlYXRpb25UeXBlIHsgTmV3U3ltYm9sLCBOZXdT
dHJpbmcgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCAwZGI2NWIxNmY1MmUz
ODAwNmYxZmJlNjc1ZWQwODhmMzIyMjZiMjk5Li43YTNlMTc1MzQ2M2YzNTc4MGYwNDQ0ODhiNjc3
Mzg3MTMzYmU0YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNjEsMTEgKzYx
LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgICAgIHJldHVybiBzZXRET01FeGNl
cHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0g
ICAgUmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gVjhNdXRhdGlvbkNhbGxiYWNr
OjpjcmVhdGUoYXJnLCBjb250ZXh0KTsKKyAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2Fs
bGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRleHQsIHdyYXBwZXIp
OwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2JzZXJ2
ZXI6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBWOERPTVdyYXBwZXI6
OmNyZWF0ZURPTVdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlcik7CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTAyMGYzN2IyYjY1MDllMGFkMGMzNzJjZDEy
MzhjODI2ZjQ5NzFmOS4uZGZmZTk4NzMyMzBhZTU4Y2E0MWM5ZTM1YjM0OWM4YWM5ZWE3MzkzMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTE2ICBFbGxpb3R0IFNwcmVobiAgPGVzcHJl
aG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN0b3JlIE11dGF0aW9uT2JzZXJ2ZXIgY2FsbGJh
Y2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgZm9yIFY4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0IGZvciByZWZlcmVuY2UgY3ljbGUgbGVha3Mgd2l0
aCBtdXRhdGlvbiBvYnNlcnZlcnMuIFRoZXJlIGRvZXNuJ3Qgc2VlbQorICAgICAgICB0byBiZSBh
IHdheSB0byBjaGVjayB0aGlzIGZvciB2OCwgYnV0IGlmIHlvdSBtYW51YWxseSBydW4geW91IGNh
biBzZWUgaWYgaXQKKyAgICAgICAgbGVha3Mgb2JzZXJ2ZXJzLgorCisgICAgICAgICogZmFzdC9t
dXRhdGlvbi9sZWFrLWN5Y2xlLW9ic2VydmVyLXdyYXBwZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L211dGF0aW9uL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3JhcHBlci5odG1s
OiBBZGRlZC4KKwogMjAxMi0xMS0xNiAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gYWRqdXN0aW5nIGV4cGVjdGF0aW9ucyBmb3Ig
Y2hlY2tlcmJvYXJkLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24v
bGVhay1jeWNsZS1vYnNlcnZlci13cmFwcGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vbGVhay1jeWNsZS1vYnNlcnZlci13cmFwcGVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZDA4M2I1NWQxYWNhNDE3OWVkMzA0NTk1MGUwYmM0Mjg4NzAwMzM0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9sZWFrLWN5Y2xlLW9ic2VydmVy
LXdyYXBwZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1Rlc3RzIHRoYXQgcmVmZXJlbmNl
IGN5Y2xlcyBiZXR3ZWVuIHRoZSBvYnNlcnZlciBhbmQgdGhlIGNhbGxiYWNrIGRvIG5vdCBjcmVh
dGUgbGVha3MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL2xlYWstY3lj
bGUtb2JzZXJ2ZXItd3JhcHBlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9sZWFr
LWN5Y2xlLW9ic2VydmVyLXdyYXBwZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODEzZjM3YmQwNmJkOWJh
N2RmZGJhYjA0MGQxZDMwMzI4N2U4MjAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tdXRhdGlvbi9sZWFrLWN5Y2xlLW9ic2VydmVyLXdyYXBwZXIuaHRtbApAQCAtMCwwICsx
LDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKworPHA+CisgICAgVGVzdHMgdGhhdCByZWZlcmVuY2Ug
Y3ljbGVzIGJldHdlZW4gdGhlIG9ic2VydmVyIGFuZCB0aGUgY2FsbGJhY2sgZG8gbm90CisgICAg
Y3JlYXRlIGxlYWtzLgorPC9wPgorCis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiBsZWFr
KCkgeworICAgICAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihm
dW5jdGlvbigpIHsgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOyB9KTsKKyAgICB9CisKKyAgICBmb3Ig
KGk9MDsgaSA8IDEwMDA7IGkrKykgbGVhaygpOworICAgIGdjKCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175254</attachid>
            <date>2012-11-20 11:37:21 -0800</date>
            <delta_ts>2012-11-20 11:59:56 -0800</delta_ts>
            <desc>Patch for landing (on behalf of esprehn)</desc>
            <filename>bug-102555-20121120113509.patch</filename>
            <type>text/plain</type>
            <size>9876</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlNWM0YTljMTBhN2E5
OWUxZDQwOTY5YWE3NzYwMzgzYWIwNDVmZi4uMzkxOGViNzIyMGZiZTUyZjNlZWU1NzFmZWFiZDM5
YmZjNjFlYWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTIwICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN0b3JlIE11dGF0
aW9uT2JzZXJ2ZXIgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgZm9yIFY4CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRvIHByZXZlbnQgY2lyY3VsYXIg
cmVmZXJlbmNlIGxlYWtzIHdlIHNob3VsZCBzdG9yZSB0aGUgTXV0YXRpb25PYnNlcnZlcgorICAg
ICAgICBjYWxsYmFjayBpbiBhIGhpZGRlbiBwcm9wZXJ0eSBvbiB0aGUgd3JhcHBlciBvZiB0aGUg
b2JzZXJ2ZXIuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGV4dGVuZGluZyB0aGUgY29kZSBn
ZW5lcmF0b3IgdG8gc3VwcG9ydCBhIG5ldyBvd25lcgorICAgICAgICBhcmd1bWVudCB0byA6OmNy
ZWF0ZSgpIHRoYXQgbGV0cyB5b3Ugc2V0IHRoZSBvd25lciBvZiB0aGUgY2FsbGJhY2sgd2hlcmUK
KyAgICAgICAgdGhlIGhpZGRlbiBwcm9wZXJ0eSBzaG91bGQgYmUgc3RvcmVkLgorCisgICAgICAg
IFRlc3Q6IE1hbnVhbFRlc3RzL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3JhcHBlci5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdl
bmVyYXRlQ2FsbGJhY2tIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVu
dGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJh
Y2suY3BwOiByZWJhc2VsaW5lZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q2FsbGJhY2suaDogcmViYXNlbGluZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25PYnNl
cnZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisKIDIwMTItMTEtMjAgIERpcmsgU2NodWx6ZSAg
PGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgRmlsdGVyT3Bl
cmF0aW9ucyBoZWFkZXIgZnJvbSBSZW5kZXJCb3hNb2RlbE9iamVjdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA3ZTQ1M2Jl
YWIxZDhhMWI1MTFmMDA0NzE1YTMwYTcyNmUyNzcyYTg3Li4wODZiMjc4NTJjOTdmZTM4MTczYzY2
YzhmOGFjZmY5Y2ExZjA1NDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMzI0NiwxMSArMzI0NiwxMSBAQCBzdWIgR2Vu
ZXJhdGVDYWxsYmFja0hlYWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPCR7djhJbnRlcmZhY2VOYW1lfT4gY3JlYXRl
KHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPCR7djhJbnRlcmZhY2VOYW1lfT4gY3JlYXRlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25lciA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CiAgICAgICAgIEFT
U0VSVChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAke3Y4SW50ZXJmYWNl
TmFtZX0odmFsdWUtPlRvT2JqZWN0KCksIGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyAke3Y4SW50ZXJmYWNlTmFtZX0odmFsdWUtPlRvT2JqZWN0KCksIGNvbnRleHQsIG93
bmVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+JHt2OEludGVyZmFjZU5hbWV9KCk7CkBAIC0z
MjgyLDggKzMyODIsMTYgQEAgRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwog
CiBwcml2YXRlOgotICAgICR7djhJbnRlcmZhY2VOYW1lfSh2ODo6TG9jYWw8djg6Ok9iamVjdD4s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAke3Y4SW50ZXJmYWNlTmFtZX0odjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4pOwogCisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50
PHY4OjpWYWx1ZT4gd3JhcHBlciwgdm9pZCogcGFyYW1ldGVyKQorICAgIHsKKyAgICAgICAgJHt2
OEludGVyZmFjZU5hbWV9KiBvYmplY3QgPSBzdGF0aWNfY2FzdDwke3Y4SW50ZXJmYWNlTmFtZX0q
PihwYXJhbWV0ZXIpOworICAgICAgICBvYmplY3QtPm1fY2FsbGJhY2suRGlzcG9zZSgpOworICAg
ICAgICBvYmplY3QtPm1fY2FsbGJhY2suQ2xlYXIoKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTog
bV9jYWxsYmFjayBzaG91bGQgYmUgYSBTY29wZWRQZXJzaXN0ZW50LgogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IG1fY2FsbGJhY2s7CiAgICAgV29ybGRDb250ZXh0SGFuZGxlIG1fd29y
bGRDb250ZXh0OwogfTsKQEAgLTMzMTQsMTYgKzMzMjIsMjEgQEAgc3ViIEdlbmVyYXRlQ2FsbGJh
Y2tJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+XG5cbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAibmFtZXNwYWNlIFdl
YkNvcmUge1xuXG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotJHt2OEludGVy
ZmFjZU5hbWV9Ojoke3Y4SW50ZXJmYWNlTmFtZX0odjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorJHt2OEludGVyZmFjZU5hbWV9
Ojoke3Y4SW50ZXJmYWNlTmFtZX0odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25l
cikKICAgICA6IEFjdGl2ZURPTUNhbGxiYWNrKGNvbnRleHQpCiAgICAgLCBtX2NhbGxiYWNrKHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoY2FsbGJhY2spKQogICAgICwgbV93b3JsZENv
bnRleHQoVXNlQ3VycmVudFdvcmxkKQogeworICAgIGlmICghb3duZXIuSXNFbXB0eSgpKSB7Cisg
ICAgICAgIG93bmVyLT5TZXRIaWRkZW5WYWx1ZShWOEhpZGRlblByb3BlcnR5TmFtZTo6Y2FsbGJh
Y2soKSwgY2FsbGJhY2spOworICAgICAgICBtX2NhbGxiYWNrLk1ha2VXZWFrKHRoaXMsICYke3Y4
SW50ZXJmYWNlTmFtZX06OndlYWtDYWxsYmFjayk7CisgICAgfQogfQogCiAke3Y4SW50ZXJmYWNl
TmFtZX06On4ke3Y4SW50ZXJmYWNlTmFtZX0oKQogewotICAgIG1fY2FsbGJhY2suRGlzcG9zZSgp
OworICAgIGlmICghbV9jYWxsYmFjay5Jc0VtcHR5KCkpCisgICAgICAgIG1fY2FsbGJhY2suRGlz
cG9zZSgpOwogfQogCiBFTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suY3BwCmluZGV4IGVkMmRlNmVlNmJiNWM2
YWI0ODY1NjY2ZmVmNGZmZTJiNTU5YmVkODcuLjhmYTQ4NDVlZGEyOTIwMzVjNDk3YjJmZWEwZTg0
ZmE2YTNhYjZhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcApAQCAtMzksMTYgKzM5LDIxIEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVjhUZXN0Q2FsbGJhY2s6OlY4VGVzdENhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBjYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKK1Y4VGVzdENhbGxiYWNrOjpWOFRlc3RDYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG93bmVyKQogICAgIDogQWN0aXZlRE9NQ2FsbGJhY2soY29udGV4dCkKICAg
ICAsIG1fY2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhjYWxsYmFjaykp
CiAgICAgLCBtX3dvcmxkQ29udGV4dChVc2VDdXJyZW50V29ybGQpCiB7CisgICAgaWYgKCFvd25l
ci5Jc0VtcHR5KCkpIHsKKyAgICAgICAgb3duZXItPlNldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJv
cGVydHlOYW1lOjpjYWxsYmFjaygpLCBjYWxsYmFjayk7CisgICAgICAgIG1fY2FsbGJhY2suTWFr
ZVdlYWsodGhpcywgJlY4VGVzdENhbGxiYWNrOjp3ZWFrQ2FsbGJhY2spOworICAgIH0KIH0KIAog
VjhUZXN0Q2FsbGJhY2s6On5WOFRlc3RDYWxsYmFjaygpCiB7Ci0gICAgbV9jYWxsYmFjay5EaXNw
b3NlKCk7CisgICAgaWYgKCFtX2NhbGxiYWNrLklzRW1wdHkoKSkKKyAgICAgICAgbV9jYWxsYmFj
ay5EaXNwb3NlKCk7CiB9CiAKIC8vIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suaAppbmRleCAzMWNh
N2UxNzc2YTZiY2Y5NjNjZmU0MTQ0ZjQwYjIxMDY1NjA3MmYyLi5lODU0YzNkOTJhY2EwMmJiZDRh
YjhjNDNhZWYxMmZmNTYyYWJmMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q2FsbGJhY2suaApAQCAtMzUsMTEgKzM1LDEx
IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFY4VGVzdENhbGxiYWNr
IDogcHVibGljIFRlc3RDYWxsYmFjaywgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOFRlc3RDYWxsYmFjaz4gY3JlYXRlKHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFY4VGVzdENhbGxiYWNrPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG93bmVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQp
OwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4VGVzdENhbGxiYWNrKHZhbHVlLT5Ub09i
amVjdCgpLCBjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhUZXN0Q2Fs
bGJhY2sodmFsdWUtPlRvT2JqZWN0KCksIGNvbnRleHQsIG93bmVyKSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB+VjhUZXN0Q2FsbGJhY2soKTsKQEAgLTU1LDggKzU1LDE2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MoQ2xhc3M4KiBjbGFzczhQ
YXJhbSwgVGhpc0NsYXNzKiB0aGlzQ2xhc3NQYXJhbSk7CiAKIHByaXZhdGU6Ci0gICAgVjhUZXN0
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgVjhUZXN0Q2FsbGJhY2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCisgICAgc3RhdGljIHZvaWQg
d2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gd3JhcHBlciwgdm9pZCogcGFy
YW1ldGVyKQorICAgIHsKKyAgICAgICAgVjhUZXN0Q2FsbGJhY2sqIG9iamVjdCA9IHN0YXRpY19j
YXN0PFY4VGVzdENhbGxiYWNrKj4ocGFyYW1ldGVyKTsKKyAgICAgICAgb2JqZWN0LT5tX2NhbGxi
YWNrLkRpc3Bvc2UoKTsKKyAgICAgICAgb2JqZWN0LT5tX2NhbGxiYWNrLkNsZWFyKCk7CisgICAg
fQorCisgICAgLy8gRklYTUU6IG1fY2FsbGJhY2sgc2hvdWxkIGJlIGEgU2NvcGVkUGVyc2lzdGVu
dC4KICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2NhbGxiYWNrOwogICAgIFdvcmxk
Q29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAppbmRleCAyZjM3OWQwOWYyMzIwODli
Njg0N2Q3ZDVhZTAxZThmNGRmM2YzMjhlLi5jMTZjZTM1NmZjYmQ0MzRlNzJhMjExZmFhOTAyMzlk
ZmQwZjg0NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVu
UHJvcGVydHlOYW1lLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAj
ZGVmaW5lIFY4X0hJRERFTl9QUk9QRVJUSUVTKFYpIFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVy
KSBcCisgICAgVihjYWxsYmFjaykgXAogICAgIFYoZGV0YWlsKSBcCiAgICAgVihkb2N1bWVudCkg
XAogICAgIFYoZG9tU3RyaW5nTWFwKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4
IGY4MGNlNTk4YTk3MmFjYjdkNWZjMmYzNDk5NjhmNGI5ZWE4ZjJiZjYuLjk2OTA4ODlhNDg5YWRk
NjVjNTNkNWU0Mzk4MGU2ZmQ1MTU0NDQyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3Bw
CkBAIC02MSwxMSArNjEsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TXV0YXRpb25PYnNl
cnZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENIX0VSUiwgYXJncy5HZXRJc29sYXRlKCkp
OwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdz
LkhvbGRlcigpOwogCi0gICAgUmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gVjhN
dXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUoYXJnLCBjb250ZXh0KTsKKyAgICBSZWZQdHI8TXV0YXRp
b25DYWxsYmFjaz4gY2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNv
bnRleHQsIHdyYXBwZXIpOwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9
IE11dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBWOERPTVdy
YXBwZXI6OmNyZWF0ZURPTVdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
cik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFu
Z2VMb2cKaW5kZXggZTI2N2I1ZmE4ZjA2YWVjOTViNWEyMjFjM2YyZDAwZTUwZDM4MTdkYy4uYzM3
YjU4Mzk2OWIzZjdhOTMzZDc1ZTEyMDRkMTJhMzY5YzNjNGU1MyAxMDA2NDQKLS0tIGEvQ2hhbmdl
TG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTExLTIwICBFbGxpb3R0
IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN0b3JlIE11dGF0aW9u
T2JzZXJ2ZXIgY2FsbGJhY2sgaW4gYSBoaWRkZW4gcHJvcGVydHkgZm9yIFY4CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRlc3QgZm9yIHJlZmVyZW5jZSBjeWNs
ZSBsZWFrcyB3aXRoIG11dGF0aW9uIG9ic2VydmVycy4gVGhlcmUgZG9lc24ndCBzZWVtCisgICAg
ICAgIHRvIGJlIGEgd2F5IHRvIGNoZWNrIHRoaXMgZm9yIHY4LCBidXQgaWYgeW91IG1hbnVhbGx5
IHJ1biB5b3UgY2FuIHNlZSBpZiBpdAorICAgICAgICBsZWFrcyBvYnNlcnZlcnMuCisKKyAgICAg
ICAgKiBNYW51YWxUZXN0cy9sZWFrLWN5Y2xlLW9ic2VydmVyLXdyYXBwZXIuaHRtbDogQWRkZWQu
CisKIDIwMTItMTEtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBORVdTIGFuZCBjb25maWd1cmUuYWMgZm9y
IDEuMTEuMiByZWxlYXNlCmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9sZWFrLWN5Y2xlLW9ic2Vy
dmVyLXdyYXBwZXIuaHRtbCBiL01hbnVhbFRlc3RzL2xlYWstY3ljbGUtb2JzZXJ2ZXItd3JhcHBl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU4MTNmMzdiZDA2YmQ5YmE3ZGZkYmFiMDQwZDFkMzAzMjg3ZTgy
MDEKLS0tIC9kZXYvbnVsbAorKysgYi9NYW51YWxUZXN0cy9sZWFrLWN5Y2xlLW9ic2VydmVyLXdy
YXBwZXIuaHRtbApAQCAtMCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKworPHA+CisgICAg
VGVzdHMgdGhhdCByZWZlcmVuY2UgY3ljbGVzIGJldHdlZW4gdGhlIG9ic2VydmVyIGFuZCB0aGUg
Y2FsbGJhY2sgZG8gbm90CisgICAgY3JlYXRlIGxlYWtzLgorPC9wPgorCis8c2NyaXB0PgorICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisKKyAgICBmdW5jdGlvbiBsZWFrKCkgeworICAgICAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2Vi
S2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpIHsgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOyB9
KTsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IDEwMDA7IGkrKykgbGVhaygpOworICAgIGdj
KCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>