<?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>84291</bug_id>
          
          <creation_ts>2012-04-18 15:42:31 -0700</creation_ts>
          <short_desc>[BlackBerry] MediaPlayerPrivate should not reference HTMLMediaElement directly</short_desc>
          <delta_ts>2012-11-02 12:38:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Max Feil">mfeil</reporter>
          <assigned_to name="John Griggs">jgriggs</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jgriggs</cc>
    
    <cc>jonathan.dong.webkit</cc>
    
    <cc>mifenton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>605172</commentid>
    <comment_count>0</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-04-18 15:42:31 -0700</bug_when>
    <thetext>It has been raised in https://bugs.webkit.org/show_bug.cgi?id=82930 that the BlackBerry version of MediaPlayerPrivate should not be referencing HTMLMediaElement directly. This should be done via MediaPlayer. I am creating this bug to address this concern. Here is was Eric Carlson wrote:

&quot;Particularly unfortunate, IMO, is the code that casts MediaPlayer::mediaPlayerClient() to HTMLMediaElement to make calls on the media element directly. The engine constructor is passed a MediaPlayer* so it has an opaque interface to make calls to WebCore without having to do this. The MediaPlayerClient interface can be extended if you need something from the media element or something it knows about. Adding the necessary plumbing isn&apos;t a lot of work, and once it is there other ports can use it too. For example, to allow the AVFoundation based media engine to pass the correct UA string (https://bugs.webkit.org/show_bug.cgi?id=46241) we added mediaPlayerUserAgent to MediaPlayerClient so the engine can get the media element to fetch the UA string from the loader. MediaPlayerBlackBerry apparently needed the same functionality as well, but instead casts to an HTMLMediaElement so it can get a pointer to the frame loader to call userAgent() directly. Bug 46241 would have been much easier to fix if the MediaPlayerClient plumbing had already been there&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700706</commentid>
    <comment_count>1</comment_count>
      <attachid>159679</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-21 06:44:08 -0700</bug_when>
    <thetext>Created attachment 159679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700725</commentid>
    <comment_count>2</comment_count>
      <attachid>159679</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-21 07:14:22 -0700</bug_when>
    <thetext>Comment on attachment 159679
Patch

Attachment 159679 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13545528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700767</commentid>
    <comment_count>3</comment_count>
      <attachid>159692</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-21 08:08:10 -0700</bug_when>
    <thetext>Created attachment 159692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700768</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 08:10:37 -0700</bug_when>
    <thetext>Attachment 159692 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/MediaPlayer.h:195:  Extra space before )  [whitespace/parens] [2]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700807</commentid>
    <comment_count>5</comment_count>
      <attachid>159698</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-21 08:56:32 -0700</bug_when>
    <thetext>Created attachment 159698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700910</commentid>
    <comment_count>6</comment_count>
      <attachid>159698</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-08-21 10:45:25 -0700</bug_when>
    <thetext>Comment on attachment 159698
Patch

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

Thank you for working on this! r- for now because of the relatively minor issues noted, but this is close.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4398
&gt; +    sprintf(attrString, &quot;%d&quot;, width);
&gt; +    setAttribute(widthAttr, attrString);

sprintf is unsafe so you should always use snprintf instead, but in this case you can use String::number :

    setAttribute(widthAttr, String::number(width));

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:195
&gt; +    virtual void mediaPlayerSetSize(int , int) { }

mediaPlayerContentBoxRect returns a LayoutRect, why not have this take a LayoutSize?

&gt; Source/WebCore/platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp:775
&gt; +    return m_webCorePlayer-&gt;mediaPlayerClient()-&gt;mediaPlayerOwningDocument()-&gt;view();

Accessing Document and FrameView from platform is also a layering violation. I see that you only use it to get to the HostWindow and the ClipRect, so why don&apos;t you add accessors for those instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701955</commentid>
    <comment_count>7</comment_count>
      <attachid>159946</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-22 08:38:28 -0700</bug_when>
    <thetext>Created attachment 159946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701961</commentid>
    <comment_count>8</comment_count>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-22 08:41:43 -0700</bug_when>
    <thetext>Eric - implemented all of your notes except for replacing the int arguments to mediaPlayerSetSize with a LayoutSize - there did not seem to be any point in constructing the object only to access it&apos;s individual parts (and have to cast them for type for String::number()) at the other end of the function call...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701966</commentid>
    <comment_count>9</comment_count>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-22 08:45:41 -0700</bug_when>
    <thetext>Eric - implemented all of your notes except for replacing the int arguments to mediaPlayerSetSize with a LayoutSize - there did not seem to be any point in constructing the object only to access it&apos;s individual parts (and have to cast them for type for String::number()) at the other end of the function call...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702022</commentid>
    <comment_count>10</comment_count>
      <attachid>159946</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-08-22 10:06:11 -0700</bug_when>
    <thetext>Comment on attachment 159946
Patch

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

Marking r+, but I would like to see the size methods change noted.

&gt; Source/WebCore/platform/graphics/MediaPlayer.h:196
&gt; +    virtual void mediaPlayerSetSize(int, int) { }

Every spatial &quot;setSize&quot; in WebCore (except one) takes a size class rather than a pair of unit values. Using ints is fine, but you should really pass the value as an IntSize:

    virtual void mediaPlayerSetSize(const IntSize&amp;) { }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702248</commentid>
    <comment_count>11</comment_count>
      <attachid>159946</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-22 13:14:52 -0700</bug_when>
    <thetext>Comment on attachment 159946
Patch

Adding commit-queue ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702300</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-08-22 13:53:02 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 159946 [details])
&gt; Adding commit-queue ?

Are you planning to address, or at least comment on, my request to change setSize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702324</commentid>
    <comment_count>13</comment_count>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-22 14:09:31 -0700</bug_when>
    <thetext>Sorry - I&apos;m new at this.  I assumed that the review+ meant that that would have to be handled in a separate bug.  If you want to do whatever is necessary to hold this bug, I will update the patch tomorrow.  Otherwise, feel free to open a new bug and assign to me.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702341</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-08-22 14:19:24 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Sorry - I&apos;m new at this.  I assumed that the review+ meant that that would have to be handled in a separate bug.  If you want to do whatever is necessary to hold this bug, I will update the patch tomorrow.  Otherwise, feel free to open a new bug and assign to me.  Thanks.

Because you didn&apos;t mark the patch cq? when you put it up for review I assumed that you would have someone commit it manually (if you mark a patch r? and cq? the reviewer will typically change both when reviewing). I marked it r+ with a comment to indicate that I think the rest of the patch is OK modulo the changes noted, assuming that you would make those changes before committing. 

I think it makes sense to fix this one minor issue in this patch. If you update the patch and mark r? and cq? I will change both at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702952</commentid>
    <comment_count>15</comment_count>
      <attachid>160154</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-23 07:06:56 -0700</bug_when>
    <thetext>Created attachment 160154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702954</commentid>
    <comment_count>16</comment_count>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-23 07:09:19 -0700</bug_when>
    <thetext>Eric - Thanks for your patience.  I am still learning the ropes for both WebKit and RIM procedures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702955</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 07:10:45 -0700</bug_when>
    <thetext>Attachment 160154 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/html/HTMLMediaElement.h:428:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702967</commentid>
    <comment_count>18</comment_count>
      <attachid>160157</attachid>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-23 07:32:10 -0700</bug_when>
    <thetext>Created attachment 160157
Patch - fixed style issue from previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703065</commentid>
    <comment_count>19</comment_count>
      <attachid>160157</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-08-23 09:20:17 -0700</bug_when>
    <thetext>Comment on attachment 160157
Patch - fixed style issue from previous patch

Thank you John!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703080</commentid>
    <comment_count>20</comment_count>
    <who name="John Griggs">jgriggs</who>
    <bug_when>2012-08-23 09:35:36 -0700</bug_when>
    <thetext>My pleasure!  Thank you for your patience and assistance with the proper procedures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703090</commentid>
    <comment_count>21</comment_count>
      <attachid>160157</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 09:51:58 -0700</bug_when>
    <thetext>Comment on attachment 160157
Patch - fixed style issue from previous patch

Clearing flags on attachment: 160157

Committed r126441: &lt;http://trac.webkit.org/changeset/126441&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703091</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 09:52:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757471</commentid>
    <comment_count>23</comment_count>
    <who name="Max Feil">mfeil</who>
    <bug_when>2012-11-02 12:38:39 -0700</bug_when>
    <thetext>Closing bug for patch that landed a long time ago. Thanks John!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159679</attachid>
            <date>2012-08-21 06:44:08 -0700</date>
            <delta_ts>2012-08-21 08:08:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84291-20120821094407.patch</filename>
            <type>text/plain</type>
            <size>11716</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg1MGFkOWI3YTE0NDUx
ZDU0NDE5NzBlMTBkNmJlOGQwNTQ1OTkyNS4uOTI2MzE1YjgyMWEzOTM1Zjg1MTk2MTY3ZjY3NThh
ZmQ4ZGIyNTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTIxICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gTWVkaWFQ
bGF5ZXJQcml2YXRlIHNob3VsZCBub3QgcmVmZXJlbmNlIEhUTUxNZWRpYUVsZW1lbnQgZGlyZWN0
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mjkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBSZW1vdmUg
bGF5ZXIgdmlvbGF0aW9ucyBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkgdG8gSFRN
TE1lZGlhRWxlbWVudCBhbmQgcmVwbGFjZSB0aGVtIHdpdGggbWV0aG9kcyBpbiBNZWRpYVBsYXll
ckNsaWVudAorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIChjb2Rpbmcgc3RhbmRhcmQg
Y29tcGxpYW5jZSkgLSB0ZXN0IG5vdCByZXF1aXJlZC4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ29udGVudEJveFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNQYXVzZWQpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcklzVmlkZW8p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyQ29udGVu
dEJveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyU2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQ
bGF5ZXJQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQ
bGF5ZXJQbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBs
YXllcklzUGF1c2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01l
ZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5ZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZTo6cmVzaXplU291cmNlRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpvblBsYXlOb3RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OmlzRWxlbWVudFBhdXNlZCk6CisKIDIwMTItMDgtMjAgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92ZSBTdHJp
bmcgcmVsYXRlZCBjb2RlIGluIFY4QmluZGluZyB0byBhIHNlcGFyYXRlIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGZhZGNmZTdjNjkzNGNmMzZhYzFj
NzBiOGEzZDhkY2JjZTExZjMzZGIuLjMwNWIxZTdhNDNmZDQxNzEyOGY0MDNhZWVhNDU3OWRhNjMy
NjUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDM3
Myw2ICs0MzczLDQ5IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRvY3Vt
ZW50SG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCktPnVybCgpLmhvc3QoKTsKIH0K
IAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCkKK3sK
KyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVySXNWaWRlbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzVmlkZW8oKTsKK30KKworTGF5
b3V0UmVjdCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkgY29u
c3QKK3sKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmVu
Y2xvc2luZ0JveCgpLT5jb250ZW50Qm94UmVjdCgpOworICAgIHJldHVybiBMYXlvdXRSZWN0KCk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKGludCB3aWR0
aCwgaW50IGhlaWdodCkKK3sKKyAgICBjaGFyIGF0dHJTdHJpbmdbMTJdOworCisgICAgc3ByaW50
ZihhdHRyU3RyaW5nLCAiJWQiLCB3aWR0aCk7CisgICAgc2V0QXR0cmlidXRlKHdpZHRoQXR0ciwg
YXR0clN0cmluZyk7CisKKyAgICBzcHJpbnRmKGF0dHJTdHJpbmcsICIlZCIsIGhlaWdodCk7Cisg
ICAgc2V0QXR0cmlidXRlKGhlaWdodEF0dHIsIGF0dHJTdHJpbmcpOworfQorCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UoKQoreworICAgIHBhdXNlKCk7Cit9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5KCkKK3sKKyAgICBwbGF5KCk7Cit9
CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHBhdXNlZCgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpCiB7CiAgICAgbV9y
ZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggZGExMDJhNmQyOTBjNWYyMzFlYzc4ZTgwMmIxNzFhMzZhOTcyYjc5Mi4u
Yjc5ZmVjN2ZlNjdjNzQ4NWYwY2UzMmE4ZWExMjY3MDk2ZjFiZTg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQyMiw2ICs0MjIsMTQgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBj
b25zdCBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckV4aXRGdWxsc2Ny
ZWVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNWaWRlbygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBtZWRpYVBsYXllckNvbnRlbnRC
b3hSZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2V0
U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllclBhdXNlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
UGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4
IGRlNjkyMjI3YzI3YzBhOTM4NjU1ODc3ZjlkYThjZjQwYmZmYTFmM2UuLjMzNDEyZjIwMWZjYTFk
NjMzZWEyNWNkNTU5ZTY5MzM0ZmE4NjMzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMTg5LDYgKzE4OSwxMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJD
T1JTTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQ
bGF5ZXJJc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIExheW91
dFJlY3QgbWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJl
Y3QoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNldFNpemUoaW50IHdpZHRoLCBp
bnQgaGVpZ2h0KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQYXVzZSgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclBsYXkoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
bWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNz
IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tC
ZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01l
ZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4IGRjNDQ1YTUxYTNkYWJiZDEyMzll
YTljNDQ4ODM4YWViZTYwM2EyYzUuLjUzNDc4MDcxMDQ2ZWNkNjc5ODVhOWMxNmU5MTJlY2Q5YzY4
MmNhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0Jl
cnJ5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhvc3RX
aW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMTIwLDggKzExOSw3IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5
ZXIpCiBNZWRpYVBsYXllclByaXZhdGU6On5NZWRpYVBsYXllclByaXZhdGUoKQogewogICAgIGlm
IChpc0Z1bGxzY3JlZW4oKSkgewotICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0g
c3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5
ZXJDbGllbnQoKSk7Ci0gICAgICAgIGVsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
IG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJFeGl0RnVs
bHNjcmVlbigpOwogICAgIH0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAg
Ly8gUmVtb3ZlIG1lZGlhIHBsYXllciBmcm9tIHBsYXRmb3JtIGxheWVyLgpAQCAtMzkyLDE4ICsz
OTAsMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJlc2l6ZVNvdXJjZURpbWVuc2lvbnMo
KQogICAgIGlmICghbV93ZWJDb3JlUGxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1M
TWVkaWFFbGVtZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93
ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKTsKLQotICAgIGlmICghY2xpZW50IHx8
ICFjbGllbnQtPmlzVmlkZW8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVuZGVyT2JqZWN0
KiBvID0gY2xpZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghbykKKyAgICBpZiAoIW1fd2ViQ29y
ZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJJc1ZpZGVvKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlIGhhdmUgYW4gSFRNTFZpZGVvRWxlbWVudCBidXQg
dGhlIHNvdXJjZSBoYXMgbm8gdmlkZW8sIHRoZW4gd2UgbmVlZCB0byByZXNpemUgdGhlIG1lZGlh
IGVsZW1lbnQuCiAgICAgaWYgKCFoYXNWaWRlbygpKSB7Ci0gICAgICAgIEludFJlY3QgcmVjdCA9
IG8tPmVuY2xvc2luZ0JveCgpLT5jb250ZW50Qm94UmVjdCgpOworICAgICAgICBMYXlvdXRSZWN0
IHJlY3QgPSBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVy
Q29udGVudEJveFJlY3QoKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBsYXlib29rTWlu
QXVkaW9FbGVtZW50V2lkdGggPSAzMDA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgcGxheWJv
b2tNaW5BdWRpb0VsZW1lbnRIZWlnaHQgPSAzMjsKQEAgLTQxMSwxOSArNDAzLDEzIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpyZXNpemVTb3VyY2VEaW1lbnNpb25zKCkKICAgICAgICAgaW50
IG5ld1dpZHRoID0gbWF4KHJlY3Qud2lkdGgoKSwgcGxheWJvb2tNaW5BdWRpb0VsZW1lbnRXaWR0
aCk7CiAgICAgICAgIGludCBuZXdIZWlnaHQgPSBtYXgocmVjdC5oZWlnaHQoKSwgcGxheWJvb2tN
aW5BdWRpb0VsZW1lbnRIZWlnaHQpOwogCi0gICAgICAgIGNoYXIgYXR0clN0cmluZ1sxMl07Ci0K
LSAgICAgICAgc3ByaW50ZihhdHRyU3RyaW5nLCAiJWQiLCBuZXdXaWR0aCk7Ci0gICAgICAgIGNs
aWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBhdHRyU3RyaW5nKTsKLQot
ICAgICAgICBzcHJpbnRmKGF0dHJTdHJpbmcsICIlZCIsIG5ld0hlaWdodCk7Ci0gICAgICAgIGNs
aWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwgYXR0clN0cmluZyk7Cisg
ICAgICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJT
ZXRTaXplKG5ld1dpZHRoLCBuZXdIZWlnaHQpOwogICAgIH0KIAogICAgIC8vIElmIHdlIGRvbid0
IGtub3cgd2hhdCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgdmlkZW8gc291cmNlIGlzLCB0
aGVuIHdlIG5lZWQgdG8gc2V0IGl0IHRvIHNvbWV0aGluZyBzYW5lLgogICAgIGlmIChtX3BsYXRm
b3JtUGxheWVyLT5zb3VyY2VXaWR0aCgpICYmIG1fcGxhdGZvcm1QbGF5ZXItPnNvdXJjZUhlaWdo
dCgpKQogICAgICAgICByZXR1cm47Ci0gICAgSW50UmVjdCByZWN0ID0gby0+ZW5jbG9zaW5nQm94
KCktPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gbV93ZWJDb3JlUGxh
eWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCk7CiAg
ICAgbV9wbGF0Zm9ybVBsYXllci0+c2V0U291cmNlRGltZW5zaW9uKHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSk7CiB9CiAKQEAgLTUwNCw4ICs0OTAsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6dXBkYXRlU3RhdGVzKCkKIAogICAgIFBsYXRmb3JtUGxheWVyOjpFcnJvciBjdXJyZW50
RXJyb3IgPSBtX3BsYXRmb3JtUGxheWVyLT5lcnJvcigpOwogCi0gICAgSFRNTE1lZGlhRWxlbWVu
dCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5
ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotCiAgICAgaWYgKGN1cnJlbnRFcnJvciAhPSBQbGF0
Zm9ybVBsYXllcjo6TWVkaWFPSykgewogICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIGlmIChjdXJyZW50RXJyb3IgPT0gUGxhdGZvcm1QbGF5
ZXI6Ok1lZGlhRGVjb2RlRXJyb3IpCkBAIC01NDIsNyArNTI2LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
ICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5leGl0RnVs
bHNjcmVlbigpOworICAgICAgICAgICAgICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJD
bGllbnQoKS0+bWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUGxhdGZvcm1QbGF5ZXI6Ok1QX1NUQVRFX0FDVElWRToKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC02MDEsMTUgKzU4NSwxNCBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6b25QYXVzZVN0YXRlQ2hhbmdlZCgpCiAgICAgaWYgKCFpc0Z1bGxzY3Jl
ZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxh
eWVyQ2xpZW50KCkpOwogICAgIC8vIFBhdXNlZCBzdGF0ZSBjaGFuZ2Ugbm90IGR1ZSB0byBsb2Nh
bCBjb250cm9sbGVyLgogICAgIGlmIChtX3BsYXRmb3JtUGxheWVyLT5pc1BhdXNlZCgpKQotICAg
ICAgICBlbGVtZW50LT5wYXVzZSgpOworICAgICAgICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxh
eWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUGF1c2UoKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8g
VGhlIEhNSSBmdWxsc2NyZWVuIHdpZGdldCBoYXMgcmVzdW1lZCBwbGF5LiBDaGVjayBpZiB0aGUK
ICAgICAgICAgLy8gcGF1c2UgdGltZW91dCBvY2N1cnJlZC4KICAgICAgICAgbV9wbGF0Zm9ybVBs
YXllci0+cHJvY2Vzc1BhdXNlVGltZW91dElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGVsZW1lbnQt
PnBsYXkoKTsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5t
ZWRpYVBsYXllclBsYXkoKTsKICAgICB9CiB9CiAKQEAgLTYzNywxNCArNjIwLDEyIEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpvblNpemVDaGFuZ2VkKCkKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGU6Om9uUGxheU5vdGlmaWVkKCkKIHsKLSAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1l
ZGlhUGxheWVyQ2xpZW50KCkpKQotICAgICAgICBlbGVtZW50LT5wbGF5KCk7CisgICAgbV93ZWJD
b3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclBsYXkoKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCgpCiB7Ci0gICAgaWYgKEhU
TUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4o
bV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKSkKLSAgICAgICAgZWxlbWVudC0+
cGF1c2UoKTsKKyAgICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlh
UGxheWVyUGF1c2UoKTsKIH0KIAogc3RhdGljIGNvbnN0IGludCBwb3B1cERpYWxvZ0ludGVydmFs
ID0gMTA7CkBAIC03OTEsOCArNzcyLDcgQEAgRnJhbWVWaWV3KiBNZWRpYVBsYXllclByaXZhdGU6
OmZyYW1lVmlldygpIGNvbnN0CiAgICAgLy8gaXQgbWF5IGJlIHNldCB0byB6ZXJvIGJ5IHRoZSBk
ZXN0cnVjdG9yIGluIFJlbmRlclZpZGVvLmNwcCBiZWZvcmUKICAgICAvLyBvdXIgZGVzdHJ1Y3Rv
ciBpcyBjYWxsZWQsIGxlYXZpbmcgdXMgdW5hYmxlIHRvIGNsZWFuIHVwIGNoaWxkIHdpbmRvd3MK
ICAgICAvLyBpbiBtbXJEaXNjb25uZWN0KS4KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fd2ViQ29yZVBsYXllci0+bWVkaWFQ
bGF5ZXJDbGllbnQoKSk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmRvY3VtZW50KCktPnZpZXcoKTsK
KyAgICByZXR1cm4gbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBs
YXllck93bmluZ0RvY3VtZW50KCktPnZpZXcoKTsKIH0KIAogQmxhY2tCZXJyeTo6UGxhdGZvcm06
OkdyYXBoaWNzOjpXaW5kb3cqIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGxhdGZvcm1XaW5kb3coKQpA
QCAtODA5LDEwICs3ODksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aXNGdWxsc2NyZWVu
KCkgY29uc3QKIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzRWxlbWVudFBhdXNlZCgpIGNv
bnN0CiB7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxN
ZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotICAg
IGlmICghZWxlbWVudCB8fCBlbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxh
eWVyQ2xpZW50KCktPm1lZGlhUGxheWVySXNQYXVzZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXll
clByaXZhdGU6OmlzVGFiVmlzaWJsZSgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159692</attachid>
            <date>2012-08-21 08:08:10 -0700</date>
            <delta_ts>2012-08-21 08:56:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84291-20120821110810.patch</filename>
            <type>text/plain</type>
            <size>11705</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg1MGFkOWI3YTE0NDUx
