<?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>60490</bug_id>
          
          <creation_ts>2011-05-09 11:49:04 -0700</creation_ts>
          <short_desc>Create LayerOffset class</short_desc>
          <delta_ts>2011-05-11 12:09:13 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>60586</dependson>
    
    <dependson>60597</dependson>
          <blocked>60318</blocked>
    
    <blocked>60408</blocked>
    
    <blocked>60578</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>leviw</cc>
    
    <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>400616</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 11:49:04 -0700</bug_when>
    <thetext>The tx/ty offsets passed throughout painting code is neither fully a point nor a size. I propose the creation of a new class called PaintOffset that allows us to stop passing raw ints, and better represents this use case instead of abusing IntSize or IntPoint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400727</commentid>
    <comment_count>1</comment_count>
      <attachid>92842</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 13:53:17 -0700</bug_when>
    <thetext>Created attachment 92842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400728</commentid>
    <comment_count>2</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 13:54:22 -0700</bug_when>
    <thetext>I&apos;m not necessarily totally sold on the members being tx/ty. Maybe just x and y?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400730</commentid>
    <comment_count>3</comment_count>
      <attachid>92842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-09 13:56:22 -0700</bug_when>
    <thetext>Comment on attachment 92842
Patch

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

A few comments
1.  I suspect you missed at least one of the 8 build systems. :)
2.  It might be confusing that this is used in more than just painting.  Maybe OffsetFromContainingBlock?  I&apos;m not sure what this offset actually is anyway.

&gt; Source/WebCore/platform/graphics/PaintOffset.h:51
&gt; +    void expand(const IntSize&amp; size)

Is &quot;expand&quot; really what we&apos;re doing to this ofset here?

&gt; Source/WebCore/platform/graphics/PaintOffset.h:61
&gt; +    int m_tx, m_ty;

I think we normally put each declaration on its own line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400756</commentid>
    <comment_count>4</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 14:29:39 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 92842 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92842&amp;action=review
&gt; 
&gt; A few comments
&gt; 1.  I suspect you missed at least one of the 8 build systems. :)
I believe I updated the build systems that keep track of headers, but I could totally be wrong... I&apos;ll take another look.
&gt; 2.  It might be confusing that this is used in more than just painting.  Maybe OffsetFromContainingBlock?  I&apos;m not sure what this offset actually is anyway.
I believe tx/ty is passed in as the offset of the parent in the containing RenderLayer&apos;s coordinates. Perhaps LayerOffset?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/PaintOffset.h:51
&gt; &gt; +    void expand(const IntSize&amp; size)
&gt; 
&gt; Is &quot;expand&quot; really what we&apos;re doing to this ofset here?
I think rather than go with confusing names here I may remove this function altogether and rely on overloaded operators.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/PaintOffset.h:61
&gt; &gt; +    int m_tx, m_ty;
&gt; 
&gt; I think we normally put each declaration on its own line.

I (probably naively) followed IntPoint here :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400761</commentid>
    <comment_count>5</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 14:38:44 -0700</bug_when>
    <thetext>Renaming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400777</commentid>
    <comment_count>6</comment_count>
      <attachid>92857</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 14:56:37 -0700</bug_when>
    <thetext>Created attachment 92857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400788</commentid>
    <comment_count>7</comment_count>
      <attachid>92857</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-09 15:05:41 -0700</bug_when>
    <thetext>Comment on attachment 92857
Patch

it would be nice to see you deploy this in one place as part of this patch.  The new class looks fine though.  You might want to add a comment in the .h explaining what it&apos;s for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400896</commentid>
    <comment_count>8</comment_count>
      <attachid>92884</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 16:47:09 -0700</bug_when>
    <thetext>Created attachment 92884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400912</commentid>
    <comment_count>9</comment_count>
      <attachid>92889</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 17:12:44 -0700</bug_when>
    <thetext>Created attachment 92889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400914</commentid>
    <comment_count>10</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-09 17:14:11 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=92889) [details]
&gt; Patch

Reuploading so it passes the EWS bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400930</commentid>
    <comment_count>11</comment_count>
      <attachid>92889</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-09 17:29:18 -0700</bug_when>
    <thetext>Comment on attachment 92889
Patch

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

I think this is good.  I think we can land this as-is.  But I think you should be sure to wave this in front of maciej&apos;s nose at some point (that can be after landing), just to see what his thoughts are on introducing this point/size in-between.

&gt; Source/WebCore/platform/graphics/LayerOffset.h:34
&gt; +// LayerOffset represents the off

you trailed off...

&gt; Source/WebCore/platform/graphics/LayerOffset.h:42
&gt; +    LayerOffset(const IntSize&amp; size) : m_x(size.width()), m_y(size.height()) { }
&gt; +    LayerOffset(const IntPoint&amp; point) : m_x(point.x()), m_y(point.y()) { }

I wonder if it&apos;s a good idea to have implicit constructors here.

&gt; Source/WebCore/rendering/RenderScrollbar.cpp:278
&gt; +    partRenderer-&gt;paintIntoRect(graphicsContext, pos(), rect);

seems pos() needs to be renamed in some later patch. :)

&gt; Source/WebCore/rendering/RenderScrollbarPart.cpp:165
&gt; +    setLocation(rect.location() - layerOffset.toSize());

I wonder if there is a moveLocation or something that takes a size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401384</commentid>
    <comment_count>12</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-10 11:44:16 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 92889 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=92889&amp;action=review
&gt; 
&gt; I think this is good.  I think we can land this as-is.  But I think you should be sure to wave this in front of maciej&apos;s nose at some point (that can be after landing), just to see what his thoughts are on introducing this point/size in-between.

I&apos;d also love some feedback from mjs. Any chanced you can take a look Maciej?

Otherwise I&apos;ll land this later this afternoon so I can start uploading patches that make use of this class!

&gt; &gt; Source/WebCore/platform/graphics/LayerOffset.h:34
&gt; &gt; +// LayerOffset represents the off
&gt; 
&gt; you trailed off...

Fixed this locally

&gt; &gt; Source/WebCore/platform/graphics/LayerOffset.h:42
&gt; &gt; +    LayerOffset(const IntSize&amp; size) : m_x(size.width()), m_y(size.height()) { }
&gt; &gt; +    LayerOffset(const IntPoint&amp; point) : m_x(point.x()), m_y(point.y()) { }
&gt; 
&gt; I wonder if it&apos;s a good idea to have implicit constructors here.
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderScrollbar.cpp:278
&gt; &gt; +    partRenderer-&gt;paintIntoRect(graphicsContext, pos(), rect);
&gt; 
&gt; seems pos() needs to be renamed in some later patch. :)

It should really be location
IntSize size() const { return frameRect().size(); }
IntPoint pos() const { return frameRect().location(); }

&gt; &gt; Source/WebCore/rendering/RenderScrollbarPart.cpp:165
&gt; &gt; +    setLocation(rect.location() - layerOffset.toSize());
&gt; 
&gt; I wonder if there is a moveLocation or something that takes a size.

There could be :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401447</commentid>
    <comment_count>13</comment_count>
      <attachid>93001</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-10 13:32:32 -0700</bug_when>
    <thetext>Created attachment 93001
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401507</commentid>
    <comment_count>14</comment_count>
      <attachid>93008</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-10 14:35:26 -0700</bug_when>
    <thetext>Created attachment 93008
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401508</commentid>
    <comment_count>15</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-10 14:36:56 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=93008) [details]
&gt; Patch for landing

Fixed a problem in the xcodeproj (wasn&apos;t putting LayerOffset.h into the private headers)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401552</commentid>
    <comment_count>16</comment_count>
      <attachid>93001</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-10 15:13:08 -0700</bug_when>
    <thetext>Comment on attachment 93001
Patch for landing

Attachment 93001 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/8687077</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401642</commentid>
    <comment_count>17</comment_count>
      <attachid>93008</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 16:45:15 -0700</bug_when>
    <thetext>Comment on attachment 93008
Patch for landing

Clearing flags on attachment: 93008

Committed r86195: &lt;http://trac.webkit.org/changeset/86195&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401644</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 16:45:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401647</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 16:48:57 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 93008:

http/tests/xmlhttprequest/logout.html bug 52047 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401649</commentid>
    <comment_count>20</comment_count>
      <attachid>93008</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-05-10 16:50:45 -0700</bug_when>
    <thetext>Comment on attachment 93008
Patch for landing

I veto this patch. LayerOffset makes no sense; there is no class called Layer. tx and ty are not RenderLayer-relative.

I think you should pick IntSize or IntPoint and deal with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402117</commentid>
    <comment_count>21</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-05-11 11:17:54 -0700</bug_when>
    <thetext>Marking this Invalid per our IRC discussion.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92842</attachid>
            <date>2011-05-09 13:53:17 -0700</date>
            <delta_ts>2011-05-09 14:56:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60490-20110509135316.patch</filename>
            <type>text/plain</type>
            <size>9842</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MDg1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDUtMDkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBQYWludE9mZnNldCBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0OTAKKworICAgICAgICBB
ZGRpbmcgYSBQYWludE9mZnNldCBjbGFzcyB0aGF0IHdpbGwgYmUgdXNlZCB0byByZXByZXNlbnQg
dHgvdHkgaW4gdGhlIHBhaW50IGNvZGUuCisgICAgICAgIFBhaW50T2Zmc2V0IGlzIG5lY2Vzc2Fy
eSBzaW5jZSB0aGVzZSB2YWx1ZXMgYXJlIGNvbW1vbmx5IHVzZWQgYXMgYm90aCBhIHNpemUgYW5k
CisgICAgICAgIGEgcG9pbnQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgZG9l
c24ndCBjaGFuZ2UgYW55IGJlaGF2aW9yLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAg
ICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYWludE9mZnNldC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlBhaW50T2Zmc2V0OjpQYWludE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWlu
dE9mZnNldDo6dHgpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRPZmZzZXQ6OnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhaW50T2Zmc2V0OjpzZXRUeCk6CisgICAgICAgIChXZWJDb3JlOjpQYWlu
dE9mZnNldDo6c2V0VHkpOgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRPZmZzZXQ6OmV4cGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWludE9mZnNldDo6dG9TaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhaW50T2Zmc2V0Ojp0b1BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yKz0p
OgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3ItPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcispOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3ItKToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IhPSk6CisKIDIwMTEtMDUt
MDUgIE1hdHRoZXcgRGVsYW5leSAgPG1kZWxhbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4NjA3
MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtODQ4
LDYgKzg0OCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplSGFzaC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oJywKKyAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9QYWludE9mZnNldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRlZEludFJlY3QuaCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwkocmV2aXNpb24gODYwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwkod29ya2luZyBjb3B5KQpAQCAtMTk1MSw2ICsxOTUxLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFJlY3QuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGFpbnRPZmZzZXQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA4NjA3MikKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjkyMSw2ICsyNjkyMSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxl
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUGFpbnRPZmZzZXQuaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXGdyYXBoaWNzXFBhdGguY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gODYwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3OTcsNiArNDc5Nyw3IEBACiAJCUI4REJEQjRD
MTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEg
LyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9OwogCQlCOERCREI0RDEzMEIwRjhBMDBGNUNE
QjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRFMTMwQjBGOEEwMEY1
Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3Bl
bGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9OworCQlCQTUxNzU4QjEzNzg2OTE3MDA4QkZD
QkYgLyogUGFpbnRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJBNTE3NThBMTM3ODY5MTcwMDhCRkNCRiAvKiBQYWludE9mZnNldC5oICovOyB9
OwogCQlCQzAwRjAwNDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUz
IC8qIERPTUZpbGUuaCAqLzsgfTsKIAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZp
bGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAw
RUZGRjBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5tbSAqLzsgfTsKIAkJQkMwMEYwMDYwRTBB
MTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZp
bGVJbnRlcm5hbC5oICovOyB9OwpAQCAtMTEyMDQsNiArMTEyMDUsNyBAQAogCQlCOERCREI0ODEz
MEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUI4REJEQjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
OERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5k
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJBNTE3NThBMTM3ODY5MTcwMDhCRkNC
RiAvKiBQYWludE9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWlu
dE9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1
MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUw
MEZEMDRFMyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEYwMDAw
RTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01GaWxlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NzA4LDYgKzE3NzEwLDcgQEAKIAkJCQk5MzlCMDJFRDBFQTJEQkM0MDBDNTQ1NzAg
LyogV2lkdGhJdGVyYXRvci5oICovLAogCQkJCTM3OTkxOTk0MTIwMERERjQwMEVBMDQxQyAvKiBX
T0ZGRmlsZUZvcm1hdC5jcHAgKi8sCiAJCQkJMzc5OTE5OTUxMjAwRERGNDAwRUEwNDFDIC8qIFdP
RkZGaWxlRm9ybWF0LmggKi8sCisJCQkJQkE1MTc1OEExMzc4NjkxNzAwOEJGQ0JGIC8qIFBhaW50
T2Zmc2V0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGdyYXBoaWNzOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTIyNzQwLDYgKzIyNzQzLDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEy
MDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUw
RjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0FG
RkRGNzEzNzBBMEI4MDBFODk1QzAgLyogU2hhcmVkQnVmZmVyQ1JMRkxpbmVSZWFkZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJBNTE3NThCMTM3ODY5MTcwMDhCRkNCRiAvKiBQYWludE9mZnNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFBy
aW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QYWludE9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhaW50T2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYWludE9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFBhaW50T2Zmc2V0X2gKKyNkZWZpbmUgUGFpbnRPZmZzZXRf
aAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFpbnRPZmZzZXQgeworcHVibGljOgorICAgIFBhaW50
T2Zmc2V0KCkgOiBtX3R4KDApLCBtX3R5KDApIHsgfQorICAgIFBhaW50T2Zmc2V0KGludCB0eCwg
aW50IHR5KSA6IG1fdHgodHgpLCBtX3R5KHR5KSB7IH0KKworICAgIGludCB0eCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHg7IH0KKyAgICBpbnQgdHkoKSBjb25zdCB7IHJldHVybiBtX3R5OyB9CisKKyAg
ICB2b2lkIHNldFR4KGludCB0eCkgeyBtX3R4ID0gdHg7IH0KKyAgICB2b2lkIHNldFR5KGludCB0
eSkgeyBtX3R5ID0gdHk7IH0KKworICAgIHZvaWQgZXhwYW5kKGNvbnN0IEludFBvaW50JiBwb2lu
dCkKKyAgICB7CisgICAgICAgIG1fdHggKz0gcG9pbnQueCgpOworICAgICAgICBtX3R5ICs9IHBv
aW50LnkoKTsKKyAgICB9CisKKyAgICB2b2lkIGV4cGFuZChjb25zdCBJbnRTaXplJiBzaXplKQor
ICAgIHsKKyAgICAgICAgbV90eCArPSBzaXplLndpZHRoKCk7CisgICAgICAgIG1fdHkgKz0gc2l6
ZS5oZWlnaHQoKTsKKyAgICB9CisKKyAgICBJbnRTaXplIHRvU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IEludFNpemUobV90eCwgbV90eSk7IH0KKyAgICBJbnRQb2ludCB0b1BvaW50KCkgY29uc3QgeyBy
ZXR1cm4gSW50UG9pbnQobV90eCwgbV90eSk7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV90eCwg
bV90eTsKK307CisKK2lubGluZSBQYWludE9mZnNldCYgb3BlcmF0b3IrPShQYWludE9mZnNldCYg
YSwgY29uc3QgUGFpbnRPZmZzZXQmIGIpCit7CisgICAgYS5zZXRUeChhLnR4KCkgKyBiLnR4KCkp
OworICAgIGEuc2V0VHkoYS50eSgpICsgYi50eSgpKTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAK
K2lubGluZSBQYWludE9mZnNldCYgb3BlcmF0b3ItPShQYWludE9mZnNldCYgYSwgY29uc3QgUGFp
bnRPZmZzZXQmIGIpCit7CisgICAgYS5zZXRUeChhLnR4KCkgLSBiLnR4KCkpOworICAgIGEuc2V0
VHkoYS50eSgpIC0gYi50eSgpKTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAKK2lubGluZSBQYWlu
dE9mZnNldCBvcGVyYXRvcisoY29uc3QgUGFpbnRPZmZzZXQmIGEsIGNvbnN0IFBhaW50T2Zmc2V0
JiBiKQoreworICAgIHJldHVybiBQYWludE9mZnNldChhLnR4KCkgKyBiLnR4KCksIGEudHkoKSAr
IGIudHkoKSk7Cit9CisgICAgCitpbmxpbmUgUGFpbnRPZmZzZXQgb3BlcmF0b3ItKGNvbnN0IFBh
aW50T2Zmc2V0JiBhLCBjb25zdCBQYWludE9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gUGFpbnRP
ZmZzZXQoYS50eCgpIC0gYi50eCgpLCBhLnR5KCkgLSBiLnR5KCkpOworfQorICAgIAoraW5saW5l
IFBhaW50T2Zmc2V0IG9wZXJhdG9yLShjb25zdCBQYWludE9mZnNldCYgcGFpbnRPZmZzZXQpCit7
CisgICAgcmV0dXJuIFBhaW50T2Zmc2V0KC1wYWludE9mZnNldC50eCgpLCAtcGFpbnRPZmZzZXQu
dHkoKSk7Cit9CisgICAgCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhaW50T2Zmc2V0
JiBhLCBjb25zdCBQYWludE9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gYS50eCgpID09IGIudHgo
KSAmJiBhLnR5KCkgPT0gYi50eSgpOworfQorICAgIAoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBQYWludE9mZnNldCYgYSwgY29uc3QgUGFpbnRPZmZzZXQmIGIpCit7CisgICAgcmV0dXJu
IGEudHgoKSAhPSBiLnR4KCkgfHwgYS50eSgpICE9IGIudHkoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUGFpbnRPZmZzZXRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92857</attachid>
            <date>2011-05-09 14:56:37 -0700</date>
            <delta_ts>2011-05-09 16:47:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60490-20110509145636.patch</filename>
            <type>text/plain</type>
            <size>11352</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MDg1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDUtMDkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBMYXllck9mZnNldCBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0OTAKKworICAgICAgICBB
