<?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>131830</bug_id>
          
          <creation_ts>2014-04-17 17:04:32 -0700</creation_ts>
          <short_desc>media foundation video element skeleton</short_desc>
          <delta_ts>2014-04-22 11:32:34 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">alex.christensen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1001764</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-04-17 17:04:32 -0700</bug_when>
    <thetext>I made a video player that can play videos from urls, and I started to implement MediaPlayerPrivate functions for it.  play, pause, seek, and maxTimeSeekable work.  I&apos;m working on getting it to run from the WebKit side, and this skeleton compiles and shows the controls and poster.  I&apos;d like to upstream it and get feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001765</commentid>
    <comment_count>1</comment_count>
      <attachid>229599</attachid>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-04-17 17:15:56 -0700</bug_when>
    <thetext>Created attachment 229599
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001766</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-17 17:17:36 -0700</bug_when>
    <thetext>Attachment 229599 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:30:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:34:  The parameter name &quot;registrar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 9 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>1001767</commentid>
    <comment_count>3</comment_count>
      <attachid>229599</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-17 17:23:09 -0700</bug_when>
    <thetext>Comment on attachment 229599
patch

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

This looks like a great start. Please use &quot;notImplemented()&quot; in the various stubs you have. Also, are there specific build requirements you need to use MediaFoundation? Is it only available under Windows 8 or something?

We might want to protect the MediaFoundation stuff inside an SDK guard or something.

&gt; Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:55
&gt; +{

I&apos;d recommend putting &quot;notImplemented()&quot; in all of these locations. Then we can remove them as you flesh out support.

&gt; Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:69
&gt; +void MediaPlayerPrivateMediaFoundation::load(const String&amp;) { }

Ditto for all of these stubs:

load(const String&amp;)
{
    notImplemented();
}

&gt; Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:30
&gt; + 

Get rid of this single space character!

&gt; Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:34
&gt; +    static void registerMediaEngine(MediaEngineRegistrar registrar);

Remove &apos;registrar&apos; please.

&gt; Source/WebKit/win/FullscreenVideoController.cpp:28
&gt; +#if ENABLE(VIDEO) &amp;&amp; !USE(GSTREAMER) &amp;&amp; !USE(MEDIA_FOUNDATION)

Why don&apos;t you want to support full screen with media foundation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001771</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-04-17 17:32:50 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Also, are there specific build requirements you need to use MediaFoundation? Is it only available under Windows 8 or something?
It&apos;s available on Windows Vista and newer.
&gt; 
&gt; We might want to protect the MediaFoundation stuff inside an SDK guard or something.
It is included with Visual Studio 2013.  I don&apos;t think this is necessary.
&gt; Why don&apos;t you want to support full screen with media foundation?
It wasn&apos;t supported with GStreamer.  I&apos;ll support it later if I need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001775</commentid>
    <comment_count>5</comment_count>
      <attachid>229602</attachid>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-04-17 17:42:16 -0700</bug_when>
    <thetext>Created attachment 229602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002772</commentid>
    <comment_count>6</comment_count>
      <attachid>229602</attachid>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-04-21 19:47:36 -0700</bug_when>
    <thetext>Comment on attachment 229602
Patch

I got an ffmpeg-based player working instead, but it opens a separate window instead of drawing to the current window.  I&apos;ve got some work to do, but I think I prefer ffmpeg over Media Foundation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002906</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-22 08:51:34 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 229602 [details])
&gt; I got an ffmpeg-based player working instead, but it opens a separate window instead of drawing to the current window.  I&apos;ve got some work to do, but I think I prefer ffmpeg over Media Foundation.

That&apos;s too bad. The ffmpeg code has some weird licensing issues. If you have people who don&apos;t like CFLite&apos;s licensing, you are going to really enjoy the feedback from ffmpeg!  :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003000</commentid>
    <comment_count>8</comment_count>
      <attachid>229602</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2014-04-22 11:14:07 -0700</bug_when>
    <thetext>Comment on attachment 229602
Patch

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

Looks good. I had a few minor suggestions (I thin you should mark the methods in MediaPlayerPrivateMediaFoundation as &apos;override&apos; where appropriate.

I assume the new USE(MEDIA_FOUNDATION) stuff will be added in a future patch to FeatureDefines.props?

&gt; Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:160
&gt; +        || !m_player-&gt;visible())

I think this could be one line.

&gt; Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:49
&gt; +    virtual bool hasVideo() const;

Should these be marked &apos;override&apos;?