ZDU0NDE5NzBlMTBkNmJlOGQwNTQ1OTkyNS4uOTI2MzE1YjgyMWEzOTM1Zjg1MTk2MTY3ZjY3NThh
ZmQ4ZGIyNTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTIxICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gTWVkaWFQ
bGF5ZXJQcml2YXRlIHNob3VsZCBub3QgcmVmZXJlbmNlIEhUTUxNZWRpYUVsZW1lbnQgZGlyZWN0
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mjkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBSZW1vdmUg
bGF5ZXIgdmlvbGF0aW9ucyBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkgdG8gSFRN
TE1lZGlhRWxlbWVudCBhbmQgcmVwbGFjZSB0aGVtIHdpdGggbWV0aG9kcyBpbiBNZWRpYVBsYXll
ckNsaWVudAorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIChjb2Rpbmcgc3RhbmRhcmQg
Y29tcGxpYW5jZSkgLSB0ZXN0IG5vdCByZXF1aXJlZC4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ29udGVudEJveFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNQYXVzZWQpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcklzVmlkZW8p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyQ29udGVu
dEJveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyU2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQ
bGF5ZXJQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQ
bGF5ZXJQbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBs
YXllcklzUGF1c2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01l
ZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5ZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZTo6cmVzaXplU291cmNlRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpvblBsYXlOb3RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OmlzRWxlbWVudFBhdXNlZCk6CisKIDIwMTItMDgtMjAgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92ZSBTdHJp
bmcgcmVsYXRlZCBjb2RlIGluIFY4QmluZGluZyB0byBhIHNlcGFyYXRlIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGZhZGNmZTdjNjkzNGNmMzZhYzFj
NzBiOGEzZDhkY2JjZTExZjMzZGIuLjMwNWIxZTdhNDNmZDQxNzEyOGY0MDNhZWVhNDU3OWRhNjMy
NjUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDM3
Myw2ICs0MzczLDQ5IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRvY3Vt
ZW50SG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCktPnVybCgpLmhvc3QoKTsKIH0K
IAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCkKK3sK
KyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVySXNWaWRlbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzVmlkZW8oKTsKK30KKworTGF5
b3V0UmVjdCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkgY29u
c3QKK3sKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmVu
Y2xvc2luZ0JveCgpLT5jb250ZW50Qm94UmVjdCgpOworICAgIHJldHVybiBMYXlvdXRSZWN0KCk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKGludCB3aWR0
aCwgaW50IGhlaWdodCkKK3sKKyAgICBjaGFyIGF0dHJTdHJpbmdbMTJdOworCisgICAgc3ByaW50
ZihhdHRyU3RyaW5nLCAiJWQiLCB3aWR0aCk7CisgICAgc2V0QXR0cmlidXRlKHdpZHRoQXR0ciwg
YXR0clN0cmluZyk7CisKKyAgICBzcHJpbnRmKGF0dHJTdHJpbmcsICIlZCIsIGhlaWdodCk7Cisg
ICAgc2V0QXR0cmlidXRlKGhlaWdodEF0dHIsIGF0dHJTdHJpbmcpOworfQorCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UoKQoreworICAgIHBhdXNlKCk7Cit9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5KCkKK3sKKyAgICBwbGF5KCk7Cit9
CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHBhdXNlZCgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpCiB7CiAgICAgbV9y
ZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggZGExMDJhNmQyOTBjNWYyMzFlYzc4ZTgwMmIxNzFhMzZhOTcyYjc5Mi4u
Yjc5ZmVjN2ZlNjdjNzQ4NWYwY2UzMmE4ZWExMjY3MDk2ZjFiZTg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQyMiw2ICs0MjIsMTQgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBj
b25zdCBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckV4aXRGdWxsc2Ny
ZWVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNWaWRlbygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBtZWRpYVBsYXllckNvbnRlbnRC
b3hSZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2V0
U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllclBhdXNlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
UGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4
IGRlNjkyMjI3YzI3YzBhOTM4NjU1ODc3ZjlkYThjZjQwYmZmYTFmM2UuLjc1OTA2ODIxMmYxYWEy
MzQzOGQxMzIyNzE3MjgxODAzMGNhNDQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMTg5LDYgKzE4OSwxMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJD
T1JTTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQ
bGF5ZXJJc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIExheW91
dFJlY3QgbWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJl
Y3QoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNldFNpemUoaW50ICwgaW50ICkg
eyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGF1c2UoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbWVkaWFQbGF5ZXJQbGF5KCkgeyB9CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVy
SXNQYXVzZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBjbGFzcyBNZWRpYVBsYXll
clN1cHBvcnRzVHlwZUNsaWVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclBy
aXZhdGVCbGFja0JlcnJ5LmNwcAppbmRleCBkYzQ0NWE1MWEzZGFiYmQxMjM5ZWE5YzQ0ODgzOGFl
YmU2MDNhMmM1Li41MzQ3ODA3MTA0NmVjZDY3OTg1YTljMTZlOTEyZWNkOWM2ODJjYTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlh
UGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKQEAg
LTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTEyMCw4ICsxMTksNyBAQCBNZWRpYVBsYXll
clByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQogTWVkaWFQ
bGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5ZXJQcml2YXRlKCkKIHsKICAgICBpZiAoaXNGdWxsc2Ny
ZWVuKCkpIHsKLSAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkp
OwotICAgICAgICBlbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBtX3dlYkNvcmVQ
bGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKTsK
ICAgICB9CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFJlbW92ZSBt
ZWRpYSBwbGF5ZXIgZnJvbSBwbGF0Zm9ybSBsYXllci4KQEAgLTM5MiwxOCArMzkwLDEyIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpyZXNpemVTb3VyY2VEaW1lbnNpb25zKCkKICAgICBpZiAo
IW1fd2ViQ29yZVBsYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTE1lZGlhRWxlbWVu
dCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fd2ViQ29yZVBsYXll
ci0+bWVkaWFQbGF5ZXJDbGllbnQoKSk7Ci0KLSAgICBpZiAoIWNsaWVudCB8fCAhY2xpZW50LT5p
c1ZpZGVvKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlbmRlck9iamVjdCogbyA9IGNsaWVu
dC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIW8pCisgICAgaWYgKCFtX3dlYkNvcmVQbGF5ZXItPm1l
ZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySXNWaWRlbygpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIEhUTUxWaWRlb0VsZW1lbnQgYnV0IHRoZSBzb3VyY2Ug
aGFzIG5vIHZpZGVvLCB0aGVuIHdlIG5lZWQgdG8gcmVzaXplIHRoZSBtZWRpYSBlbGVtZW50Lgog
ICAgIGlmICghaGFzVmlkZW8oKSkgewotICAgICAgICBJbnRSZWN0IHJlY3QgPSBvLT5lbmNsb3Np
bmdCb3goKS0+Y29udGVudEJveFJlY3QoKTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gbV93
ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckNvbnRlbnRCb3hS
ZWN0KCk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBwbGF5Ym9va01pbkF1ZGlvRWxlbWVu
dFdpZHRoID0gMzAwOwogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBsYXlib29rTWluQXVkaW9F
bGVtZW50SGVpZ2h0ID0gMzI7CkBAIC00MTEsMTkgKzQwMywxMyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZTo6cmVzaXplU291cmNlRGltZW5zaW9ucygpCiAgICAgICAgIGludCBuZXdXaWR0aCA9
IG1heChyZWN0LndpZHRoKCksIHBsYXlib29rTWluQXVkaW9FbGVtZW50V2lkdGgpOwogICAgICAg
ICBpbnQgbmV3SGVpZ2h0ID0gbWF4KHJlY3QuaGVpZ2h0KCksIHBsYXlib29rTWluQXVkaW9FbGVt
ZW50SGVpZ2h0KTsKIAotICAgICAgICBjaGFyIGF0dHJTdHJpbmdbMTJdOwotCi0gICAgICAgIHNw
cmludGYoYXR0clN0cmluZywgIiVkIiwgbmV3V2lkdGgpOwotICAgICAgICBjbGllbnQtPnNldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OndpZHRoQXR0ciwgYXR0clN0cmluZyk7Ci0KLSAgICAgICAgc3By
aW50ZihhdHRyU3RyaW5nLCAiJWQiLCBuZXdIZWlnaHQpOwotICAgICAgICBjbGllbnQtPnNldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIsIGF0dHJTdHJpbmcpOworICAgICAgICBtX3dl
YkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyU2V0U2l6ZShuZXdX
aWR0aCwgbmV3SGVpZ2h0KTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBkb24ndCBrbm93IHdoYXQg
dGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHZpZGVvIHNvdXJjZSBpcywgdGhlbiB3ZSBuZWVk
IHRvIHNldCBpdCB0byBzb21ldGhpbmcgc2FuZS4KICAgICBpZiAobV9wbGF0Zm9ybVBsYXllci0+
c291cmNlV2lkdGgoKSAmJiBtX3BsYXRmb3JtUGxheWVyLT5zb3VyY2VIZWlnaHQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIEludFJlY3QgcmVjdCA9IG8tPmVuY2xvc2luZ0JveCgpLT5jb250ZW50
Qm94UmVjdCgpOworICAgIExheW91dFJlY3QgcmVjdCA9IG1fd2ViQ29yZVBsYXllci0+bWVkaWFQ
bGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpOwogICAgIG1fcGxhdGZv
cm1QbGF5ZXItPnNldFNvdXJjZURpbWVuc2lvbihyZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkp
OwogfQogCkBAIC01MDQsOCArNDkwLDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0
ZVN0YXRlcygpCiAKICAgICBQbGF0Zm9ybVBsYXllcjo6RXJyb3IgY3VycmVudEVycm9yID0gbV9w
bGF0Zm9ybVBsYXllci0+ZXJyb3IoKTsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBs
YXllckNsaWVudCgpKTsKLQogICAgIGlmIChjdXJyZW50RXJyb3IgIT0gUGxhdGZvcm1QbGF5ZXI6
Ok1lZGlhT0spIHsKICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3Ro
aW5nOwogICAgICAgICBpZiAoY3VycmVudEVycm9yID09IFBsYXRmb3JtUGxheWVyOjpNZWRpYURl
Y29kZUVycm9yKQpAQCAtNTQyLDcgKzUyNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1
cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBpZiAoaXNG
dWxsc2NyZWVuKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsK
KyAgICAgICAgICAgICAgICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1l
ZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFBsYXRmb3JtUGxheWVyOjpNUF9TVEFURV9BQ1RJVkU6CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpAQCAtNjAxLDE1ICs1ODUsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGU6Om9uUGF1c2VTdGF0ZUNoYW5nZWQoKQogICAgIGlmICghaXNGdWxsc2NyZWVuKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgp
KTsKICAgICAvLyBQYXVzZWQgc3RhdGUgY2hhbmdlIG5vdCBkdWUgdG8gbG9jYWwgY29udHJvbGxl
ci4KICAgICBpZiAobV9wbGF0Zm9ybVBsYXllci0+aXNQYXVzZWQoKSkKLSAgICAgICAgZWxlbWVu
dC0+cGF1c2UoKTsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgp
LT5tZWRpYVBsYXllclBhdXNlKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoZSBITUkgZnVs
bHNjcmVlbiB3aWRnZXQgaGFzIHJlc3VtZWQgcGxheS4gQ2hlY2sgaWYgdGhlCiAgICAgICAgIC8v
IHBhdXNlIHRpbWVvdXQgb2NjdXJyZWQuCiAgICAgICAgIG1fcGxhdGZvcm1QbGF5ZXItPnByb2Nl
c3NQYXVzZVRpbWVvdXRJZk5lY2Vzc2FyeSgpOwotICAgICAgICBlbGVtZW50LT5wbGF5KCk7Cisg
ICAgICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJQ
bGF5KCk7CiAgICAgfQogfQogCkBAIC02MzcsMTQgKzYyMCwxMiBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZTo6b25TaXplQ2hhbmdlZCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvblBs
YXlOb3RpZmllZCgpCiB7Ci0gICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNs
aWVudCgpKSkKLSAgICAgICAgZWxlbWVudC0+cGxheSgpOworICAgIG1fd2ViQ29yZVBsYXllci0+
bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJQbGF5KCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlOjpvblBhdXNlTm90aWZpZWQoKQogewotICAgIGlmIChIVE1MTWVkaWFFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fd2ViQ29yZVBs
YXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKSkpCi0gICAgICAgIGVsZW1lbnQtPnBhdXNlKCk7Cisg
ICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclBhdXNl
KCk7CiB9CiAKIHN0YXRpYyBjb25zdCBpbnQgcG9wdXBEaWFsb2dJbnRlcnZhbCA9IDEwOwpAQCAt
NzkxLDggKzc3Miw3IEBAIEZyYW1lVmlldyogTWVkaWFQbGF5ZXJQcml2YXRlOjpmcmFtZVZpZXco
KSBjb25zdAogICAgIC8vIGl0IG1heSBiZSBzZXQgdG8gemVybyBieSB0aGUgZGVzdHJ1Y3RvciBp
biBSZW5kZXJWaWRlby5jcHAgYmVmb3JlCiAgICAgLy8gb3VyIGRlc3RydWN0b3IgaXMgY2FsbGVk
LCBsZWF2aW5nIHVzIHVuYWJsZSB0byBjbGVhbiB1cCBjaGlsZCB3aW5kb3dzCiAgICAgLy8gaW4g
bW1yRGlzY29ubmVjdCkuCi0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19j
YXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50
KCkpOwotICAgIHJldHVybiBlbGVtZW50LT5kb2N1bWVudCgpLT52aWV3KCk7CisgICAgcmV0dXJu
IG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJPd25pbmdE
b2N1bWVudCgpLT52aWV3KCk7CiB9CiAKIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6
V2luZG93KiBNZWRpYVBsYXllclByaXZhdGU6OnBsYXRmb3JtV2luZG93KCkKQEAgLTgwOSwxMCAr
Nzg5LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzRnVsbHNjcmVlbigpIGNvbnN0CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjppc0VsZW1lbnRQYXVzZWQoKSBjb25zdAogewotICAg
IEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50
Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKTsKLSAgICBpZiAoIWVsZW1l
bnQgfHwgZWxlbWVudC0+cGF1c2VkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgp
LT5tZWRpYVBsYXllcklzUGF1c2VkKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpp
c1RhYlZpc2libGUoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159698</attachid>
            <date>2012-08-21 08:56:32 -0700</date>
            <delta_ts>2012-08-22 08:38:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84291-20120821115631.patch</filename>
            <type>text/plain</type>
            <size>11704</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg1MGFkOWI3YTE0NDUx
