<?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>146416</bug_id>
          
          <creation_ts>2015-06-29 12:01:24 -0700</creation_ts>
          <short_desc>WKWebView evaluateJavaScript:completionHandler: should reuse its JSContext instance</short_desc>
          <delta_ts>2020-04-23 16:17:15 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=210920</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>andersca</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simontaylor1</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1105445</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2015-06-29 12:01:24 -0700</bug_when>
    <thetext>Similar to the fix made in bug 146358, evaluateJavaScript:completionHandler: in WKWebView creates a new JSContext every time it parses the return value (see http://trac.webkit.org/browser/trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm#L640). This is inefficient and could benefit from the same caching added by http://trac.webkit.org/changeset/186010

I reported this via Radar in rdar://17956460 during the iOS 8 beta period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105446</commentid>
    <comment_count>1</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2015-06-29 12:02:27 -0700</bug_when>
    <thetext>Mark, any chance you could look at this, since it&apos;s very similar to the work you did for bug 146358?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105453</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-06-29 12:09:16 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Mark, any chance you could look at this, since it&apos;s very similar to the work
&gt; you did for bug 146358?

Will take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106160</commentid>
    <comment_count>3</comment_count>
      <attachid>255949</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-01 13:39:04 -0700</bug_when>
    <thetext>Created attachment 255949
the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106161</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-01 13:41:27 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106162</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-01 13:45:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/17956460&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106167</commentid>
    <comment_count>6</comment_count>
      <attachid>255952</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-01 14:17:28 -0700</bug_when>
    <thetext>Created attachment 255952
patch 2: fixed missing semi-colon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106178</commentid>
    <comment_count>7</comment_count>
      <attachid>255952</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-07-01 14:41:39 -0700</bug_when>
    <thetext>Comment on attachment 255952
patch 2: fixed missing semi-colon

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:38
&gt; +    static JSContext* context = [[JSContext alloc] init];

I don&apos;t think it&apos;s OK to leak this context forever. Instead, you should use a timer to cache it for a short amount of time and then destroy it.

&gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:42
&gt; +    if (exception &amp;&amp; *exception)
&gt; +        return nil;

What happens in the case where our caller pass a null exception out parameter? In that case, we have no way to check for exceptions, which seems bad. Can we check valueRef instead, or use some other strategy that allow us to check for exceptions even if exception is null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106284</commentid>
    <comment_count>8</comment_count>
      <attachid>255982</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-01 19:17:03 -0700</bug_when>
    <thetext>Created attachment 255982
patch 3: applied Geoff&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106406</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-02 10:39:32 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created attachment 255982 [details]
&gt; patch 3: applied Geoff&apos;s feedback

For the record, the Win EWS failure is unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106410</commentid>
    <comment_count>10</comment_count>
      <attachid>255982</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-02 10:48:36 -0700</bug_when>
    <thetext>Comment on attachment 255982
patch 3: applied Geoff&apos;s feedback

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:65
&gt; +    ASSERT(isUIThread());

I think asserting RunLoop::isMain() is better here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106429</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-02 11:40:30 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:65
&gt; &gt; +    ASSERT(isUIThread());
&gt; 
&gt; I think asserting RunLoop::isMain() is better here.

I&apos;ve applied this change, and re-tested.  Landed in r186229: &lt;http://trac.webkit.org/r186229&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106481</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-07-02 15:01:26 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:65
&gt; &gt; &gt; +    ASSERT(isUIThread());
&gt; &gt; 
&gt; &gt; I think asserting RunLoop::isMain() is better here.
&gt; 
&gt; I&apos;ve applied this change, and re-tested.  Landed in r186229:
&gt; &lt;http://trac.webkit.org/r186229&gt;.

Broke the build:
https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%2832-bit%20Build%29/builds/4205/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106489</commentid>
    <comment_count>13</comment_count>
      <attachid>255982</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-07-02 15:10:57 -0700</bug_when>
    <thetext>Comment on attachment 255982
patch 3: applied Geoff&apos;s feedback

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:44
&gt; +    JSContext* ensureContext()

Isn&apos;t JSContext in JSC namespace?

&gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:73
&gt; +    JSValue *value = [JSValue valueWithJSValueRef:valueRef inContext:context];

ditto for JSValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106493</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-07-02 15:20:17 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 255982 [details]
&gt; patch 3: applied Geoff&apos;s feedback
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255982&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:44
&gt; &gt; +    JSContext* ensureContext()
&gt; 
&gt; Isn&apos;t JSContext in JSC namespace?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/APISerializedScriptValueCocoa.mm:73
&gt; &gt; +    JSValue *value = [JSValue valueWithJSValueRef:valueRef inContext:context];
&gt; 
&gt; ditto for JSValue.

No, these are the Objective-C types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106531</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-02 16:34:06 -0700</bug_when>
    <thetext>Fix for 32-bit build landed in r186243: &lt;http://trac.webkit.org/r186243&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644830</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Taylor">simontaylor1</who>
    <bug_when>2020-04-23 10:20:09 -0700</bug_when>
    <thetext>I&apos;ve added bug 210920 to request some further improvements here - the shared JSContext used for deserialization is only cached for 1 second from creation, which is non-optimal for heavier users of these APIs and causes some annoyances for debugging.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255949</attachid>
            <date>2015-07-01 13:39:04 -0700</date>
            <delta_ts>2015-07-01 14:17:28 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-146416.patch</filename>
            <type>text/plain</type>
            <size>11685</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA3LTAxICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OmNvbXBsZXRpb25IYW5kbGVyOiBzaG91bGQgcmV1c2UgaXRzIEpTQ29udGV4dCBpbnN0
YW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBjb3JlIGlzc3VlIGhlcmUgaXMgdGhhdCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVzZXJpYWxp
emVkIGFuCisgICAgICAgIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluc3RhbmNlIGludG8g
YW4gT2JqQyBvYmplY3QgZ3JhcGguICBXZSdsbCBzb2x2ZSB0aGlzCisgICAgICAgIGJ5IGludHJv
ZHVjaW5nIGEgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkgZnVuY3Rp
b25zIHRoYXQgZG9lcworICAgICAgICB0aGUgam9iLiAgVGhlIGRlc2VyaWFsaXplKCkgZnVuY3Rp
b24gd2lsbCBlbnN1cmUgdGhhdCB3ZSBvbmx5IGNyZWF0ZSBvbmUgaW5zdGFuY2UKKyAgICAgICAg
b2YgdGhlIEpTQ29udGV4dCBmb3IgZG9pbmcgdGhpcyB3b3JrLgorCisgICAgICAgIEFsc28gdXBk
YXRlZCBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlOjpkaWRQb3N0TWVzc2FnZSgpIHRvIHVz
ZSB0aGlzIG5ldworICAgICAgICBkZXNlcmlhbGl6ZSgpIGZ1bmN0aW9uLgorCisgICAgICAgICog
U2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6IEFkZGVkLgorICAgICAgICAoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmludGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAt
IENoYW5nZWQgdG8gcmV0dXJuIGEgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKi4gIFRo
aXMgbWFrZXMgaXQgZnJpZW5kbGllcgorICAgICAgICAgIHRvIHVzZSBpbiB0aGUgMiBwbGFjZXMg
dGhhdCBuZWVkIGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxp
emVkU2NyaXB0VmFsdWVDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJh
Y2spOgorICAgICAgICAtIFJlbW92ZWQgYSBub3cgdW5uZWNlc3NhcnkgY2FzdC4KKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTUtMDctMDEgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRoaXMgaXMgYSBxdWljayBmb2xs
b3ctb24gdG8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg2MTMyCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgJKHJldmlzaW9uIDE4NjE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxNCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUt
PmRlc2VyaWFsaXplKGNvbnRleHQsIGV4Y2VwdGlvbik7CiAgICAgfQorICAgIAorI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQorICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6
ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OworI2VuZGlmCiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KIAotICAgIHZvaWQq
IGludGVybmFsUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5nZXQoKTsgfQorICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogaW50ZXJuYWxS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpOyB9
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0JKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTQ29udGV4dC5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitpZCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgc3RhdGljIEpTQ29udGV4dCogY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKworICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVl
V2l0aEpTVmFsdWVSZWY6dmFsdWVSZWYgaW5Db250ZXh0OmNvbnRleHRdOworICAgIHJldHVybiB2
YWx1ZS50b09iamVjdDsKK30KKworfSAvLyBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQkocmV2aXNpb24gMTg2MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbXBvcnQgIldL
RnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgpAQCAtMzgsMTAgKzM5
LDcgQEAKICNpbXBvcnQgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW1wb3J0ICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRGaWx0
ZXJJbnRlcm5hbC5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+Ci0jaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAogQGltcGxlbWVu
dGF0aW9uIFdLVXNlckNvbnRlbnRDb250cm9sbGVyCiAKQEAgLTkwLDE0ICs4OCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICAgICAgUmV0YWlu
UHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoZnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSk7Ci0KLSAgICAg
ICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgICAgICAgICAgc3RhdGljIEpTQ29udGV4
dCogY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLQotICAgICAgICAgICAgSlNW
YWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCAwKTsKLSAgICAgICAgICAgIEpTVmFsdWUgKnZhbHVl
ID0gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp2YWx1ZVJlZiBpbkNvbnRleHQ6Y29udGV4
dF07Ci0gICAgICAgICAgICBpZCBib2R5ID0gdmFsdWUudG9PYmplY3Q7Ci0KKyAgICAgICAgICAg
IGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCAwKQogICAgICAgICAgICAgYXV0byBtZXNzYWdlID0gYWRvcHROUyhb
W1dLU2NyaXB0TWVzc2FnZSBhbGxvY10gX2luaXRXaXRoQm9keTpib2R5IHdlYlZpZXc6ZnJvbVdl
YlBhZ2VQcm94eShwYWdlKSBmcmFtZUluZm86ZnJhbWVJbmZvLmdldCgpIG5hbWU6bV9uYW1lLmdl
dCgpXSk7CiAgICAgICAgIAogICAgICAgICAgICAgW21faGFuZGxlciB1c2VyQ29udGVudENvbnRy
b2xsZXI6bV9jb250cm9sbGVyLmdldCgpIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOm1lc3NhZ2Uu
Z2V0KCldOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0JKHJldmlzaW9uIDE4NjE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Niw4ICs3Niw2IEBA
CiAjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtQcm92aWRl
ckludGVybmFsLmgiCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHQuaD4KLSNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNl
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4K
QEAgLTYzNiwxMSArNjM0LDggQEAgLSAodm9pZClldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5n
ICopagogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBjb250
ZXh0ID0gYWRvcHROUyhbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0pOwotICAgICAgICBKU1ZhbHVl
UmVmIHZhbHVlUmVmID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kZXNlcmlhbGl6ZShbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCAwKTsKLSAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnZhbHVlUmVmIGluQ29udGV4dDpjb250ZXh0LmdldCgp
XTsKLQotICAgICAgICByYXdIYW5kbGVyKFt2YWx1ZSB0b09iamVjdF0sIG5pbCk7CisgICAgICAg
IGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoKnNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLCAwKTsKKyAgICAgICAg
cmF3SGFuZGxlcihib2R5LCBuaWwpOwogICAgIH0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAkocmV2aXNpb24g
MTg2MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5ODYsNyArMjk4Niw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2EKIAogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vfb2JqZWN0KHRhc2spKTsKICAgICBn
X3Rhc2tfcmV0dXJuX3BvaW50ZXIodGFzaywgd2Via2l0SmF2YXNjcmlwdFJlc3VsdENyZWF0ZSh3
ZWJWaWV3LAotICAgICAgICAqc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKj4od2tTZXJpYWxpemVkU2NyaXB0VmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKSkp
LAorICAgICAgICAqd2tTZXJpYWxpemVkU2NyaXB0VmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRp
b24oKSksCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rlc3Ryb3lOb3RpZnk+KHdlYmtpdF9q
YXZhc2NyaXB0X3Jlc3VsdF91bnJlZikpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODYxOTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE3OTEsNiArMTc5MSw3IEBACiAJCUY2QTI1RkREMTJBREM2Q0MwMERDNDBD
QyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY2QTI1RkRCMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1h
bmFnZXIuaCAqLzsgfTsKIAkJRjZBOTA4MTMxMzNDMjA1MTAwODJDM0Y0IC8qIFdlYkNvb2tpZU1h
bmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNkE5MDgxMTEzM0MxRjNEMDA4MkMzRjQgLyogV2ViQ29va2llTWFuYWdlck1hYy5tbSAqLzsg
fTsKIAkJRjZENjMyQkMxMzNEMTk4MjAwNzQzRDc3IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2RDYz
MkJBMTMzRDE4MUIwMDc0M0Q3NyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMubW0gKi87IH07
CisJCUZFRDNDMURDMUI0NDdFQUMwMEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVD
b2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
RDNDMURBMUI0NDdBRTgwMEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5t
bSAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtNDAyNCw2ICs0MDI1LDcgQEAKIAkJRjZB
MjVGREIxMkFEQzZDQzAwREM0MENDIC8qIFdlYkRhdGFiYXNlTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXRhYmFzZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjZBOTA4MTExMzNDMUYzRDAwODJDM0Y0IC8qIFdlYkNvb2tpZU1h
bmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJD
b29raWVNYW5hZ2VyTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkQ2MzJC
QTEzM0QxODFCMDA3NDNENzcgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29va2llTWFuYWdlclByb3h5TWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVC
N0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAt
NTMxMCw2ICs1MzEyLDcgQEAKIAkJCQkxQTgxQjM3RjE4QkQ2NkFEMDAwN0ZEQUMgLyogX1dLVmlz
aXRlZExpbmtQcm92aWRlci5oICovLAogCQkJCTFBODFCMzdFMThCRDY2QUQwMDA3RkRBQyAvKiBf
V0tWaXNpdGVkTGlua1Byb3ZpZGVyLm1tICovLAogCQkJCTFBODFCMzg0MThCRDY3M0EwMDA3RkRB
QyAvKiBfV0tWaXNpdGVkTGlua1Byb3ZpZGVySW50ZXJuYWwuaCAqLywKKwkJCQlGRUQzQzFEQTFC
NDQ3QUU4MDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8sCiAJ
CQkJN0NFRkE5NjAxQUMwOTk5MzAwQjkxMEZEIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3Rv
cmVDb2NvYS5tbSAqLywKIAkJCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tICovLAogCQkJCTFBRkRFNjQzMTk1MTBCNTUwMEM0OEZGQSAvKiBM
ZWdhY3lCdW5kbGVGb3JDbGFzcy5tbSAqLywKQEAgLTk2NTYsNiArOTY1OSw3IEBACiAJCQkJMjk2
QkQ4NUUxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFaWjQxN0VGMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0QUQxODg0RTlCQTAwRUQ4NkRCIC8qIFRleHRD
aGVja2VySU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRkVEM0MxREMxQjQ0N0VBQzAwRTBFQjdG
IC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFBNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFBRjI2MzgxNDY4N0MzOTAwNEExRThBIC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGMDVEODYxNDY4ODM0ODAwOEIxRTgx
IC8qIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255952</attachid>
            <date>2015-07-01 14:17:28 -0700</date>
            <delta_ts>2015-07-01 19:17:03 -0700</delta_ts>
            <desc>patch 2: fixed missing semi-colon</desc>
            <filename>bug-146416.patch</filename>
            <type>text/plain</type>
            <size>11686</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDE1LTA3LTAxICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OmNvbXBsZXRpb25IYW5kbGVyOiBzaG91bGQgcmV1c2UgaXRzIEpTQ29udGV4dCBpbnN0
YW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBjb3JlIGlzc3VlIGhlcmUgaXMgdGhhdCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVzZXJpYWxp
emVkIGFuCisgICAgICAgIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluc3RhbmNlIGludG8g
YW4gT2JqQyBvYmplY3QgZ3JhcGguICBXZSdsbCBzb2x2ZSB0aGlzCisgICAgICAgIGJ5IGludHJv
ZHVjaW5nIGEgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkgZnVuY3Rp
b25zIHRoYXQgZG9lcworICAgICAgICB0aGUgam9iLiAgVGhlIGRlc2VyaWFsaXplKCkgZnVuY3Rp
b24gd2lsbCBlbnN1cmUgdGhhdCB3ZSBvbmx5IGNyZWF0ZSBvbmUgaW5zdGFuY2UKKyAgICAgICAg
b2YgdGhlIEpTQ29udGV4dCBmb3IgZG9pbmcgdGhpcyB3b3JrLgorCisgICAgICAgIEFsc28gdXBk
YXRlZCBTY3JpcHRNZXNzYWdlSGFuZGxlckRlbGVnYXRlOjpkaWRQb3N0TWVzc2FnZSgpIHRvIHVz
ZSB0aGlzIG5ldworICAgICAgICBkZXNlcmlhbGl6ZSgpIGZ1bmN0aW9uLgorCisgICAgICAgICog
U2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaDoKKyAgICAgICAgKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZSk6IEFkZGVkLgorICAgICAgICAoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmludGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAt
IENoYW5nZWQgdG8gcmV0dXJuIGEgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKi4gIFRo
aXMgbWFrZXMgaXQgZnJpZW5kbGllcgorICAgICAgICAgIHRvIHVzZSBpbiB0aGUgMiBwbGFjZXMg
dGhhdCBuZWVkIGl0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElTZXJpYWxp
emVkU2NyaXB0VmFsdWVDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJh
Y2spOgorICAgICAgICAtIFJlbW92ZWQgYSBub3cgdW5uZWNlc3NhcnkgY2FzdC4KKyAgICAgICAg
KiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTUtMDctMDEgIEJldGgg
RGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRoaXMgaXMgYSBxdWljayBmb2xs
b3ctb24gdG8gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg2MTMyCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgJKHJldmlzaW9uIDE4NjE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJ
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEwICs1OCwxNCBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUt
PmRlc2VyaWFsaXplKGNvbnRleHQsIGV4Y2VwdGlvbik7CiAgICAgfQorICAgIAorI2lmIFBMQVRG
T1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQorICAgIHN0YXRpYyBpZCBkZXNlcmlhbGl6
ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OworI2VuZGlmCiAKICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KIAotICAgIHZvaWQq
IGludGVybmFsUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5nZXQoKTsgfQorICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogaW50ZXJuYWxS
ZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdldCgpOyB9
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkU2NyaXB0VmFsdWUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0JKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisKKyNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTQ29udGV4dC5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitpZCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7
CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgc3RhdGljIEpTQ29udGV4dCogY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKworICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYg
PSBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxpemUoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uICYmICpleGNlcHRpb24pCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVl
V2l0aEpTVmFsdWVSZWY6dmFsdWVSZWYgaW5Db250ZXh0OmNvbnRleHRdOworICAgIHJldHVybiB2
YWx1ZS50b09iamVjdDsKK30KKworfSAvLyBBUEkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxl
ci5tbQkocmV2aXNpb24gMTg2MTkwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbkRhdGEuaCIKICNpbXBvcnQgIldL
RnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgpAQCAtMzgsMTAgKzM5
LDcgQEAKICNpbXBvcnQgIldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmgiCiAjaW1wb3J0ICJXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2ltcG9ydCAiX1dLVXNlckNvbnRlbnRGaWx0
ZXJJbnRlcm5hbC5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+Ci0jaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oPgotI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAogQGltcGxlbWVu
dGF0aW9uIFdLVXNlckNvbnRlbnRDb250cm9sbGVyCiAKQEAgLTkwLDE0ICs4OCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICAgICAgUmV0YWlu
UHRyPFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoZnJhbWUsIHNlY3VyaXR5T3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKSk7Ci0KLSAgICAg
ICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgICAgICAgICAgc3RhdGljIEpTQ29udGV4
dCogY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLQotICAgICAgICAgICAgSlNW
YWx1ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCAwKTsKLSAgICAgICAgICAgIEpTVmFsdWUgKnZhbHVl
ID0gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp2YWx1ZVJlZiBpbkNvbnRleHQ6Y29udGV4
dF07Ci0gICAgICAgICAgICBpZCBib2R5ID0gdmFsdWUudG9PYmplY3Q7Ci0KKyAgICAgICAgICAg
IGlkIGJvZHkgPSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCAwKTsKICAgICAgICAgICAgIGF1dG8gbWVzc2FnZSA9IGFkb3B0TlMo
W1tXS1NjcmlwdE1lc3NhZ2UgYWxsb2NdIF9pbml0V2l0aEJvZHk6Ym9keSB3ZWJWaWV3OmZyb21X
ZWJQYWdlUHJveHkocGFnZSkgZnJhbWVJbmZvOmZyYW1lSW5mby5nZXQoKSBuYW1lOm1fbmFtZS5n
ZXQoKV0pOwogICAgICAgICAKICAgICAgICAgICAgIFttX2hhbmRsZXIgdXNlckNvbnRlbnRDb250
cm9sbGVyOm1fY29udHJvbGxlci5nZXQoKSBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTptZXNzYWdl
LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAxODYxOTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzYsOCArNzYsNiBA
QAogI2ltcG9ydCAiX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnlJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLU2Vzc2lvblN0YXRlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rUHJvdmlk
ZXJJbnRlcm5hbC5oIgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0Lmg+Ci0jaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFj
ZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+
CkBAIC02MzYsMTEgKzYzNCw4IEBAIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmlu
ZyAqKWoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0TlMoW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgSlNWYWx1
ZVJlZiB2YWx1ZVJlZiA9IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGVzZXJpYWxpemUoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgMCk7Ci0gICAgICAgIEpTVmFsdWUgKnZhbHVlID0gW0pT
VmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp2YWx1ZVJlZiBpbkNvbnRleHQ6Y29udGV4dC5nZXQo
KV07Ci0KLSAgICAgICAgcmF3SGFuZGxlcihbdmFsdWUgdG9PYmplY3RdLCBuaWwpOworICAgICAg
ICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCpzZXJp
YWxpemVkU2NyaXB0VmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKSwgMCk7CisgICAgICAg
IHJhd0hhbmRsZXIoYm9keSwgbmlsKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAJKHJldmlzaW9u
IDE4NjE5MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTg2LDcgKzI5ODYsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdENhCiAKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
ID0gV0VCS0lUX1dFQl9WSUVXKGdfdGFza19nZXRfc291cmNlX29iamVjdCh0YXNrKSk7CiAgICAg
Z190YXNrX3JldHVybl9wb2ludGVyKHRhc2ssIHdlYmtpdEphdmFzY3JpcHRSZXN1bHRDcmVhdGUo
d2ViVmlldywKLSAgICAgICAgKnN0YXRpY19jYXN0PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSo+KHdrU2VyaWFsaXplZFNjcmlwdFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkp
KSwKKyAgICAgICAgKndrU2VyaWFsaXplZFNjcmlwdFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0
aW9uKCkpLAogICAgICAgICByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5Pih3ZWJraXRf
amF2YXNjcmlwdF9yZXN1bHRfdW5yZWYpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg2MTkwKQor
KysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzkxLDYgKzE3OTEsNyBAQAogCQlGNkEyNUZERDEyQURDNkNDMDBEQzQw
Q0MgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNkEyNUZEQjEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VN
YW5hZ2VyLmggKi87IH07CiAJCUY2QTkwODEzMTMzQzIwNTEwMDgyQzNGNCAvKiBXZWJDb29raWVN
YW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjZBOTA4MTExMzNDMUYzRDAwODJDM0Y0IC8qIFdlYkNvb2tpZU1hbmFnZXJNYWMubW0gKi87
IH07CiAJCUY2RDYzMkJDMTMzRDE5ODIwMDc0M0Q3NyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNkQ2
MzJCQTEzM0QxODFCMDA3NDNENzcgLyogV2ViQ29va2llTWFuYWdlclByb3h5TWFjLm1tICovOyB9
OworCQlGRUQzQzFEQzFCNDQ3RUFDMDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVl
Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2Eu
bW0gKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTQwMjQsNiArNDAyNSw3IEBACiAJCUY2
QTI1RkRCMTJBREM2Q0MwMERDNDBDQyAvKiBXZWJEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGF0YWJhc2VNYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY2QTkwODExMTMzQzFGM0QwMDgyQzNGNCAvKiBXZWJDb29raWVN
YW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Q29va2llTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZENjMy
QkExMzNEMTgxQjAwNzQzRDc3IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvb2tpZU1hbmFnZXJQcm94eU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVEM0MxREExQjQ0N0FFODAwRTBF
QjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTUzMTAsNiArNTMxMiw3IEBACiAJCQkJMUE4MUIzN0YxOEJENjZBRDAwMDdGREFDIC8qIF9XS1Zp
c2l0ZWRMaW5rUHJvdmlkZXIuaCAqLywKIAkJCQkxQTgxQjM3RTE4QkQ2NkFEMDAwN0ZEQUMgLyog
X1dLVmlzaXRlZExpbmtQcm92aWRlci5tbSAqLywKIAkJCQkxQTgxQjM4NDE4QkQ2NzNBMDAwN0ZE
QUMgLyogX1dLVmlzaXRlZExpbmtQcm92aWRlckludGVybmFsLmggKi8sCisJCQkJRkVEM0MxREEx
QjQ0N0FFODAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUNvY29hLm1tICovLAog
CQkJCTdDRUZBOTYwMUFDMDk5OTMwMEI5MTBGRCAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lvblN0
b3JlQ29jb2EubW0gKi8sCiAJCQkJMUEzNjM1QUIxQTMxNDVFNTAwRUQ2MTk3IC8qIEFQSVdlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbSAqLywKIAkJCQkxQUZERTY0MzE5NTEwQjU1MDBDNDhGRkEgLyog
TGVnYWN5QnVuZGxlRm9yQ2xhc3MubW0gKi8sCkBAIC05NjU2LDYgKzk2NTksNyBAQAogCQkJCTI5
NkJEODVFMTUwMTlCQzMwMDcxRjQyNCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQkxWlo0MTdFRjEyQzAwRDg3MDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQTk0NEFEMTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0
Q2hlY2tlcklPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUZFRDNDMURDMUI0NDdFQUMwMEUwRUI3
RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBQTQxN0VGMTJDMDBEODcwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlck1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQUYyNjM4MTQ2ODdDMzkwMDRBMUU4QSAvKiBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRjA1RDg2MTQ2ODgzNDgwMDhCMUU4
MSAvKiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGluIFNvdXJjZXMgKi8s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255982</attachid>
            <date>2015-07-01 19:17:03 -0700</date>
            <delta_ts>2015-07-02 10:48:36 -0700</delta_ts>
            <desc>patch 3: applied Geoff&apos;s feedback</desc>
            <filename>bug-146416.patch</filename>
            <type>text/plain</type>
            <size>12494</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjIxNSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTAxICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBXS1dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0OmNvbXBsZXRpb25IYW5kbGVyOiBzaG91bGQgcmV1c2UgaXRzIEpTQ29udGV4dCBpbnN0
YW5jZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NjQxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBjb3JlIGlzc3VlIGhlcmUgaXMgdGhhdCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gZGVzZXJpYWxp
emVkIGFuCisgICAgICAgIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlIGluc3RhbmNlIGludG8g
YW4gT2JqQyBvYmplY3QgZ3JhcGguICBXZSdsbCBzb2x2ZSB0aGlzCisgICAgICAgIGJ5IGludHJv
ZHVjaW5nIGEgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKCkgZnVuY3Rp
b25zIHRoYXQgZG9lcworICAgICAgICB0aGUgam9iLiAgVGhlIGRlc2VyaWFsaXplKCkgZnVuY3Rp
b24gd2lsbCB3aWxsIHVzZSBhIFNoYXJlZEpTQ29udGV4dCB0byBwcm92aWRlCisgICAgICAgIHRo
ZSBuZWVkZWQgSlNDb250ZXh0IGZvciBkb2luZyB0aGlzIHdvcmsuCisKKyAgICAgICAgQWxzbyB1
cGRhdGVkIFNjcmlwdE1lc3NhZ2VIYW5kbGVyRGVsZWdhdGU6OmRpZFBvc3RNZXNzYWdlKCkgdG8g
dXNlIHRoaXMgbmV3CisgICAgICAgIGRlc2VyaWFsaXplKCkgZnVuY3Rpb24uCisKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAgICAgICAgKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjppbnRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgLSBDaGFu
Z2VkIHRvIHJldHVybiBhIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSouICBUaGlzIG1h
a2VzIGl0IGZyaWVuZGxpZXIKKyAgICAgICAgICB0byB1c2UgaW4gdGhlIDIgcGxhY2VzIHRoYXQg
bmVlZCBpdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoQVBJOjpTaGFyZWRKU0NvbnRleHQ6
OlNoYXJlZEpTQ29udGV4dCk6CisgICAgICAgIChBUEk6OlNoYXJlZEpTQ29udGV4dDo6ZW5zdXJl
Q29udGV4dCk6CisgICAgICAgIChBUEk6OlNoYXJlZEpTQ29udGV4dDo6cmVsZWFzZUNvbnRleHQp
OgorICAgICAgICAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAgICAgICAod2Via2l0
V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayk6CisgICAgICAgIC0gUmVtb3ZlZCBhIG5vdyB1
bm5lY2Vzc2FyeSBjYXN0LgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKwogMjAxNS0wNy0wMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtNYWNdIEluc3BlY3RvckZyb250ZW5kSG9zdC5i
ZWVwKCkgZG9lc24ndCBwbGF5IGEgc291bmQsIHNhbmRib3ggd2FybmluZ3MKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aAkocmV2aXNpb24gMTg2MjA3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDE0IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGVz
ZXJpYWxpemUoY29udGV4dCwgZXhjZXB0aW9uKTsKICAgICB9CisgICAgCisjaWYgUExBVEZPUk0o
Q09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCisgICAgc3RhdGljIGlkIGRlc2VyaWFsaXplKFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7Cisj
ZW5kaWYKIAogICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQogCi0gICAgdm9pZCogaW50
ZXJuYWxSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLmdl
dCgpOyB9CisgICAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBpbnRlcm5hbFJlcHJl
c2VudGF0aW9uKCkgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUuZ2V0KCk7IH0KIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbQkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJU2VyaWFsaXplZFNjcmlwdFZh
bHVlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKworI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNDb250ZXh0Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+Cisj
aW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgU2hh
cmVkSlNDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBTaGFyZWRKU0NvbnRleHQoKQorICAgICAgICA6
IG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmU2hhcmVkSlNDb250ZXh0OjpyZWxlYXNl
Q29udGV4dCkKKyAgICB7CisgICAgfQorCisgICAgSlNDb250ZXh0KiBlbnN1cmVDb250ZXh0KCkK
KyAgICB7CisgICAgICAgIGlmICghbV9jb250ZXh0KSB7CisgICAgICAgICAgICBtX2NvbnRleHQg
PSBhZG9wdE5TKFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XSk7CisgICAgICAgICAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdCgxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9jb250ZXh0Lmdl
dCgpOworICAgIH0KKworICAgIHZvaWQgcmVsZWFzZUNvbnRleHQoKQorICAgIHsKKyAgICAgICAg
bV9jb250ZXh0LmNsZWFyKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJldGFpblB0cjxKU0Nv
bnRleHQ+IG1fY29udGV4dDsKKyAgICBSdW5Mb29wOjpUaW1lcjxTaGFyZWRKU0NvbnRleHQ+IG1f
dGltZXI7Cit9OworCitpZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFsaXplKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCit7CisgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNoYXJlZEpTQ29udGV4dD4gc2hhcmVkQ29udGV4dDsKKyAgICBKU0Nv
bnRleHQqIGNvbnRleHQgPSBzaGFyZWRDb250ZXh0LmdldCgpLmVuc3VyZUNvbnRleHQoKTsKKwor
ICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJpYWxp
emUoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgZXhjZXB0aW9uKTsKKyAgICBpZiAoIXZh
bHVlUmVmKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgSlNWYWx1ZSAqdmFsdWUgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnZhbHVlUmVmIGluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICByZXR1cm4gdmFsdWUudG9PYmplY3Q7Cit9CisKK30gLy8gQVBJCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIubW0JKHJldmlzaW9uIDE4NjIwNykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgIkFQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW5EYXRhLmgiCiAj
aW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKQEAg
LTM4LDEwICszOSw3IEBACiAjaW1wb3J0ICJXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIgogI2lt
cG9ydCAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbXBvcnQgIl9XS1VzZXJD
b250ZW50RmlsdGVySW50ZXJuYWwuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4
dC5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KLSNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAK
IEBpbXBsZW1lbnRhdGlvbiBXS1VzZXJDb250ZW50Q29udHJvbGxlcgogCkBAIC05MCwxNCArODgs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAg
ICAgIFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKGZyYW1lLCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkp
OwotCi0gICAgICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICAgICAgICAgIHN0YXRp
YyBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0KLSAgICAg
ICAgICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUuZGVzZXJp
YWxpemUoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgMCk7Ci0gICAgICAgICAgICBKU1Zh
bHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dmFsdWVSZWYgaW5Db250
ZXh0OmNvbnRleHRdOwotICAgICAgICAgICAgaWQgYm9keSA9IHZhbHVlLnRvT2JqZWN0OwotCisg
ICAgICAgICAgICBpZCBib2R5ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2VyaWFs
aXplKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgMCk7CiAgICAgICAgICAgICBhdXRvIG1lc3NhZ2Ug
PSBhZG9wdE5TKFtbV0tTY3JpcHRNZXNzYWdlIGFsbG9jXSBfaW5pdFdpdGhCb2R5OmJvZHkgd2Vi
Vmlldzpmcm9tV2ViUGFnZVByb3h5KHBhZ2UpIGZyYW1lSW5mbzpmcmFtZUluZm8uZ2V0KCkgbmFt
ZTptX25hbWUuZ2V0KCldKTsKICAgICAgICAgCiAgICAgICAgICAgICBbbV9oYW5kbGVyIHVzZXJD
b250ZW50Q29udHJvbGxlcjptX2NvbnRyb2xsZXIuZ2V0KCkgZGlkUmVjZWl2ZVNjcmlwdE1lc3Nh
Z2U6bWVzc2FnZS5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMTg2MjA3KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTc2
LDggKzc2LDYgQEAKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVk
TGlua1Byb3ZpZGVySW50ZXJuYWwuaCIKLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4
dC5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvTWF0
aEV4dHJhcy5oPgpAQCAtNjM3LDExICs2MzUsOCBAQCAtICh2b2lkKWV2YWx1YXRlSmF2YVNjcmlw
dDooTlNTdHJpbmcgKilqCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdE5TKFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XSk7Ci0gICAg
ICAgIEpTVmFsdWVSZWYgdmFsdWVSZWYgPSBzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRlc2VyaWFs
aXplKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIDApOwotICAgICAgICBKU1ZhbHVlICp2
YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dmFsdWVSZWYgaW5Db250ZXh0OmNv
bnRleHQuZ2V0KCldOwotCi0gICAgICAgIHJhd0hhbmRsZXIoW3ZhbHVlIHRvT2JqZWN0XSwgbmls
KTsKKyAgICAgICAgaWQgYm9keSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZSgqc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCksIDAp
OworICAgICAgICByYXdIYW5kbGVyKGJvZHksIG5pbCk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
CShyZXZpc2lvbiAxODYyMDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4Niw3ICsyOTg2LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYQogCiAgICAgV2ViS2l0V2ViVmll
dyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QodGFz
aykpOwogICAgIGdfdGFza19yZXR1cm5fcG9pbnRlcih0YXNrLCB3ZWJraXRKYXZhc2NyaXB0UmVz
dWx0Q3JlYXRlKHdlYlZpZXcsCi0gICAgICAgICpzdGF0aWNfY2FzdDxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqPih3a1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+aW50ZXJuYWxSZXByZXNl
bnRhdGlvbigpKSksCisgICAgICAgICp3a1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+aW50ZXJuYWxS
ZXByZXNlbnRhdGlvbigpKSwKICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlm
eT4od2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE4NjIwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc5MSw2ICsxNzkxLDcgQEAKIAkJRjZBMjVGREQxMkFE
QzZDQzAwREM0MENDIC8qIFdlYkRhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZBMjVGREIxMkFEQzZDQzAwREM0MENDIC8qIFdl
YkRhdGFiYXNlTWFuYWdlci5oICovOyB9OwogCQlGNkE5MDgxMzEzM0MyMDUxMDA4MkMzRjQgLyog
V2ViQ29va2llTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2QTkwODExMTMzQzFGM0QwMDgyQzNGNCAvKiBXZWJDb29raWVNYW5hZ2Vy
TWFjLm1tICovOyB9OwogCQlGNkQ2MzJCQzEzM0QxOTgyMDA3NDNENzcgLyogV2ViQ29va2llTWFu
YWdlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjZENjMyQkExMzNEMTgxQjAwNzQzRDc3IC8qIFdlYkNvb2tpZU1hbmFnZXJQcm94eU1h
Yy5tbSAqLzsgfTsKKwkJRkVEM0MxREMxQjQ0N0VBQzAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkVEM0MxREExQjQ0N0FFODAwRTBFQjdGIC8qIEFQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUNvY29hLm1tICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBAIC00MDI0LDYgKzQwMjUs
NyBAQAogCQlGNkEyNUZEQjEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJhc2VNYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhdGFiYXNlTWFuYWdlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNkE5MDgxMTEzM0MxRjNEMDA4MkMzRjQgLyog
V2ViQ29va2llTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkNvb2tpZU1hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY2RDYzMkJBMTMzRDE4MUIwMDc0M0Q3NyAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb29raWVNYW5h
Z2VyUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRDNDMURBMUI0
NDdBRTgwMEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCkBAIC01MzEwLDYgKzUzMTIsNyBAQAogCQkJCTFBODFCMzdGMThCRDY2QUQwMDA3RkRB
QyAvKiBfV0tWaXNpdGVkTGlua1Byb3ZpZGVyLmggKi8sCiAJCQkJMUE4MUIzN0UxOEJENjZBRDAw
MDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rUHJvdmlkZXIubW0gKi8sCiAJCQkJMUE4MUIzODQxOEJE
NjczQTAwMDdGREFDIC8qIF9XS1Zpc2l0ZWRMaW5rUHJvdmlkZXJJbnRlcm5hbC5oICovLAorCQkJ
CUZFRDNDMURBMUI0NDdBRTgwMEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2Nv
YS5tbSAqLywKIAkJCQk3Q0VGQTk2MDFBQzA5OTkzMDBCOTEwRkQgLyogQVBJVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZUNvY29hLm1tICovLAogCQkJCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAv
KiBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8sCiAJCQkJMUFGREU2NDMxOTUxMEI1NTAw
QzQ4RkZBIC8qIExlZ2FjeUJ1bmRsZUZvckNsYXNzLm1tICovLApAQCAtOTY1Niw2ICs5NjU5LDcg
QEAKIAkJCQkyOTZCRDg1RTE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMVpaNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2Vy
Q29tcGxldGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRBRDE4ODRFOUJBMDBFRDg2
REIgLyogVGV4dENoZWNrZXJJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQlGRUQzQzFEQzFCNDQ3
RUFDMDBFMEVCN0YgLyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQUE0MTdFRjEyQzAwRDg3MDAyQkU2N0IgLyogVGV4dENoZWNrZXJNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQUFGMjYzODE0Njg3QzM5MDA0QTFFOEEgLyogVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUYwNUQ4NjE0Njg4
MzQ4MDA4QjFFODEgLyogVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbSBpbiBT
b3VyY2VzICovLAo=
</data>
<flag name="review"
          id="281072"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>