ZGRpbmcgYSBMYXllck9mZnNldCBjbGFzcyB0aGF0IHdpbGwgcmVwbGFjZSBleGlzdGluZyB1c2Fn
ZSBvZiB0eC90eS4KKyAgICAgICAgTGF5ZXJPZmZzZXQgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoZXNl
IHZhbHVlcyBhcmUgY29tbW9ubHkgdXNlZCBhcyBib3RoIGEgc2l6ZSBhbmQKKyAgICAgICAgYSBw
b2ludC4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhpcyBkb2Vzbid0IGNoYW5nZSBh
bnkgYmVoYXZpb3IuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXllck9mZnNldDo6TGF5ZXJPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6OngpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJP
ZmZzZXQ6OnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6OnNldFgpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJP
ZmZzZXQ6OnRvU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllck9mZnNldDo6dG9Qb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcis9KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yLT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrKToKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yLSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yIT0pOgorCiAyMDExLTA1LTA1ICBNYXR0aGV3IERlbGFuZXkgIDxtZGVs
YW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4NjA3MikKKysrIFNvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsNiAr
MjQzOCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemVIYXNo
LmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggXApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gODYwNzIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHdvcmtpbmcgY29weSkKQEAgLTg0Nyw2ICs4NDcsNyBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3RIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhh
c2guaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDg2MDcyKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE5NTAsNiArMTk1
MCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRSZWN0LmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGguaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmgg
XApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHJldmlzaW9uIDg2MDcyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2OTEzLDYgKzI2OTEzLDEwIEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xMYXllck9mZnNldC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXIuY3BwIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODYwNzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQ3OTcsNiArNDc5Nyw3IEBACiAJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxl
Y3Rpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICov
OyB9OwogCQlCOERCREI0RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29t
bWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
OERCREI0OTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAg
Ki87IH07CiAJCUI4REJEQjRFMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
OERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICov
OyB9OworCQlCQTUxNzVDODEzNzg5NzM1MDA4QkZDQkYgLyogTGF5ZXJPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJBNTE3NUM3MTM3ODk3MzUw
MDhCRkNCRiAvKiBMYXllck9mZnNldC5oICovOyB9OwogCQlCQzAwRjAwNDBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMwMEVGRkUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLzsgfTsKIAkJQkMw
MEYwMDUwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMgLyogRE9N
RmlsZS5tbSAqLzsgfTsKIAkJQkMwMEYwMDYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMw
MEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovOyB9OwpAQCAtMTEy
MDQsNiArMTEyMDUsNyBAQAogCQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0
aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rp
b25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ5MTMwQjBG
OEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyog
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJBNTE3NUM3MTM3ODk3MzUwMDhCRkNCRiAvKiBMYXllck9mZnNldC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXllck9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3Njc5LDYgKzE3NjgxLDcgQEAK
IAkJCQlFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCAqLywKIAkJCQlC
Mjc1MzU0NzBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZS5oICovLAogCQkJCUIyNzUzNTQ4MEIw
NTM4MTQwMDJDRTY0RiAvKiBJbnRTaXplSGFzaC5oICovLAorCQkJCUJBNTE3NUM3MTM3ODk3MzUw
MDhCRkNCRiAvKiBMYXllck9mZnNldC5oICovLAogCQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVD
RSAvKiBNZWRpYVBsYXllci5jcHAgKi8sCiAJCQkJRTRCNDFFMEQwQ0JGOTBCRDAwQUYyRUNFIC8q
IE1lZGlhUGxheWVyLmggKi8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlh
UGxheWVyUHJpdmF0ZS5oICovLApAQCAtMjI3NDEsNiArMjI3NDQsNyBAQAogCQkJCTk3N0UyRTBG
MTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QUZG
REY3MTM3MEEwQjgwMEU4OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJs
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkE1MTc1QzgxMzc4OTczNTAwOEJGQ0JGIC8qIExheWVy
T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xheWVyT2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTGF5ZXJPZmZzZXRfaAorI2RlZmluZSBMYXllck9m
ZnNldF9oCisKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBMYXllck9mZnNldCB7CitwdWJsaWM6CisgICAg
TGF5ZXJPZmZzZXQoKSA6IG1fdHgoMCksIG1fdHkoMCkgeyB9CisgICAgTGF5ZXJPZmZzZXQoaW50
IHgsIGludCB5KSA6IG1feCh4KSwgbV95KHkpIHsgfQorCisgICAgaW50IHgoKSBjb25zdCB7IHJl
dHVybiBtX3g7IH0KKyAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1feTsgfQorCisgICAgdm9p
ZCBzZXRYKGludCB4KSB7IG1feCA9IHg7IH0KKyAgICB2b2lkIHNldFkoaW50IHkpIHsgbV95ID0g
eTsgfQorCisgICAgSW50U2l6ZSB0b1NpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1feCwg
bV95KTsgfQorICAgIEludFBvaW50IHRvUG9pbnQoKSBjb25zdCB7IHJldHVybiBJbnRQb2ludCht
X3gsIG1feSk7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV94OworICAgIGludCBtX3k7Cit9Owor
CitpbmxpbmUgTGF5ZXJPZmZzZXQmIG9wZXJhdG9yKz0oTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExh
eWVyT2Zmc2V0JiBiKQoreworICAgIGEuc2V0WChhLngoKSArIGIueCgpKTsKKyAgICBhLnNldFko
YS55KCkgKyBiLnkoKSk7CisgICAgcmV0dXJuIGE7Cit9CisKK2lubGluZSBMYXllck9mZnNldCYg
b3BlcmF0b3IrPShMYXllck9mZnNldCYgYSwgY29uc3QgSW50U2l6ZSYgYikKK3sKKyAgICBhLnNl
dFgoYS54KCkgKyBiLndpZHRoKCkpOworICAgIGEuc2V0WShhLnkoKSArIGIuaGVpZ2h0KCkpOwor
ICAgIHJldHVybiBhOworfQorCitpbmxpbmUgTGF5ZXJPZmZzZXQmIG9wZXJhdG9yKz0oTGF5ZXJP
ZmZzZXQmIGEsIGNvbnN0IEludFBvaW50JiBiKQoreworICAgIGEuc2V0WChhLngoKSArIGIueCgp
KTsKKyAgICBhLnNldFkoYS55KCkgKyBiLnkoKSk7CisgICAgcmV0dXJuIGE7Cit9CisgICAgCitp
bmxpbmUgTGF5ZXJPZmZzZXQmIG9wZXJhdG9yLT0oTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVy
T2Zmc2V0JiBiKQoreworICAgIGEuc2V0WChhLngoKSAtIGIueCgpKTsKKyAgICBhLnNldFkoYS55
KCkgLSBiLnkoKSk7CisgICAgcmV0dXJuIGE7Cit9CisKK2lubGluZSBMYXllck9mZnNldCYgb3Bl
cmF0b3ItPShMYXllck9mZnNldCYgYSwgY29uc3QgSW50U2l6ZSYgYikKK3sKKyAgICBhLnNldFgo
YS54KCkgLSBiLndpZHRoKCkpOworICAgIGEuc2V0WShhLnkoKSAtIGIuaGVpZ2h0KCkpOworICAg
IHJldHVybiBhOworfQorCitpbmxpbmUgTGF5ZXJPZmZzZXQmIG9wZXJhdG9yLT0oTGF5ZXJPZmZz
ZXQmIGEsIGNvbnN0IEludFBvaW50JiBiKQoreworICAgIGEuc2V0WChhLngoKSAtIGIueCgpKTsK
KyAgICBhLnNldFkoYS55KCkgLSBiLnkoKSk7CisgICAgcmV0dXJuIGE7Cit9CisgICAgCitpbmxp
bmUgTGF5ZXJPZmZzZXQgb3BlcmF0b3IrKGNvbnN0IExheWVyT2Zmc2V0JiBhLCBjb25zdCBMYXll
ck9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gTGF5ZXJPZmZzZXQoYS54KCkgKyBiLngoKSwgYS55
KCkgKyBiLnkoKSk7Cit9CisKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvcisoY29uc3QgTGF5
ZXJPZmZzZXQmIGEsIGNvbnN0IEludFNpemUmIGIpCit7CisgICAgcmV0dXJuIExheWVyT2Zmc2V0
KGEueCgpICsgYi53aWR0aCgpLCBhLnkoKSArIGIuaGVpZ2h0KCkpOworfQorCitpbmxpbmUgTGF5
ZXJPZmZzZXQgb3BlcmF0b3IrKGNvbnN0IExheWVyT2Zmc2V0JiBhLCBjb25zdCBJbnRQb2ludCYg
YikKK3sKKyAgICByZXR1cm4gTGF5ZXJPZmZzZXQoYS54KCkgKyBiLngoKSwgYS55KCkgKyBiLnko
KSk7Cit9CisgICAgCitpbmxpbmUgTGF5ZXJPZmZzZXQgb3BlcmF0b3ItKGNvbnN0IExheWVyT2Zm
c2V0JiBhLCBjb25zdCBMYXllck9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gTGF5ZXJPZmZzZXQo
YS54KCkgLSBiLngoKSwgYS55KCkgLSBiLnkoKSk7Cit9CisKK2lubGluZSBMYXllck9mZnNldCBv
cGVyYXRvci0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IEludFNpemUmIGIpCit7CisgICAg
cmV0dXJuIExheWVyT2Zmc2V0KGEueCgpIC0gYi53aWR0aCgpLCBhLnkoKSAtIGIuaGVpZ2h0KCkp
OworfQorCitpbmxpbmUgTGF5ZXJPZmZzZXQgb3BlcmF0b3ItKGNvbnN0IExheWVyT2Zmc2V0JiBh
LCBjb25zdCBJbnRQb2ludCYgYikKK3sKKyAgICByZXR1cm4gTGF5ZXJPZmZzZXQoYS54KCkgLSBi
LngoKSwgYS55KCkgLSBiLnkoKSk7Cit9CisgICAgCitpbmxpbmUgTGF5ZXJPZmZzZXQgb3BlcmF0
b3ItKGNvbnN0IExheWVyT2Zmc2V0JiBsYXllck9mZnNldCkKK3sKKyAgICByZXR1cm4gTGF5ZXJP
ZmZzZXQoLWxheWVyT2Zmc2V0LngoKSwgLWxheWVyT2Zmc2V0LnkoKSk7Cit9CisgICAgCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheWVyT2Zmc2V0JiBhLCBjb25zdCBMYXllck9mZnNl
dCYgYikKK3sKKyAgICByZXR1cm4gYS54KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55KCk7Cit9
CisgICAgCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheWVyT2Zmc2V0JiBhLCBjb25z
dCBMYXllck9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gYS54KCkgIT0gYi54KCkgfHwgYS55KCkg
IT0gYi55KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExheWVy
T2Zmc2V0X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92884</attachid>
            <date>2011-05-09 16:47:09 -0700</date>
            <delta_ts>2011-05-09 17:12:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60490-20110509164708.patch</filename>
            <type>text/plain</type>
            <size>16363</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTA0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDUtMDkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBMYXllck9mZnNldCBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0OTAKKworICAgICAgICBB