ZDU0NDE5NzBlMTBkNmJlOGQwNTQ1OTkyNS4uOTI2MzE1YjgyMWEzOTM1Zjg1MTk2MTY3ZjY3NThh
ZmQ4ZGIyNTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTA4LTIxICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gTWVkaWFQ
bGF5ZXJQcml2YXRlIHNob3VsZCBub3QgcmVmZXJlbmNlIEhUTUxNZWRpYUVsZW1lbnQgZGlyZWN0
bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0Mjkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBSZW1vdmUg
bGF5ZXIgdmlvbGF0aW9ucyBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkgdG8gSFRN
TE1lZGlhRWxlbWVudCBhbmQgcmVwbGFjZSB0aGVtIHdpdGggbWV0aG9kcyBpbiBNZWRpYVBsYXll
ckNsaWVudAorCisgICAgICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIChjb2Rpbmcgc3RhbmRhcmQg
Y29tcGxpYW5jZSkgLSB0ZXN0IG5vdCByZXF1aXJlZC4KKworICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ29udGVudEJveFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNQYXVzZWQpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcklzVmlkZW8p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyQ29udGVu
dEJveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyU2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQ
bGF5ZXJQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQ
bGF5ZXJQbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBs
YXllcklzUGF1c2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01l
ZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5ZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZTo6cmVzaXplU291cmNlRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpvblBsYXlOb3RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OmlzRWxlbWVudFBhdXNlZCk6CisKIDIwMTItMDgtMjAgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92ZSBTdHJp
bmcgcmVsYXRlZCBjb2RlIGluIFY4QmluZGluZyB0byBhIHNlcGFyYXRlIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGZhZGNmZTdjNjkzNGNmMzZhYzFj
NzBiOGEzZDhkY2JjZTExZjMzZGIuLjMwNWIxZTdhNDNmZDQxNzEyOGY0MDNhZWVhNDU3OWRhNjMy
NjUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDM3
Myw2ICs0MzczLDQ5IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRvY3Vt
ZW50SG9zdCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCktPnVybCgpLmhvc3QoKTsKIH0K
IAordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCkKK3sK
KyAgICBleGl0RnVsbHNjcmVlbigpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVySXNWaWRlbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzVmlkZW8oKTsKK30KKworTGF5
b3V0UmVjdCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkgY29u
c3QKK3sKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmVu
Y2xvc2luZ0JveCgpLT5jb250ZW50Qm94UmVjdCgpOworICAgIHJldHVybiBMYXlvdXRSZWN0KCk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKGludCB3aWR0
aCwgaW50IGhlaWdodCkKK3sKKyAgICBjaGFyIGF0dHJTdHJpbmdbMTJdOworCisgICAgc3ByaW50
ZihhdHRyU3RyaW5nLCAiJWQiLCB3aWR0aCk7CisgICAgc2V0QXR0cmlidXRlKHdpZHRoQXR0ciwg
YXR0clN0cmluZyk7CisKKyAgICBzcHJpbnRmKGF0dHJTdHJpbmcsICIlZCIsIGhlaWdodCk7Cisg
ICAgc2V0QXR0cmlidXRlKGhlaWdodEF0dHIsIGF0dHJTdHJpbmcpOworfQorCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UoKQoreworICAgIHBhdXNlKCk7Cit9CisKK3Zv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5KCkKK3sKKyAgICBwbGF5KCk7Cit9
CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHBhdXNlZCgpOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZUJlaGF2aW9yc1Jlc3RyaWN0aW9uc0FmdGVyRmlyc3RVc2VyR2VzdHVyZSgpCiB7CiAgICAgbV9y
ZXN0cmljdGlvbnMgPSBOb1Jlc3RyaWN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggZGExMDJhNmQyOTBjNWYyMzFlYzc4ZTgwMmIxNzFhMzZhOTcyYjc5Mi4u
Yjc5ZmVjN2ZlNjdjNzQ4NWYwY2UzMmE4ZWExMjY3MDk2ZjFiZTg0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQyMiw2ICs0MjIsMTQgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBj
b25zdCBPVkVSUklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckV4aXRGdWxsc2Ny
ZWVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNWaWRlbygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBtZWRpYVBsYXllckNvbnRlbnRC
b3hSZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2V0
U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllclBhdXNlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
UGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkg
Y29uc3QgT1ZFUlJJREU7CisKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04p
CiAgICAgdmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4
IGRlNjkyMjI3YzI3YzBhOTM4NjU1ODc3ZjlkYThjZjQwYmZmYTFmM2UuLjI3ODUzY2RjYmFmMTc1
OTJjY2I3ZjYzMWNlNmM3OWMzMTUwZjI3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMTg5LDYgKzE4OSwxMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIFN0
cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJVc2VyQWdlbnQoKSBjb25z
dCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgQ09SU01vZGUgbWVkaWFQbGF5ZXJD
T1JTTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQ
bGF5ZXJJc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIExheW91
dFJlY3QgbWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJl
Y3QoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNldFNpemUoaW50ICwgaW50KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQYXVzZSgpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBtZWRpYVBsYXllclBsYXkoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJ
c1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVy
U3VwcG9ydHNUeXBlQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJp
dmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4IGRjNDQ1YTUxYTNkYWJiZDEyMzllYTljNDQ4ODM4YWVi
ZTYwM2EyYzUuLjUzNDc4MDcxMDQ2ZWNkNjc5ODVhOWMxNmU5MTJlY2Q5YzY4MmNhMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQ
bGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAt
MjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgpAQCAtMTIwLDggKzExOSw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiBNZWRpYVBs
YXllclByaXZhdGU6On5NZWRpYVBsYXllclByaXZhdGUoKQogewogICAgIGlmIChpc0Z1bGxzY3Jl
ZW4oKSkgewotICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTE1lZGlhRWxlbWVudCo+KG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKSk7
Ci0gICAgICAgIGVsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIG1fd2ViQ29yZVBs
YXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwog
ICAgIH0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gUmVtb3ZlIG1l
ZGlhIHBsYXllciBmcm9tIHBsYXRmb3JtIGxheWVyLgpAQCAtMzkyLDE4ICszOTAsMTIgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6OnJlc2l6ZVNvdXJjZURpbWVuc2lvbnMoKQogICAgIGlmICgh
bV93ZWJDb3JlUGxheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50
KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxheWVy
LT5tZWRpYVBsYXllckNsaWVudCgpKTsKLQotICAgIGlmICghY2xpZW50IHx8ICFjbGllbnQtPmlz
VmlkZW8oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVuZGVyT2JqZWN0KiBvID0gY2xpZW50
LT5yZW5kZXJlcigpOwotICAgIGlmICghbykKKyAgICBpZiAoIW1fd2ViQ29yZVBsYXllci0+bWVk
aWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJJc1ZpZGVvKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIElmIHdlIGhhdmUgYW4gSFRNTFZpZGVvRWxlbWVudCBidXQgdGhlIHNvdXJjZSBo
YXMgbm8gdmlkZW8sIHRoZW4gd2UgbmVlZCB0byByZXNpemUgdGhlIG1lZGlhIGVsZW1lbnQuCiAg
ICAgaWYgKCFoYXNWaWRlbygpKSB7Ci0gICAgICAgIEludFJlY3QgcmVjdCA9IG8tPmVuY2xvc2lu
Z0JveCgpLT5jb250ZW50Qm94UmVjdCgpOworICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBtX3dl
YkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyQ29udGVudEJveFJl
Y3QoKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgaW50IHBsYXlib29rTWluQXVkaW9FbGVtZW50
V2lkdGggPSAzMDA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgcGxheWJvb2tNaW5BdWRpb0Vs
ZW1lbnRIZWlnaHQgPSAzMjsKQEAgLTQxMSwxOSArNDAzLDEzIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpyZXNpemVTb3VyY2VEaW1lbnNpb25zKCkKICAgICAgICAgaW50IG5ld1dpZHRoID0g
bWF4KHJlY3Qud2lkdGgoKSwgcGxheWJvb2tNaW5BdWRpb0VsZW1lbnRXaWR0aCk7CiAgICAgICAg
IGludCBuZXdIZWlnaHQgPSBtYXgocmVjdC5oZWlnaHQoKSwgcGxheWJvb2tNaW5BdWRpb0VsZW1l
bnRIZWlnaHQpOwogCi0gICAgICAgIGNoYXIgYXR0clN0cmluZ1sxMl07Ci0KLSAgICAgICAgc3By
aW50ZihhdHRyU3RyaW5nLCAiJWQiLCBuZXdXaWR0aCk7Ci0gICAgICAgIGNsaWVudC0+c2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBhdHRyU3RyaW5nKTsKLQotICAgICAgICBzcHJp
bnRmKGF0dHJTdHJpbmcsICIlZCIsIG5ld0hlaWdodCk7Ci0gICAgICAgIGNsaWVudC0+c2V0QXR0
cmlidXRlKEhUTUxOYW1lczo6aGVpZ2h0QXR0ciwgYXR0clN0cmluZyk7CisgICAgICAgIG1fd2Vi
Q29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJTZXRTaXplKG5ld1dp
ZHRoLCBuZXdIZWlnaHQpOwogICAgIH0KIAogICAgIC8vIElmIHdlIGRvbid0IGtub3cgd2hhdCB0
aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgdmlkZW8gc291cmNlIGlzLCB0aGVuIHdlIG5lZWQg
dG8gc2V0IGl0IHRvIHNvbWV0aGluZyBzYW5lLgogICAgIGlmIChtX3BsYXRmb3JtUGxheWVyLT5z
b3VyY2VXaWR0aCgpICYmIG1fcGxhdGZvcm1QbGF5ZXItPnNvdXJjZUhlaWdodCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgSW50UmVjdCByZWN0ID0gby0+ZW5jbG9zaW5nQm94KCktPmNvbnRlbnRC
b3hSZWN0KCk7CisgICAgTGF5b3V0UmVjdCByZWN0ID0gbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBs
YXllckNsaWVudCgpLT5tZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCk7CiAgICAgbV9wbGF0Zm9y
bVBsYXllci0+c2V0U291cmNlRGltZW5zaW9uKHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7
CiB9CiAKQEAgLTUwNCw4ICs0OTAsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRl
U3RhdGVzKCkKIAogICAgIFBsYXRmb3JtUGxheWVyOjpFcnJvciBjdXJyZW50RXJyb3IgPSBtX3Bs
YXRmb3JtUGxheWVyLT5lcnJvcigpOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9
IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxh
eWVyQ2xpZW50KCkpOwotCiAgICAgaWYgKGN1cnJlbnRFcnJvciAhPSBQbGF0Zm9ybVBsYXllcjo6
TWVkaWFPSykgewogICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmc7CiAgICAgICAgIGlmIChjdXJyZW50RXJyb3IgPT0gUGxhdGZvcm1QbGF5ZXI6Ok1lZGlhRGVj
b2RlRXJyb3IpCkBAIC01NDIsNyArNTI2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVw
ZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIGlmIChpc0Z1
bGxzY3JlZW4oKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOwor
ICAgICAgICAgICAgICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVk
aWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgUGxhdGZvcm1QbGF5ZXI6Ok1QX1NUQVRFX0FDVElWRToKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCkBAIC02MDEsMTUgKzU4NSwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6b25QYXVzZVN0YXRlQ2hhbmdlZCgpCiAgICAgaWYgKCFpc0Z1bGxzY3JlZW4oKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkp
OwogICAgIC8vIFBhdXNlZCBzdGF0ZSBjaGFuZ2Ugbm90IGR1ZSB0byBsb2NhbCBjb250cm9sbGVy
LgogICAgIGlmIChtX3BsYXRmb3JtUGxheWVyLT5pc1BhdXNlZCgpKQotICAgICAgICBlbGVtZW50
LT5wYXVzZSgpOworICAgICAgICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkt
Pm1lZGlhUGxheWVyUGF1c2UoKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gVGhlIEhNSSBmdWxs
c2NyZWVuIHdpZGdldCBoYXMgcmVzdW1lZCBwbGF5LiBDaGVjayBpZiB0aGUKICAgICAgICAgLy8g
cGF1c2UgdGltZW91dCBvY2N1cnJlZC4KICAgICAgICAgbV9wbGF0Zm9ybVBsYXllci0+cHJvY2Vz
c1BhdXNlVGltZW91dElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKKyAg
ICAgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclBs
YXkoKTsKICAgICB9CiB9CiAKQEAgLTYzNywxNCArNjIwLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpvblNpemVDaGFuZ2VkKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uUGxh
eU5vdGlmaWVkKCkKIHsKLSAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCkpKQotICAgICAgICBlbGVtZW50LT5wbGF5KCk7CisgICAgbV93ZWJDb3JlUGxheWVyLT5t
ZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclBsYXkoKTsKIH0KIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCgpCiB7Ci0gICAgaWYgKEhUTUxNZWRpYUVsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxh
eWVyLT5tZWRpYVBsYXllckNsaWVudCgpKSkKLSAgICAgICAgZWxlbWVudC0+cGF1c2UoKTsKKyAg
ICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUGF1c2Uo
KTsKIH0KIAogc3RhdGljIGNvbnN0IGludCBwb3B1cERpYWxvZ0ludGVydmFsID0gMTA7CkBAIC03
OTEsOCArNzcyLDcgQEAgRnJhbWVWaWV3KiBNZWRpYVBsYXllclByaXZhdGU6OmZyYW1lVmlldygp
IGNvbnN0CiAgICAgLy8gaXQgbWF5IGJlIHNldCB0byB6ZXJvIGJ5IHRoZSBkZXN0cnVjdG9yIGlu
IFJlbmRlclZpZGVvLmNwcCBiZWZvcmUKICAgICAvLyBvdXIgZGVzdHJ1Y3RvciBpcyBjYWxsZWQs
IGxlYXZpbmcgdXMgdW5hYmxlIHRvIGNsZWFuIHVwIGNoaWxkIHdpbmRvd3MKICAgICAvLyBpbiBt
bXJEaXNjb25uZWN0KS4KLSAgICBIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTE1lZGlhRWxlbWVudCo+KG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQo
KSk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPmRvY3VtZW50KCktPnZpZXcoKTsKKyAgICByZXR1cm4g
bV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllck93bmluZ0Rv
Y3VtZW50KCktPnZpZXcoKTsKIH0KIAogQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpX
aW5kb3cqIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGxhdGZvcm1XaW5kb3coKQpAQCAtODA5LDEwICs3
ODksNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aXNGdWxsc2NyZWVuKCkgY29uc3QKIAog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzRWxlbWVudFBhdXNlZCgpIGNvbnN0CiB7Ci0gICAg
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
PihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotICAgIGlmICghZWxlbWVu
dCB8fCBlbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkt
Pm1lZGlhUGxheWVySXNQYXVzZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGU6Omlz
VGFiVmlzaWJsZSgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159946</attachid>
            <date>2012-08-22 08:38:28 -0700</date>
            <delta_ts>2012-08-23 07:06:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84291-20120822113826.patch</filename>
            <type>text/plain</type>
            <size>17391</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZkMzQyMTI1OWI0YTFk
