<?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>153037</bug_id>
          
          <creation_ts>2016-01-12 13:18:49 -0800</creation_ts>
          <short_desc>WebKit2 should have an API for eagerly querying whether the web process is responsive</short_desc>
          <delta_ts>2016-01-13 14:45:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1154865</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-01-12 13:18:49 -0800</bug_when>
    <thetext>WebKit2 should have an API for eagerly querying whether the web process is responsive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154870</commentid>
    <comment_count>1</comment_count>
      <attachid>268805</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-01-12 13:28:25 -0800</bug_when>
    <thetext>Created attachment 268805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154871</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-12 13:30:19 -0800</bug_when>
    <thetext>Attachment 268805 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2643:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:746:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 7 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>1154877</commentid>
    <comment_count>3</comment_count>
      <attachid>268805</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-01-12 13:43:09 -0800</bug_when>
    <thetext>Comment on attachment 268805
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2647
&gt; +        callbackFunction(webProcessIsResponsive);

You don&apos;t want to call this directly from the callback; it needs to be asynchronous. Please use RunLoop::main().dispatch.

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:558
&gt; +    Vector&lt;std::function&lt;void(bool webProcessIsResponsive)&gt;&gt; isResponsiveCallbacks = WTFMove(m_isResponsiveCallbacks);

auto isResponsiveCallbacks?

&gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:1004
&gt; +            bool webProcessIsResponsive = false;
&gt; +            callback(webProcessIsResponsive);

Same callback about being asynchronous here.

&gt; Source/WebKit2/UIProcess/WebProcessProxy.h:258
&gt; +    bool m_isResponsive;

m_isResponsive doesn&apos;t reflect the member variable fully. Here&apos;s my understanding:

m_isResponsive = false -&gt; We know that the web process is unresponsive.
m_isResponsive = true -&gt; We think that the web process is responsive.

Maybe rename it to m_isKnownToBeUnresponsive and then invert the checks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154907</commentid>
    <comment_count>4</comment_count>
      <attachid>268813</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-01-12 14:38:42 -0800</bug_when>
    <thetext>Created attachment 268813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154908</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-12 14:39:29 -0800</bug_when>
    <thetext>Attachment 268813 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:2643:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebPageProxy.h:746:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 7 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>1154909</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-01-12 14:39:52 -0800</bug_when>
    <thetext>&gt; https://bugs.webkit.org/attachment.cgi?id=268805&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2647
&gt; &gt; +        callbackFunction(webProcessIsResponsive);
&gt; 
&gt; You don&apos;t want to call this directly from the callback; it needs to be
&gt; asynchronous. Please use RunLoop::main().dispatch.

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:558
&gt; &gt; +    Vector&lt;std::function&lt;void(bool webProcessIsResponsive)&gt;&gt; isResponsiveCallbacks = WTFMove(m_isResponsiveCallbacks);
&gt; 
&gt; auto isResponsiveCallbacks?

Fixed.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebProcessProxy.cpp:1004
&gt; &gt; +            bool webProcessIsResponsive = false;
&gt; &gt; +            callback(webProcessIsResponsive);
&gt; 
&gt; Same callback about being asynchronous here.

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/WebProcessProxy.h:258
&gt; &gt; +    bool m_isResponsive;
&gt; 
&gt; m_isResponsive doesn&apos;t reflect the member variable fully. Here&apos;s my
&gt; understanding:
&gt; 
&gt; m_isResponsive = false -&gt; We know that the web process is unresponsive.
&gt; m_isResponsive = true -&gt; We think that the web process is responsive.
&gt; 
&gt; Maybe rename it to m_isKnownToBeUnresponsive and then invert the checks?

I made this an enum.