ZGRpbmcgYSBMYXllck9mZnNldCBjbGFzcyB0aGF0IHdpbGwgcmVwbGFjZSBleGlzdGluZyB1c2Fn
ZSBvZiB0eC90eS4KKyAgICAgICAgTGF5ZXJPZmZzZXQgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoZXNl
IHZhbHVlcyBhcmUgY29tbW9ubHkgdXNlZCBhcyBib3RoCisgICAgICAgIGEgc2l6ZSBhbmQgYSBw
b2ludC4gVXBkYXRpbmcgcGFpbnRJbnRvUmVjdCB0byB1c2UgdGhpcyBuZXcgY2xhc3MuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgZG9lc24ndCBjaGFuZ2UgYW55IGJlaGF2aW9y
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xh
eWVyT2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6OkxheWVy
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0Ojp4KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyT2Zmc2V0Ojp5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0Ojpz
ZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0OjpzZXRZKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyT2Zmc2V0Ojp0b1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZz
ZXQ6OnRvUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrPSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvci09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yKyk6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xs
Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBh
cnQ6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0Lmg6CisKIDIwMTEtMDUtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDg2MDk1KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjQzOCw2ICsyNDM4LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaCBcCisJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllclByaXZhdGUuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biA4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtODQ3LDYgKzg0Nyw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dEhhc2guaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplSGFzaC5oJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9MYXllck9mZnNldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCcsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gODYwOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTk1MCw2ICsxOTUwLDcgQEAgSEVBREVSUyArPSBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBcCisg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5oIFwKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuaCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjY5MTMsNiArMjY5MTMsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXExheWVyT2Zmc2V0
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xNZWRpYVBsYXllci5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiA4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDc5Nyw2ICs0Nzk3LDcgQEAK
IAkJQjhEQkRCNEMxMzBCMEY4QTAwRjVDREIxIC8qIFNldFNlbGVjdGlvbkNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4REJEQjQ4MTMwQjBG
OEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggKi87IH07CiAJCUI4REJEQjREMTMw
QjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4REJEQjQ5MTMwQjBGOEEwMEY1
Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLzsgfTsKIAkJQjhEQkRCNEUx
MzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI4REJEQjRBMTMwQjBGOEEwMEY1
Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggKi87IH07CisJCUJBNTE3NUM4MTM3
ODk3MzUwMDhCRkNCRiAvKiBMYXllck9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkE1MTc1QzcxMzc4OTczNTAwOEJGQ0JGIC8qIExheWVyT2Zm
c2V0LmggKi87IH07CiAJCUJDMDBGMDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRTBFMEEx
ODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovOyB9OwogCQlCQzAwRjAwNTBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovOyB9OwogCQlC
QzAwRjAwNjBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRjAwMDBFMEExODU1MDBGRDA0
RTMgLyogRE9NRmlsZUludGVybmFsLmggKi87IH07CkBAIC0xMTIwNCw2ICsxMTIwNSw3IEBACiAJ
CUI4REJEQjQ4MTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldFNlbGVjdGlvbkNvbW1hbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI4REJEQjRBMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25D
b21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVj
dGlvbkNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkE1MTc1QzcxMzc4
OTczNTAwOEJGQ0JGIC8qIExheWVyT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExheWVyT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBF
RkZFMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEVG
RkYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBET01GaWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzAwRjAwMDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUZpbGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTc2NzksNiArMTc2ODEsNyBAQAogCQkJCUUxMzRGNUFBMTJFRTM0
M0YwMDRFQzU4RCAvKiBJbnRSZWN0SGFzaC5oICovLAogCQkJCUIyNzUzNTQ3MEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplLmggKi8sCiAJCQkJQjI3NTM1NDgwQjA1MzgxNDAwMkNFNjRGIC8qIElu
dFNpemVIYXNoLmggKi8sCisJCQkJQkE1MTc1QzcxMzc4OTczNTAwOEJGQ0JGIC8qIExheWVyT2Zm
c2V0LmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNw
cCAqLywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywK
IAkJCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8s
CkBAIC0yMjc0MSw2ICsyMjc0NCw3IEBACiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8q
IFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdBRkZERjcxMzcwQTBCODAwRTg5NUMw
IC8qIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlF
MzcxNzEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQTUxNzVDODEzNzg5NzM1MDA4QkZDQkYgLyogTGF5ZXJPZmZzZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gODYwOTUpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
NDYsNyArMjI0Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludFNjcm9sbENvcm5lcihHcmFwaGkK
ICAgICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKLSAgICAgICAgbV9zY3JvbGxDb3Ju
ZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwgY29ybmVyUmVjdC54KCksIGNvcm5lclJlY3QueSgp
LCBjb3JuZXJSZWN0KTsKKyAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29u
dGV4dCwgY29ybmVyUmVjdC5sb2NhdGlvbigpLCBjb3JuZXJSZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJP
ZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
YXllck9mZnNldC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5ZXJPZmZzZXQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMYXllck9mZnNldF9oCisjZGVmaW5lIExheWVyT2Zmc2V0X2gKKworI2lu
Y2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIExheWVyT2Zmc2V0IHsKK3B1YmxpYzoKKyAgICBMYXllck9mZnNldCgp
IDogbV94KDApLCBtX3koMCkgeyB9CisgICAgTGF5ZXJPZmZzZXQoaW50IHgsIGludCB5KSA6IG1f
eCh4KSwgbV95KHkpIHsgfQorICAgIExheWVyT2Zmc2V0KGNvbnN0IExheWVyT2Zmc2V0JiBvdGhl
cikgOiBtX3gob3RoZXIubV94KSwgbV95KG90aGVyLm1feSkgeyB9CisgICAgTGF5ZXJPZmZzZXQo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkgOiBtX3goc2l6ZS53aWR0aCgpKSwgbV95KHNpemUuaGVpZ2h0
KCkpIHsgfQorICAgIExheWVyT2Zmc2V0KGNvbnN0IEludFBvaW50JiBwb2ludCkgOiBtX3gocG9p
bnQueCgpKSwgbV95KHBvaW50LnkoKSkgeyB9CisKKyAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJu
IG1feDsgfQorICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CisKKyAgICB2b2lkIHNl
dFgoaW50IHgpIHsgbV94ID0geDsgfQorICAgIHZvaWQgc2V0WShpbnQgeSkgeyBtX3kgPSB5OyB9
CisKKyAgICBJbnRTaXplIHRvU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV94LCBtX3kp
OyB9CisgICAgSW50UG9pbnQgdG9Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIEludFBvaW50KG1feCwg
bV95KTsgfQorCitwcml2YXRlOgorICAgIGludCBtX3g7CisgICAgaW50IG1feTsKK307CisKK2lu
bGluZSBMYXllck9mZnNldCYgb3BlcmF0b3IrPShMYXllck9mZnNldCYgYSwgY29uc3QgTGF5ZXJP
ZmZzZXQmIGIpCit7CisgICAgYS5zZXRYKGEueCgpICsgYi54KCkpOworICAgIGEuc2V0WShhLnko
KSArIGIueSgpKTsKKyAgICByZXR1cm4gYTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVy
YXRvcis9KExheWVyT2Zmc2V0JiBhLCBjb25zdCBJbnRTaXplJiBiKQoreworICAgIGEuc2V0WChh
LngoKSArIGIud2lkdGgoKSk7CisgICAgYS5zZXRZKGEueSgpICsgYi5oZWlnaHQoKSk7CisgICAg
cmV0dXJuIGE7Cit9CisKK2lubGluZSBMYXllck9mZnNldCYgb3BlcmF0b3IrPShMYXllck9mZnNl
dCYgYSwgY29uc3QgSW50UG9pbnQmIGIpCit7CisgICAgYS5zZXRYKGEueCgpICsgYi54KCkpOwor
ICAgIGEuc2V0WShhLnkoKSArIGIueSgpKTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAKK2lubGlu
ZSBMYXllck9mZnNldCYgb3BlcmF0b3ItPShMYXllck9mZnNldCYgYSwgY29uc3QgTGF5ZXJPZmZz
ZXQmIGIpCit7CisgICAgYS5zZXRYKGEueCgpIC0gYi54KCkpOworICAgIGEuc2V0WShhLnkoKSAt
IGIueSgpKTsKKyAgICByZXR1cm4gYTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVyYXRv
ci09KExheWVyT2Zmc2V0JiBhLCBjb25zdCBJbnRTaXplJiBiKQoreworICAgIGEuc2V0WChhLngo
KSAtIGIud2lkdGgoKSk7CisgICAgYS5zZXRZKGEueSgpIC0gYi5oZWlnaHQoKSk7CisgICAgcmV0
dXJuIGE7Cit9CisKK2lubGluZSBMYXllck9mZnNldCYgb3BlcmF0b3ItPShMYXllck9mZnNldCYg
YSwgY29uc3QgSW50UG9pbnQmIGIpCit7CisgICAgYS5zZXRYKGEueCgpIC0gYi54KCkpOworICAg
IGEuc2V0WShhLnkoKSAtIGIueSgpKTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAKK2lubGluZSBM
YXllck9mZnNldCBvcGVyYXRvcisoY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zm
c2V0JiBiKQoreworICAgIHJldHVybiBMYXllck9mZnNldChhLngoKSArIGIueCgpLCBhLnkoKSAr
IGIueSgpKTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0IG9wZXJhdG9yKyhjb25zdCBMYXllck9m
ZnNldCYgYSwgY29uc3QgSW50U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gTGF5ZXJPZmZzZXQoYS54
KCkgKyBiLndpZHRoKCksIGEueSgpICsgYi5oZWlnaHQoKSk7Cit9CisKK2lubGluZSBMYXllck9m
ZnNldCBvcGVyYXRvcisoY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IEludFBvaW50JiBiKQor
eworICAgIHJldHVybiBMYXllck9mZnNldChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgpKTsK
K30KKyAgICAKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvci0oY29uc3QgTGF5ZXJPZmZzZXQm
IGEsIGNvbnN0IExheWVyT2Zmc2V0JiBiKQoreworICAgIHJldHVybiBMYXllck9mZnNldChhLngo
KSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0IG9wZXJh
dG9yLShjb25zdCBMYXllck9mZnNldCYgYSwgY29uc3QgSW50U2l6ZSYgYikKK3sKKyAgICByZXR1
cm4gTGF5ZXJPZmZzZXQoYS54KCkgLSBiLndpZHRoKCksIGEueSgpIC0gYi5oZWlnaHQoKSk7Cit9
CisKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvci0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNv
bnN0IEludFBvaW50JiBiKQoreworICAgIHJldHVybiBMYXllck9mZnNldChhLngoKSAtIGIueCgp
LCBhLnkoKSAtIGIueSgpKTsKK30KKyAgICAKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvci0o
Y29uc3QgTGF5ZXJPZmZzZXQmIGxheWVyT2Zmc2V0KQoreworICAgIHJldHVybiBMYXllck9mZnNl
dCgtbGF5ZXJPZmZzZXQueCgpLCAtbGF5ZXJPZmZzZXQueSgpKTsKK30KKyAgICAKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBi
KQoreworICAgIHJldHVybiBhLngoKSA9PSBiLngoKSAmJiBhLnkoKSA9PSBiLnkoKTsKK30KKyAg
ICAKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExh
eWVyT2Zmc2V0JiBiKQoreworICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBi
LnkoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTGF5ZXJPZmZz
ZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZp
c2lvbiA4NjA5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50U2Nyb2xsQ29ybmVyKEdyYXAKICAgICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsK
LSAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwgdHgsIHR5LCBh
YnNSZWN0KTsKKyAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwg
TGF5ZXJPZmZzZXQodHgsIHR5KSwgYWJzUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTIzMzksNyArMjMzOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFw
aGljc0MKICAgICB9CiAgICAgCiAgICAgaWYgKG1fcmVzaXplcikgewotICAgICAgICBtX3Jlc2l6
ZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwgdHgsIHR5LCBhYnNSZWN0KTsKKyAgICAgICAgbV9y
ZXNpemVyLT5wYWludEludG9SZWN0KGNvbnRleHQsIExheWVyT2Zmc2V0KHR4LCB0eSksIGFic1Jl
Y3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gODYwOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjc1LDcgKzI3NSw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQoR3JhcGhpY3MK
ICAgICBSZW5kZXJTY3JvbGxiYXJQYXJ0KiBwYXJ0UmVuZGVyZXIgPSBtX3BhcnRzLmdldChwYXJ0
VHlwZSk7CiAgICAgaWYgKCFwYXJ0UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBwYXJ0
UmVuZGVyZXItPnBhaW50SW50b1JlY3QoZ3JhcGhpY3NDb250ZXh0LCB4KCksIHkoKSwgcmVjdCk7
CisgICAgcGFydFJlbmRlcmVyLT5wYWludEludG9SZWN0KGdyYXBoaWNzQ29udGV4dCwgcG9zKCks
IHJlY3QpOwogfQogCiBJbnRSZWN0IFJlbmRlclNjcm9sbGJhcjo6YnV0dG9uUmVjdChTY3JvbGxi
YXJQYXJ0IHBhcnRUeXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkocmV2aXNpb24gODYwOTUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
OSwxMCArMTU5LDEwIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6aW1hZ2VDaGFuZ2VkKFcK
ICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIExheWVyT2Zmc2V0IGxheWVyT2Zmc2V0LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIE1ha2Ugc3VyZSBvdXIgZGltZW5zaW9ucyBtYXRj
aCB0aGUgcmVjdC4KLSAgICBzZXRMb2NhdGlvbihyZWN0LngoKSAtIHR4LCByZWN0LnkoKSAtIHR5
KTsKKyAgICBzZXRMb2NhdGlvbihyZWN0LmxvY2F0aW9uKCkgLSBsYXllck9mZnNldC50b1NpemUo
KSk7CiAgICAgc2V0V2lkdGgocmVjdC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWln
aHQoKSk7CiAKQEAgLTE3MSwxNSArMTcxLDE1IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6
cGFpbnRJbnRvUmVjdCgKIAogICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCiAgICAgUGFpbnRJbmZv
IHBhaW50SW5mbyhncmFwaGljc0NvbnRleHQsIHJlY3QsIFBhaW50UGhhc2VCbG9ja0JhY2tncm91
bmQsIGZhbHNlLCAwLCAwKTsKLSAgICBwYWludChwYWludEluZm8sIHR4LCB0eSk7CisgICAgcGFp
bnQocGFpbnRJbmZvLCBsYXllck9mZnNldC54KCksIGxheWVyT2Zmc2V0LnkoKSk7CiAgICAgcGFp
bnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kczsKLSAgICBwYWlu
dChwYWludEluZm8sIHR4LCB0eSk7CisgICAgcGFpbnQocGFpbnRJbmZvLCBsYXllck9mZnNldC54
KCksIGxheWVyT2Zmc2V0LnkoKSk7CiAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUZs
b2F0OwotICAgIHBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICBwYWludChwYWludEluZm8s
IGxheWVyT2Zmc2V0LngoKSwgbGF5ZXJPZmZzZXQueSgpKTsKICAgICBwYWludEluZm8ucGhhc2Ug
PSBQYWludFBoYXNlRm9yZWdyb3VuZDsKLSAgICBwYWludChwYWludEluZm8sIHR4LCB0eSk7Cisg
ICAgcGFpbnQocGFpbnRJbmZvLCBsYXllck9mZnNldC54KCksIGxheWVyT2Zmc2V0LnkoKSk7CiAg
ICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZU91dGxpbmU7Ci0gICAgcGFpbnQocGFpbnRJ
bmZvLCB0eCwgdHkpOworICAgIHBhaW50KHBhaW50SW5mbywgbGF5ZXJPZmZzZXQueCgpLCBsYXll
ck9mZnNldC55KCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyUGFydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgJKHJldmlzaW9uIDg2MDk1KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsNyBAQAogI2lmbmRlZiBSZW5kZXJTY3JvbGxiYXJQYXJ0X2gKICNkZWZpbmUgUmVuZGVy
U2Nyb2xsYmFyUGFydF9oCiAKKyNpbmNsdWRlICJMYXllck9mZnNldC5oIgogI2luY2x1ZGUgIlJl
bmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKIApAQCAtNDUsNyArNDYsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwogICAgIAotICAgIHZvaWQgcGFpbnRJbnRv
UmVjdChHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYpOwor
ICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBMYXllck9mZnNldCwgY29u
c3QgSW50UmVjdCYpOwogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdp
bGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHls
ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92889</attachid>
            <date>2011-05-09 17:12:44 -0700</date>
            <delta_ts>2011-05-10 13:32:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60490-20110509171242.patch</filename>
            <type>text/plain</type>
            <size>16465</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDUtMDkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBMYXllck9mZnNldCBjbGFzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0OTAKKworICAgICAgICBB