ZWE4YjI3ZTEwZjZhYTFjM2UzZjBlZGY2Ni4uMDA4ZDI4NDFjMTExMjcwMTZmYThiNDc2MzNiMjli
Y2VjZDc2M2NhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTIyICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICAgICAgICAgIFJlcGxhY2UgYWNj
ZXNzIG90IEhUTUxNZWRpYUVsZW1lbnQgZnJvbSBNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
IHdpdGggbWV0aG9kcyBpbiBNZWRpYVBsYXllckNsaWVudCAtIHVwZGF0ZWQgd2l0aCBub3RlcyBm
cm9tIGluaXRpYWwgcmV2aWV3LiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MjkxCisKKyAgICAgICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAgICAgICAgIENvZGUgc3RhbmRhcmQgY29tcGxpYW5jZSAtIG5vIGZ1bmN0aW9u
YWwgY2hhbmdlLCBzbyBubyBuZXcgdGVzdHMgcmVxdWlyZWQuCisKKyAgICAgICAgICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCk6CisgICAgICAgICAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2V0U2l6ZSk6CisgICAgICAg
ICAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UpOgor
ICAgICAgICAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBs
YXkpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllcklzUGF1c2VkKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJIb3N0V2luZG93KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCk6CisgICAgICAgICAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgICAgICAgICAoSFRNTE1lZGlh
RWxlbWVudCk6CisgICAgICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oOgorICAgICAgICAgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4pOgorICAgICAg
ICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVv
KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyQ29udGVudEJveFJlY3QpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
ckNsaWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUGF1c2UpOgorICAgICAgICAgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJQbGF5KToKKyAgICAgICAgICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVySXNQYXVzZWQpOgor
ICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJI
b3N0V2luZG93KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QpOgorICAgICAgICAgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5ZXJQ
cml2YXRlKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjps
b2FkKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwYWlu
dCk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cmVzaXpl
U291cmNlRGltZW5zaW9ucyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjpvblBhdXNlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpvblBsYXlOb3RpZmllZCk6CisgICAgICAgICAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6b25QYXVzZU5vdGlmaWVkKToKKyAgICAg
ICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpvbkF1dGhlbnRpY2F0aW9u
TmVlZGVkKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpz
aG93RXJyb3JEaWFsb2cpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnBsYXRmb3JtV2luZG93KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjppc0VsZW1lbnRQYXVzZWQpOgorICAgICAgICAgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGU6OmlzVGFiVmlzaWJsZSk6CisgICAgICAgICAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnku
aDoKKyAgICAgICAgICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlKToKKwogMjAxMi0wOC0yMCAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBSZW1v
dmUgZ2V0VG9TdHJpbmdOYW1lKCkgYW5kIGdldFRvU3RyaW5nVGVtcGxhdGUoKSBmcm9tIFY4Qmlu
ZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZmFkY2Zl
N2M2OTM0Y2YzNmFjMWM3MGI4YTNkOGRjYmNlMTFmMzNkYi4uNzlmZjAyNDE2ZGFiY2MyZWViMTIy
YmZhMmMxZjkyMmU0NWY5ZTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC00MzczLDYgKzQzNzMsNTQgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+dXJs
KCkuaG9zdCgpOwogfQogCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRXhpdEZ1
bGxzY3JlZW4oKQoreworICAgIGV4aXRGdWxsc2NyZWVuKCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNWaWRl
bygpOworfQorCitMYXlvdXRSZWN0IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ29udGVu
dEJveFJlY3QoKSBjb25zdAoreworICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICByZXR1cm4g
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nQm94KCktPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNl
dFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIHNldEF0dHJpYnV0ZSh3aWR0aEF0
dHIsIFN0cmluZzo6bnVtYmVyKHdpZHRoKSk7CisgICAgc2V0QXR0cmlidXRlKGhlaWdodEF0dHIs
IFN0cmluZzo6bnVtYmVyKGhlaWdodCkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyUGF1c2UoKQoreworICAgIHBhdXNlKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJQbGF5KCkKK3sKKyAgICBwbGF5KCk7Cit9CisKK2Jvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBh
dXNlZCgpOworfQorCitIb3N0V2luZG93KiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckhv
c3RXaW5kb3coKQoreworICAgIHJldHVybiBtZWRpYVBsYXllck93bmluZ0RvY3VtZW50KCktPnZp
ZXcoKS0+aG9zdFdpbmRvdygpOworfQorCitJbnRSZWN0IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyV2luZG93Q2xpcFJlY3QoKQoreworICAgIHJldHVybiBtZWRpYVBsYXllck93bmluZ0Rv
Y3VtZW50KCktPnZpZXcoKS0+d2luZG93Q2xpcFJlY3QoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVCZWhhdmlvcnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUo
KQogewogICAgIG1fcmVzdHJpY3Rpb25zID0gTm9SZXN0cmljdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGRhMTAyYTZkMjkwYzVmMjMxZWM3OGU4MDJiMTcx
YTM2YTk3MmI3OTIuLjk3YmE3ZDRkNWY3NjdkOWFkMTZlNTdmZGZiMjgxYjE2YTViNDIyMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC00MjIsNiArNDIyLDE2IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNI
YWNrcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9j
dW1lbnRIb3N0KCkgY29uc3QgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJFeGl0RnVsbHNjcmVlbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXll
cklzVmlkZW8oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgbWVkaWFQ
bGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllclNldFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQYXVzZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllclBsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5
ZXJJc1BhdXNlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVk
aWFQbGF5ZXJIb3N0V2luZG93KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlh
UGxheWVyV2luZG93Q2xpcFJlY3QoKSBPVkVSUklERTsKKwogI2lmIFBMQVRGT1JNKFdJTikgJiYg
VVNFKEFWRk9VTkRBVElPTikKICAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogbWVk
aWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBP
VkVSUklERTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKaW5kZXggZGU2OTIyMjdjMjdjMGE5Mzg2NTU4NzdmOWRhOGNmNDBiZmZhMWYz
ZS4uMjc3NjU0MDM5N2ZjMmMwNWQ2NTQxMzEyMWVjN2ViZjE1ZTRlZWVlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCkBAIC05OCw2ICs5OCw3
IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBNZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRpYVBsYXll
ckZhY3Rvcnk7CiBjbGFzcyBUaW1lUmFuZ2VzOworY2xhc3MgSG9zdFdpbmRvdzsKIAogI2lmIFBM
QVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKIHN0cnVjdCBHcmFwaGljc0RldmljZUFk
YXB0ZXI7CkBAIC0xODksNiArMTkwLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBt
ZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0
dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygp
OyB9CiAgICAgdmlydHVhbCBDT1JTTW9kZSBtZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gVW5zcGVjaWZpZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJFeGl0RnVs
bHNjcmVlbigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzVmlkZW8oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBtZWRpYVBsYXllckNv
bnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIG1lZGlhUGxheWVyU2V0U2l6ZShpbnQsIGludCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVyUGF1c2UoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5
KCkgeyB9CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNQYXVzZWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBIb3N0V2luZG93KiBtZWRpYVBsYXllckhvc3RXaW5k
b3coKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93
Q2xpcFJlY3QoKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVy
U3VwcG9ydHNUeXBlQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJp
dmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4IDQyNTY4MTgwNWFkMWI5ZmFiMmU4NzhmMWU2ODU4NzM3
MjRjMjU5MTkuLjE5YmRkYjU1MWQwODI5NWJkYjdiNjYyNzM4ZDEzZmNkMjc4YTc3NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQ
bGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAt
MjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKQEAgLTEyMiw4ICsxMjEsNyBAQCBNZWRp
YVBsYXllclByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQog
TWVkaWFQbGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5ZXJQcml2YXRlKCkKIHsKICAgICBpZiAoaXNG
dWxsc2NyZWVuKCkpIHsKLSAgICAgICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRp
Y19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCkpOwotICAgICAgICBlbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBtX3dl
YkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRXhpdEZ1bGxzY3Jl
ZW4oKTsKICAgICB9CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFJl
bW92ZSBtZWRpYSBwbGF5ZXIgZnJvbSBwbGF0Zm9ybSBsYXllci4KQEAgLTE1MSw5ICsxNDksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKICAgICAg
ICAgbW9kaWZpZWRVcmwgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMobW9kaWZpZWRVcmwpOwog
ICAgIH0KIAotICAgIHZvaWQqIHRhYklkID0gMDsKLSAgICBpZiAoZnJhbWVWaWV3KCkgJiYgZnJh
bWVWaWV3KCktPmhvc3RXaW5kb3coKSkKLSAgICAgICAgdGFiSWQgPSBmcmFtZVZpZXcoKS0+aG9z
dFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICB2b2lkKiB0YWJJZCA9IG1fd2Vi
Q29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJIb3N0V2luZG93KCkt
PnBsYXRmb3JtUGFnZUNsaWVudCgpOwogCiAgICAgZGVsZXRlR3VhcmRlZE9iamVjdChtX3BsYXRm
b3JtUGxheWVyKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0zNjUsNyAr
MzYxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnBhaW50KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBBU1NFUlQoZ3JhcGhpY3MpOwogCiAg
ICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkludFJlY3QgcGxhdGZvcm1SZWN0KHJlY3QueCgpLCBy
ZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBJbnRSZWN0IGNsaXBw
ZWRSZWN0ID0gZnJhbWVWaWV3KCktPndpbmRvd0NsaXBSZWN0KCk7CisgICAgSW50UmVjdCBjbGlw
cGVkUmVjdCA9IG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5
ZXJXaW5kb3dDbGlwUmVjdCgpOwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWN0IHBs
YXRmb3JtV2luZG93Q2xpcFJlY3QoY2xpcHBlZFJlY3QueCgpLCBjbGlwcGVkUmVjdC55KCksIGNs
aXBwZWRSZWN0LndpZHRoKCksIGNsaXBwZWRSZWN0LmhlaWdodCgpKTsKICAgICBtX3BsYXRmb3Jt
UGxheWVyLT5wYWludChncmFwaGljcy0+Y2FudmFzKCksIHBsYXRmb3JtUmVjdCwgcGxhdGZvcm1X
aW5kb3dDbGlwUmVjdCk7CiB9CkBAIC0zOTQsMzkgKzM5MCwyNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZTo6cmVzaXplU291cmNlRGltZW5zaW9ucygpCiAgICAgaWYgKCFtX3dlYkNvcmVQbGF5
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIGNsaWVudCA9IHN0
YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVy
Q2xpZW50KCkpOwotCi0gICAgaWYgKCFjbGllbnQgfHwgIWNsaWVudC0+aXNWaWRlbygpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBSZW5kZXJPYmplY3QqIG8gPSBjbGllbnQtPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFvKQorICAgIGlmICghbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVu
dCgpLT5tZWRpYVBsYXllcklzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYg
d2UgaGF2ZSBhbiBIVE1MVmlkZW9FbGVtZW50IGJ1dCB0aGUgc291cmNlIGhhcyBubyB2aWRlbywg
dGhlbiB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgbWVkaWEgZWxlbWVudC4KICAgICBpZiAoIWhhc1Zp
ZGVvKCkpIHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0gby0+ZW5jbG9zaW5nQm94KCktPmNvbnRl
bnRCb3hSZWN0KCk7CisgICAgICAgIExheW91dFJlY3QgcmVjdCA9IG1fd2ViQ29yZVBsYXllci0+
bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpOwogCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBpbnQgcGxheWJvb2tNaW5BdWRpb0VsZW1lbnRXaWR0aCA9IDMwMDsK
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBwbGF5Ym9va01pbkF1ZGlvRWxlbWVudEhlaWdodCA9
IDMyOwogICAgICAgICAvLyBJZiB0aGUgcmVjdCBkaW1lbnNpb25zIGFyZSBsZXNzIHRoYW4gdGhl
IGFsbG93ZWQgbWluaW11bSwgdXNlIHRoZSBtaW5pbXVtIGluc3RlYWQuCi0gICAgICAgIGludCBu
ZXdXaWR0aCA9IG1heChyZWN0LndpZHRoKCksIHBsYXlib29rTWluQXVkaW9FbGVtZW50V2lkdGgp
OwotICAgICAgICBpbnQgbmV3SGVpZ2h0ID0gbWF4KHJlY3QuaGVpZ2h0KCksIHBsYXlib29rTWlu
QXVkaW9FbGVtZW50SGVpZ2h0KTsKLQotICAgICAgICBjaGFyIGF0dHJTdHJpbmdbMTJdOworICAg
ICAgICBpbnQgbmV3V2lkdGggPSBtYXgocmVjdC53aWR0aCgpLnRvSW50KCksIHBsYXlib29rTWlu
QXVkaW9FbGVtZW50V2lkdGgpOworICAgICAgICBpbnQgbmV3SGVpZ2h0ID0gbWF4KHJlY3QuaGVp
Z2h0KCkudG9JbnQoKSwgcGxheWJvb2tNaW5BdWRpb0VsZW1lbnRIZWlnaHQpOwogCi0gICAgICAg
IHNwcmludGYoYXR0clN0cmluZywgIiVkIiwgbmV3V2lkdGgpOwotICAgICAgICBjbGllbnQtPnNl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OndpZHRoQXR0ciwgYXR0clN0cmluZyk7Ci0KLSAgICAgICAg
c3ByaW50ZihhdHRyU3RyaW5nLCAiJWQiLCBuZXdIZWlnaHQpOwotICAgICAgICBjbGllbnQtPnNl
dEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhlaWdodEF0dHIsIGF0dHJTdHJpbmcpOworICAgICAgICBt
X3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyU2V0U2l6ZShu
ZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBkb24ndCBrbm93IHdo
YXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHZpZGVvIHNvdXJjZSBpcywgdGhlbiB3ZSBu
ZWVkIHRvIHNldCBpdCB0byBzb21ldGhpbmcgc2FuZS4KICAgICBpZiAobV9wbGF0Zm9ybVBsYXll
ci0+c291cmNlV2lkdGgoKSAmJiBtX3BsYXRmb3JtUGxheWVyLT5zb3VyY2VIZWlnaHQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIEludFJlY3QgcmVjdCA9IG8tPmVuY2xvc2luZ0JveCgpLT5jb250
ZW50Qm94UmVjdCgpOwotICAgIG1fcGxhdGZvcm1QbGF5ZXItPnNldFNvdXJjZURpbWVuc2lvbihy
ZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFJlY3QgcmVjdCA9IG1fd2Vi
Q29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVj
dCgpOworICAgIG1fcGxhdGZvcm1QbGF5ZXItPnNldFNvdXJjZURpbWVuc2lvbihyZWN0LndpZHRo
KCkudG9VbnNpZ25lZCgpLCByZWN0LmhlaWdodCgpLnRvVW5zaWduZWQoKSk7CiB9CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpzZXRGdWxsc2NyZWVuV2ViUGFnZUNsaWVudChCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2VDbGllbnQqIGNsaWVudCkKQEAgLTUwNiw4ICs0OTAsNiBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIAogICAgIFBsYXRmb3JtUGxheWVy
OjpFcnJvciBjdXJyZW50RXJyb3IgPSBtX3BsYXRmb3JtUGxheWVyLT5lcnJvcigpOwogCi0gICAg
SFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
PihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotCiAgICAgaWYgKGN1cnJl
bnRFcnJvciAhPSBQbGF0Zm9ybVBsYXllcjo6TWVkaWFPSykgewogICAgICAgICBtX3JlYWR5U3Rh
dGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIGlmIChjdXJyZW50RXJyb3Ig
PT0gUGxhdGZvcm1QbGF5ZXI6Ok1lZGlhRGVjb2RlRXJyb3IpCkBAIC01NDQsNyArNTI2LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkKLSAgICAgICAgICAgICAgICBl
bGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICAgICAgICAgIG1fd2ViQ29yZVBsYXll
ci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGxhdGZvcm1QbGF5ZXI6Ok1QX1NUQVRFX0FD
VElWRToKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC02MDMsMTUgKzU4NSwx
NCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6b25QYXVzZVN0YXRlQ2hhbmdlZCgpCiAgICAg
aWYgKCFpc0Z1bGxzY3JlZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTE1lZGlhRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQ
bGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwogICAgIC8vIFBhdXNlZCBzdGF0ZSBjaGFuZ2Ug
bm90IGR1ZSB0byBsb2NhbCBjb250cm9sbGVyLgogICAgIGlmIChtX3BsYXRmb3JtUGxheWVyLT5p
c1BhdXNlZCgpKQotICAgICAgICBlbGVtZW50LT5wYXVzZSgpOworICAgICAgICBtX3dlYkNvcmVQ
bGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUGF1c2UoKTsKICAgICBlbHNl
IHsKICAgICAgICAgLy8gVGhlIEhNSSBmdWxsc2NyZWVuIHdpZGdldCBoYXMgcmVzdW1lZCBwbGF5
LiBDaGVjayBpZiB0aGUKICAgICAgICAgLy8gcGF1c2UgdGltZW91dCBvY2N1cnJlZC4KICAgICAg
ICAgbV9wbGF0Zm9ybVBsYXllci0+cHJvY2Vzc1BhdXNlVGltZW91dElmTmVjZXNzYXJ5KCk7Ci0g
ICAgICAgIGVsZW1lbnQtPnBsYXkoKTsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBs
YXllckNsaWVudCgpLT5tZWRpYVBsYXllclBsYXkoKTsKICAgICB9CiB9CiAKQEAgLTYzOSwxNCAr
NjIwLDEyIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvblNpemVDaGFuZ2VkKCkKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGU6Om9uUGxheU5vdGlmaWVkKCkKIHsKLSAgICBpZiAoSFRNTE1l
ZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dl
YkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpKQotICAgICAgICBlbGVtZW50LT5wbGF5
KCk7CisgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXll
clBsYXkoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCgp
CiB7Ci0gICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1M
TWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKSkKLSAg
ICAgICAgZWxlbWVudC0+cGF1c2UoKTsKKyAgICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVy
Q2xpZW50KCktPm1lZGlhUGxheWVyUGF1c2UoKTsKIH0KIAogc3RhdGljIGNvbnN0IGludCBwb3B1
cERpYWxvZ0ludGVydmFsID0gMTA7CkBAIC03MjEsOCArNzAwLDggQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGU6Om9uQXV0aGVudGljYXRpb25OZWVkZWQoTU1SQXV0aENoYWxsZW5nZSYgYXV0aENo
YWxsZW5nZSkKICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6
Z2V0KHByb3RlY3Rpb25TcGFjZSk7CiAgICAgYm9vbCBpc0NvbmZpcm1lZCA9IGZhbHNlOwogICAg
IGlmIChjcmVkZW50aWFsLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoZnJhbWVWaWV3KCkgJiYg
ZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKSkKLSAgICAgICAgICAgIGlzQ29uZmlybWVkID0gZnJh
bWVWaWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPmF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHVybCwgcHJvdGVjdGlvblNwYWNlLCBjcmVkZW50aWFsKTsKKyAgICAgICAg
aXNDb25maXJtZWQgPSBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlh
UGxheWVySG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+YXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodXJsLCBwcm90ZWN0aW9uU3BhY2UsIGNyZWRlbnRpYWwpOworCiAgICAgfSBlbHNl
CiAgICAgICAgIGlzQ29uZmlybWVkID0gdHJ1ZTsKIApAQCAtNzc4LDExICs3NTcsNyBAQCBpbnQg
TWVkaWFQbGF5ZXJQcml2YXRlOjpzaG93RXJyb3JEaWFsb2coUGxhdGZvcm1QbGF5ZXI6OkVycm9y
IHR5cGUpCiAgICAgICAgIExPRyhNZWRpYSwgIkFsZXJ0IHR5cGUgZG9lcyBub3QgZXhpc3QuIik7
CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0KLSAgICBpbnQgcmMgPSAwOwotICAgIGlmIChm
cmFtZVZpZXcoKSAmJiBmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpKQotICAgICAgICByYyA9IGZy
YW1lVmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zaG93QWxlcnRE
aWFsb2coYXR5cGUpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gbV93ZWJDb3JlUGxheWVy
LT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckhvc3RXaW5kb3coKS0+cGxhdGZvcm1Q
YWdlQ2xpZW50KCktPnNob3dBbGVydERpYWxvZyhhdHlwZSk7CiB9CiAKIHN0YXRpYyBXZWJNZWRp
YVN0cmVhbVNvdXJjZSB0b1dlYk1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBz
cmMpCkBAIC04MTIsMjMgKzc4Nyw5IEBAIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciBNZWRpYVBs
YXllclByaXZhdGU6Omxvb2t1cE1lZGlhU3RyZWFtKGNvbnN0IHN0cmluZyYgdXJsCiAgICAgcmV0
dXJuIHRvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGRlc2NyaXB0b3IpOwogfQogCi1GcmFtZVZp
ZXcqIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZnJhbWVWaWV3KCkgY29uc3QKLXsKLSAgICAvLyBXZSBw
cmV2aW91c2x5IHVzZWQgbV93ZWJDb3JlUGxheWVyLT5mcmFtZVZpZXcoKSwgYnV0IHRoaXMgbWV0
aG9kIHJldHVybnMKLSAgICAvLyBhIG51bGwgZnJhbWVWaWV3IHVudGlsIHF1aXRlIGxhdGUgaW4g
dGhlIG1lZGlhIHBsYXllciBpbml0aWFsaXphdGlvbiwKLSAgICAvLyBhbmQgc3RhcnRpbmcgcXVp
dGUgZWFybHkgaW4gdGhlIG1lZGlhIHBsYXllciBkZXN0cnVjdGlvbiAoYmVjYXVzZQotICAgIC8v
IGl0IG1heSBiZSBzZXQgdG8gemVybyBieSB0aGUgZGVzdHJ1Y3RvciBpbiBSZW5kZXJWaWRlby5j
cHAgYmVmb3JlCi0gICAgLy8gb3VyIGRlc3RydWN0b3IgaXMgY2FsbGVkLCBsZWF2aW5nIHVzIHVu
YWJsZSB0byBjbGVhbiB1cCBjaGlsZCB3aW5kb3dzCi0gICAgLy8gaW4gbW1yRGlzY29ubmVjdCku
Ci0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVs
ZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotICAgIHJldHVy
biBlbGVtZW50LT5kb2N1bWVudCgpLT52aWV3KCk7Ci19Ci0KIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6V2luZG93KiBNZWRpYVBsYXllclByaXZhdGU6OnBsYXRmb3JtV2luZG93KCkK
IHsKLSAgICBpZiAoZnJhbWVWaWV3KCkgJiYgZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKSkKLSAg
ICAgICAgcmV0dXJuIGZyYW1lVmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVu
dCgpLT5wbGF0Zm9ybVdpbmRvdygpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3dlYkNv
cmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySG9zdFdpbmRvdygpLT5w
bGF0Zm9ybVBhZ2VDbGllbnQoKS0+cGxhdGZvcm1XaW5kb3coKTsKIH0KIAogYm9vbCBNZWRpYVBs
YXllclByaXZhdGU6OmlzRnVsbHNjcmVlbigpIGNvbnN0CkBAIC04MzgsMTcgKzc5OSwxMiBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZTo6aXNGdWxsc2NyZWVuKCkgY29uc3QKIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGU6OmlzRWxlbWVudFBhdXNlZCgpIGNvbnN0CiB7Ci0gICAgSFRNTE1lZGlh
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNv
cmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotICAgIGlmICghZWxlbWVudCB8fCBlbGVt
ZW50LT5wYXVzZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxh
eWVySXNQYXVzZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzVGFiVmlzaWJs
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKGZyYW1lVmlldygpICYmIGZyYW1lVmlldygpLT5ob3N0V2lu
ZG93KCkpCi0gICAgICAgIHJldHVybiBmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKS0+aXNWaXNpYmxlKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJIb3N0V2lu
ZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5pc1Zpc2libGUoKTsKIH0KIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclBy
aXZhdGVCbGFja0JlcnJ5LmgKaW5kZXggYzM3OGJmNjhhZmU5MGYwYTZiNmNmZGYxZDdjNjdkZjcx
YWMyMzg5Yy4uYjliMmJlNzNlNjgxNzYwZTRhNzJlN2RjOGQ0NDViNDA0ZDM0ZjNkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBs
YXllclByaXZhdGVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAgLTE0Myw3
ICsxNDMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZShNZWRp
YVBsYXllciopOwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKICAgICB2b2lk
IHVwZGF0ZVN0YXRlcygpOwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgU3RyaW5nJikgY29u
c3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160154</attachid>
            <date>2012-08-23 07:06:56 -0700</date>
            <delta_ts>2012-08-23 07:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84291-20120823100653.patch</filename>
            <type>text/plain</type>
            <size>17386</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3MjkyM2JiMGM0NDk5