&gt; Source/WebCore/platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:70
&gt; +

Please get rid of this extra whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003004</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-04-22 11:30:49 -0700</bug_when>
    <thetext>Committed to http://trac.webkit.org/changeset/167670</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003006</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">alex.christensen</who>
    <bug_when>2014-04-22 11:32:34 -0700</bug_when>
    <thetext>And sorry, I ignored some of your last comments.  I&apos;ll fix them in my next patch when I have something working.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229599</attachid>
            <date>2014-04-17 17:15:56 -0700</date>
            <delta_ts>2014-04-17 17:42:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>14266</size>
            <attacher name="Alex Christensen">alex.christensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzQ2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA0LTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gaW1w
bGVtZW50YXRpb24gb2YgdmlkZW8gdXNpbmcgTWVkaWEgRm91bmRhdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTgzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgIEFkZGVkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
biBmaWxlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6Cisg
ICAgICAgIEluY2x1ZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGluc2lkZSBu
ZXcgVVNFKE1FRElBX0ZPVU5EQVRJT04pIGZsYWcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uaDogQWRkZWQuCisKIDIwMTQtMDQtMTcgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFJvbGxvdXQ6IEFkZCBhIHdheSB0byBjYWNoZSBuZXZlci1jaGFu
Z2luZyBJREwgYXR0cmlidXRlcyBpbiB0aGUgd3JhcHBlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTY3NDY4KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzQ0Myw2ICs3NDQzLDE2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cSGlzdG9ncmFtU3VwcG9ydC5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXEtpbGxSaW5nTm9uZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXHNvdXBcQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcCI+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAt
MTkyMTEsNiArMTkyMjEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRyYWNrQmFzZVByaXZhdGUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRl
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5c
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cU2hhcmVkR0RJT2JqZWN0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIaXN0b2dyYW1TdXBwb3J0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIb3N0V2luZG93LmgiIC8+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjc0NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE0
ODIsNiArMTQ4Miw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiPgogICAgICAg
PEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
Z3JhcGhpY3Ncd2luPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZU1hdGhEYXRhLmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdpbjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtODYyOSw2ICs4NjMyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlv
bjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5o
Ij4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xh
dmZvdW5kYXRpb25cY2ZcQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxNjc0NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDEx
IEBACiAjZGVmaW5lIFBsYXRmb3JtTWVkaWFFbmdpbmVDbGFzc05hbWUgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyCiAjZW5kaWYKIAorI2lmIFVTRShNRURJQV9GT1VOREFUSU9OKQorI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oIgorI2RlZmluZSBQbGF0Zm9y
bU1lZGlhRW5naW5lQ2xhc3NOYW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbgor
I2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQWxleCBDaHJpc3RlbnNlbiA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKworI2lm
IFVTRShNRURJQV9GT1VOREFUSU9OKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRPRE86
IEltcGxlbWVudCB2aWRlbyBmdW5jdGlvbmFsaXR5IHVzaW5nIE1lZGlhIEZvdW5kYXRpb24KKwor
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqIHBsYXllcikgCisgICAgOiBtX3BsYXllcihwbGF5ZXIp
Cit7Cit9CisKK1Bhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKQor
eworICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uKHBsYXllcikpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCit7
CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisgICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1
cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIDApOworfQorCitib29sIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6aXNBdmFpbGFibGUoKSAKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246Omdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpCit7CisgICAgdHlwZXMgPSBI
YXNoU2V0PFN0cmluZz4oKTsKK30KKworTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2lu
ZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIHJldHVybiBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQ7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYpIHsgfQordm9pZCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OmNhbmNlbExvYWQoKSB7IH0KK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFGb3VuZGF0aW9uOjpwbGF5KCkgeyB9Cit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbjo6cGF1c2UoKSB7IH0KK0ludFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpuYXR1cmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoMCwgMCk7IH0K
K2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpoYXNWaWRlbygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6aGFzQXVkaW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OnNldFZpc2libGUoYm9vbCkgeyB9Citib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c2Vla2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Citib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cGF1c2VkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KK01lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpuZXR3b3JrU3RhdGUoKSBjb25zdCB7IHJldHVybiBN
ZWRpYVBsYXllcjo6RW1wdHk7IH0KK01lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE1lZGlh
UGxheWVyOjpIYXZlTm90aGluZzsgfQorc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpidWZmZXJlZCgpIGNvbnN0IHsg
cmV0dXJuIFBsYXRmb3JtVGltZVJhbmdlczo6Y3JlYXRlKCk7IH0KK2Jvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnNldFNp
emUoY29uc3QgSW50U2l6ZSYpIHsgfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkKKyAgICAgICAgfHwg
IW1fcGxheWVyLT52aXNpYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRPRE86IFBh
aW50IHRoZSBjb250ZW50cyBvZiB0aGUgdmlkZW8gdG8gdGhlIGNvbnRleHQKK30KKworfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9u
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBbGV4IENocmlzdGVuc2VuIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJNZWRpYVBsYXll
clByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworIAorY2xhc3MgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZSB7CitwdWJsaWM6CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKE1lZGlh
UGxheWVyKik7CisgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIpOworCisgICAgc3RhdGljIFBhc3NPd25QdHI8TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5ZXIqKTsKKyAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHR5cGVzKTsKKyAgICBzdGF0aWMg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVT
dXBwb3J0UGFyYW1ldGVycyYpOworICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdmlydHVhbCB2b2lk
IGNhbmNlbExvYWQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBwbGF5KCk7CisgICAgdmlydHVhbCB2
b2lkIHBhdXNlKCk7CisKKyAgICB2aXJ0dWFsIEludFNpemUgbmF0dXJhbFNpemUoKSBjb25zdDsK
KworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBo
YXNBdWRpbygpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHBh
dXNlZCgpIGNvbnN0OworCisgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5l
dHdvcmtTdGF0ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0OworCisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGRpZExv
YWRpbmdQcm9ncmVzcygpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3Qg
SW50U2l6ZSYpOworCisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKTsKKworcHJpdmF0ZToKKworICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsK
KworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NDY5KQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTQtMDQtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBCZWdpbiBpbXBsZW1lbnRhdGlvbiBvZiB2aWRlbyB1c2luZyBNZWRpYSBGb3Vu
ZGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMxODMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgQWRkZWQgbmV3IFVTRShNRURJQV9GT1VOREFUSU9OKSBmbGFnIHRvIHByZXZlbnQg
dXNpbmcgdGhlIHVuc3VwcG9ydGVkIGZ1bGxzY3JlZW4gYXBpLgorCiAyMDE0LTA0LTA5ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEVsaW1pbmF0ZSBEcmFn
U2Vzc2lvbiBzdHJ1Y3R1cmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxNjc0NjgpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NyArMjUsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYm
ICFVU0UoR1NUUkVBTUVSKQorI2lmIEVOQUJMRShWSURFTykgJiYgIVVTRShHU1RSRUFNRVIpICYm
ICFVU0UoTUVESUFfRk9VTkRBVElPTikKIAogI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXIuaCIKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE2NzQ2OCkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Mjc2LDcg
KzYyNzYsNyBAQAogCiB2b2lkIFdlYlZpZXc6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSog
bm9kZSkKIHsKLSNpZiBFTkFCTEUoVklERU8pICYmICFVU0UoR1NUUkVBTUVSKQorI2lmIEVOQUJM
RShWSURFTykgJiYgIVVTRShHU1RSRUFNRVIpICYmICFVU0UoTUVESUFfRk9VTkRBVElPTikKICAg
ICBpZiAoIWlzSFRNTFZpZGVvRWxlbWVudChub2RlKSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTYzMDcsNyArNjMwNyw3IEBACiAKIHZvaWQgV2ViVmll
dzo6ZXhpdEZ1bGxzY3JlZW4oKQogewotI2lmIEVOQUJMRShWSURFTykgJiYgIVVTRShHU1RSRUFN
RVIpCisjaWYgRU5BQkxFKFZJREVPKSAmJiAhVVNFKEdTVFJFQU1FUikgJiYgIVVTRShNRURJQV9G
T1VOREFUSU9OKQogICAgIGlmICghbV9mdWxsU2NyZWVuVmlkZW9Db250cm9sbGVyKQogICAgICAg
ICByZXR1cm47CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229602</attachid>
            <date>2014-04-17 17:42:16 -0700</date>
            <delta_ts>2014-04-22 11:30:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131830-20140417184154.patch</filename>
            <type>text/plain</type>
            <size>14910</size>
            <attacher name="Alex Christensen">alex.christensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzQ2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA0LTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQmVnaW4gaW1w