ZGRpbmcgYSBMYXllck9mZnNldCBjbGFzcyB0aGF0IHdpbGwgcmVwbGFjZSBleGlzdGluZyB1c2Fn
ZSBvZiB0eC90eS4KKyAgICAgICAgTGF5ZXJPZmZzZXQgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoZXNl
IHZhbHVlcyBhcmUgY29tbW9ubHkgdXNlZCBhcyBib3RoCisgICAgICAgIGEgc2l6ZSBhbmQgYSBw
b2ludC4gVXBkYXRpbmcgcGFpbnRJbnRvUmVjdCB0byB1c2UgdGhpcyBuZXcgY2xhc3MuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgZG9lc24ndCBjaGFuZ2UgYW55IGJlaGF2aW9y
LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xh
eWVyT2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6OkxheWVy
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0Ojp4KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyT2Zmc2V0Ojp5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0Ojpz
ZXRYKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0OjpzZXRZKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyT2Zmc2V0Ojp0b1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZz
ZXQ6OnRvUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrPSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvci09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yKyk6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xs
Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBh
cnQ6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0Lmg6CisKIDIwMTEtMDUtMDkgIEplcmVteSBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsNiArMjQzOCw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVj
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemVIYXNoLmggXAorCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29w
eSkKQEAgLTg0Nyw2ICs4NDcsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3RIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0aC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgn
LApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE5NTAsNiArMTk1MCw3IEBAIEhFQURFUlMg
Kz0gXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ludFBvaW50SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0Lmgg
XAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDg2MTA3
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtp
bmcgY29weSkKQEAgLTI2OTEzLDYgKzI2OTEzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJ
CQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xMYXllck9m
ZnNldC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3OTcsNiArNDc5Nyw3
IEBACiAJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0ODEz
MEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9OwogCQlCOERCREI0
RDEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0OTEzMEIwRjhB
MDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJE
QjRFMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0QTEzMEIwRjhB
MDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9OworCQlCQTUxNzVD
ODEzNzg5NzM1MDA4QkZDQkYgLyogTGF5ZXJPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJBNTE3NUM3MTM3ODk3MzUwMDhCRkNCRiAvKiBMYXll
ck9mZnNldC5oICovOyB9OwogCQlCQzAwRjAwNDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkUw
RTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLzsgfTsKIAkJQkMwMEYwMDUwRTBBMTg1NTAw
RkQwNEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5tbSAqLzsgfTsK
IAkJQkMwMEYwMDYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEYwMDAwRTBBMTg1NTAw
RkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovOyB9OwpAQCAtMTEyMDUsNiArMTEyMDYsNyBA
QAogCQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0
aW9uQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJBNTE3NUM3
MTM3ODk3MzUwMDhCRkNCRiAvKiBMYXllck9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMYXllck9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MDBFRkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjgxLDYgKzE3NjgzLDcgQEAKIAkJCQlFMTM0RjVBQTEy
RUUzNDNGMDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCAqLywKIAkJCQlCMjc1MzU0NzBCMDUzODE0
MDAyQ0U2NEYgLyogSW50U2l6ZS5oICovLAogCQkJCUIyNzUzNTQ4MEIwNTM4MTQwMDJDRTY0RiAv
KiBJbnRTaXplSGFzaC5oICovLAorCQkJCUJBNTE3NUM3MTM3ODk3MzUwMDhCRkNCRiAvKiBMYXll
ck9mZnNldC5oICovLAogCQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBsYXll
ci5jcHAgKi8sCiAJCQkJRTRCNDFFMEQwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmgg
Ki8sCiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5o
ICovLApAQCAtMjI3NDQsNiArMjI3NDcsNyBAQAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3
OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QUZGREY3MTM3MEEwQjgwMEU4
OTVDMCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQkE1MTc1QzgxMzc4OTczNTAwOEJGQ0JGIC8qIExheWVyT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGRDE2NjBBNTEzNzg3QzZEMDAxRkZBN0IgLyogRGVub3JtYWxEaXNhYmxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA4
NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI0Niw3ICsyMjQ2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVy
KEdyYXBoaQogICAgIH0KIAogICAgIGlmIChtX3Njcm9sbENvcm5lcikgewotICAgICAgICBtX3Nj
cm9sbENvcm5lci0+cGFpbnRJbnRvUmVjdChjb250ZXh0LCBjb3JuZXJSZWN0LngoKSwgY29ybmVy
UmVjdC55KCksIGNvcm5lclJlY3QpOworICAgICAgICBtX3Njcm9sbENvcm5lci0+cGFpbnRJbnRv
UmVjdChjb250ZXh0LCBjb3JuZXJSZWN0LmxvY2F0aW9uKCksIGNvcm5lclJlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9MYXllck9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0xheWVyT2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9MYXllck9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExheWVyT2Zmc2V0X2gKKyNkZWZpbmUgTGF5ZXJPZmZzZXRf
aAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworLy8gTGF5ZXJPZmZzZXQgcmVwcmVzZW50cyB0aGUgb2ZmCisKK2Ns
YXNzIExheWVyT2Zmc2V0IHsKK3B1YmxpYzoKKyAgICBMYXllck9mZnNldCgpIDogbV94KDApLCBt
X3koMCkgeyB9CisgICAgTGF5ZXJPZmZzZXQoaW50IHgsIGludCB5KSA6IG1feCh4KSwgbV95KHkp
IHsgfQorICAgIExheWVyT2Zmc2V0KGNvbnN0IExheWVyT2Zmc2V0JiBvdGhlcikgOiBtX3gob3Ro
ZXIubV94KSwgbV95KG90aGVyLm1feSkgeyB9CisgICAgTGF5ZXJPZmZzZXQoY29uc3QgSW50U2l6
ZSYgc2l6ZSkgOiBtX3goc2l6ZS53aWR0aCgpKSwgbV95KHNpemUuaGVpZ2h0KCkpIHsgfQorICAg
IExheWVyT2Zmc2V0KGNvbnN0IEludFBvaW50JiBwb2ludCkgOiBtX3gocG9pbnQueCgpKSwgbV95
KHBvaW50LnkoKSkgeyB9CisKKyAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorICAg
IGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95OyB9CisKKyAgICB2b2lkIHNldFgoaW50IHgpIHsg
bV94ID0geDsgfQorICAgIHZvaWQgc2V0WShpbnQgeSkgeyBtX3kgPSB5OyB9CisKKyAgICBJbnRT
aXplIHRvU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV94LCBtX3kpOyB9CisgICAgSW50
UG9pbnQgdG9Qb2ludCgpIGNvbnN0IHsgcmV0dXJuIEludFBvaW50KG1feCwgbV95KTsgfQorCitw
cml2YXRlOgorICAgIGludCBtX3g7CisgICAgaW50IG1feTsKK307CisKK2lubGluZSBMYXllck9m
ZnNldCYgb3BlcmF0b3IrPShMYXllck9mZnNldCYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7
CisgICAgYS5zZXRYKGEueCgpICsgYi54KCkpOworICAgIGEuc2V0WShhLnkoKSArIGIueSgpKTsK
KyAgICByZXR1cm4gYTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVyYXRvcis9KExheWVy
T2Zmc2V0JiBhLCBjb25zdCBJbnRTaXplJiBiKQoreworICAgIGEuc2V0WChhLngoKSArIGIud2lk
dGgoKSk7CisgICAgYS5zZXRZKGEueSgpICsgYi5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGE7Cit9
CisKK2lubGluZSBMYXllck9mZnNldCYgb3BlcmF0b3IrPShMYXllck9mZnNldCYgYSwgY29uc3Qg
SW50UG9pbnQmIGIpCit7CisgICAgYS5zZXRYKGEueCgpICsgYi54KCkpOworICAgIGEuc2V0WShh
LnkoKSArIGIueSgpKTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAKK2lubGluZSBMYXllck9mZnNl
dCYgb3BlcmF0b3ItPShMYXllck9mZnNldCYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7Cisg
ICAgYS5zZXRYKGEueCgpIC0gYi54KCkpOworICAgIGEuc2V0WShhLnkoKSAtIGIueSgpKTsKKyAg
ICByZXR1cm4gYTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVyYXRvci09KExheWVyT2Zm
c2V0JiBhLCBjb25zdCBJbnRTaXplJiBiKQoreworICAgIGEuc2V0WChhLngoKSAtIGIud2lkdGgo
KSk7CisgICAgYS5zZXRZKGEueSgpIC0gYi5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGE7Cit9CisK
K2lubGluZSBMYXllck9mZnNldCYgb3BlcmF0b3ItPShMYXllck9mZnNldCYgYSwgY29uc3QgSW50
UG9pbnQmIGIpCit7CisgICAgYS5zZXRYKGEueCgpIC0gYi54KCkpOworICAgIGEuc2V0WShhLnko
KSAtIGIueSgpKTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAKK2lubGluZSBMYXllck9mZnNldCBv
cGVyYXRvcisoY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBiKQorewor
ICAgIHJldHVybiBMYXllck9mZnNldChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgpKTsKK30K
KworaW5saW5lIExheWVyT2Zmc2V0IG9wZXJhdG9yKyhjb25zdCBMYXllck9mZnNldCYgYSwgY29u
c3QgSW50U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gTGF5ZXJPZmZzZXQoYS54KCkgKyBiLndpZHRo
KCksIGEueSgpICsgYi5oZWlnaHQoKSk7Cit9CisKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRv
cisoY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IEludFBvaW50JiBiKQoreworICAgIHJldHVy
biBMYXllck9mZnNldChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgpKTsKK30KKyAgICAKK2lu
bGluZSBMYXllck9mZnNldCBvcGVyYXRvci0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExh
eWVyT2Zmc2V0JiBiKQoreworICAgIHJldHVybiBMYXllck9mZnNldChhLngoKSAtIGIueCgpLCBh
LnkoKSAtIGIueSgpKTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0IG9wZXJhdG9yLShjb25zdCBM
YXllck9mZnNldCYgYSwgY29uc3QgSW50U2l6ZSYgYikKK3sKKyAgICByZXR1cm4gTGF5ZXJPZmZz
ZXQoYS54KCkgLSBiLndpZHRoKCksIGEueSgpIC0gYi5oZWlnaHQoKSk7Cit9CisKK2lubGluZSBM
YXllck9mZnNldCBvcGVyYXRvci0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IEludFBvaW50
JiBiKQoreworICAgIHJldHVybiBMYXllck9mZnNldChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIu
eSgpKTsKK30KKyAgICAKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvci0oY29uc3QgTGF5ZXJP
ZmZzZXQmIGxheWVyT2Zmc2V0KQoreworICAgIHJldHVybiBMYXllck9mZnNldCgtbGF5ZXJPZmZz
ZXQueCgpLCAtbGF5ZXJPZmZzZXQueSgpKTsKK30KKyAgICAKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBiKQoreworICAgIHJl
dHVybiBhLngoKSA9PSBiLngoKSAmJiBhLnkoKSA9PSBiLnkoKTsKK30KKyAgICAKK2lubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBi
KQoreworICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTGF5ZXJPZmZzZXRfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA4NjEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29y
bmVyKEdyYXAKICAgICB9CiAKICAgICBpZiAobV9zY3JvbGxDb3JuZXIpIHsKLSAgICAgICAgbV9z
Y3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwgdHgsIHR5LCBhYnNSZWN0KTsKKyAg
ICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwgTGF5ZXJPZmZzZXQo
dHgsIHR5KSwgYWJzUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzMzksNyAr
MjMzOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0MKICAgICB9
CiAgICAgCiAgICAgaWYgKG1fcmVzaXplcikgewotICAgICAgICBtX3Jlc2l6ZXItPnBhaW50SW50
b1JlY3QoY29udGV4dCwgdHgsIHR5LCBhYnNSZWN0KTsKKyAgICAgICAgbV9yZXNpemVyLT5wYWlu
dEludG9SZWN0KGNvbnRleHQsIExheWVyT2Zmc2V0KHR4LCB0eSksIGFic1JlY3QpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmNwcAkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDcgKzI3NSw3
IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQoR3JhcGhpY3MKICAgICBSZW5kZXJT
Y3JvbGxiYXJQYXJ0KiBwYXJ0UmVuZGVyZXIgPSBtX3BhcnRzLmdldChwYXJ0VHlwZSk7CiAgICAg
aWYgKCFwYXJ0UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBwYXJ0UmVuZGVyZXItPnBh
aW50SW50b1JlY3QoZ3JhcGhpY3NDb250ZXh0LCB4KCksIHkoKSwgcmVjdCk7CisgICAgcGFydFJl
bmRlcmVyLT5wYWludEludG9SZWN0KGdyYXBoaWNzQ29udGV4dCwgcG9zKCksIHJlY3QpOwogfQog
CiBJbnRSZWN0IFJlbmRlclNjcm9sbGJhcjo6YnV0dG9uUmVjdChTY3JvbGxiYXJQYXJ0IHBhcnRU
eXBlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmNwcAkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxMCArMTU5LDEw
IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6aW1hZ2VDaGFuZ2VkKFcKICAgICB9CiB9CiAK
LXZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgaW50IHR4LCBpbnQgdHksIGNvbnN0IEludFJlY3QmIHJlY3QpCit2
b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIExheWVyT2Zmc2V0IGxheWVyT2Zmc2V0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIC8vIE1ha2Ugc3VyZSBvdXIgZGltZW5zaW9ucyBtYXRjaCB0aGUgcmVjdC4K
LSAgICBzZXRMb2NhdGlvbihyZWN0LngoKSAtIHR4LCByZWN0LnkoKSAtIHR5KTsKKyAgICBzZXRM
b2NhdGlvbihyZWN0LmxvY2F0aW9uKCkgLSBsYXllck9mZnNldC50b1NpemUoKSk7CiAgICAgc2V0
V2lkdGgocmVjdC53aWR0aCgpKTsKICAgICBzZXRIZWlnaHQocmVjdC5oZWlnaHQoKSk7CiAKQEAg
LTE3MSwxNSArMTcxLDE1IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVj
dCgKIAogICAgIC8vIE5vdyBkbyB0aGUgcGFpbnQuCiAgICAgUGFpbnRJbmZvIHBhaW50SW5mbyhn
cmFwaGljc0NvbnRleHQsIHJlY3QsIFBhaW50UGhhc2VCbG9ja0JhY2tncm91bmQsIGZhbHNlLCAw
LCAwKTsKLSAgICBwYWludChwYWludEluZm8sIHR4LCB0eSk7CisgICAgcGFpbnQocGFpbnRJbmZv
LCBsYXllck9mZnNldC54KCksIGxheWVyT2Zmc2V0LnkoKSk7CiAgICAgcGFpbnRJbmZvLnBoYXNl
ID0gUGFpbnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kczsKLSAgICBwYWludChwYWludEluZm8s
IHR4LCB0eSk7CisgICAgcGFpbnQocGFpbnRJbmZvLCBsYXllck9mZnNldC54KCksIGxheWVyT2Zm
c2V0LnkoKSk7CiAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUZsb2F0OwotICAgIHBh
aW50KHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICBwYWludChwYWludEluZm8sIGxheWVyT2Zmc2V0
LngoKSwgbGF5ZXJPZmZzZXQueSgpKTsKICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNl
Rm9yZWdyb3VuZDsKLSAgICBwYWludChwYWludEluZm8sIHR4LCB0eSk7CisgICAgcGFpbnQocGFp
bnRJbmZvLCBsYXllck9mZnNldC54KCksIGxheWVyT2Zmc2V0LnkoKSk7CiAgICAgcGFpbnRJbmZv
LnBoYXNlID0gUGFpbnRQaGFzZU91dGxpbmU7Ci0gICAgcGFpbnQocGFpbnRJbmZvLCB0eCwgdHkp
OworICAgIHBhaW50KHBhaW50SW5mbywgbGF5ZXJPZmZzZXQueCgpLCBsYXllck9mZnNldC55KCkp
OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJQYXJ0LmgJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclBhcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2lmbmRlZiBSZW5kZXJTY3JvbGxiYXJQYXJ0X2gKICNkZWZpbmUgUmVuZGVyU2Nyb2xsYmFyUGFy
dF9oCiAKKyNpbmNsdWRlICJMYXllck9mZnNldC5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKIApAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpOwogICAgIAotICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFwaGlj
c0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcGFp
bnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqLCBMYXllck9mZnNldCwgY29uc3QgSW50UmVjdCYp
OwogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93001</attachid>
            <date>2011-05-10 13:32:32 -0700</date>
            <delta_ts>2011-05-10 15:13:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-60490-20110510133231.patch</filename>
            <type>text/plain</type>
            <size>26331</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDUtMDkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIENyZWF0ZSBMYXllck9mZnNldCBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0OTAKKworICAgICAgICBBZGRp