I renamed the API to remove &quot;get&quot; from the name since Tim and Alex seemed not to like &quot;get&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154913</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-01-12 14:49:59 -0800</bug_when>
    <thetext>(Anders didn&apos;t like &quot;get&quot; either.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155251</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-01-13 14:45:51 -0800</bug_when>
    <thetext>Committed r194986: &lt;http://trac.webkit.org/changeset/194986&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268805</attachid>
            <date>2016-01-12 13:28:25 -0800</date>
            <delta_ts>2016-01-12 14:38:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153037-20160112132755.patch</filename>
            <type>text/plain</type>
            <size>9384</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDkyMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2LTAxLTEyICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MiBzaG91bGQgaGF2
ZSBhbiBBUEkgZm9yIGVhZ2VybHkgcXVlcnlpbmcgd2hldGhlciB0aGUgd2ViIHByb2Nlc3MgaXMg
cmVzcG9uc2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzMDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViS2l0MiBwcm92aWRlcyBhIGRlbGVnYXRlIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSB3ZWIg
cHJvY2VzcyBkb2Vzbid0CisgICAgICAgIHJlc3BvbmQgdG8gYSBtZXNzYWdlIGFmdGVyIGEgd2hp
bGUuIEJ1dCB0aGVyZSdzIG5vIHdheSB0byBzZW5kIGEgbWVzc2FnZQorICAgICAgICBlYWdlcmx5
IGFuZCBjaGVjayBmb3IgcmVwbHkuCisKKyAgICAgICAgV2Ugd2FudCB0aGlzIG5ldyBtZWNoYW5p
c20gc28gdGhhdCBuYXZpZ2F0aW9uIGNhbiB0ZXJtaW5hdGUgdGhlIHdlYgorICAgICAgICBwcm9j
ZXNzIGVhZ2VybHkgaWYgaXQgaXMgaHVuZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDogVGhpcyBpcyB0aGUgbmV3
IEFQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KTogVXBkYXRlZCBmb3IgaW50ZXJm
YWNlIGNoYW5nZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFdlYlByb2Nl
c3NJc1Jlc3BvbnNpdmUpOiBDYWxscyB0aHJvdWdoIHRvIHRoZQorICAgICAgICB3ZWIgcHJvY2Vz
cyBwcm94eS4gV2UgY2xhaW0gdGhhdCB3ZSBhcmUgcmVzcG9uc2l2ZSB3aGVuIHRoZXJlIGlzIG5v
CisgICAgICAgIHdlYiBwcm9jZXNzIGJlY2F1c2Ugd2UgYXNzdW1lIHRoYXQgYSBmcmVzaCB3ZWIg
cHJvY2VzcyB3aWxsIG5vdCBoYW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOiBLZWVwIGEgZmxh
ZyBpbmRpY2F0aW5nCisgICAgICAgIHdoZXRoZXIgdGhlIHByb2Nlc3MgaXMgdW5yZXNwb25zaXZl
IHNvIHRoYXQgd2UgY2FuIGZpcmUgdW5yZXNwb25zaXZlbmVzcworICAgICAgICBjYWxsYmFja3Mg
aW1tZWRpYXRlbHkgZm9yIGEgaHVuZyBwcm9jZXNzIGluc3RlYWQgb2Ygd2FpdGluZyBhbm90aGVy
IDNzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lUmVzcG9u
c2l2ZSk6IFdlIGRvbid0IGZpcmUgcmVzcG9uc2l2ZW5lc3MKKyAgICAgICAgY2FsbGJhY2tzIGlu
c2lkZSBkaWRCZWNvbWVSZXNwb25zaXZlIGJlY2F1c2Ugd2UgYXNzdW1lIHRoYXQgYSByZXNwb25z
aXZlCisgICAgICAgIHdlYiBwcm9jZXNzIHdpbGwgaW52b2tlIGRpZFJlY2VpdmVNYWluVGhyZWFk
UGluZyAtLSBhbmQgd2UgZmlyZSB0aGUKKyAgICAgICAgY2FsbGJhY2tzIHRoZXJlLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0SXNSZXNwb25zaXZlKTogSWYgdGhlIHdl
YiBwcm9jZXNzIGlzIGFscmVhZHkKKyAgICAgICAga25vd24gdG8gYmUgdW5yZXNwb25zaXZlLCBm
aXJlIHRoZSBjYWxsYmFjayByaWdodCBhd2F5LiBPdGhlcndpc2UsIHF1ZXVlCisgICAgICAgIGl0
IHVwIHRvIGZpcmUgb25jZSB3ZSBoYXZlIGFuIGFuc3dlciBmcm9tIGEgbWFpbiB0aHJlYWQgcGlu
Zy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhy
ZWFkUGluZyk6IEZpcmUgYW55IHBlbmRpbmcKKyAgICAgICAgY2FsbGJhY2tzIHdoZW4gd2UgbGVh
cm4gdGhhdCB0aGUgd2ViIHByb2Nlc3MgaXMgcmVzcG9uc2l2ZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKwogMjAxNi0wMS0xMiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFzayBmb3IgVUkgUHJvY2VzcyBh
cHByb3ZhbCBvZiBQcm90ZWN0aW9uU3BhY2Ugd2hlbiBhdXRoZW50aWNhdGluZyBkb3dubG9hZHMg
d2l0aCBOZXR3b3JrU2Vzc2lvbgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAJKHJldmlzaW9uIDE5NDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAxLDcgKzE4MDEsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2VuZFdoZWVsRXZlbnQoY29uc3QgCiAgICAgICAgICAgICBydWJi
ZXJCYW5kc0F0Qm90dG9tKCkKICAgICAgICAgKSwgMCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmRN
YWluVGhyZWFkUGluZygpOworICAgIC8vIE1hbnVhbGx5IHBpbmcgdGhlIHdlYiBwcm9jZXNzIHRv
IGNoZWNrIGZvciByZXNwb25zaXZlbmVzcyBzaW5jZSBvdXIgd2hlZWwKKyAgICAvLyBldmVudCB3
aWxsIGRpc3BhdGNoIHRvIGEgbm9uLW1haW4gdGhyZWFkLCB3aGljaCBhbHdheXMgcmVzcG9uZHMu
CisgICAgbV9wcm9jZXNzLT5nZXRJc1Jlc3BvbnNpdmUobnVsbHB0cik7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmIGV2ZW50KQpAQCAtMjYzNyw3ICsyNjM5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRC
eXRlY29kZVByb2ZpbGUoc3QKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5h
ZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KLSAgICAKKwordm9p
ZCBXZWJQYWdlUHJveHk6OmdldFdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2
b2lkIChib29sIHdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpPiBjYWxsYmFja0Z1bmN0aW9uKQorewor
ICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSA9IHRydWU7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24od2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Byb2Nlc3MtPmdldElzUmVzcG9u
c2l2ZShjYWxsYmFja0Z1bmN0aW9uKTsKK30KKwogI2lmIEVOQUJMRShNSFRNTCkKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxOTQ2NDQp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0Myw2ICs3NDMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldENvbnRlbnRzQXNT
dHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4pOwogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQcm9maWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGdldFdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2b2lkIChib29sIHdlYlByb2Nlc3NJc1Jl
c3BvbnNpdmUpPik7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAgICAgdm9pZCBnZXRDb250ZW50c0Fz
TUhUTUxEYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCShyZXZpc2lvbiAxOTQ2NDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIFdlYlBy
b2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlByb2MKICAgICAsIG1fY3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkodGhpcywgcHJvY2Vzc1Bvb2wpCiAgICAgLCBtX251bWJlck9mVGltZXNT
dWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkKDApCiAgICAgLCBtX3Rocm90dGxlcigqdGhpcykK
KyAgICAsIG1faXNSZXNwb25zaXZlKHRydWUpCiB7CiAgICAgV2ViUGFzdGVib2FyZFByb3h5Ojpz
aW5nbGV0b24oKS5hZGRXZWJQcm9jZXNzUHJveHkoKnRoaXMpOwogCkBAIC01NDksMTQgKzU1MCwy
NSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogeworICAgIG1faXNSZXNwb25z
aXZlID0gZmFsc2U7CisKICAgICBWZWN0b3I8UmVmUHRyPFdlYlBhZ2VQcm94eT4+IHBhZ2VzOwog
ICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3BhZ2VNYXAsIHBhZ2VzKTsKKworICAgIFZlY3Rvcjxz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4+IGlzUmVzcG9u
c2l2ZUNhbGxiYWNrcyA9IFdURk1vdmUobV9pc1Jlc3BvbnNpdmVDYWxsYmFja3MpOworCiAgICAg
Zm9yIChhdXRvJiBwYWdlIDogcGFnZXMpCiAgICAgICAgIHBhZ2UtPnByb2Nlc3NEaWRCZWNvbWVV
bnJlc3BvbnNpdmUoKTsKKworICAgIGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSA9IGZhbHNl
OworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpc1Jlc3BvbnNpdmVDYWxsYmFja3MpCisgICAg
ICAgIGNhbGxiYWNrKHdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7CisgICAgbV9pc1Jlc3BvbnNpdmUgPSB0
cnVlOworCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJQYWdlUHJveHk+PiBwYWdlczsKICAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV9wYWdlTWFwLCBwYWdlcyk7CiAgICAgZm9yIChhdXRvJiBwYWdlIDog
cGFnZXMpCkBAIC05ODQsOCArOTk2LDE5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0hv
bGRpbmdMb2NrZWQKICAgICAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG1fdGhy
b3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpzZW5kTWFpblRocmVhZFBpbmcoKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmdldElzUmVz
cG9uc2l2ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNwb25zaXZlKT4g
Y2FsbGJhY2spCiB7CisgICAgaWYgKCFtX2lzUmVzcG9uc2l2ZSkgeworICAgICAgICBpZiAoY2Fs
bGJhY2spIHsKKyAgICAgICAgICAgIGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSA9IGZhbHNl
OworICAgICAgICAgICAgY2FsbGJhY2sod2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAg
bV9pc1Jlc3BvbnNpdmVDYWxsYmFja3MuYXBwZW5kKGNhbGxiYWNrKTsKKwogICAgIHJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdGFydCgpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1h
aW5UaHJlYWRQaW5nKCksIDApOwogfQpAQCAtOTkzLDYgKzEwMTYsMTEgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnNlbmRNYWluVGhyZWFkUGluZwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJl
Y2VpdmVNYWluVGhyZWFkUGluZygpCiB7CiAgICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3Ao
KTsKKworICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNw
b25zaXZlKT4+IGlzUmVzcG9uc2l2ZUNhbGxiYWNrcyA9IFdURk1vdmUobV9pc1Jlc3BvbnNpdmVD
YWxsYmFja3MpOworICAgIGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSA9IHRydWU7CisgICAg
Zm9yIChhdXRvJiBjYWxsYmFjayA6IGlzUmVzcG9uc2l2ZUNhbGxiYWNrcykKKyAgICAgICAgY2Fs
bGJhY2sod2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2
aXNpb24gMTk0NjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJv
eHkmKTsKIAotICAgIHZvaWQgc2VuZE1haW5UaHJlYWRQaW5nKCk7CisgICAgdm9pZCBnZXRJc1Jl
c3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk+
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpOwogCiBwcml2YXRlOgpAQCAt
MjU0LDYgKzI1NCw5IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1
aW50NjRfdD4gbV9wYWdlVVJMUmV0YWluQ291bnRNYXA7CisKKyAgICBib29sIG1faXNSZXNwb25z
aXZlOworICAgIFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCB3ZWJQcm9jZXNzSXNSZXNw
b25zaXZlKT4+IG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
cmV2aXNpb24gMTk0NjQ0KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNjMsNiArMjM2MywxMyBAQCB2b2lkIFdLUGFnZUdl
dEJ5dGVjb2RlUHJvZmlsZShXS1BhZ2VSZWYgCiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRCeXRl
Y29kZVByb2ZpbGUodG9HZW5lcmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykp
OwogfQogCit2b2lkIFdLUGFnZUdldFdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUoV0tQYWdlUmVmIHBh
Z2VSZWYsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUdldFdlYlByb2Nlc3NJc1Jlc3BvbnNpdmVGdW5j
dGlvbiBjYWxsYmFjaykKK3sKKyAgICB0b0ltcGwocGFnZVJlZiktPmdldFdlYlByb2Nlc3NJc1Jl
c3BvbnNpdmUoW2NvbnRleHQsIGNhbGxiYWNrXShib29sIHdlYlByb2Nlc3NJc1Jlc3BvbnNpdmUp
IHsKKyAgICAgICAgY2FsbGJhY2sod2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSwgY29udGV4dCk7Cisg
ICAgfSk7Cit9CisKIHZvaWQgV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXS1Bh
Z2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YUZ1bmN0aW9uIGNhbGxiYWNrKQogewogICAgIHRvSW1wbChwYWdlUmVmKS0+Z2V0U2Vs
ZWN0aW9uQXNXZWJBcmNoaXZlRGF0YSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQs
IGNhbGxiYWNrKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VQcml2YXRlLmgJKHJldmlzaW9uIDE5NDY0NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDkg
QEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0TWF5U3RhcnRNZWRpYVdoZQogCiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGVGdW5jdGlvbikoV0tTdHJpbmdSZWYsIFdLRXJy
b3JSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZShX
S1BhZ2VSZWYgcGFnZSwgdm9pZCogY29udGV4dCwgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlRnVu
Y3Rpb24gZnVuY3Rpb24pOworCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VHZXRXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlRnVuY3Rpb24pKGJvb2wgd2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSwgdm9pZCogY29u
dGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VHZXRXZWJQcm9jZXNzSXNSZXNwb25zaXZlKFdL
UGFnZVJlZiBwYWdlLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRXZWJQcm9jZXNzSXNSZXNwb25z
aXZlRnVuY3Rpb24gZnVuY3Rpb24pOwogICAgIAogV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tQYWdl
Q29weVJlbGF0ZWRQYWdlcyhXS1BhZ2VSZWYgcGFnZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268813</attachid>
            <date>2016-01-12 14:38:42 -0800</date>
            <delta_ts>2016-01-13 14:36:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153037-20160112143811.patch</filename>
            <type>text/plain</type>
            <size>9434</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NDkyNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE2LTAxLTEyICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViS2l0MiBzaG91bGQgaGF2
ZSBhbiBBUEkgZm9yIGVhZ2VybHkgcXVlcnlpbmcgd2hldGhlciB0aGUgd2ViIHByb2Nlc3MgaXMg
cmVzcG9uc2l2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUzMDM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgV2ViS2l0MiBwcm92aWRlcyBhIGRlbGVnYXRlIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSB3ZWIg
cHJvY2VzcyBkb2Vzbid0CisgICAgICAgIHJlc3BvbmQgdG8gYSBtZXNzYWdlIGFmdGVyIGEgd2hp
bGUuIEJ1dCB0aGVyZSdzIG5vIHdheSB0byBzZW5kIGEgbWVzc2FnZQorICAgICAgICBlYWdlcmx5
IGFuZCBjaGVjayBmb3IgcmVwbHkuCisKKyAgICAgICAgV2Ugd2FudCB0aGlzIG5ldyBtZWNoYW5p
c20gc28gdGhhdCBuYXZpZ2F0aW9uIGNhbiB0ZXJtaW5hdGUgdGhlIHdlYgorICAgICAgICBwcm9j
ZXNzIGVhZ2VybHkgaWYgaXQgaXMgaHVuZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDogVGhpcyBpcyB0aGUgbmV3
IEFQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbmRXaGVlbEV2ZW50KTogVXBkYXRlZCBmb3IgaW50ZXJm
YWNlIGNoYW5nZS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldFdlYlByb2Nl
c3NJc1Jlc3BvbnNpdmUpOiBDYWxscyB0aHJvdWdoIHRvIHRoZQorICAgICAgICB3ZWIgcHJvY2Vz
cyBwcm94eS4gV2UgY2xhaW0gdGhhdCB3ZSBhcmUgcmVzcG9uc2l2ZSB3aGVuIHRoZXJlIGlzIG5v
CisgICAgICAgIHdlYiBwcm9jZXNzIGJlY2F1c2Ugd2UgYXNzdW1lIHRoYXQgYSBmcmVzaCB3ZWIg
cHJvY2VzcyB3aWxsIG5vdCBoYW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOiBLZWVwIGEgZmxh
ZyBpbmRpY2F0aW5nCisgICAgICAgIHdoZXRoZXIgdGhlIHByb2Nlc3MgaXMgdW5yZXNwb25zaXZl
IHNvIHRoYXQgd2UgY2FuIGZpcmUgdW5yZXNwb25zaXZlbmVzcworICAgICAgICBjYWxsYmFja3Mg
aW1tZWRpYXRlbHkgZm9yIGEgaHVuZyBwcm9jZXNzIGluc3RlYWQgb2Ygd2FpdGluZyBhbm90aGVy
IDNzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lUmVzcG9u
c2l2ZSk6IFdlIGRvbid0IGZpcmUgcmVzcG9uc2l2ZW5lc3MKKyAgICAgICAgY2FsbGJhY2tzIGlu
c2lkZSBkaWRCZWNvbWVSZXNwb25zaXZlIGJlY2F1c2Ugd2UgYXNzdW1lIHRoYXQgYSByZXNwb25z
aXZlCisgICAgICAgIHdlYiBwcm9jZXNzIHdpbGwgaW52b2tlIGRpZFJlY2VpdmVNYWluVGhyZWFk
UGluZyAtLSBhbmQgd2UgZmlyZSB0aGUKKyAgICAgICAgY2FsbGJhY2tzIHRoZXJlLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0SXNSZXNwb25zaXZlKTogSWYgdGhlIHdl
YiBwcm9jZXNzIGlzIGFscmVhZHkKKyAgICAgICAga25vd24gdG8gYmUgdW5yZXNwb25zaXZlLCBm
aXJlIHRoZSBjYWxsYmFjayByaWdodCBhd2F5LiBPdGhlcndpc2UsIHF1ZXVlCisgICAgICAgIGl0
IHVwIHRvIGZpcmUgb25jZSB3ZSBoYXZlIGFuIGFuc3dlciBmcm9tIGEgbWFpbiB0aHJlYWQgcGlu
Zy4KKworICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhy
ZWFkUGluZyk6IEZpcmUgYW55IHBlbmRpbmcKKyAgICAgICAgY2FsbGJhY2tzIHdoZW4gd2UgbGVh
cm4gdGhhdCB0aGUgd2ViIHByb2Nlc3MgaXMgcmVzcG9uc2l2ZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKwogMjAxNi0wMS0xMiAgR2VvZmZyZXkgR2FyZW4gIDxn
Z2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYlBhZ2VQcm94eSBzaG91bGQgcmVhdHRhY2gg
dG8gdGhlIHdlYiBwcm9jZXNzIGJlZm9yZSBuYXZpZ2F0aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTk0OTI1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MDEsNyArMTgwMSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kV2hlZWxFdmVudChjb25zdCAK
ICAgICAgICAgICAgIHJ1YmJlckJhbmRzQXRCb3R0b20oKQogICAgICAgICApLCAwKTsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZE1haW5UaHJlYWRQaW5nKCk7CisgICAgLy8gTWFudWFsbHkgcGluZyB0
aGUgd2ViIHByb2Nlc3MgdG8gY2hlY2sgZm9yIHJlc3BvbnNpdmVuZXNzIHNpbmNlIG91ciB3aGVl
bAorICAgIC8vIGV2ZW50IHdpbGwgZGlzcGF0Y2ggdG8gYSBub24tbWFpbiB0aHJlYWQsIHdoaWNo
IGFsd2F5cyByZXNwb25kcy4KKyAgICBtX3Byb2Nlc3MtPmlzUmVzcG9uc2l2ZShudWxscHRyKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCkBAIC0yNjM3LDcgKzI2MzksMjAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShzdAogICAgIG1fbG9hZERlcGVuZGVudFN0cmlu
Z0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQotICAgIAorCit2b2lkIFdlYlBhZ2VQcm94eTo6aXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShzdGQ6
OmZ1bmN0aW9uPHZvaWQgKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+IGNhbGxiYWNrRnVu
Y3Rpb24pCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpIHsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0Z1bmN0aW9uXSB7CisgICAgICAgICAgICBib29sIGlzV2ViUHJv
Y2Vzc1Jlc3BvbnNpdmUgPSB0cnVlOworICAgICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihpc1dl
YlByb2Nlc3NSZXNwb25zaXZlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3Byb2Nlc3MtPmlzUmVzcG9uc2l2ZShjYWxsYmFja0Z1bmN0aW9uKTsKK30KKwog
I2lmIEVOQUJMRShNSFRNTCkKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxE
YXRhKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
IGNhbGxiYWNrRnVuY3Rpb24pCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAxOTQ5MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0Myw2ICs3NDMsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGdldENvbnRlbnRzQXNTdHJpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogICAgIHZvaWQgZ2V0Qnl0ZWNvZGVQ
cm9maWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+KTsKKyAgICB2b2lkIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2
b2lkIChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPik7CiAKICNpZiBFTkFCTEUoTUhUTUwp
CiAgICAgdm9pZCBnZXRDb250ZW50c0FzTUhUTUxEYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAxOTQ5MjUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA2LDYgKzEwNiw3IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYlBy
b2MKICAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkodGhpcywgcHJvY2Vzc1Bvb2wp
CiAgICAgLCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkKDApCiAg
ICAgLCBtX3Rocm90dGxlcigqdGhpcykKKyAgICAsIG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6
TWF5YmUpCiB7CiAgICAgV2ViUGFzdGVib2FyZFByb3h5OjpzaW5nbGV0b24oKS5hZGRXZWJQcm9j
ZXNzUHJveHkoKnRoaXMpOwogCkBAIC01NDksMTQgKzU1MCwyNSBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUludmFsaWRNCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNv
bWVVbnJlc3BvbnNpdmUoKQogeworICAgIG1faXNSZXNwb25zaXZlID0gTm9Pck1heWJlOjpObzsK
KwogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7CiAgICAgY29weVZhbHVl
c1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOworCisgICAgYXV0byBpc1Jlc3BvbnNpdmVDYWxs
YmFja3MgPSBXVEZNb3ZlKG1faXNSZXNwb25zaXZlQ2FsbGJhY2tzKTsKKwogICAgIGZvciAoYXV0
byYgcGFnZSA6IHBhZ2VzKQogICAgICAgICBwYWdlLT5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlKCk7CisKKyAgICBib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUgPSBmYWxzZTsKKyAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogaXNSZXNwb25zaXZlQ2FsbGJhY2tzKQorICAgICAgICBjYWxs
YmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZEJlY29tZVJlc3BvbnNpdmUoKQogeworICAgIG1faXNSZXNwb25zaXZlID0gTm9Pck1heWJl
OjpNYXliZTsKKwogICAgIFZlY3RvcjxSZWZQdHI8V2ViUGFnZVByb3h5Pj4gcGFnZXM7CiAgICAg
Y29weVZhbHVlc1RvVmVjdG9yKG1fcGFnZU1hcCwgcGFnZXMpOwogICAgIGZvciAoYXV0byYgcGFn
ZSA6IHBhZ2VzKQpAQCAtOTg0LDggKzk5NiwyMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0
SXNIb2xkaW5nTG9ja2VkCiAgICAgICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBt
X3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpOwogfQogCi12b2lkIFdlYlByb2Nl
c3NQcm94eTo6c2VuZE1haW5UaHJlYWRQaW5nKCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojppc1Jl
c3BvbnNpdmUoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+
IGNhbGxiYWNrKQogeworICAgIGlmIChtX2lzUmVzcG9uc2l2ZSA9PSBOb09yTWF5YmU6Ok5vKSB7
CisgICAgICAgIGlmIChjYWxsYmFjaykgeworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjYWxsYmFja10geworICAgICAgICAgICAgICAgIGJvb2wgaXNXZWJQcm9jZXNzUmVz
cG9uc2l2ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGlzV2ViUHJvY2Vzc1Jl
c3BvbnNpdmUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgbV9pc1Jlc3BvbnNpdmVDYWxsYmFj
a3MuYXBwZW5kKGNhbGxiYWNrKTsKKwogICAgIHJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgp
OwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1haW5UaHJlYWRQaW5nKCksIDApOwog
fQpAQCAtOTkzLDYgKzEwMTgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRNYWluVGhy
ZWFkUGluZwogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygp
CiB7CiAgICAgcmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKKworICAgIGF1dG8gaXNSZXNw
b25zaXZlQ2FsbGJhY2tzID0gV1RGTW92ZShtX2lzUmVzcG9uc2l2ZUNhbGxiYWNrcyk7CisgICAg
Ym9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlID0gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogaXNSZXNwb25zaXZlQ2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nl
c3NSZXNwb25zaXZlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAxOTQ5MjUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlaW5zdGF0ZU5ldHdv
cmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYpOwogCi0gICAgdm9p
ZCBzZW5kTWFpblRocmVhZFBpbmcoKTsKKyAgICB2b2lkIGlzUmVzcG9uc2l2ZShzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4pOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1haW5UaHJlYWRQaW5nKCk7CiAKIHByaXZhdGU6CkBAIC0yNTQsNiArMjU0LDkgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX3BhZ2VVUkxS
ZXRhaW5Db3VudE1hcDsKKworICAgIGVudW0gY2xhc3MgTm9Pck1heWJlIHsgTm8sIE1heWJlIH0g
bV9pc1Jlc3BvbnNpdmU7CisgICAgVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIHdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUpPj4gbV9pc1Jlc3BvbnNpdmVDYWxsYmFja3M7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCShyZXZpc2lvbiAxOTQ5MjUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2Myw2ICsyMzYzLDEzIEBAIHZv
aWQgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxlKFdLUGFnZVJlZiAKICAgICB0b0ltcGwocGFnZVJl
ZiktPmdldEJ5dGVjb2RlUHJvZmlsZSh0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQs
IGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgV0tQYWdlSXNXZWJQcm9jZXNzUmVzcG9uc2l2ZShXS1Bh
Z2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdlSXNXZWJQcm9jZXNzUmVzcG9uc2l2
ZUZ1bmN0aW9uIGNhbGxiYWNrKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+aXNXZWJQcm9jZXNz
UmVzcG9uc2l2ZShbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2
ZSkgeworICAgICAgICBjYWxsYmFjayhpc1dlYlByb2Nlc3NSZXNwb25zaXZlLCBjb250ZXh0KTsK
KyAgICB9KTsKK30KKwogdm9pZCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdL
UGFnZVJlZiBwYWdlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRTZWxlY3Rpb25Bc1dlYkFy
Y2hpdmVEYXRhRnVuY3Rpb24gY2FsbGJhY2spCiB7CiAgICAgdG9JbXBsKHBhZ2VSZWYpLT5nZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4
dCwgY2FsbGJhY2spKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaAkocmV2aXNpb24gMTk0OTI1KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiArOTAs
OSBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRNYXlTdGFydE1lZGlhV2hlCiAKIHR5cGVkZWYg
dm9pZCAoKldLUGFnZUdldEJ5dGVjb2RlUHJvZmlsZUZ1bmN0aW9uKShXS1N0cmluZ1JlZiwgV0tF
cnJvclJlZiwgdm9pZCopOwogV0tfRVhQT1JUIHZvaWQgV0tQYWdlR2V0Qnl0ZWNvZGVQcm9maWxl
KFdLUGFnZVJlZiBwYWdlLCB2b2lkKiBjb250ZXh0LCBXS1BhZ2VHZXRCeXRlY29kZVByb2ZpbGVG
dW5jdGlvbiBmdW5jdGlvbik7CisKK3R5cGVkZWYgdm9pZCAoKldLUGFnZUlzV2ViUHJvY2Vzc1Jl
c3BvbnNpdmVGdW5jdGlvbikoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlLCB2b2lkKiBjb250
ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUoV0tQYWdl
UmVmIHBhZ2UsIHZvaWQqIGNvbnRleHQsIFdLUGFnZUlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmVGdW5j
dGlvbiBmdW5jdGlvbik7CiAgICAgCiBXS19FWFBPUlQgV0tBcnJheVJlZiBXS1BhZ2VDb3B5UmVs
YXRlZFBhZ2VzKFdLUGFnZVJlZiBwYWdlKTsKIAo=
</data>
<flag name="review"
          id="293792"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>