bGVtZW50YXRpb24gb2YgdmlkZW8gdXNpbmcgTWVkaWEgRm91bmRhdGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTgzMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgIEFkZGVkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
biBmaWxlcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6Cisg
ICAgICAgIEluY2x1ZGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uIGluc2lkZSBu
ZXcgVVNFKE1FRElBX0ZPVU5EQVRJT04pIGZsYWcuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uaDogQWRkZWQuCisKIDIwMTQtMDQtMTcgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFJvbGxvdXQ6IEFkZCBhIHdheSB0byBjYWNoZSBuZXZlci1jaGFu
Z2luZyBJREwgYXR0cmlidXRlcyBpbiB0aGUgd3JhcHBlci4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkocmV2aXNpb24gMTY3NDY5KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNzQ0Myw2ICs3NDQzLDE2IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cSGlzdG9ncmFtU3VwcG9ydC5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXEtpbGxSaW5nTm9uZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxwbGF0Zm9ybVxuZXR3b3JrXHNvdXBcQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTb3VwLmNwcCI+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAt
MTkyMTEsNiArMTkyMjEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcVGlsZWRCYWNraW5nU3RvcmVDbGllbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRyYWNrQmFzZVByaXZhdGUuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFZpZGVvVHJhY2tQcml2YXRl
LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5c
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cU2hhcmVkR0RJT2JqZWN0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIaXN0b2dyYW1TdXBwb3J0LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxIb3N0V2luZG93LmgiIC8+Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRl
cnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjc0NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE0
ODIsNiArMTQ4Miw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlRnVsbHNjcmVlbldpbmRvdy5jcHAiPgogICAgICAg
PEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljc1x3aW48L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1c
Z3JhcGhpY3Ncd2luPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xvcGVudHlwZVxPcGVuVHlwZU1hdGhEYXRhLmNw
cCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXHdpbjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgpAQCAtODYyOSw2ICs4NjMyLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlvblxNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXGdyYXBoaWNzXGF2Zm91bmRhdGlv
bjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5o
Ij4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3Ncd2luPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xh
dmZvdW5kYXRpb25cY2ZcQVZGb3VuZGF0aW9uQ0ZTb2Z0TGlua2luZy5oIj4KICAgICAgIDxGaWx0
ZXI+cGxhdGZvcm1cZ3JhcGhpY3NcYXZmb3VuZGF0aW9uXGNmPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuY3BwCShyZXZpc2lvbiAxNjc0NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDEx
IEBACiAjZGVmaW5lIFBsYXRmb3JtTWVkaWFFbmdpbmVDbGFzc05hbWUgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyCiAjZW5kaWYKIAorI2lmIFVTRShNRURJQV9GT1VOREFUSU9OKQorI2luY2x1
ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oIgorI2RlZmluZSBQbGF0Zm9y
bU1lZGlhRW5naW5lQ2xhc3NOYW1lIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbgor
I2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVk
ZSAiTWVkaWFQbGF5ZXJQcml2YXRlSU9TLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFsZXggQ2hyaXN0ZW5zZW4gPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorICog
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhRm91bmRhdGlvbi5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKworI2lmIFVTRShNRURJQV9GT1VOREFUSU9OKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIFRPRE86IEltcGxlbWVudCB2aWRlbyBmdW5jdGlvbmFs
aXR5IHVzaW5nIE1lZGlhIEZvdW5kYXRpb24KKworTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3Vu
ZGF0aW9uOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqIHBs
YXllcikgCisgICAgOiBtX3BsYXllcihwbGF5ZXIpCit7Cit9CisKK1Bhc3NPd25QdHI8TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246
OmNyZWF0ZShNZWRpYVBsYXllciogcGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKHBsYXllcikpOworfQorCit2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCit7CisgICAgaWYgKGlzQXZhaWxhYmxlKCkpCisg
ICAgICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IDAsIDAsIDAsIDApOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6aXNBdmFpbGFibGUoKSAKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcykKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHR5cGVzID0gSGFzaFNldDxTdHJpbmc+KCk7Cit9CisKK01lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c1R5
cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0
ZWQ7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpsb2FkKGNv
bnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBNZWRpYVBs
YXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmNhbmNlbExvYWQoKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpw
bGF5KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhRm91bmRhdGlvbjo6cGF1c2UoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK0ludFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpuYXR1cmFsU2l6
ZSgpIGNvbnN0IAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEludFNpemUo
MCwgMCk7Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpoYXNW
aWRlbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpoYXNBdWRpbygp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzZXRWaXNpYmxlKGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb246OnNlZWtpbmcoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbjo6cGF1c2VkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246Om5ldHdvcmtTdGF0ZSgpIGNvbnN0Cit7IAorICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpFbXB0eTsKK30KKworTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpyZWFk
eVN0YXRlKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBNZWRp
YVBsYXllcjo6SGF2ZU5vdGhpbmc7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6YnVmZmVyZWQoKSBjb25z
dAoreyAKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBQbGF0Zm9ybVRpbWVSYW5n
ZXM6OmNyZWF0ZSgpOworfQorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlv
bjo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb246OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnBhaW50KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoY29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpCisgICAgICAgIHx8ICFtX3BsYXllci0+dmlzaWJsZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUT0RPOiBQYWludCB0aGUgY29udGVudHMgb2Yg
dGhlIHZpZGVvIHRvIHRoZSBjb250ZXh0CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfQor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0
aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBbGV4IENocmlzdGVuc2Vu
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJNZWRpYVBs
YXllclByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZWRpYVBsYXll
clByaXZhdGVNZWRpYUZvdW5kYXRpb24gOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJm
YWNlIHsKK3B1YmxpYzoKKyAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24oTWVk
aWFQbGF5ZXIqKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5n
aW5lUmVnaXN0cmFyKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CisgICAgc3RhdGljIHZvaWQgZ2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CisgICAgc3RhdGljIE1lZGlhUGxh
eWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMmKTsKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworCisgICAgdmlydHVh
bCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxM
b2FkKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZSgpOworCisgICAgdmlydHVhbCBJbnRTaXplIG5hdHVyYWxTaXplKCkgY29uc3Q7CisKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8o
KSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOworCisgICAgdmly
dHVhbCBib29sIHNlZWtpbmcoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3Rh
dGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3Rh
dGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJh
bmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBkaWRMb2FkaW5nUHJv
Z3Jlc3MoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUm
KTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0Jik7CisKK3ByaXZhdGU6CisKKyAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CisKK307CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NzQ2OSkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE0LTA0
LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQmVnaW4gaW1wbGVtZW50YXRpb24gb2YgdmlkZW8gdXNpbmcgTWVkaWEgRm91bmRhdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTgzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5jcHA6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IEFkZGVkIG5ldyBVU0UoTUVESUFfRk9VTkRBVElPTikgZmxhZyB0byBwcmV2ZW50IHVzaW5nIHRo
ZSB1bnN1cHBvcnRlZCBmdWxsc2NyZWVuIGFwaS4KKwogMjAxNC0wNC0wOSAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGltaW5hdGUgRHJhZ1Nlc3Npb24g
c3RydWN0dXJlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcAkocmV2aXNpb24gMTY3NDY5KQorKysgU291cmNlL1dlYktpdC93aW4vRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhVVNFKEdT
VFJFQU1FUikKKyNpZiBFTkFCTEUoVklERU8pICYmICFVU0UoR1NUUkVBTUVSKSAmJiAhVVNFKE1F
RElBX0ZPVU5EQVRJT04pCiAKICNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgi
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxNjc0NjkpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI3Niw3ICs2Mjc2LDcg
QEAgSFJFU1VMVCBXZWJWaWV3OjpzZXRDYW5TdGFydFBsdWdpbnMoQk9PTAogCiB2b2lkIFdlYlZp
ZXc6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKLSNpZiBFTkFCTEUoVklE
RU8pICYmICFVU0UoR1NUUkVBTUVSKQorI2lmIEVOQUJMRShWSURFTykgJiYgIVVTRShHU1RSRUFN
RVIpICYmICFVU0UoTUVESUFfRk9VTkRBVElPTikKICAgICBpZiAoIWlzSFRNTFZpZGVvRWxlbWVu
dChub2RlKSB8fCAhbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTYzMDcsNyArNjMwNyw3IEBAIHZvaWQgV2ViVmlldzo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShO
b2QKIAogdm9pZCBXZWJWaWV3OjpleGl0RnVsbHNjcmVlbigpCiB7Ci0jaWYgRU5BQkxFKFZJREVP
KSAmJiAhVVNFKEdTVFJFQU1FUikKKyNpZiBFTkFCTEUoVklERU8pICYmICFVU0UoR1NUUkVBTUVS
KSAmJiAhVVNFKE1FRElBX0ZPVU5EQVRJT04pCiAgICAgaWYgKCFtX2Z1bGxTY3JlZW5WaWRlb0Nv
bnRyb2xsZXIpCiAgICAgICAgIHJldHVybjsKICAgICAK
</data>
<flag name="review"
          id="253981"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>