bmcgYSBMYXllck9mZnNldCBjbGFzcyB0aGF0IHdpbGwgcmVwbGFjZSBleGlzdGluZyB1c2FnZSBv
ZiB0eC90eS4KKyAgICAgICAgTGF5ZXJPZmZzZXQgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoZXNlIHZh
bHVlcyBhcmUgY29tbW9ubHkgdXNlZCBhcyBib3RoCisgICAgICAgIGEgc2l6ZSBhbmQgYSBwb2lu
dC4gVXBkYXRpbmcgcGFpbnRJbnRvUmVjdCB0byB1c2UgdGhpcyBuZXcgY2xhc3MuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgZG9lc24ndCBjaGFuZ2UgYW55IGJlaGF2aW9yLgor
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheWVy
T2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6OkxheWVyT2Zm
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0Ojp4KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyT2Zmc2V0Ojp5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0OjpzZXRY
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0OjpzZXRZKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyT2Zmc2V0Ojp0b1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6
OnRvUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvci09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yKyk6CisgICAgICAg
IChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29y
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6
OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
Lmg6CisKIDIwMTEtMDUtMDkgIEplcmVteSBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsNiArMjQzOCw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemVIYXNoLmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTg0Nyw2ICs4NDcsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJl
Y3RIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE5NTAsNiArMTk1MCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggXAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDg2MTA3KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTI2OTEzLDYgKzI2OTEzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xMYXllck9mZnNl
dC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3OTcsNiArNDc5Nyw3IEBA
CiAJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0ODEzMEIw
RjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9OwogCQlCOERCREI0RDEz
MEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0OTEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRF
MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0QTEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9OworCQlCQTUxNzVDODEz
Nzg5NzM1MDA4QkZDQkYgLyogTGF5ZXJPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJBNTE3NUM3MTM3ODk3MzUwMDhCRkNCRiAvKiBMYXllck9m
ZnNldC5oICovOyB9OwogCQlCQzAwRjAwNDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEVGRkUwRTBB
MTg1NTAwRkQwNEUzIC8qIERPTUZpbGUuaCAqLzsgfTsKIAkJQkMwMEYwMDUwRTBBMTg1NTAwRkQw
NEUzIC8qIERPTUZpbGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzAwRUZGRjBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5tbSAqLzsgfTsKIAkJ
QkMwMEYwMDYwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMEYwMDAwRTBBMTg1NTAwRkQw
NEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovOyB9OwpAQCAtMTEyMDUsNiArMTEyMDYsNyBAQAog
CQlCOERCREI0ODEzMEIwRjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXRTZWxlY3Rpb25Db21tYW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJEQjQ5MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCOERCREI0QTEzMEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJBNTE3NUM3MTM3
ODk3MzUwMDhCRkNCRiAvKiBMYXllck9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMYXllck9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAw
RUZGRTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBET01GaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBF
RkZGMEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gRE9NRmlsZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMwMEYwMDAwRTBBMTg1NTAwRkQwNEUzIC8qIERPTUZpbGVJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxlSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjgxLDYgKzE3NjgzLDcgQEAKIAkJCQlFMTM0RjVBQTEyRUUz
NDNGMDA0RUM1OEQgLyogSW50UmVjdEhhc2guaCAqLywKIAkJCQlCMjc1MzU0NzBCMDUzODE0MDAy
Q0U2NEYgLyogSW50U2l6ZS5oICovLAogCQkJCUIyNzUzNTQ4MEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRTaXplSGFzaC5oICovLAorCQkJCUJBNTE3NUM3MTM3ODk3MzUwMDhCRkNCRiAvKiBMYXllck9m
ZnNldC5oICovLAogCQkJCUU0QjQxRTBDMENCRjkwQkQwMEFGMkVDRSAvKiBNZWRpYVBsYXllci5j
cHAgKi8sCiAJCQkJRTRCNDFFMEQwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmggKi8s
CiAJCQkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICov
LApAQCAtMjI3NDQsNiArMjI3NDcsNyBAQAogCQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAv
KiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QUZGREY3MTM3MEEwQjgwMEU4OTVD
MCAvKiBTaGFyZWRCdWZmZXJDUkxGTGluZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5
RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkE1MTc1QzgxMzc4OTczNTAwOEJGQ0JGIC8qIExheWVyT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRDE2NjBBNTEzNzg3QzZEMDAxRkZBN0IgLyogRGVub3JtYWxEaXNhYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA4NjEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI0Niw3ICsyMjQ2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50U2Nyb2xsQ29ybmVyKEdy
YXBoaQogICAgIH0KIAogICAgIGlmIChtX3Njcm9sbENvcm5lcikgewotICAgICAgICBtX3Njcm9s
bENvcm5lci0+cGFpbnRJbnRvUmVjdChjb250ZXh0LCBjb3JuZXJSZWN0LngoKSwgY29ybmVyUmVj
dC55KCksIGNvcm5lclJlY3QpOworICAgICAgICBtX3Njcm9sbENvcm5lci0+cGFpbnRJbnRvUmVj
dChjb250ZXh0LCBjb3JuZXJSZWN0LmxvY2F0aW9uKCksIGNvcm5lclJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9M
YXllck9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0xheWVyT2Zmc2V0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9MYXllck9mZnNldC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIExheWVyT2Zmc2V0X2gKKyNkZWZpbmUgTGF5ZXJPZmZzZXRfaAor
CisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gTGF5ZXJPZmZzZXQgcmVwcmVzZW50cyBhbiBvZmZzZXQsIGluIExh
eWVyIGNvb3JkaW5hdGVzLCBmcm9tIHRoYXQgTGF5ZXIncyBvcmlnaW4uCisKK2NsYXNzIExheWVy
T2Zmc2V0IHsKK3B1YmxpYzoKKyAgICBMYXllck9mZnNldCgpIDogbV94KDApLCBtX3koMCkgeyB9
CisgICAgTGF5ZXJPZmZzZXQoaW50IHgsIGludCB5KSA6IG1feCh4KSwgbV95KHkpIHsgfQorICAg
IExheWVyT2Zmc2V0KGNvbnN0IExheWVyT2Zmc2V0JiBvdGhlcikgOiBtX3gob3RoZXIubV94KSwg
bV95KG90aGVyLm1feSkgeyB9CisgICAgTGF5ZXJPZmZzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSkg
OiBtX3goc2l6ZS53aWR0aCgpKSwgbV95KHNpemUuaGVpZ2h0KCkpIHsgfQorICAgIExheWVyT2Zm
c2V0KGNvbnN0IEludFBvaW50JiBwb2ludCkgOiBtX3gocG9pbnQueCgpKSwgbV95KHBvaW50Lnko
KSkgeyB9CisKKyAgICBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1feDsgfQorICAgIGludCB5KCkg
Y29uc3QgeyByZXR1cm4gbV95OyB9CisKKyAgICB2b2lkIHNldFgoaW50IHgpIHsgbV94ID0geDsg
fQorICAgIHZvaWQgc2V0WShpbnQgeSkgeyBtX3kgPSB5OyB9CisKKyAgICBJbnRTaXplIHRvU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV94LCBtX3kpOyB9CisgICAgSW50UG9pbnQgdG9Q
b2ludCgpIGNvbnN0IHsgcmV0dXJuIEludFBvaW50KG1feCwgbV95KTsgfQorCitwcml2YXRlOgor
ICAgIGludCBtX3g7CisgICAgaW50IG1feTsKK307CisKK2lubGluZSBMYXllck9mZnNldCYgb3Bl
cmF0b3IrPShMYXllck9mZnNldCYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7CisgICAgYS5z
ZXRYKGEueCgpICsgYi54KCkpOworICAgIGEuc2V0WShhLnkoKSArIGIueSgpKTsKKyAgICByZXR1
cm4gYTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVyYXRvcis9KExheWVyT2Zmc2V0JiBh
LCBjb25zdCBJbnRTaXplJiBiKQoreworICAgIGEuc2V0WChhLngoKSArIGIud2lkdGgoKSk7Cisg
ICAgYS5zZXRZKGEueSgpICsgYi5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGE7Cit9CisKK2lubGlu
ZSBMYXllck9mZnNldCYgb3BlcmF0b3IrPShMYXllck9mZnNldCYgYSwgY29uc3QgSW50UG9pbnQm
IGIpCit7CisgICAgYS5zZXRYKGEueCgpICsgYi54KCkpOworICAgIGEuc2V0WShhLnkoKSArIGIu
eSgpKTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAKK2lubGluZSBMYXllck9mZnNldCYgb3BlcmF0
b3ItPShMYXllck9mZnNldCYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7CisgICAgYS5zZXRY
KGEueCgpIC0gYi54KCkpOworICAgIGEuc2V0WShhLnkoKSAtIGIueSgpKTsKKyAgICByZXR1cm4g
YTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVyYXRvci09KExheWVyT2Zmc2V0JiBhLCBj
b25zdCBJbnRTaXplJiBiKQoreworICAgIGEuc2V0WChhLngoKSAtIGIud2lkdGgoKSk7CisgICAg
YS5zZXRZKGEueSgpIC0gYi5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGE7Cit9CisKK2lubGluZSBM
YXllck9mZnNldCYgb3BlcmF0b3ItPShMYXllck9mZnNldCYgYSwgY29uc3QgSW50UG9pbnQmIGIp
Cit7CisgICAgYS5zZXRYKGEueCgpIC0gYi54KCkpOworICAgIGEuc2V0WShhLnkoKSAtIGIueSgp
KTsKKyAgICByZXR1cm4gYTsKK30KKyAgICAKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvciso
Y29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBiKQoreworICAgIHJldHVy
biBMYXllck9mZnNldChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgpKTsKK30KKworaW5saW5l
IEludFNpemUgb3BlcmF0b3IrKGNvbnN0IEludFNpemUmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBi
KQoreworICAgIHJldHVybiBJbnRTaXplKGEud2lkdGgoKSArIGIueCgpLCBhLmhlaWdodCgpICsg
Yi55KCkpOworfQorCitpbmxpbmUgSW50UG9pbnQgb3BlcmF0b3IrKGNvbnN0IEludFBvaW50JiBh
LCBjb25zdCBMYXllck9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gSW50UG9pbnQoYS54KCkgKyBi
LngoKSwgYS55KCkgKyBiLnkoKSk7Cit9CisKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvci0o
Y29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBiKQoreworICAgIHJldHVy
biBMYXllck9mZnNldChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKK30KKworaW5saW5l
IEludFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFNpemUmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBi
KQoreworICAgIHJldHVybiBJbnRTaXplKGEud2lkdGgoKSAtIGIueCgpLCBhLmhlaWdodCgpIC0g
Yi55KCkpOworfQorCitpbmxpbmUgSW50UG9pbnQgb3BlcmF0b3ItKGNvbnN0IEludFBvaW50JiBh
LCBjb25zdCBMYXllck9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gSW50UG9pbnQoYS54KCkgLSBi
LngoKSwgYS55KCkgLSBiLnkoKSk7Cit9CisgICAgCitpbmxpbmUgTGF5ZXJPZmZzZXQgb3BlcmF0
b3ItKGNvbnN0IExheWVyT2Zmc2V0JiBsYXllck9mZnNldCkKK3sKKyAgICByZXR1cm4gTGF5ZXJP
ZmZzZXQoLWxheWVyT2Zmc2V0LngoKSwgLWxheWVyT2Zmc2V0LnkoKSk7Cit9CisgICAgCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IExheWVyT2Zmc2V0JiBhLCBjb25zdCBMYXllck9mZnNl
dCYgYikKK3sKKyAgICByZXR1cm4gYS54KCkgPT0gYi54KCkgJiYgYS55KCkgPT0gYi55KCk7Cit9
CisgICAgCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExheWVyT2Zmc2V0JiBhLCBjb25z
dCBMYXllck9mZnNldCYgYikKK3sKKyAgICByZXR1cm4gYS54KCkgIT0gYi54KCkgfHwgYS55KCkg
IT0gYi55KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIExheWVy
T2Zmc2V0X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBJbmxpbmVU
ZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAg
Ly8gQ3VzdG9tIGhpZ2hsaWdodGVycyBnbyBiZWhpbmQgZXZlcnl0aGluZyBlbHNlLgogICAgICAg
ICBpZiAoc3R5bGVUb1VzZS0+aGlnaGxpZ2h0KCkgIT0gbnVsbEF0b20gJiYgIWNvbnRleHQtPnBh
aW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KHR4LCB0
eSwgc3R5bGVUb1VzZS0+aGlnaGxpZ2h0KCkpOworICAgICAgICAgICAgcGFpbnRDdXN0b21IaWdo
bGlnaHQoTGF5ZXJPZmZzZXQodHgsIHR5KSwgc3R5bGVUb1VzZS0+aGlnaGxpZ2h0KCkpOwogI2Vu
ZGlmCiAKICAgICAgICAgaWYgKGNvbnRhaW5zQ29tcG9zaXRpb24gJiYgIXVzZUN1c3RvbVVuZGVy
bGluZXMpCkBAIC04NTcsNyArODU3LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBv
c2l0aW9uQmFjawogCiAjaWYgUExBVEZPUk0oTUFDKQogCi12b2lkIElubGluZVRleHRCb3g6OnBh
aW50Q3VzdG9tSGlnaGxpZ2h0KGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUpCit2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KExheWVyT2Zmc2V0
IGxheWVyT2Zmc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiB7CiAgICAgRnJhbWUqIGZy
YW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtODY3LDggKzg2
Nyw4IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgUm9vdElubGluZUJveCogciA9IHJvb3QoKTsKLSAgICBGbG9hdFJlY3Qg
cm9vdFJlY3QodHggKyByLT54KCksIHR5ICsgc2VsZWN0aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0
aCgpLCBzZWxlY3Rpb25IZWlnaHQoKSk7Ci0gICAgRmxvYXRSZWN0IHRleHRSZWN0KHR4ICsgeCgp
LCByb290UmVjdC55KCksIGxvZ2ljYWxXaWR0aCgpLCByb290UmVjdC5oZWlnaHQoKSk7CisgICAg
RmxvYXRSZWN0IHJvb3RSZWN0KGxheWVyT2Zmc2V0LngoKSArIHItPngoKSwgbGF5ZXJPZmZzZXQu
eSgpICsgc2VsZWN0aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0aCgpLCBzZWxlY3Rpb25IZWlnaHQo
KSk7CisgICAgRmxvYXRSZWN0IHRleHRSZWN0KGxheWVyT2Zmc2V0LngoKSArIHgoKSwgcm9vdFJl
Y3QueSgpLCBsb2dpY2FsV2lkdGgoKSwgcm9vdFJlY3QuaGVpZ2h0KCkpOwogCiAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChyZW5kZXJlcigpLT5ub2Rl
KCksIHR5cGUsIHRleHRSZWN0LCByb290UmVjdCwgdHJ1ZSwgZmFsc2UpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCShyZXZpc2lvbiA4NjEwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NSw3ICsxNjUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWludERvY3VtZW50TWFy
a2VycyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4sIFJlbmRl
clN0eWxlKiwgY29uc3QgRm9udCYsIGJvb2wgYmFja2dyb3VuZCk7CiAgICAgdm9pZCBwYWludENv
bXBvc2l0aW9uVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEZsb2F0UG9pbnQmIGJv
eE9yaWdpbiwgY29uc3QgQ29tcG9zaXRpb25VbmRlcmxpbmUmKTsKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChpbnQgdHgsIGludCB0eSwgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlKTsKKyAgICB2b2lkIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KExheWVyT2Zm
c2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gODYxMDcpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA3Nyw3ICsxMDc3LDcgQEAgYm9vbCBSZW5kZXJCb3g6OnJlcGFpbnRMYXllclJlY3RzRm9y
SW1hZwogCiAjaWYgUExBVEZPUk0oTUFDKQogCi12b2lkIFJlbmRlckJveDo6cGFpbnRDdXN0b21I
aWdobGlnaHQoaW50IHR4LCBpbnQgdHksIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBi
ZWhpbmRUZXh0KQordm9pZCBSZW5kZXJCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KExheWVyT2Zm
c2V0IGxheW91dE9mZnNldCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJlaGluZFRl
eHQpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQpAQCAtMTA4OSwxMSArMTA4OSwxMSBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRDdXN0b21IaWdo
bGlnaHQoaW50CiAgICAgSW5saW5lQm94KiBib3hXcmFwID0gaW5saW5lQm94V3JhcHBlcigpOwog
ICAgIFJvb3RJbmxpbmVCb3gqIHIgPSBib3hXcmFwID8gYm94V3JhcC0+cm9vdCgpIDogMDsKICAg
ICBpZiAocikgewotICAgICAgICBGbG9hdFJlY3Qgcm9vdFJlY3QodHggKyByLT54KCksIHR5ICsg
ci0+c2VsZWN0aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0aCgpLCByLT5zZWxlY3Rpb25IZWlnaHQo
KSk7Ci0gICAgICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QodHggKyB4KCksIHJvb3RSZWN0LnkoKSwg
d2lkdGgoKSwgcm9vdFJlY3QuaGVpZ2h0KCkpOworICAgICAgICBGbG9hdFJlY3Qgcm9vdFJlY3Qo
bGF5b3V0T2Zmc2V0LngoKSArIHItPngoKSwgbGF5b3V0T2Zmc2V0LnkoKSArIHItPnNlbGVjdGlv
blRvcCgpLCByLT5sb2dpY2FsV2lkdGgoKSwgci0+c2VsZWN0aW9uSGVpZ2h0KCkpOworICAgICAg
ICBGbG9hdFJlY3QgaW1hZ2VSZWN0KGxvY2F0aW9uKCkgKyBsYXlvdXRPZmZzZXQsIEludFNpemUo
d2lkdGgoKSwgcm9vdFJlY3QuaGVpZ2h0KCkpKTsKICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwgcm9v
dFJlY3QsIGJlaGluZFRleHQsIGZhbHNlKTsKICAgICB9IGVsc2UgewotICAgICAgICBGbG9hdFJl
Y3QgaW1hZ2VSZWN0KHR4ICsgeCgpLCB0eSArIHkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworICAg
ICAgICBGbG9hdFJlY3QgaW1hZ2VSZWN0KGxvY2F0aW9uKCkgKyBsYXlvdXRPZmZzZXQsIEludFNp
emUod2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5wYWludEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwgaW1hZ2VSZWN0
LCBiZWhpbmRUZXh0LCBmYWxzZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaAkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMiw3ICs0MTIsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAg
dm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChpbnQgdHgsIGludCB0eSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCBib29sIGJlaGluZFRleHQpOworICAgIHZvaWQgcGFpbnRDdXN0b21IaWdobGln
aHQoTGF5ZXJPZmZzZXQsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBiZWhpbmRUZXh0
KTsKICNlbmRpZgogCiAgICAgdm9pZCBjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiA4
NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxh
Y2VkKFBhaW50SW5mCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIGlmIChzdHlsZSgpLT5o
aWdobGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlz
YWJsZWQoKSkKLSAgICAgICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KHR4IC0geCgpLCB0eSAt
IHkoKSwgc3R5bGUoKS0+aGlnaGxpZ2h0KCksIHRydWUpOworICAgICAgICAgICAgcGFpbnRDdXN0
b21IaWdobGlnaHQoTGF5ZXJPZmZzZXQodHggLSB4KCksIHR5IC0geSgpKSwgc3R5bGUoKS0+aGln
aGxpZ2h0KCksIHRydWUpOwogI2VuZGlmCiAKICAgICAgICAgSW50U2l6ZSBjb250ZW50U2l6ZShj
V2lkdGgsIGNIZWlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMTAsNyArMjMxMCw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXAKICAgICB9CiAKICAgICBpZiAobV9zY3Jv
bGxDb3JuZXIpIHsKLSAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1JlY3QoY29udGV4
dCwgdHgsIHR5LCBhYnNSZWN0KTsKKyAgICAgICAgbV9zY3JvbGxDb3JuZXItPnBhaW50SW50b1Jl
Y3QoY29udGV4dCwgTGF5ZXJPZmZzZXQodHgsIHR5KSwgYWJzUmVjdCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTIzMzksNyArMjMzOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50
UmVzaXplcihHcmFwaGljc0MKICAgICB9CiAgICAgCiAgICAgaWYgKG1fcmVzaXplcikgewotICAg
ICAgICBtX3Jlc2l6ZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwgdHgsIHR5LCBhYnNSZWN0KTsK
KyAgICAgICAgbV9yZXNpemVyLT5wYWludEludG9SZWN0KGNvbnRleHQsIExheWVyT2Zmc2V0KHR4
LCB0eSksIGFic1JlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCShyZXZpc2lvbiA4NjEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpw
YWludChQYWludEluZm8mIAogICAgIGlmIChpc0ltYWdlKCkpIHsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIGlmIChzdHlsZSgpLT5oaWdobGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJ
bmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgICAgIHBhaW50Q3VzdG9t
SGlnaGxpZ2h0KHR4LCB0eSwgc3R5bGUoKS0+aGlnaGxpZ2h0KCksIHRydWUpOworICAgICAgICAg
ICAgcGFpbnRDdXN0b21IaWdobGlnaHQoTGF5ZXJPZmZzZXQodHgsIHR5KSwgc3R5bGUoKS0+aGln
aGxpZ2h0KCksIHRydWUpOwogI2VuZGlmCiAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2lt
YWdlLT5pbWFnZSh0aGlzLCBtYXJrZXIuc2l6ZSgpKS5nZXQoKSwgc3R5bGUoKS0+Y29sb3JTcGFj
ZSgpLCBtYXJrZXIpOwogICAgICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25O
b25lKSB7CkBAIC0xMTQyLDcgKzExNDIsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50
KFBhaW50SW5mbyYgCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vIEZJWE1FOiBwYWludCBnYXAg
YmV0d2VlbiBtYXJrZXIgYW5kIGxpc3QgaXRlbSBwcm9wZXIKICAgICBpZiAoc3R5bGUoKS0+aGln
aGxpZ2h0KCkgIT0gbnVsbEF0b20gJiYgIXBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2Fi
bGVkKCkpCi0gICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KHR4LCB0eSwgc3R5bGUoKS0+aGln
aGxpZ2h0KCksIHRydWUpOworICAgICAgICBwYWludEN1c3RvbUhpZ2hsaWdodChMYXllck9mZnNl
dCh0eCwgdHkpLCBzdHlsZSgpLT5oaWdobGlnaHQoKSwgdHJ1ZSk7CiAjZW5kaWYKIAogICAgIGlm
IChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5j
bHVkZSAiRmxvYXRRdWFkLmgiCisjaW5jbHVkZSAiTGF5ZXJPZmZzZXQuaCIKICNpbmNsdWRlICJQ
YWludFBoYXNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXIuY3BwCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNyArMjc1LDcg
QEAgdm9pZCBSZW5kZXJTY3JvbGxiYXI6OnBhaW50UGFydChHcmFwaGljcwogICAgIFJlbmRlclNj
cm9sbGJhclBhcnQqIHBhcnRSZW5kZXJlciA9IG1fcGFydHMuZ2V0KHBhcnRUeXBlKTsKICAgICBp
ZiAoIXBhcnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwotICAgIHBhcnRSZW5kZXJlci0+cGFp
bnRJbnRvUmVjdChncmFwaGljc0NvbnRleHQsIHgoKSwgeSgpLCByZWN0KTsKKyAgICBwYXJ0UmVu
ZGVyZXItPnBhaW50SW50b1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBwb3MoKSwgcmVjdCk7CiB9CiAK
IEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyOjpidXR0b25SZWN0KFNjcm9sbGJhclBhcnQgcGFydFR5
cGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDEwICsxNTksMTAg
QEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjppbWFnZUNoYW5nZWQoVwogICAgIH0KIH0KIAot
dm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3Zv
aWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgTGF5ZXJPZmZzZXQgbGF5ZXJPZmZzZXQsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgLy8gTWFrZSBzdXJlIG91ciBkaW1lbnNpb25zIG1hdGNoIHRoZSByZWN0Lgot
ICAgIHNldExvY2F0aW9uKHJlY3QueCgpIC0gdHgsIHJlY3QueSgpIC0gdHkpOworICAgIHNldExv
Y2F0aW9uKHJlY3QubG9jYXRpb24oKSAtIGxheWVyT2Zmc2V0LnRvU2l6ZSgpKTsKICAgICBzZXRX
aWR0aChyZWN0LndpZHRoKCkpOwogICAgIHNldEhlaWdodChyZWN0LmhlaWdodCgpKTsKIApAQCAt
MTcxLDE1ICsxNzEsMTUgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpwYWludEludG9SZWN0
KAogCiAgICAgLy8gTm93IGRvIHRoZSBwYWludC4KICAgICBQYWludEluZm8gcGFpbnRJbmZvKGdy
YXBoaWNzQ29udGV4dCwgcmVjdCwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgZmFsc2UsIDAs
IDApOwotICAgIHBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICBwYWludChwYWludEluZm8s
IGxheWVyT2Zmc2V0LngoKSwgbGF5ZXJPZmZzZXQueSgpKTsKICAgICBwYWludEluZm8ucGhhc2Ug
PSBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzOwotICAgIHBhaW50KHBhaW50SW5mbywg
dHgsIHR5KTsKKyAgICBwYWludChwYWludEluZm8sIGxheWVyT2Zmc2V0LngoKSwgbGF5ZXJPZmZz
ZXQueSgpKTsKICAgICBwYWludEluZm8ucGhhc2UgPSBQYWludFBoYXNlRmxvYXQ7Ci0gICAgcGFp
bnQocGFpbnRJbmZvLCB0eCwgdHkpOworICAgIHBhaW50KHBhaW50SW5mbywgbGF5ZXJPZmZzZXQu
eCgpLCBsYXllck9mZnNldC55KCkpOwogICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VG
b3JlZ3JvdW5kOwotICAgIHBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICBwYWludChwYWlu
dEluZm8sIGxheWVyT2Zmc2V0LngoKSwgbGF5ZXJPZmZzZXQueSgpKTsKICAgICBwYWludEluZm8u
cGhhc2UgPSBQYWludFBoYXNlT3V0bGluZTsKLSAgICBwYWludChwYWludEluZm8sIHR4LCB0eSk7
CisgICAgcGFpbnQocGFpbnRJbmZvLCBsYXllck9mZnNldC54KCksIGxheWVyT2Zmc2V0LnkoKSk7
CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclBhcnQuaAkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIFJlbmRlclNjcm9sbGJhclBhcnRfaAogI2RlZmluZSBSZW5kZXJTY3JvbGxiYXJQYXJ0
X2gKIAorI2luY2x1ZGUgIkxheWVyT2Zmc2V0LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIK
ICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogCkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCk7CiAgICAgCi0gICAgdm9pZCBwYWludEludG9SZWN0KEdyYXBoaWNz
Q29udGV4dCosIGludCB0eCwgaW50IHR5LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWlu
dEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCosIExheWVyT2Zmc2V0LCBjb25zdCBJbnRSZWN0Jik7
CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHls
ZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiA4NjEwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5m
byYgcGFpbgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChzdHlsZSgpLT5oaWdobGlnaHQo
KSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkK
LSAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQodHggLSB4KCksIHR5IC0geSgpLCBzdHlsZSgp
LT5oaWdobGlnaHQoKSwgdHJ1ZSk7CisgICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KExheWVy
T2Zmc2V0KHR4IC0geCgpLCB0eSAtIHkoKSksIHN0eWxlKCktPmhpZ2hsaWdodCgpLCB0cnVlKTsK
ICNlbmRpZgogCiAgICAgaWYgKHN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiA4NjEw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6YWRkSGlnaGxp
Z2h0T3ZlcmZsb3cKICAgICBzZXRPdmVyZmxvd0Zyb21Mb2dpY2FsUmVjdHMoaW5mbGF0ZWRSZWN0
LCBpbmZsYXRlZFJlY3QsIGxpbmVUb3AoKSwgbGluZUJvdHRvbSgpKTsKIH0KIAotdm9pZCBSb290
SW5saW5lQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodChQYWludEluZm8mIHBhaW50SW5mbywgaW50
IHR4LCBpbnQgdHksIGNvbnN0IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0VHlwZSkKK3ZvaWQgUm9v
dElubGluZUJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoUGFpbnRJbmZvJiBwYWludEluZm8sIExh
eWVyT2Zmc2V0IGxheWVyT2Zmc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGhpZ2hsaWdodFR5cGUp
CiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkp
IHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTcwLDcgKzE3MCw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHRoZSBpbmZsYXRlZCByZWN0IHNvIHRoYXQg
d2UgY2FuIHByb3Blcmx5IGhpdCB0ZXN0LgotICAgIEZsb2F0UmVjdCByb290UmVjdCh0eCArIHgo
KSwgdHkgKyBzZWxlY3Rpb25Ub3AoKSwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCgp
KTsKKyAgICBGbG9hdFJlY3Qgcm9vdFJlY3QobGF5ZXJPZmZzZXQueCgpICsgeCgpLCBsYXllck9m
ZnNldC55KCkgKyBzZWxlY3Rpb25Ub3AoKSwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdo
dCgpKTsKICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxpZ2h0VHlw
ZSwgcm9vdFJlY3QpOwogICAgIGlmIChpbmZsYXRlZFJlY3QuaW50ZXJzZWN0cyhwYWludEluZm8u
cmVjdCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFpbnRDdXN0b21IaWdo
bGlnaHQocmVuZGVyZXIoKS0+bm9kZSgpLCBoaWdobGlnaHRUeXBlLCByb290UmVjdCwgcm9vdFJl
Y3QsIGZhbHNlLCB0cnVlKTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6
OnBhaW50KFBhaW50SW5mbyYgcGFpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJlbmRlclN0eWxl
KiBzdHlsZVRvVXNlID0gcmVuZGVyZXIoKS0+c3R5bGUobV9maXJzdExpbmUpOwogICAgIGlmIChz
dHlsZVRvVXNlLT5oaWdobGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJbmZvLmNvbnRleHQt
PnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQocGFpbnRJ
bmZvLCB0eCwgdHksIHN0eWxlVG9Vc2UtPmhpZ2hsaWdodCgpKTsKKyAgICAgICAgcGFpbnRDdXN0
b21IaWdobGlnaHQocGFpbnRJbmZvLCBMYXllck9mZnNldCh0eCwgdHkpLCBzdHlsZVRvVXNlLT5o
aWdobGlnaHQoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5oCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgcHVi
bGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgYWRkSGlnaGxpZ2h0T3ZlcmZsb3co
KTsKLSAgICB2b2lkIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KFBhaW50SW5mbyYsIGludCB0eCwgaW50
IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIGhpZ2hsaWdodFR5cGUpOworICAgIHZvaWQgcGFpbnRD
dXN0b21IaWdobGlnaHQoUGFpbnRJbmZvJiwgTGF5ZXJPZmZzZXQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaGlnaGxpZ2h0VHlwZSk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBpbnQgdHgsIGludCB0eSwgaW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9tKTsK
</data>
<flag name="commit-queue"
          id="86100"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93008</attachid>
            <date>2011-05-10 14:35:26 -0700</date>
            <delta_ts>2011-05-10 16:50:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-60490-20110510143525.patch</filename>
            <type>text/plain</type>
            <size>28275</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMDUtMDkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgorCisgICAgICAgIENyZWF0ZSBMYXllck9mZnNldCBjbGFzcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjA0OTAKKworICAgICAgICBBZGRp