ZTNlNDUzMTNkOGRkMWZhNDAxOWRkZjU5ZC4uYjM5ZmEwOTQ1ZGE1NzVhMDVmOWM4M2JlMjE5ZmUz
ZmE1ZWJmZjAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTIyICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICAgICAgICAgIFJlcGxhY2UgYWNj
ZXNzIG90IEhUTUxNZWRpYUVsZW1lbnQgZnJvbSBNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
IHdpdGggbWV0aG9kcyBpbiBNZWRpYVBsYXllckNsaWVudCAtIHVwZGF0ZWQgd2l0aCBub3RlcyBm
cm9tIGluaXRpYWwgcmV2aWV3LiAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg0MjkxCisKKyAgICAgICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAgICAgICAgIENvZGUgc3RhbmRhcmQgY29tcGxpYW5jZSAtIG5vIGZ1bmN0aW9u
YWwgY2hhbmdlLCBzbyBubyBuZXcgdGVzdHMgcmVxdWlyZWQuCisKKyAgICAgICAgICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCk6CisgICAgICAgICAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2V0U2l6ZSk6CisgICAgICAg
ICAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UpOgor
ICAgICAgICAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBs
YXkpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllcklzUGF1c2VkKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJIb3N0V2luZG93KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCk6CisgICAgICAgICAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgICAgICAgICAoSFRNTE1lZGlh
RWxlbWVudCk6CisgICAgICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5oOgorICAgICAgICAgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4pOgorICAgICAg
ICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVv
KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxh
eWVyQ29udGVudEJveFJlY3QpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
ckNsaWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUGF1c2UpOgorICAgICAgICAgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJQbGF5KToKKyAgICAgICAgICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVySXNQYXVzZWQpOgor
ICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJI
b3N0V2luZG93KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6
Om1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QpOgorICAgICAgICAgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjp+TWVkaWFQbGF5ZXJQ
cml2YXRlKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjps
b2FkKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpwYWlu
dCk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cmVzaXpl
U291cmNlRGltZW5zaW9ucyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjpvblBhdXNlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpvblBsYXlOb3RpZmllZCk6CisgICAgICAgICAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6b25QYXVzZU5vdGlmaWVkKToKKyAgICAg
ICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpvbkF1dGhlbnRpY2F0aW9u
TmVlZGVkKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpz
aG93RXJyb3JEaWFsb2cpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGU6OnBsYXRmb3JtV2luZG93KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjppc0VsZW1lbnRQYXVzZWQpOgorICAgICAgICAgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGU6OmlzVGFiVmlzaWJsZSk6CisgICAgICAgICAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnku
aDoKKyAgICAgICAgICAgICAgICAoTWVkaWFQbGF5ZXJQcml2YXRlKToKKwogMjAxMi0wOC0yMyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gRml4IG1ha2UgZGlzdGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggZmZiMzA4OTRiOGViZjg1MDcxMDEyODhlYTllOGM0ZmRmNzA1N2M5
Yy4uMDJhNTY0NWM1ZjQ1YjNhZmI1NjYxZDhiY2Q0NmY5M2RmM2RlYjJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00Mzc3LDYgKzQzNzcsNTQgQEAgU3Ry
aW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3QKICAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+dXJsKCkuaG9zdCgpOwogfQogCit2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKQoreworICAgIGV4aXRGdWxsc2NyZWVu
KCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJc1ZpZGVvKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaXNWaWRlbygpOworfQorCitMYXlvdXRSZWN0IEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSBjb25zdAoreworICAgIGlmIChyZW5k
ZXJlcigpKQorICAgICAgICByZXR1cm4gcmVuZGVyZXIoKS0+ZW5jbG9zaW5nQm94KCktPmNvbnRl
bnRCb3hSZWN0KCk7CisgICAgcmV0dXJuIExheW91dFJlY3QoKTsKK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllclNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAg
ICBzZXRBdHRyaWJ1dGUod2lkdGhBdHRyLCBTdHJpbmc6Om51bWJlcihzaXplLndpZHRoKCkpKTsK
KyAgICBzZXRBdHRyaWJ1dGUoaGVpZ2h0QXR0ciwgU3RyaW5nOjpudW1iZXIoc2l6ZS5oZWlnaHQo
KSkpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGF1c2UoKQorewor
ICAgIHBhdXNlKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5
KCkKK3sKKyAgICBwbGF5KCk7Cit9CisKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJJc1BhdXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhdXNlZCgpOworfQorCitIb3N0V2lu
ZG93KiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckhvc3RXaW5kb3coKQoreworICAgIHJl
dHVybiBtZWRpYVBsYXllck93bmluZ0RvY3VtZW50KCktPnZpZXcoKS0+aG9zdFdpbmRvdygpOwor
fQorCitJbnRSZWN0IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3Qo
KQoreworICAgIHJldHVybiBtZWRpYVBsYXllck93bmluZ0RvY3VtZW50KCktPnZpZXcoKS0+d2lu
ZG93Q2xpcFJlY3QoKTsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVCZWhhdmlv
cnNSZXN0cmljdGlvbnNBZnRlckZpcnN0VXNlckdlc3R1cmUoKQogewogICAgIG1fcmVzdHJpY3Rp
b25zID0gTm9SZXN0cmljdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CmluZGV4IGRhMTAyYTZkMjkwYzVmMjMxZWM3OGU4MDJiMTcxYTM2YTk3MmI3OTIuLjY3ZTk0Yjdj
Y2Y5ZGIxYWEzNTI4ZTkzZDZlY2Q1NTQxYzE0OGYwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCkBAIC00MjIsNiArNDIyLDE2IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIG1lZGlhUGxheWVyTmVlZHNTaXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3QgT1ZF
UlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllcklzVmlkZW8oKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgbWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNldFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVy
UGF1c2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNQYXVzZWQoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIEhvc3RXaW5kb3cqIG1lZGlhUGxheWVySG9zdFdpbmRvdygpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgSW50UmVjdCBtZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0KCkg
T1ZFUlJJREU7CisKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCiAgICAg
dmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3QgT1ZFUlJJREU7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGRlNjky
MjI3YzI3YzBhOTM4NjU1ODc3ZjlkYThjZjQwYmZmYTFmM2UuLmVhYzM0NWMxNzc5YWNiMzA5YTg0
MjJlMjU0M2IyMDNmZjE0MWI0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtOTgsNiArOTgsNyBAQCBjbGFzcyBJbnRTaXplOwogY2xh
c3MgTWVkaWFQbGF5ZXI7CiBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5OwogY2xhc3MgVGltZVJh
bmdlczsKK2NsYXNzIEhvc3RXaW5kb3c7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZP
VU5EQVRJT04pCiBzdHJ1Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwpAQCAtMTg5LDYgKzE5MCwx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJSZWZlcnJlcigpIGNv
bnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJV
c2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgQ09SU01v
ZGUgbWVkaWFQbGF5ZXJDT1JTTW9kZSgpIGNvbnN0IHsgcmV0dXJuIFVuc3BlY2lmaWVkOyB9Cisg
ICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIExheW91dFJlY3QgbWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIExheW91dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclNldFNp
emUoY29uc3QgSW50U2l6ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclBhdXNl
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGxheSgpIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQbGF5ZXJIb3N0V2luZG93KCkgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgSW50UmVjdCBtZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0KCkgeyByZXR1
cm4gSW50UmVjdCgpOyB9CiB9OwogCiBjbGFzcyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVu
dCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNw
cAppbmRleCA2ZmFkMjZlNTM3YmNhZjdiMmIyODQyYjc2Nzc3MDdhZGFiMTA4ZWUwLi5kN2Y5YWNi
YTY2MjA3ZTU5YTNjNjBhYjRhMjU3NzYzMGQzNDRhZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNr
QmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmgiCkBAIC0xMjIsOCArMTIxLDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpN
ZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKIE1lZGlhUGxheWVyUHJpdmF0
ZTo6fk1lZGlhUGxheWVyUHJpdmF0ZSgpCiB7CiAgICAgaWYgKGlzRnVsbHNjcmVlbigpKSB7Ci0g
ICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFF
bGVtZW50Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKTsKLSAgICAgICAg
ZWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRp
YVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCk7CiAgICAgfQogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAvLyBSZW1vdmUgbWVkaWEgcGxheWVy
IGZyb20gcGxhdGZvcm0gbGF5ZXIuCkBAIC0xNTEsOSArMTQ5LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGU6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIG1vZGlmaWVkVXJsID0g
ZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKG1vZGlmaWVkVXJsKTsKICAgICB9CiAKLSAgICB2b2lk
KiB0YWJJZCA9IDA7Ci0gICAgaWYgKGZyYW1lVmlldygpICYmIGZyYW1lVmlldygpLT5ob3N0V2lu
ZG93KCkpCi0gICAgICAgIHRhYklkID0gZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZv
cm1QYWdlQ2xpZW50KCk7CisgICAgdm9pZCogdGFiSWQgPSBtX3dlYkNvcmVQbGF5ZXItPm1lZGlh
UGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKTsKIAogICAgIGRlbGV0ZUd1YXJkZWRPYmplY3QobV9wbGF0Zm9ybVBsYXllcik7CiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMzcwLDcgKzM2Niw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvCiAgICAgQVNTRVJUKGdyYXBoaWNzKTsKIAogICAgIEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpJbnRSZWN0IHBsYXRmb3JtUmVjdChyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgSW50UmVjdCBjbGlwcGVkUmVjdCA9IGZyYW1l
VmlldygpLT53aW5kb3dDbGlwUmVjdCgpOworICAgIEludFJlY3QgY2xpcHBlZFJlY3QgPSBtX3dl
YkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyV2luZG93Q2xpcFJl
Y3QoKTsKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6SW50UmVjdCBwbGF0Zm9ybVdpbmRvd0Ns
aXBSZWN0KGNsaXBwZWRSZWN0LngoKSwgY2xpcHBlZFJlY3QueSgpLCBjbGlwcGVkUmVjdC53aWR0
aCgpLCBjbGlwcGVkUmVjdC5oZWlnaHQoKSk7CiAgICAgbV9wbGF0Zm9ybVBsYXllci0+cGFpbnQo
Z3JhcGhpY3MtPmNhbnZhcygpLCBwbGF0Zm9ybVJlY3QsIHBsYXRmb3JtV2luZG93Q2xpcFJlY3Qp
OwogfQpAQCAtMzk5LDM5ICszOTUsMjcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnJlc2l6
ZVNvdXJjZURpbWVuc2lvbnMoKQogICAgIGlmICghbV93ZWJDb3JlUGxheWVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBIVE1MTWVkaWFFbGVtZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxIVE1M
TWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKTsKLQot
ICAgIGlmICghY2xpZW50IHx8ICFjbGllbnQtPmlzVmlkZW8oKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgUmVuZGVyT2JqZWN0KiBvID0gY2xpZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghbykK
KyAgICBpZiAoIW1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5
ZXJJc1ZpZGVvKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHdlIGhhdmUgYW4gSFRN
TFZpZGVvRWxlbWVudCBidXQgdGhlIHNvdXJjZSBoYXMgbm8gdmlkZW8sIHRoZW4gd2UgbmVlZCB0
byByZXNpemUgdGhlIG1lZGlhIGVsZW1lbnQuCiAgICAgaWYgKCFoYXNWaWRlbygpKSB7Ci0gICAg
ICAgIEludFJlY3QgcmVjdCA9IG8tPmVuY2xvc2luZ0JveCgpLT5jb250ZW50Qm94UmVjdCgpOwor
ICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xp
ZW50KCktPm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKTsKIAogICAgICAgICBzdGF0aWMgY29u
c3QgaW50IHBsYXlib29rTWluQXVkaW9FbGVtZW50V2lkdGggPSAzMDA7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBpbnQgcGxheWJvb2tNaW5BdWRpb0VsZW1lbnRIZWlnaHQgPSAzMjsKICAgICAgICAg
Ly8gSWYgdGhlIHJlY3QgZGltZW5zaW9ucyBhcmUgbGVzcyB0aGFuIHRoZSBhbGxvd2VkIG1pbmlt
dW0sIHVzZSB0aGUgbWluaW11bSBpbnN0ZWFkLgotICAgICAgICBpbnQgbmV3V2lkdGggPSBtYXgo
cmVjdC53aWR0aCgpLCBwbGF5Ym9va01pbkF1ZGlvRWxlbWVudFdpZHRoKTsKLSAgICAgICAgaW50
IG5ld0hlaWdodCA9IG1heChyZWN0LmhlaWdodCgpLCBwbGF5Ym9va01pbkF1ZGlvRWxlbWVudEhl
aWdodCk7Ci0KLSAgICAgICAgY2hhciBhdHRyU3RyaW5nWzEyXTsKKyAgICAgICAgaW50IG5ld1dp
ZHRoID0gbWF4KHJlY3Qud2lkdGgoKS50b0ludCgpLCBwbGF5Ym9va01pbkF1ZGlvRWxlbWVudFdp
ZHRoKTsKKyAgICAgICAgaW50IG5ld0hlaWdodCA9IG1heChyZWN0LmhlaWdodCgpLnRvSW50KCks
IHBsYXlib29rTWluQXVkaW9FbGVtZW50SGVpZ2h0KTsKIAotICAgICAgICBzcHJpbnRmKGF0dHJT
dHJpbmcsICIlZCIsIG5ld1dpZHRoKTsKLSAgICAgICAgY2xpZW50LT5zZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjp3aWR0aEF0dHIsIGF0dHJTdHJpbmcpOwotCi0gICAgICAgIHNwcmludGYoYXR0clN0
cmluZywgIiVkIiwgbmV3SGVpZ2h0KTsKLSAgICAgICAgY2xpZW50LT5zZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjpoZWlnaHRBdHRyLCBhdHRyU3RyaW5nKTsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVy
LT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclNldFNpemUoSW50U2l6ZShuZXdXaWR0
aCwgbmV3SGVpZ2h0KSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UgZG9uJ3Qga25vdyB3aGF0IHRo
ZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB2aWRlbyBzb3VyY2UgaXMsIHRoZW4gd2UgbmVlZCB0
byBzZXQgaXQgdG8gc29tZXRoaW5nIHNhbmUuCiAgICAgaWYgKG1fcGxhdGZvcm1QbGF5ZXItPnNv
dXJjZVdpZHRoKCkgJiYgbV9wbGF0Zm9ybVBsYXllci0+c291cmNlSGVpZ2h0KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBJbnRSZWN0IHJlY3QgPSBvLT5lbmNsb3NpbmdCb3goKS0+Y29udGVudEJv
eFJlY3QoKTsKLSAgICBtX3BsYXRmb3JtUGxheWVyLT5zZXRTb3VyY2VEaW1lbnNpb24ocmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBMYXlvdXRSZWN0IHJlY3QgPSBtX3dlYkNvcmVQ
bGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKTsK
KyAgICBtX3BsYXRmb3JtUGxheWVyLT5zZXRTb3VyY2VEaW1lbnNpb24ocmVjdC53aWR0aCgpLnRv
VW5zaWduZWQoKSwgcmVjdC5oZWlnaHQoKS50b1Vuc2lnbmVkKCkpOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZTo6c2V0RnVsbHNjcmVlbldlYlBhZ2VDbGllbnQoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpXZWJQYWdlQ2xpZW50KiBjbGllbnQpCkBAIC01MTEsOCArNDk1LDYgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAKICAgICBQbGF0Zm9ybVBsYXllcjo6RXJy
b3IgY3VycmVudEVycm9yID0gbV9wbGF0Zm9ybVBsYXllci0+ZXJyb3IoKTsKIAotICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93
ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKTsKLQogICAgIGlmIChjdXJyZW50RXJy
b3IgIT0gUGxhdGZvcm1QbGF5ZXI6Ok1lZGlhT0spIHsKICAgICAgICAgbV9yZWFkeVN0YXRlID0g
TWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwogICAgICAgICBpZiAoY3VycmVudEVycm9yID09IFBs
YXRmb3JtUGxheWVyOjpNZWRpYURlY29kZUVycm9yKQpAQCAtNTQ5LDcgKzUzMSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgfQogI2VuZGlm
CiAgICAgICAgICAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVu
dC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICAgICAgICBtX3dlYkNvcmVQbGF5ZXItPm1l
ZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBsYXRmb3JtUGxheWVyOjpNUF9TVEFURV9BQ1RJVkU6
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtNjA4LDE1ICs1OTAsMTQgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VTdGF0ZUNoYW5nZWQoKQogICAgIGlmICgh
aXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQq
IGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxheWVy
LT5tZWRpYVBsYXllckNsaWVudCgpKTsKICAgICAvLyBQYXVzZWQgc3RhdGUgY2hhbmdlIG5vdCBk
dWUgdG8gbG9jYWwgY29udHJvbGxlci4KICAgICBpZiAobV9wbGF0Zm9ybVBsYXllci0+aXNQYXVz
ZWQoKSkKLSAgICAgICAgZWxlbWVudC0+cGF1c2UoKTsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVy
LT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclBhdXNlKCk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIC8vIFRoZSBITUkgZnVsbHNjcmVlbiB3aWRnZXQgaGFzIHJlc3VtZWQgcGxheS4gQ2hl
Y2sgaWYgdGhlCiAgICAgICAgIC8vIHBhdXNlIHRpbWVvdXQgb2NjdXJyZWQuCiAgICAgICAgIG1f
cGxhdGZvcm1QbGF5ZXItPnByb2Nlc3NQYXVzZVRpbWVvdXRJZk5lY2Vzc2FyeSgpOwotICAgICAg
ICBlbGVtZW50LT5wbGF5KCk7CisgICAgICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJD
bGllbnQoKS0+bWVkaWFQbGF5ZXJQbGF5KCk7CiAgICAgfQogfQogCkBAIC02NDQsMTQgKzYyNSwx
MiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6b25TaXplQ2hhbmdlZCgpCiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlOjpvblBsYXlOb3RpZmllZCgpCiB7Ci0gICAgaWYgKEhUTUxNZWRpYUVs
ZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3Jl
UGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKSkKLSAgICAgICAgZWxlbWVudC0+cGxheSgpOwor
ICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJQbGF5
KCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvblBhdXNlTm90aWZpZWQoKQogewot
ICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTE1lZGlh
RWxlbWVudCo+KG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKSkpCi0gICAgICAg
IGVsZW1lbnQtPnBhdXNlKCk7CisgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVu
dCgpLT5tZWRpYVBsYXllclBhdXNlKCk7CiB9CiAKIHN0YXRpYyBjb25zdCBpbnQgcG9wdXBEaWFs
b2dJbnRlcnZhbCA9IDEwOwpAQCAtNzI2LDggKzcwNSw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlOjpvbkF1dGhlbnRpY2F0aW9uTmVlZGVkKE1NUkF1dGhDaGFsbGVuZ2UmIGF1dGhDaGFsbGVu
Z2UpCiAgICAgQ3JlZGVudGlhbCBjcmVkZW50aWFsID0gQ3JlZGVudGlhbFN0b3JhZ2U6OmdldChw
cm90ZWN0aW9uU3BhY2UpOwogICAgIGJvb2wgaXNDb25maXJtZWQgPSBmYWxzZTsKICAgICBpZiAo
Y3JlZGVudGlhbC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKGZyYW1lVmlldygpICYmIGZyYW1l
VmlldygpLT5ob3N0V2luZG93KCkpCi0gICAgICAgICAgICBpc0NvbmZpcm1lZCA9IGZyYW1lVmll
dygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5hdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSh1cmwsIHByb3RlY3Rpb25TcGFjZSwgY3JlZGVudGlhbCk7CisgICAgICAgIGlzQ29u
ZmlybWVkID0gbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXll
ckhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPmF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHVybCwgcHJvdGVjdGlvblNwYWNlLCBjcmVkZW50aWFsKTsKKwogICAgIH0gZWxzZQogICAg
ICAgICBpc0NvbmZpcm1lZCA9IHRydWU7CiAKQEAgLTc4MywxMSArNzYyLDcgQEAgaW50IE1lZGlh
UGxheWVyUHJpdmF0ZTo6c2hvd0Vycm9yRGlhbG9nKFBsYXRmb3JtUGxheWVyOjpFcnJvciB0eXBl
KQogICAgICAgICBMT0coTWVkaWEsICJBbGVydCB0eXBlIGRvZXMgbm90IGV4aXN0LiIpOwogICAg
ICAgICByZXR1cm4gLTE7CiAgICAgfQotCi0gICAgaW50IHJjID0gMDsKLSAgICBpZiAoZnJhbWVW
aWV3KCkgJiYgZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKSkKLSAgICAgICAgcmMgPSBmcmFtZVZp
ZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c2hvd0FsZXJ0RGlhbG9n
KGF0eXBlKTsKLSAgICByZXR1cm4gcmM7CisgICAgcmV0dXJuIG1fd2ViQ29yZVBsYXllci0+bWVk
aWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJIb3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNs
aWVudCgpLT5zaG93QWxlcnREaWFsb2coYXR5cGUpOwogfQogCiBzdGF0aWMgV2ViTWVkaWFTdHJl
YW1Tb3VyY2UgdG9XZWJNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbVNvdXJjZSogc3JjKQpA
QCAtODE3LDIzICs3OTIsOSBAQCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IgTWVkaWFQbGF5ZXJQ
cml2YXRlOjpsb29rdXBNZWRpYVN0cmVhbShjb25zdCBzdHJpbmcmIHVybAogICAgIHJldHVybiB0
b1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcihkZXNjcmlwdG9yKTsKIH0KIAotRnJhbWVWaWV3KiBN
ZWRpYVBsYXllclByaXZhdGU6OmZyYW1lVmlldygpIGNvbnN0Ci17Ci0gICAgLy8gV2UgcHJldmlv
dXNseSB1c2VkIG1fd2ViQ29yZVBsYXllci0+ZnJhbWVWaWV3KCksIGJ1dCB0aGlzIG1ldGhvZCBy
ZXR1cm5zCi0gICAgLy8gYSBudWxsIGZyYW1lVmlldyB1bnRpbCBxdWl0ZSBsYXRlIGluIHRoZSBt
ZWRpYSBwbGF5ZXIgaW5pdGlhbGl6YXRpb24sCi0gICAgLy8gYW5kIHN0YXJ0aW5nIHF1aXRlIGVh
cmx5IGluIHRoZSBtZWRpYSBwbGF5ZXIgZGVzdHJ1Y3Rpb24gKGJlY2F1c2UKLSAgICAvLyBpdCBt
YXkgYmUgc2V0IHRvIHplcm8gYnkgdGhlIGRlc3RydWN0b3IgaW4gUmVuZGVyVmlkZW8uY3BwIGJl
Zm9yZQotICAgIC8vIG91ciBkZXN0cnVjdG9yIGlzIGNhbGxlZCwgbGVhdmluZyB1cyB1bmFibGUg
dG8gY2xlYW4gdXAgY2hpbGQgd2luZG93cwotICAgIC8vIGluIG1tckRpc2Nvbm5lY3QpLgotICAg
IEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50
Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKTsKLSAgICByZXR1cm4gZWxl
bWVudC0+ZG9jdW1lbnQoKS0+dmlldygpOwotfQotCiBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3Jh
cGhpY3M6OldpbmRvdyogTWVkaWFQbGF5ZXJQcml2YXRlOjpwbGF0Zm9ybVdpbmRvdygpCiB7Ci0g
ICAgaWYgKGZyYW1lVmlldygpICYmIGZyYW1lVmlldygpLT5ob3N0V2luZG93KCkpCi0gICAgICAg
IHJldHVybiBmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+
cGxhdGZvcm1XaW5kb3coKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV93ZWJDb3JlUGxh
eWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllckhvc3RXaW5kb3coKS0+cGxhdGZv
cm1QYWdlQ2xpZW50KCktPnBsYXRmb3JtV2luZG93KCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlOjppc0Z1bGxzY3JlZW4oKSBjb25zdApAQCAtODQzLDE3ICs4MDQsMTIgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGU6OmlzRnVsbHNjcmVlbigpIGNvbnN0CiAKIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlOjppc0VsZW1lbnRQYXVzZWQoKSBjb25zdAogewotICAgIEhUTUxNZWRpYUVsZW1l
bnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obV93ZWJDb3JlUGxh
eWVyLT5tZWRpYVBsYXllckNsaWVudCgpKTsKLSAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC0+
cGF1c2VkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllcklz
UGF1c2VkKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjppc1RhYlZpc2libGUoKSBj
b25zdAogewotICAgIGlmIChmcmFtZVZpZXcoKSAmJiBmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygp
KQotICAgICAgICByZXR1cm4gZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdl
Q2xpZW50KCktPmlzVmlzaWJsZSgpOwotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBtX3dl
YkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySG9zdFdpbmRvdygp
LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+aXNWaXNpYmxlKCk7CiB9CiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRl
QmxhY2tCZXJyeS5oCmluZGV4IDQwMTU2ZmJiNzA3MTMyMmNhN2JmZWVmMDg5OWM2YTU4M2YzMWIx
YjguLjU3MDc0MWNlMjNhMDhkODUwOTZmN2NiMTJiZmM1NWI1NzNmNjdkN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQ
cml2YXRlQmxhY2tCZXJyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oCkBAIC0xNDUsNyArMTQ1
LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNZWRpYVBsYXllclByaXZhdGUoTWVkaWFQbGF5
ZXIqKTsKIAotICAgIEZyYW1lVmlldyogZnJhbWVWaWV3KCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVTdGF0ZXMoKTsKICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160157</attachid>
            <date>2012-08-23 07:32:10 -0700</date>
            <delta_ts>2012-08-23 09:51:58 -0700</delta_ts>
            <desc>Patch - fixed style issue from previous patch</desc>
            <filename>bug-84291-20120823103207.patch</filename>
            <type>text/plain</type>
            <size>17382</size>
            <attacher name="John Griggs">jgriggs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3MjkyM2JiMGM0NDk5