bmcgYSBMYXllck9mZnNldCBjbGFzcyB0aGF0IHdpbGwgcmVwbGFjZSBleGlzdGluZyB1c2FnZSBv
ZiB0eC90eS4KKyAgICAgICAgTGF5ZXJPZmZzZXQgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoZXNlIHZh
bHVlcyBhcmUgY29tbW9ubHkgdXNlZCBhcyBib3RoCisgICAgICAgIGEgc2l6ZSBhbmQgYSBwb2lu
dC4gVXBkYXRpbmcgcGFpbnRJbnRvUmVjdCB0byB1c2UgdGhpcyBuZXcgY2xhc3MuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgZG9lc24ndCBjaGFuZ2UgYW55IGJlaGF2aW9yLgor
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6cGFpbnRTY3JvbGxDb3JuZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheWVy
T2Zmc2V0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6OkxheWVyT2Zm
c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0Ojp4KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyT2Zmc2V0Ojp5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0OjpzZXRY
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyT2Zmc2V0OjpzZXRZKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyT2Zmc2V0Ojp0b1NpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJPZmZzZXQ6
OnRvUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3IrPSk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvci09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yKyk6CisgICAgICAg
IChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29y
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyOjpwYWludFBhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6
OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
Lmg6CisKIDIwMTEtMDUtMDkgIEplcmVteSBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MzgsNiArMjQzOCw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemVIYXNoLmggXAorCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNp
b24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTg0Nyw2ICs4NDcsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJl
Y3RIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgnLApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE5NTAsNiArMTk1MCw3IEBAIEhFQURFUlMgKz0g
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50SGFzaC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggXAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmggXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguaCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDg2MTA3KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTI2OTEzLDYgKzI2OTEzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xMYXllck9mZnNl
dC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXIuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxl
PgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ3OTcsNiArNDc5Nyw3IEBA
CiAJCUI4REJEQjRDMTMwQjBGOEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0ODEzMEIw
RjhBMDBGNUNEQjEgLyogU2V0U2VsZWN0aW9uQ29tbWFuZC5oICovOyB9OwogCQlCOERCREI0RDEz
MEIwRjhBMDBGNUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0OTEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgKi87IH07CiAJCUI4REJEQjRF
MTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCOERCREI0QTEzMEIwRjhBMDBG
NUNEQjEgLyogU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oICovOyB9OworCQlCQTUxNzVDODEz
Nzg5NzM1MDA4QkZDQkYgLyogTGF5ZXJPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJBNTE3NUM3MTM3ODk3MzUwMDhCRkNCRiAvKiBMYXllck9m
ZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUJDMDBGMDA0MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRUZGRTBFMEExODU1MDBGRDA0RTMgLyog
RE9NRmlsZS5oICovOyB9OwogCQlCQzAwRjAwNTBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDBFRkZG
MEUwQTE4NTUwMEZEMDRFMyAvKiBET01GaWxlLm1tICovOyB9OwogCQlCQzAwRjAwNjBFMEExODU1
MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwRjAwMDBFMEExODU1MDBGRDA0RTMgLyogRE9NRmlsZUlu
dGVybmFsLmggKi87IH07CkBAIC0xMTIwNSw2ICsxMTIwNiw3IEBACiAJCUI4REJEQjQ4MTMwQjBG
OEEwMEY1Q0RCMSAvKiBTZXRTZWxlY3Rpb25Db21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNldFNlbGVjdGlvbkNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjhEQkRCNDkxMzBCMEY4QTAwRjVDREIxIC8qIFNwZWxsaW5nQ29ycmVjdGlvbkNv
bW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI4REJE
QjRBMTMwQjBGOEEwMEY1Q0RCMSAvKiBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkE1MTc1QzcxMzc4OTczNTAwOEJGQ0JGIC8q
IExheWVyT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVyT2Zm
c2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMDBFRkZFMEUwQTE4NTUwMEZE
MDRFMyAvKiBET01GaWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUZp
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMwMEVGRkYwRTBBMTg1NTAwRkQw
NEUzIC8qIERPTUZpbGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBET01GaWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwRjAwMDBFMEEx
ODU1MDBGRDA0RTMgLyogRE9NRmlsZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTUZpbGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc2ODEsNiArMTc2ODMsNyBAQAogCQkJCUUxMzRGNUFBMTJFRTM0M0YwMDRFQzU4RCAvKiBJ
bnRSZWN0SGFzaC5oICovLAogCQkJCUIyNzUzNTQ3MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRTaXpl
LmggKi8sCiAJCQkJQjI3NTM1NDgwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVIYXNoLmggKi8s
CisJCQkJQkE1MTc1QzcxMzc4OTczNTAwOEJGQ0JGIC8qIExheWVyT2Zmc2V0LmggKi8sCiAJCQkJ
RTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxheWVyLmNwcCAqLywKIAkJCQlFNEI0
MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIuaCAqLywKIAkJCQkwNzlGNUU0QjBG
M0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8sCkBAIC0yMjc0NCw2ICsy
Mjc0Nyw3IEBACiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdBRkZERjcxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZl
ckNSTEZMaW5lUmVhZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcxNzEzNzM2QTY2MDBC
OUU5MTkgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQTUxNzVDODEz
Nzg5NzM1MDA4QkZDQkYgLyogTGF5ZXJPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMTY2
MEE1MTM3ODdDNkQwMDFGRkE3QiAvKiBEZW5vcm1hbERpc2FibGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQ2LDcgKzIyNDYs
NyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpCiAgICAgfQogCiAg
ICAgaWYgKG1fc2Nyb2xsQ29ybmVyKSB7Ci0gICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludElu
dG9SZWN0KGNvbnRleHQsIGNvcm5lclJlY3QueCgpLCBjb3JuZXJSZWN0LnkoKSwgY29ybmVyUmVj
dCk7CisgICAgICAgIG1fc2Nyb2xsQ29ybmVyLT5wYWludEludG9SZWN0KGNvbnRleHQsIGNvcm5l
clJlY3QubG9jYXRpb24oKSwgY29ybmVyUmVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheWVyT2Zmc2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5ZXJPZmZzZXQu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheWVy
T2Zmc2V0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTGF5ZXJPZmZzZXRfaAorI2RlZmluZSBMYXllck9mZnNldF9oCisKKyNpbmNsdWRlICJJbnRQ
b2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBMYXllck9mZnNldCByZXByZXNlbnRzIGFuIG9mZnNldCwgaW4gTGF5ZXIgY29vcmRpbmF0ZXMs
IGZyb20gdGhhdCBMYXllcidzIG9yaWdpbi4KKworY2xhc3MgTGF5ZXJPZmZzZXQgeworcHVibGlj
OgorICAgIExheWVyT2Zmc2V0KCkgOiBtX3goMCksIG1feSgwKSB7IH0KKyAgICBMYXllck9mZnNl
dChpbnQgeCwgaW50IHkpIDogbV94KHgpLCBtX3koeSkgeyB9CisgICAgTGF5ZXJPZmZzZXQoY29u
c3QgTGF5ZXJPZmZzZXQmIG90aGVyKSA6IG1feChvdGhlci5tX3gpLCBtX3kob3RoZXIubV95KSB7
IH0KKyAgICBMYXllck9mZnNldChjb25zdCBJbnRTaXplJiBzaXplKSA6IG1feChzaXplLndpZHRo
KCkpLCBtX3koc2l6ZS5oZWlnaHQoKSkgeyB9CisgICAgTGF5ZXJPZmZzZXQoY29uc3QgSW50UG9p
bnQmIHBvaW50KSA6IG1feChwb2ludC54KCkpLCBtX3kocG9pbnQueSgpKSB7IH0KKworICAgIGlu
dCB4KCkgY29uc3QgeyByZXR1cm4gbV94OyB9CisgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBt
X3k7IH0KKworICAgIHZvaWQgc2V0WChpbnQgeCkgeyBtX3ggPSB4OyB9CisgICAgdm9pZCBzZXRZ
KGludCB5KSB7IG1feSA9IHk7IH0KKworICAgIEludFNpemUgdG9TaXplKCkgY29uc3QgeyByZXR1
cm4gSW50U2l6ZShtX3gsIG1feSk7IH0KKyAgICBJbnRQb2ludCB0b1BvaW50KCkgY29uc3QgeyBy
ZXR1cm4gSW50UG9pbnQobV94LCBtX3kpOyB9CisKK3ByaXZhdGU6CisgICAgaW50IG1feDsKKyAg
ICBpbnQgbV95OworfTsKKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVyYXRvcis9KExheWVyT2Zm
c2V0JiBhLCBjb25zdCBMYXllck9mZnNldCYgYikKK3sKKyAgICBhLnNldFgoYS54KCkgKyBiLngo
KSk7CisgICAgYS5zZXRZKGEueSgpICsgYi55KCkpOworICAgIHJldHVybiBhOworfQorCitpbmxp
bmUgTGF5ZXJPZmZzZXQmIG9wZXJhdG9yKz0oTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IEludFNpemUm
IGIpCit7CisgICAgYS5zZXRYKGEueCgpICsgYi53aWR0aCgpKTsKKyAgICBhLnNldFkoYS55KCkg
KyBiLmhlaWdodCgpKTsKKyAgICByZXR1cm4gYTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBv
cGVyYXRvcis9KExheWVyT2Zmc2V0JiBhLCBjb25zdCBJbnRQb2ludCYgYikKK3sKKyAgICBhLnNl
dFgoYS54KCkgKyBiLngoKSk7CisgICAgYS5zZXRZKGEueSgpICsgYi55KCkpOworICAgIHJldHVy
biBhOworfQorICAgIAoraW5saW5lIExheWVyT2Zmc2V0JiBvcGVyYXRvci09KExheWVyT2Zmc2V0
JiBhLCBjb25zdCBMYXllck9mZnNldCYgYikKK3sKKyAgICBhLnNldFgoYS54KCkgLSBiLngoKSk7
CisgICAgYS5zZXRZKGEueSgpIC0gYi55KCkpOworICAgIHJldHVybiBhOworfQorCitpbmxpbmUg
TGF5ZXJPZmZzZXQmIG9wZXJhdG9yLT0oTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IEludFNpemUmIGIp
Cit7CisgICAgYS5zZXRYKGEueCgpIC0gYi53aWR0aCgpKTsKKyAgICBhLnNldFkoYS55KCkgLSBi
LmhlaWdodCgpKTsKKyAgICByZXR1cm4gYTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0JiBvcGVy
YXRvci09KExheWVyT2Zmc2V0JiBhLCBjb25zdCBJbnRQb2ludCYgYikKK3sKKyAgICBhLnNldFgo
YS54KCkgLSBiLngoKSk7CisgICAgYS5zZXRZKGEueSgpIC0gYi55KCkpOworICAgIHJldHVybiBh
OworfQorICAgIAoraW5saW5lIExheWVyT2Zmc2V0IG9wZXJhdG9yKyhjb25zdCBMYXllck9mZnNl
dCYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7CisgICAgcmV0dXJuIExheWVyT2Zmc2V0KGEu
eCgpICsgYi54KCksIGEueSgpICsgYi55KCkpOworfQorCitpbmxpbmUgSW50U2l6ZSBvcGVyYXRv
cisoY29uc3QgSW50U2l6ZSYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7CisgICAgcmV0dXJu
IEludFNpemUoYS53aWR0aCgpICsgYi54KCksIGEuaGVpZ2h0KCkgKyBiLnkoKSk7Cit9CisKK2lu
bGluZSBJbnRQb2ludCBvcGVyYXRvcisoY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IExheWVyT2Zm
c2V0JiBiKQoreworICAgIHJldHVybiBJbnRQb2ludChhLngoKSArIGIueCgpLCBhLnkoKSArIGIu
eSgpKTsKK30KKworaW5saW5lIExheWVyT2Zmc2V0IG9wZXJhdG9yLShjb25zdCBMYXllck9mZnNl
dCYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7CisgICAgcmV0dXJuIExheWVyT2Zmc2V0KGEu
eCgpIC0gYi54KCksIGEueSgpIC0gYi55KCkpOworfQorCitpbmxpbmUgSW50U2l6ZSBvcGVyYXRv
ci0oY29uc3QgSW50U2l6ZSYgYSwgY29uc3QgTGF5ZXJPZmZzZXQmIGIpCit7CisgICAgcmV0dXJu
IEludFNpemUoYS53aWR0aCgpIC0gYi54KCksIGEuaGVpZ2h0KCkgLSBiLnkoKSk7Cit9CisKK2lu
bGluZSBJbnRQb2ludCBvcGVyYXRvci0oY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IExheWVyT2Zm
c2V0JiBiKQoreworICAgIHJldHVybiBJbnRQb2ludChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIu
eSgpKTsKK30KKyAgICAKK2lubGluZSBMYXllck9mZnNldCBvcGVyYXRvci0oY29uc3QgTGF5ZXJP
ZmZzZXQmIGxheWVyT2Zmc2V0KQoreworICAgIHJldHVybiBMYXllck9mZnNldCgtbGF5ZXJPZmZz
ZXQueCgpLCAtbGF5ZXJPZmZzZXQueSgpKTsKK30KKyAgICAKK2lubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBiKQoreworICAgIHJl
dHVybiBhLngoKSA9PSBiLngoKSAmJiBhLnkoKSA9PSBiLnkoKTsKK30KKyAgICAKK2lubGluZSBi
b29sIG9wZXJhdG9yIT0oY29uc3QgTGF5ZXJPZmZzZXQmIGEsIGNvbnN0IExheWVyT2Zmc2V0JiBi
KQoreworICAgIHJldHVybiBhLngoKSAhPSBiLngoKSB8fCBhLnkoKSAhPSBiLnkoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gTGF5ZXJPZmZzZXRfaApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gODYx
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBh
aW50SW5mbyYgcGFpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICAvLyBDdXN0b20gaGlnaGxp
Z2h0ZXJzIGdvIGJlaGluZCBldmVyeXRoaW5nIGVsc2UuCiAgICAgICAgIGlmIChzdHlsZVRvVXNl
LT5oaWdobGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQotICAgICAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQodHgsIHR5LCBzdHlsZVRvVXNlLT5o
aWdobGlnaHQoKSk7CisgICAgICAgICAgICBwYWludEN1c3RvbUhpZ2hsaWdodChMYXllck9mZnNl
dCh0eCwgdHkpLCBzdHlsZVRvVXNlLT5oaWdobGlnaHQoKSk7CiAjZW5kaWYKIAogICAgICAgICBp
ZiAoY29udGFpbnNDb21wb3NpdGlvbiAmJiAhdXNlQ3VzdG9tVW5kZXJsaW5lcykKQEAgLTg1Nyw3
ICs4NTcsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25CYWNrCiAKICNp
ZiBQTEFURk9STShNQUMpCiAKLXZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGln
aHQoaW50IHR4LCBpbnQgdHksIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKK3ZvaWQgSW5saW5l
VGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoTGF5ZXJPZmZzZXQgbGF5ZXJPZmZzZXQsIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlcigp
LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC04NjcsOCArODY3LDggQEAgdm9pZCBJbmxp
bmVUZXh0Qm94OjpwYWludEN1c3RvbUhpZ2hsaWdodAogICAgICAgICByZXR1cm47CiAKICAgICBS
b290SW5saW5lQm94KiByID0gcm9vdCgpOwotICAgIEZsb2F0UmVjdCByb290UmVjdCh0eCArIHIt
PngoKSwgdHkgKyBzZWxlY3Rpb25Ub3AoKSwgci0+bG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhl
aWdodCgpKTsKLSAgICBGbG9hdFJlY3QgdGV4dFJlY3QodHggKyB4KCksIHJvb3RSZWN0LnkoKSwg
bG9naWNhbFdpZHRoKCksIHJvb3RSZWN0LmhlaWdodCgpKTsKKyAgICBGbG9hdFJlY3Qgcm9vdFJl
Y3QobGF5ZXJPZmZzZXQueCgpICsgci0+eCgpLCBsYXllck9mZnNldC55KCkgKyBzZWxlY3Rpb25U
b3AoKSwgci0+bG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCgpKTsKKyAgICBGbG9hdFJl
Y3QgdGV4dFJlY3QobGF5ZXJPZmZzZXQueCgpICsgeCgpLCByb290UmVjdC55KCksIGxvZ2ljYWxX
aWR0aCgpLCByb290UmVjdC5oZWlnaHQoKSk7CiAKICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPnBhaW50Q3VzdG9tSGlnaGxpZ2h0KHJlbmRlcmVyKCktPm5vZGUoKSwgdHlwZSwgdGV4dFJl
Y3QsIHJvb3RSZWN0LCB0cnVlLCBmYWxzZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmgJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHBhaW50RG9jdW1lbnRNYXJrZXJzKEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdpbiwgUmVuZGVyU3R5bGUqLCBjb25zdCBG
b250JiwgYm9vbCBiYWNrZ3JvdW5kKTsKICAgICB2b2lkIHBhaW50Q29tcG9zaXRpb25VbmRlcmxp
bmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luLCBjb25zdCBD
b21wb3NpdGlvblVuZGVybGluZSYpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHBhaW50
Q3VzdG9tSGlnaGxpZ2h0KGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUp
OworICAgIHZvaWQgcGFpbnRDdXN0b21IaWdobGlnaHQoTGF5ZXJPZmZzZXQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc3LDcgKzEwNzcs
NyBAQCBib29sIFJlbmRlckJveDo6cmVwYWludExheWVyUmVjdHNGb3JJbWFnCiAKICNpZiBQTEFU
Rk9STShNQUMpCiAKLXZvaWQgUmVuZGVyQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodChpbnQgdHgs
IGludCB0eSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJlaGluZFRleHQpCit2b2lk
IFJlbmRlckJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoTGF5ZXJPZmZzZXQgbGF5b3V0T2Zmc2V0
LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgYmVoaW5kVGV4dCkKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCkBAIC0xMDg5LDExICsx
MDg5LDExIEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodChpbnQKICAgICBJ
bmxpbmVCb3gqIGJveFdyYXAgPSBpbmxpbmVCb3hXcmFwcGVyKCk7CiAgICAgUm9vdElubGluZUJv
eCogciA9IGJveFdyYXAgPyBib3hXcmFwLT5yb290KCkgOiAwOwogICAgIGlmIChyKSB7Ci0gICAg
ICAgIEZsb2F0UmVjdCByb290UmVjdCh0eCArIHItPngoKSwgdHkgKyByLT5zZWxlY3Rpb25Ub3Ao
KSwgci0+bG9naWNhbFdpZHRoKCksIHItPnNlbGVjdGlvbkhlaWdodCgpKTsKLSAgICAgICAgRmxv
YXRSZWN0IGltYWdlUmVjdCh0eCArIHgoKSwgcm9vdFJlY3QueSgpLCB3aWR0aCgpLCByb290UmVj
dC5oZWlnaHQoKSk7CisgICAgICAgIEZsb2F0UmVjdCByb290UmVjdChsYXlvdXRPZmZzZXQueCgp
ICsgci0+eCgpLCBsYXlvdXRPZmZzZXQueSgpICsgci0+c2VsZWN0aW9uVG9wKCksIHItPmxvZ2lj
YWxXaWR0aCgpLCByLT5zZWxlY3Rpb25IZWlnaHQoKSk7CisgICAgICAgIEZsb2F0UmVjdCBpbWFn
ZVJlY3QobG9jYXRpb24oKSArIGxheW91dE9mZnNldCwgSW50U2l6ZSh3aWR0aCgpLCByb290UmVj
dC5oZWlnaHQoKSkpOwogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhaW50Q3Vz
dG9tSGlnaGxpZ2h0KG5vZGUoKSwgdHlwZSwgaW1hZ2VSZWN0LCByb290UmVjdCwgYmVoaW5kVGV4
dCwgZmFsc2UpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QodHgg
KyB4KCksIHR5ICsgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7CisgICAgICAgIEZsb2F0UmVjdCBp
bWFnZVJlY3QobG9jYXRpb24oKSArIGxheW91dE9mZnNldCwgSW50U2l6ZSh3aWR0aCgpLCBoZWln
aHQoKSkpOwogICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhaW50Q3VzdG9tSGln
aGxpZ2h0KG5vZGUoKSwgdHlwZSwgaW1hZ2VSZWN0LCBpbWFnZVJlY3QsIGJlaGluZFRleHQsIGZh
bHNlKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCShy
ZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAko
d29ya2luZyBjb3B5KQpAQCAtNDEyLDcgKzQxMiw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHBh
aW50TWFza0ltYWdlcyhjb25zdCBQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2b2lkIHBhaW50Q3VzdG9t
SGlnaGxpZ2h0KGludCB0eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
YmVoaW5kVGV4dCk7CisgICAgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChMYXllck9mZnNldCwg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGJlaGluZFRleHQpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbFdpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAy
LDcgKzMwMiw3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKIAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaWYgKHN0eWxlKCktPmhpZ2hsaWdodCgpICE9IG51
bGxBdG9tICYmICFwYWludEluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAg
ICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQodHggLSB4KCksIHR5IC0geSgpLCBzdHlsZSgpLT5o
aWdobGlnaHQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBwYWludEN1c3RvbUhpZ2hsaWdodChMYXll
ck9mZnNldCh0eCAtIHgoKSwgdHkgLSB5KCkpLCBzdHlsZSgpLT5oaWdobGlnaHQoKSwgdHJ1ZSk7
CiAjZW5kaWYKIAogICAgICAgICBJbnRTaXplIGNvbnRlbnRTaXplKGNXaWR0aCwgY0hlaWdodCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9u
IDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjMxMCw3ICsyMzEwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRT
Y3JvbGxDb3JuZXIoR3JhcAogICAgIH0KIAogICAgIGlmIChtX3Njcm9sbENvcm5lcikgewotICAg
ICAgICBtX3Njcm9sbENvcm5lci0+cGFpbnRJbnRvUmVjdChjb250ZXh0LCB0eCwgdHksIGFic1Jl
Y3QpOworICAgICAgICBtX3Njcm9sbENvcm5lci0+cGFpbnRJbnRvUmVjdChjb250ZXh0LCBMYXll
ck9mZnNldCh0eCwgdHkpLCBhYnNSZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MjMzOSw3ICsyMzM5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRSZXNpemVyKEdyYXBoaWNz
QwogICAgIH0KICAgICAKICAgICBpZiAobV9yZXNpemVyKSB7Ci0gICAgICAgIG1fcmVzaXplci0+
cGFpbnRJbnRvUmVjdChjb250ZXh0LCB0eCwgdHksIGFic1JlY3QpOworICAgICAgICBtX3Jlc2l6
ZXItPnBhaW50SW50b1JlY3QoY29udGV4dCwgTGF5ZXJPZmZzZXQodHgsIHR5KSwgYWJzUmVjdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTI4LDcgKzExMjgsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OnBhaW50KFBhaW50SW5mbyYg
CiAgICAgaWYgKGlzSW1hZ2UoKSkgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaWYgKHN0
eWxlKCktPmhpZ2hsaWdodCgpICE9IG51bGxBdG9tICYmICFwYWludEluZm8uY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQotICAgICAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQodHgsIHR5
LCBzdHlsZSgpLT5oaWdobGlnaHQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBwYWludEN1c3RvbUhp
Z2hsaWdodChMYXllck9mZnNldCh0eCwgdHkpLCBzdHlsZSgpLT5oaWdobGlnaHQoKSwgdHJ1ZSk7
CiAjZW5kaWYKICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1faW1hZ2UtPmltYWdlKHRoaXMs
IG1hcmtlci5zaXplKCkpLmdldCgpLCBzdHlsZSgpLT5jb2xvclNwYWNlKCksIG1hcmtlcik7CiAg
ICAgICAgIGlmIChzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpIHsKQEAgLTExNDIs
NyArMTE0Miw3IEBAIHZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6cGFpbnQoUGFpbnRJbmZvJiAKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgLy8gRklYTUU6IHBhaW50IGdhcCBiZXR3ZWVuIG1hcmtlciBh
bmQgbGlzdCBpdGVtIHByb3BlcgogICAgIGlmIChzdHlsZSgpLT5oaWdobGlnaHQoKSAhPSBudWxs
QXRvbSAmJiAhcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAg
cGFpbnRDdXN0b21IaWdobGlnaHQodHgsIHR5LCBzdHlsZSgpLT5oaWdobGlnaHQoKSwgdHJ1ZSk7
CisgICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KExheWVyT2Zmc2V0KHR4LCB0eSksIHN0eWxl
KCktPmhpZ2hsaWdodCgpLCB0cnVlKTsKICNlbmRpZgogCiAgICAgaWYgKHNlbGVjdGlvblN0YXRl
KCkgIT0gU2VsZWN0aW9uTm9uZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaAkocmV2aXNpb24gODYxMDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQu
aCIKKyNpbmNsdWRlICJMYXllck9mZnNldC5oIgogI2luY2x1ZGUgIlBhaW50UGhhc2UuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3RDaGlsZExpc3QuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAJ
KHJldmlzaW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFJlbmRlclNj
cm9sbGJhcjo6cGFpbnRQYXJ0KEdyYXBoaWNzCiAgICAgUmVuZGVyU2Nyb2xsYmFyUGFydCogcGFy
dFJlbmRlcmVyID0gbV9wYXJ0cy5nZXQocGFydFR5cGUpOwogICAgIGlmICghcGFydFJlbmRlcmVy
KQogICAgICAgICByZXR1cm47Ci0gICAgcGFydFJlbmRlcmVyLT5wYWludEludG9SZWN0KGdyYXBo
aWNzQ29udGV4dCwgeCgpLCB5KCksIHJlY3QpOworICAgIHBhcnRSZW5kZXJlci0+cGFpbnRJbnRv
UmVjdChncmFwaGljc0NvbnRleHQsIHBvcygpLCByZWN0KTsKIH0KIAogSW50UmVjdCBSZW5kZXJT
Y3JvbGxiYXI6OmJ1dHRvblJlY3QoU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAJKHJldmlz
aW9uIDg2MTA3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksMTAgKzE1OSwxMCBAQCB2b2lkIFJlbmRlclNj
cm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZChXCiAgICAgfQogfQogCi12b2lkIFJlbmRlclNjcm9s
bGJhclBhcnQ6OnBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IGludCB0eCwgaW50IHR5LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxi
YXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBM
YXllck9mZnNldCBsYXllck9mZnNldCwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBN
YWtlIHN1cmUgb3VyIGRpbWVuc2lvbnMgbWF0Y2ggdGhlIHJlY3QuCi0gICAgc2V0TG9jYXRpb24o
cmVjdC54KCkgLSB0eCwgcmVjdC55KCkgLSB0eSk7CisgICAgc2V0TG9jYXRpb24ocmVjdC5sb2Nh
dGlvbigpIC0gbGF5ZXJPZmZzZXQudG9TaXplKCkpOwogICAgIHNldFdpZHRoKHJlY3Qud2lkdGgo
KSk7CiAgICAgc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkpOwogCkBAIC0xNzEsMTUgKzE3MSwxNSBA
QCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50b1JlY3QoCiAKICAgICAvLyBOb3cg
ZG8gdGhlIHBhaW50LgogICAgIFBhaW50SW5mbyBwYWludEluZm8oZ3JhcGhpY3NDb250ZXh0LCBy
ZWN0LCBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kLCBmYWxzZSwgMCwgMCk7Ci0gICAgcGFpbnQo
cGFpbnRJbmZvLCB0eCwgdHkpOworICAgIHBhaW50KHBhaW50SW5mbywgbGF5ZXJPZmZzZXQueCgp
LCBsYXllck9mZnNldC55KCkpOwogICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VDaGls
ZEJsb2NrQmFja2dyb3VuZHM7Ci0gICAgcGFpbnQocGFpbnRJbmZvLCB0eCwgdHkpOworICAgIHBh
aW50KHBhaW50SW5mbywgbGF5ZXJPZmZzZXQueCgpLCBsYXllck9mZnNldC55KCkpOwogICAgIHBh
aW50SW5mby5waGFzZSA9IFBhaW50UGhhc2VGbG9hdDsKLSAgICBwYWludChwYWludEluZm8sIHR4
LCB0eSk7CisgICAgcGFpbnQocGFpbnRJbmZvLCBsYXllck9mZnNldC54KCksIGxheWVyT2Zmc2V0
LnkoKSk7CiAgICAgcGFpbnRJbmZvLnBoYXNlID0gUGFpbnRQaGFzZUZvcmVncm91bmQ7Ci0gICAg
cGFpbnQocGFpbnRJbmZvLCB0eCwgdHkpOworICAgIHBhaW50KHBhaW50SW5mbywgbGF5ZXJPZmZz
ZXQueCgpLCBsYXllck9mZnNldC55KCkpOwogICAgIHBhaW50SW5mby5waGFzZSA9IFBhaW50UGhh
c2VPdXRsaW5lOwotICAgIHBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKKyAgICBwYWludChwYWlu
dEluZm8sIGxheWVyT2Zmc2V0LngoKSwgbGF5ZXJPZmZzZXQueSgpKTsKIH0KIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCShyZXZp
c2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUmVuZGVyU2Ny
b2xsYmFyUGFydF9oCiAjZGVmaW5lIFJlbmRlclNjcm9sbGJhclBhcnRfaAogCisjaW5jbHVkZSAi
TGF5ZXJPZmZzZXQuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlNjcm9s
bFR5cGVzLmgiCiAKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMo
KTsKICAgICAKLSAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4
LCBpbnQgdHksIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiwgTGF5ZXJPZmZzZXQsIGNvbnN0IEludFJlY3QmKTsKICAgICAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4MCw3ICs0ODAs
NyBAQCB2b2lkIFJlbmRlclRhYmxlOjpwYWludE9iamVjdChQYWludEluZm8mCiAgICAgICAgIHBh
aW50Qm94RGVjb3JhdGlvbnMocGFpbnRJbmZvLCB0eCwgdHkpOwogCiAgICAgaWYgKHBhaW50UGhh
c2UgPT0gUGFpbnRQaGFzZU1hc2spIHsKLSAgICAgICAgcGFpbnRNYXNrKHBhaW50SW5mbywgdHgs
IHR5KTsKKyAgICAgICAgcGFpbnRNYXNrKHBhaW50SW5mbywgTGF5ZXJPZmZzZXQodHgsIHR5KSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU3MywxMiArNTczLDEyIEBAIHZvaWQgUmVu
ZGVyVGFibGU6OnBhaW50Qm94RGVjb3JhdGlvbnMoUGEKICAgICAgICAgcGFpbnRCb3JkZXIocGFp
bnRJbmZvLmNvbnRleHQsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0Lmhl
aWdodCgpLCBzdHlsZSgpKTsKIH0KIAotdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRNYXNrKFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKK3ZvaWQgUmVuZGVyVGFibGU6OnBhaW50
TWFzayhQYWludEluZm8mIHBhaW50SW5mbywgTGF5ZXJPZmZzZXQgbGF5ZXJPZmZzZXQpCiB7CiAg
ICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8IHBhaW50SW5mby5waGFz
ZSAhPSBQYWludFBoYXNlTWFzaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCByZWN0
KHR4LCB0eSwgd2lkdGgoKSwgaGVpZ2h0KCkpOworICAgIEludFJlY3QgcmVjdChsYXllck9mZnNl
dC50b1BvaW50KCksIEludFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpKTsKICAgICBzdWJ0cmFjdENh
cHRpb25SZWN0KHJlY3QpOwogCiAgICAgcGFpbnRNYXNrSW1hZ2VzKHBhaW50SW5mbywgcmVjdC54
KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHJldmlzaW9uIDg2MTA3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw3
ICsyMTcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBp
bnQgdHgsIGludCB0eSk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYs
IGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQ
YWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQ
YWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQ
YWludEluZm8mLCBMYXllck9mZnNldCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwogICAgIHZpcnR1
YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBpbnQgeFBvcywgaW50IHlQb3MsIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiA4
NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBh
aW50SW5mbyYgcGFpbgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChzdHlsZSgpLT5oaWdo
bGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJs
ZWQoKSkKLSAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQodHggLSB4KCksIHR5IC0geSgpLCBz
dHlsZSgpLT5oaWdobGlnaHQoKSwgdHJ1ZSk7CisgICAgICAgIHBhaW50Q3VzdG9tSGlnaGxpZ2h0
KExheWVyT2Zmc2V0KHR4IC0geCgpLCB0eSAtIHkoKSksIHN0eWxlKCktPmhpZ2hsaWdodCgpLCB0
cnVlKTsKICNlbmRpZgogCiAgICAgaWYgKHN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lv
biA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6YWRk
SGlnaGxpZ2h0T3ZlcmZsb3cKICAgICBzZXRPdmVyZmxvd0Zyb21Mb2dpY2FsUmVjdHMoaW5mbGF0
ZWRSZWN0LCBpbmZsYXRlZFJlY3QsIGxpbmVUb3AoKSwgbGluZUJvdHRvbSgpKTsKIH0KIAotdm9p
ZCBSb290SW5saW5lQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodChQYWludEluZm8mIHBhaW50SW5m
bywgaW50IHR4LCBpbnQgdHksIGNvbnN0IEF0b21pY1N0cmluZyYgaGlnaGxpZ2h0VHlwZSkKK3Zv
aWQgUm9vdElubGluZUJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIExheWVyT2Zmc2V0IGxheWVyT2Zmc2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIGhpZ2hsaWdo
dFR5cGUpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRl
cmVyKCkpIHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFIHx8
IHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgUm9vdElubGluZUJveDo6cGFpbnRDdXN0b21IaWdo
bGlnaHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHRoZSBpbmZsYXRlZCByZWN0IHNv
IHRoYXQgd2UgY2FuIHByb3Blcmx5IGhpdCB0ZXN0LgotICAgIEZsb2F0UmVjdCByb290UmVjdCh0
eCArIHgoKSwgdHkgKyBzZWxlY3Rpb25Ub3AoKSwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhl
aWdodCgpKTsKKyAgICBGbG9hdFJlY3Qgcm9vdFJlY3QobGF5ZXJPZmZzZXQueCgpICsgeCgpLCBs
YXllck9mZnNldC55KCkgKyBzZWxlY3Rpb25Ub3AoKSwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlv
bkhlaWdodCgpKTsKICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxp
Z2h0VHlwZSwgcm9vdFJlY3QpOwogICAgIGlmIChpbmZsYXRlZFJlY3QuaW50ZXJzZWN0cyhwYWlu
dEluZm8ucmVjdCkpCiAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFpbnRDdXN0
b21IaWdobGlnaHQocmVuZGVyZXIoKS0+bm9kZSgpLCBoaWdobGlnaHRUeXBlLCByb290UmVjdCwg
cm9vdFJlY3QsIGZhbHNlLCB0cnVlKTsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFJvb3RJbmxp
bmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJlbmRl
clN0eWxlKiBzdHlsZVRvVXNlID0gcmVuZGVyZXIoKS0+c3R5bGUobV9maXJzdExpbmUpOwogICAg
IGlmIChzdHlsZVRvVXNlLT5oaWdobGlnaHQoKSAhPSBudWxsQXRvbSAmJiAhcGFpbnRJbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQo
cGFpbnRJbmZvLCB0eCwgdHksIHN0eWxlVG9Vc2UtPmhpZ2hsaWdodCgpKTsKKyAgICAgICAgcGFp
bnRDdXN0b21IaWdobGlnaHQocGFpbnRJbmZvLCBMYXllck9mZnNldCh0eCwgdHkpLCBzdHlsZVRv
VXNlLT5oaWdobGlnaHQoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5oCShyZXZpc2lvbiA4NjEwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcg
QEAgcHVibGljOgogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgYWRkSGlnaGxpZ2h0T3Zl
cmZsb3coKTsKLSAgICB2b2lkIHBhaW50Q3VzdG9tSGlnaGxpZ2h0KFBhaW50SW5mbyYsIGludCB0
eCwgaW50IHR5LCBjb25zdCBBdG9taWNTdHJpbmcmIGhpZ2hsaWdodFR5cGUpOworICAgIHZvaWQg
cGFpbnRDdXN0b21IaWdobGlnaHQoUGFpbnRJbmZvJiwgTGF5ZXJPZmZzZXQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaGlnaGxpZ2h0VHlwZSk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSwgaW50IGxpbmVUb3AsIGludCBsaW5lQm90dG9t
KTsK
</data>
<flag name="review"
          id="86135"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="86136"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>