ZTNlNDUzMTNkOGRkMWZhNDAxOWRkZjU5ZC4uNWE4YmNkOTEzNzA4ZTc3ZjY1ZWYwYzA3MDA4YzFh
MGZjMWM4NmM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTIyICBKb2hu
IEdyaWdncyAgPGpncmlnZ3NAcmltLmNvbT4KKworICAgICAgICAgICAgICAgIFJlcGxhY2UgYWNj
ZXNzIG90IEhUTUxNZWRpYUVsZW1lbnQgZnJvbSBNZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
IHdpdGggbWV0aG9kcyBpbiBNZWRpYVBsYXllckNsaWVudCAtIHVwZGF0ZWQgd2l0aCBub3RlcyBm
cm9tIGluaXRpYWwgcmV2aWV3cy4gIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NDI5MQorCisgICAgICAgICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgICAgICAgICBDb2RlIHN0YW5kYXJkIGNvbXBsaWFuY2UgLSBubyBmdW5jdGlv
bmFsIGNoYW5nZSwgc28gbm8gbmV3IHRlc3RzIHJlcXVpcmVkLgorCisgICAgICAgICAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVySXNWaWRlbyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ29udGVudEJveFJlY3QpOgorICAgICAgICAgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNldFNpemUpOgorICAgICAg
ICAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBhdXNlKToK
KyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQ
bGF5KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJJc1BhdXNlZCk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVySG9zdFdpbmRvdyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QpOgorICAgICAgICAgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICAgICAgICAgKEhUTUxNZWRp
YUVsZW1lbnQpOgorICAgICAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaDoKKyAgICAgICAgICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKToKKyAgICAg
ICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVySXNWaWRl
byk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBs
YXllckNvbnRlbnRCb3hSZWN0KToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJDbGllbnQ6Om1lZGlhUGxheWVyU2V0U2l6ZSk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllclBhdXNlKToKKyAgICAgICAgICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVyUGxheSk6CisgICAgICAgICAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50OjptZWRpYVBsYXllcklzUGF1c2VkKToK
KyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJDbGllbnQ6Om1lZGlhUGxheWVy
SG9zdFdpbmRvdyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyQ2xpZW50
OjptZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0KToKKyAgICAgICAgICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6Cisg
ICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6fk1lZGlhUGxheWVy
UHJpdmF0ZSk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
bG9hZCk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6cGFp
bnQpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OnJlc2l6
ZVNvdXJjZURpbWVuc2lvbnMpOgorICAgICAgICAgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGU6OnVwZGF0ZVN0YXRlcyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6b25QYXVzZVN0YXRlQ2hhbmdlZCk6CisgICAgICAgICAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6b25QbGF5Tm90aWZpZWQpOgorICAgICAgICAgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCk6CisgICAg
ICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6b25BdXRoZW50aWNhdGlv
bk5lZWRlZCk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6
c2hvd0Vycm9yRGlhbG9nKToKKyAgICAgICAgICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjpwbGF0Zm9ybVdpbmRvdyk6CisgICAgICAgICAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZTo6aXNFbGVtZW50UGF1c2VkKToKKyAgICAgICAgICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjppc1RhYlZpc2libGUpOgorICAgICAgICAgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5
Lmg6CisgICAgICAgICAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZSk6CisKIDIwMTItMDgtMjMg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIEZpeCBtYWtlIGRpc3RjaGVjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IGZmYjMwODk0YjhlYmY4NTA3MTAxMjg4ZWE5ZThjNGZkZjcwNTdj
OWMuLjAyYTU2NDVjNWY0NWIzYWZiNTY2MWQ4YmNkNDZmOTNkZjNkZWIyZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDM3Nyw2ICs0Mzc3LDU0IEBAIFN0
cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRvY3VtZW50SG9zdCgpIGNvbnN0CiAg
ICAgcmV0dXJuIGRvY3VtZW50KCktPnVybCgpLmhvc3QoKTsKIH0KIAordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBleGl0RnVsbHNjcmVl
bigpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySXNWaWRlbygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGlzVmlkZW8oKTsKK30KKworTGF5b3V0UmVjdCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkgY29uc3QKK3sKKyAgICBpZiAocmVu
ZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPmVuY2xvc2luZ0JveCgpLT5jb250
ZW50Qm94UmVjdCgpOworICAgIHJldHVybiBMYXlvdXRSZWN0KCk7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7Cisg
ICAgc2V0QXR0cmlidXRlKHdpZHRoQXR0ciwgU3RyaW5nOjpudW1iZXIoc2l6ZS53aWR0aCgpKSk7
CisgICAgc2V0QXR0cmlidXRlKGhlaWdodEF0dHIsIFN0cmluZzo6bnVtYmVyKHNpemUuaGVpZ2h0
KCkpKTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclBhdXNlKCkKK3sK
KyAgICBwYXVzZSgpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxh
eSgpCit7CisgICAgcGxheSgpOworfQorCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVySXNQYXVzZWQoKSBjb25zdAoreworICAgIHJldHVybiBwYXVzZWQoKTsKK30KKworSG9zdFdp
bmRvdyogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJIb3N0V2luZG93KCkKK3sKKyAgICBy
ZXR1cm4gbWVkaWFQbGF5ZXJPd25pbmdEb2N1bWVudCgpLT52aWV3KCktPmhvc3RXaW5kb3coKTsK
K30KKworSW50UmVjdCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllcldpbmRvd0NsaXBSZWN0
KCkKK3sKKyAgICByZXR1cm4gbWVkaWFQbGF5ZXJPd25pbmdEb2N1bWVudCgpLT52aWV3KCktPndp
bmRvd0NsaXBSZWN0KCk7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQmVoYXZp
b3JzUmVzdHJpY3Rpb25zQWZ0ZXJGaXJzdFVzZXJHZXN0dXJlKCkKIHsKICAgICBtX3Jlc3RyaWN0
aW9ucyA9IE5vUmVzdHJpY3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCBkYTEwMmE2ZDI5MGM1ZjIzMWVjNzhlODAyYjE3MWEzNmE5NzJiNzkyLi4zMmI1NDdk
MzJmYmQzYzBkNTU5NzAxODM4YmRiZGE0YzFlM2ZlZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaApAQCAtNDIyLDYgKzQyMiwxNiBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgYm9vbCBtZWRpYVBsYXllck5lZWRzU2l0ZVNwZWNpZmljSGFja3MoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllckRvY3VtZW50SG9zdCgpIGNvbnN0IE9W
RVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1ZpZGVvKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG1lZGlhUGxheWVyQ29udGVudEJveFJlY3Qo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJTZXRTaXplKGNv
bnN0IEludFNpemUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQYXVz
ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclBsYXkoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc1BhdXNlZCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogbWVkaWFQbGF5ZXJIb3N0V2luZG93KCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QoKSBPVkVS
UklERTsKKwogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICB2aXJ0
dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0
ZXIoY29uc3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBPVkVSUklERTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggZGU2OTIyMjdj
MjdjMGE5Mzg2NTU4NzdmOWRhOGNmNDBiZmZhMWYzZS4uZWFjMzQ1YzE3NzlhY2IzMDlhODQyMmUy
NTQzYjIwM2ZmMTQxYjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCkBAIC05OCw2ICs5OCw3IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBN
ZWRpYVBsYXllcjsKIHN0cnVjdCBNZWRpYVBsYXllckZhY3Rvcnk7CiBjbGFzcyBUaW1lUmFuZ2Vz
OworY2xhc3MgSG9zdFdpbmRvdzsKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRB
VElPTikKIHN0cnVjdCBHcmFwaGljc0RldmljZUFkYXB0ZXI7CkBAIC0xODksNiArMTkwLDE1IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclJlZmVycmVyKCkgY29uc3Qg
eyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllclVzZXJB
Z2VudCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBDT1JTTW9kZSBt
ZWRpYVBsYXllckNPUlNNb2RlKCkgY29uc3QgeyByZXR1cm4gVW5zcGVjaWZpZWQ7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBtZWRpYVBsYXllcklzVmlkZW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBtZWRpYVBsYXllckNvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1
cm4gTGF5b3V0UmVjdCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2V0U2l6ZShj
b25zdCBJbnRTaXplJikgeyB9CisgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUGF1c2UoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5KCkgeyB9CisgICAgdmlydHVhbCBi
b29sIG1lZGlhUGxheWVySXNQYXVzZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBIb3N0V2luZG93KiBtZWRpYVBsYXllckhvc3RXaW5kb3coKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBJbnRSZWN0IG1lZGlhUGxheWVyV2luZG93Q2xpcFJlY3QoKSB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KIH07CiAKIGNsYXNzIE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmlu
ZGV4IDZmYWQyNmU1MzdiY2FmN2IyYjI4NDJiNzY3NzcwN2FkYWIxMDhlZTAuLmQ3ZjlhY2JhNjYy
MDdlNTlhM2M2MGFiNGEyNTc3NjMwZDM0NGFlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9N
ZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCi0jaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURl
c2NyaXB0b3IuaCIKQEAgLTEyMiw4ICsxMjEsNyBAQCBNZWRpYVBsYXllclByaXZhdGU6Ok1lZGlh
UGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQogTWVkaWFQbGF5ZXJQcml2YXRlOjp+
TWVkaWFQbGF5ZXJQcml2YXRlKCkKIHsKICAgICBpZiAoaXNGdWxsc2NyZWVuKCkpIHsKLSAgICAg
ICAgSFRNTE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1l
bnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotICAgICAgICBlbGVt
ZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxh
eWVyQ2xpZW50KCktPm1lZGlhUGxheWVyRXhpdEZ1bGxzY3JlZW4oKTsKICAgICB9CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFJlbW92ZSBtZWRpYSBwbGF5ZXIgZnJv
bSBwbGF0Zm9ybSBsYXllci4KQEAgLTE1MSw5ICsxNDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgbW9kaWZpZWRVcmwgPSBkZWNv
ZGVVUkxFc2NhcGVTZXF1ZW5jZXMobW9kaWZpZWRVcmwpOwogICAgIH0KIAotICAgIHZvaWQqIHRh
YklkID0gMDsKLSAgICBpZiAoZnJhbWVWaWV3KCkgJiYgZnJhbWVWaWV3KCktPmhvc3RXaW5kb3co
KSkKLSAgICAgICAgdGFiSWQgPSBmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBh
Z2VDbGllbnQoKTsKKyAgICB2b2lkKiB0YWJJZCA9IG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5
ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJIb3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgp
OwogCiAgICAgZGVsZXRlR3VhcmRlZE9iamVjdChtX3BsYXRmb3JtUGxheWVyKTsKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0zNzAsNyArMzY2LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY28KICAgICBBU1NFUlQoZ3JhcGhpY3MpOwogCiAgICAgQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkludFJlY3QgcGxhdGZvcm1SZWN0KHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICBJbnRSZWN0IGNsaXBwZWRSZWN0ID0gZnJhbWVWaWV3
KCktPndpbmRvd0NsaXBSZWN0KCk7CisgICAgSW50UmVjdCBjbGlwcGVkUmVjdCA9IG1fd2ViQ29y
ZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJXaW5kb3dDbGlwUmVjdCgp
OwogICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpJbnRSZWN0IHBsYXRmb3JtV2luZG93Q2xpcFJl
Y3QoY2xpcHBlZFJlY3QueCgpLCBjbGlwcGVkUmVjdC55KCksIGNsaXBwZWRSZWN0LndpZHRoKCks
IGNsaXBwZWRSZWN0LmhlaWdodCgpKTsKICAgICBtX3BsYXRmb3JtUGxheWVyLT5wYWludChncmFw
aGljcy0+Y2FudmFzKCksIHBsYXRmb3JtUmVjdCwgcGxhdGZvcm1XaW5kb3dDbGlwUmVjdCk7CiB9
CkBAIC0zOTksMzkgKzM5NSwyNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6cmVzaXplU291
cmNlRGltZW5zaW9ucygpCiAgICAgaWYgKCFtX3dlYkNvcmVQbGF5ZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEhUTUxNZWRpYUVsZW1lbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRp
YUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotCi0gICAg
aWYgKCFjbGllbnQgfHwgIWNsaWVudC0+aXNWaWRlbygpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBSZW5kZXJPYmplY3QqIG8gPSBjbGllbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvKQorICAg
IGlmICghbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllcklz
VmlkZW8oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBIVE1MVmlk
ZW9FbGVtZW50IGJ1dCB0aGUgc291cmNlIGhhcyBubyB2aWRlbywgdGhlbiB3ZSBuZWVkIHRvIHJl
c2l6ZSB0aGUgbWVkaWEgZWxlbWVudC4KICAgICBpZiAoIWhhc1ZpZGVvKCkpIHsKLSAgICAgICAg
SW50UmVjdCByZWN0ID0gby0+ZW5jbG9zaW5nQm94KCktPmNvbnRlbnRCb3hSZWN0KCk7CisgICAg
ICAgIExheW91dFJlY3QgcmVjdCA9IG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQo
KS0+bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBp
bnQgcGxheWJvb2tNaW5BdWRpb0VsZW1lbnRXaWR0aCA9IDMwMDsKICAgICAgICAgc3RhdGljIGNv
bnN0IGludCBwbGF5Ym9va01pbkF1ZGlvRWxlbWVudEhlaWdodCA9IDMyOwogICAgICAgICAvLyBJ
ZiB0aGUgcmVjdCBkaW1lbnNpb25zIGFyZSBsZXNzIHRoYW4gdGhlIGFsbG93ZWQgbWluaW11bSwg
dXNlIHRoZSBtaW5pbXVtIGluc3RlYWQuCi0gICAgICAgIGludCBuZXdXaWR0aCA9IG1heChyZWN0
LndpZHRoKCksIHBsYXlib29rTWluQXVkaW9FbGVtZW50V2lkdGgpOwotICAgICAgICBpbnQgbmV3
SGVpZ2h0ID0gbWF4KHJlY3QuaGVpZ2h0KCksIHBsYXlib29rTWluQXVkaW9FbGVtZW50SGVpZ2h0
KTsKLQotICAgICAgICBjaGFyIGF0dHJTdHJpbmdbMTJdOworICAgICAgICBpbnQgbmV3V2lkdGgg
PSBtYXgocmVjdC53aWR0aCgpLnRvSW50KCksIHBsYXlib29rTWluQXVkaW9FbGVtZW50V2lkdGgp
OworICAgICAgICBpbnQgbmV3SGVpZ2h0ID0gbWF4KHJlY3QuaGVpZ2h0KCkudG9JbnQoKSwgcGxh
eWJvb2tNaW5BdWRpb0VsZW1lbnRIZWlnaHQpOwogCi0gICAgICAgIHNwcmludGYoYXR0clN0cmlu
ZywgIiVkIiwgbmV3V2lkdGgpOwotICAgICAgICBjbGllbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OndpZHRoQXR0ciwgYXR0clN0cmluZyk7Ci0KLSAgICAgICAgc3ByaW50ZihhdHRyU3RyaW5n
LCAiJWQiLCBuZXdIZWlnaHQpOwotICAgICAgICBjbGllbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OmhlaWdodEF0dHIsIGF0dHJTdHJpbmcpOworICAgICAgICBtX3dlYkNvcmVQbGF5ZXItPm1l
ZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyU2V0U2l6ZShJbnRTaXplKG5ld1dpZHRoLCBu
ZXdIZWlnaHQpKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHdp
ZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHZpZGVvIHNvdXJjZSBpcywgdGhlbiB3ZSBuZWVkIHRvIHNl
dCBpdCB0byBzb21ldGhpbmcgc2FuZS4KICAgICBpZiAobV9wbGF0Zm9ybVBsYXllci0+c291cmNl
V2lkdGgoKSAmJiBtX3BsYXRmb3JtUGxheWVyLT5zb3VyY2VIZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIEludFJlY3QgcmVjdCA9IG8tPmVuY2xvc2luZ0JveCgpLT5jb250ZW50Qm94UmVj
dCgpOwotICAgIG1fcGxhdGZvcm1QbGF5ZXItPnNldFNvdXJjZURpbWVuc2lvbihyZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFJlY3QgcmVjdCA9IG1fd2ViQ29yZVBsYXll
ci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJDb250ZW50Qm94UmVjdCgpOworICAg
IG1fcGxhdGZvcm1QbGF5ZXItPnNldFNvdXJjZURpbWVuc2lvbihyZWN0LndpZHRoKCkudG9VbnNp
Z25lZCgpLCByZWN0LmhlaWdodCgpLnRvVW5zaWduZWQoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjpzZXRGdWxsc2NyZWVuV2ViUGFnZUNsaWVudChCbGFja0JlcnJ5OjpXZWJLaXQ6
OldlYlBhZ2VDbGllbnQqIGNsaWVudCkKQEAgLTUxMSw4ICs0OTUsNiBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIAogICAgIFBsYXRmb3JtUGxheWVyOjpFcnJvciBj
dXJyZW50RXJyb3IgPSBtX3BsYXRmb3JtUGxheWVyLT5lcnJvcigpOwogCi0gICAgSFRNTE1lZGlh
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNv
cmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotCiAgICAgaWYgKGN1cnJlbnRFcnJvciAh
PSBQbGF0Zm9ybVBsYXllcjo6TWVkaWFPSykgewogICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRp
YVBsYXllcjo6SGF2ZU5vdGhpbmc7CiAgICAgICAgIGlmIChjdXJyZW50RXJyb3IgPT0gUGxhdGZv
cm1QbGF5ZXI6Ok1lZGlhRGVjb2RlRXJyb3IpCkBAIC01NDksNyArNTMxLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGU6OnVwZGF0ZVN0YXRlcygpCiAgICAgICAgICAgICB9CiAjZW5kaWYKICAg
ICAgICAgICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5l
eGl0RnVsbHNjcmVlbigpOworICAgICAgICAgICAgICAgIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQ
bGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGxhdGZvcm1QbGF5ZXI6Ok1QX1NUQVRFX0FDVElWRToKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC02MDgsMTUgKzU5MCwxNCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZTo6b25QYXVzZVN0YXRlQ2hhbmdlZCgpCiAgICAgaWYgKCFpc0Z1
bGxzY3JlZW4oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXItPm1l
ZGlhUGxheWVyQ2xpZW50KCkpOwogICAgIC8vIFBhdXNlZCBzdGF0ZSBjaGFuZ2Ugbm90IGR1ZSB0
byBsb2NhbCBjb250cm9sbGVyLgogICAgIGlmIChtX3BsYXRmb3JtUGxheWVyLT5pc1BhdXNlZCgp
KQotICAgICAgICBlbGVtZW50LT5wYXVzZSgpOworICAgICAgICBtX3dlYkNvcmVQbGF5ZXItPm1l
ZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVyUGF1c2UoKTsKICAgICBlbHNlIHsKICAgICAg
ICAgLy8gVGhlIEhNSSBmdWxsc2NyZWVuIHdpZGdldCBoYXMgcmVzdW1lZCBwbGF5LiBDaGVjayBp
ZiB0aGUKICAgICAgICAgLy8gcGF1c2UgdGltZW91dCBvY2N1cnJlZC4KICAgICAgICAgbV9wbGF0
Zm9ybVBsYXllci0+cHJvY2Vzc1BhdXNlVGltZW91dElmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIGVs
ZW1lbnQtPnBsYXkoKTsKKyAgICAgICAgbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVu
dCgpLT5tZWRpYVBsYXllclBsYXkoKTsKICAgICB9CiB9CiAKQEAgLTY0NCwxNCArNjI1LDEyIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpvblNpemVDaGFuZ2VkKCkKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6Om9uUGxheU5vdGlmaWVkKCkKIHsKLSAgICBpZiAoSFRNTE1lZGlhRWxlbWVu
dCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5
ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpKQotICAgICAgICBlbGVtZW50LT5wbGF5KCk7CisgICAg
bV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5tZWRpYVBsYXllclBsYXkoKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Om9uUGF1c2VOb3RpZmllZCgpCiB7Ci0gICAg
aWYgKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVt
ZW50Kj4obV93ZWJDb3JlUGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpKSkKLSAgICAgICAgZWxl
bWVudC0+cGF1c2UoKTsKKyAgICBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkt
Pm1lZGlhUGxheWVyUGF1c2UoKTsKIH0KIAogc3RhdGljIGNvbnN0IGludCBwb3B1cERpYWxvZ0lu
dGVydmFsID0gMTA7CkBAIC03MjYsOCArNzA1LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGU6
Om9uQXV0aGVudGljYXRpb25OZWVkZWQoTU1SQXV0aENoYWxsZW5nZSYgYXV0aENoYWxsZW5nZSkK
ICAgICBDcmVkZW50aWFsIGNyZWRlbnRpYWwgPSBDcmVkZW50aWFsU3RvcmFnZTo6Z2V0KHByb3Rl
Y3Rpb25TcGFjZSk7CiAgICAgYm9vbCBpc0NvbmZpcm1lZCA9IGZhbHNlOwogICAgIGlmIChjcmVk
ZW50aWFsLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoZnJhbWVWaWV3KCkgJiYgZnJhbWVWaWV3
KCktPmhvc3RXaW5kb3coKSkKLSAgICAgICAgICAgIGlzQ29uZmlybWVkID0gZnJhbWVWaWV3KCkt
Pmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPmF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHVybCwgcHJvdGVjdGlvblNwYWNlLCBjcmVkZW50aWFsKTsKKyAgICAgICAgaXNDb25maXJt
ZWQgPSBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySG9z
dFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dXJsLCBwcm90ZWN0aW9uU3BhY2UsIGNyZWRlbnRpYWwpOworCiAgICAgfSBlbHNlCiAgICAgICAg
IGlzQ29uZmlybWVkID0gdHJ1ZTsKIApAQCAtNzgzLDExICs3NjIsNyBAQCBpbnQgTWVkaWFQbGF5
ZXJQcml2YXRlOjpzaG93RXJyb3JEaWFsb2coUGxhdGZvcm1QbGF5ZXI6OkVycm9yIHR5cGUpCiAg
ICAgICAgIExPRyhNZWRpYSwgIkFsZXJ0IHR5cGUgZG9lcyBub3QgZXhpc3QuIik7CiAgICAgICAg
IHJldHVybiAtMTsKICAgICB9Ci0KLSAgICBpbnQgcmMgPSAwOwotICAgIGlmIChmcmFtZVZpZXco
KSAmJiBmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpKQotICAgICAgICByYyA9IGZyYW1lVmlldygp
LT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zaG93QWxlcnREaWFsb2coYXR5
cGUpOwotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gbV93ZWJDb3JlUGxheWVyLT5tZWRpYVBs
YXllckNsaWVudCgpLT5tZWRpYVBsYXllckhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xpZW50
KCktPnNob3dBbGVydERpYWxvZyhhdHlwZSk7CiB9CiAKIHN0YXRpYyBXZWJNZWRpYVN0cmVhbVNv
dXJjZSB0b1dlYk1lZGlhU3RyZWFtU291cmNlKE1lZGlhU3RyZWFtU291cmNlKiBzcmMpCkBAIC04
MTcsMjMgKzc5Miw5IEBAIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciBNZWRpYVBsYXllclByaXZh
dGU6Omxvb2t1cE1lZGlhU3RyZWFtKGNvbnN0IHN0cmluZyYgdXJsCiAgICAgcmV0dXJuIHRvV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yKGRlc2NyaXB0b3IpOwogfQogCi1GcmFtZVZpZXcqIE1lZGlh
UGxheWVyUHJpdmF0ZTo6ZnJhbWVWaWV3KCkgY29uc3QKLXsKLSAgICAvLyBXZSBwcmV2aW91c2x5
IHVzZWQgbV93ZWJDb3JlUGxheWVyLT5mcmFtZVZpZXcoKSwgYnV0IHRoaXMgbWV0aG9kIHJldHVy
bnMKLSAgICAvLyBhIG51bGwgZnJhbWVWaWV3IHVudGlsIHF1aXRlIGxhdGUgaW4gdGhlIG1lZGlh
IHBsYXllciBpbml0aWFsaXphdGlvbiwKLSAgICAvLyBhbmQgc3RhcnRpbmcgcXVpdGUgZWFybHkg
aW4gdGhlIG1lZGlhIHBsYXllciBkZXN0cnVjdGlvbiAoYmVjYXVzZQotICAgIC8vIGl0IG1heSBi
ZSBzZXQgdG8gemVybyBieSB0aGUgZGVzdHJ1Y3RvciBpbiBSZW5kZXJWaWRlby5jcHAgYmVmb3Jl
Ci0gICAgLy8gb3VyIGRlc3RydWN0b3IgaXMgY2FsbGVkLCBsZWF2aW5nIHVzIHVuYWJsZSB0byBj
bGVhbiB1cCBjaGlsZCB3aW5kb3dzCi0gICAgLy8gaW4gbW1yRGlzY29ubmVjdCkuCi0gICAgSFRN
TE1lZGlhRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPiht
X3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCkpOwotICAgIHJldHVybiBlbGVtZW50
LT5kb2N1bWVudCgpLT52aWV3KCk7Ci19Ci0KIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGlj
czo6V2luZG93KiBNZWRpYVBsYXllclByaXZhdGU6OnBsYXRmb3JtV2luZG93KCkKIHsKLSAgICBp
ZiAoZnJhbWVWaWV3KCkgJiYgZnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKSkKLSAgICAgICAgcmV0
dXJuIGZyYW1lVmlldygpLT5ob3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5wbGF0
Zm9ybVdpbmRvdygpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX3dlYkNvcmVQbGF5ZXIt
Pm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBh
Z2VDbGllbnQoKS0+cGxhdGZvcm1XaW5kb3coKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZh
dGU6OmlzRnVsbHNjcmVlbigpIGNvbnN0CkBAIC04NDMsMTcgKzgwNCwxMiBAQCBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZTo6aXNGdWxsc2NyZWVuKCkgY29uc3QKIAogYm9vbCBNZWRpYVBsYXllclBy
aXZhdGU6OmlzRWxlbWVudFBhdXNlZCgpIGNvbnN0CiB7Ci0gICAgSFRNTE1lZGlhRWxlbWVudCog
ZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX3dlYkNvcmVQbGF5ZXIt
Pm1lZGlhUGxheWVyQ2xpZW50KCkpOwotICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LT5wYXVz
ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBtX3dlYkNvcmVQbGF5ZXItPm1lZGlhUGxheWVyQ2xpZW50KCktPm1lZGlhUGxheWVySXNQYXVz
ZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGU6OmlzVGFiVmlzaWJsZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKGZyYW1lVmlldygpICYmIGZyYW1lVmlldygpLT5ob3N0V2luZG93KCkpCi0g
ICAgICAgIHJldHVybiBmcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKS0+aXNWaXNpYmxlKCk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIG1fd2ViQ29y
ZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVkaWFQbGF5ZXJIb3N0V2luZG93KCktPnBs
YXRmb3JtUGFnZUNsaWVudCgpLT5pc1Zpc2libGUoKTsKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFj
a0JlcnJ5LmgKaW5kZXggNDAxNTZmYmI3MDcxMzIyY2E3YmZlZWYwODk5YzZhNTgzZjMxYjFiOC4u
NTcwNzQxY2UyM2EwOGQ4NTA5NmY3Y2IxMmJmYzU1YjU3M2Y2N2Q3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZh
dGVCbGFja0JlcnJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmgKQEAgLTE0NSw3ICsxNDUsNiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciop
OwogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZVN0
YXRlcygpOwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>