<?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>138357</bug_id>
          
          <creation_ts>2014-11-04 08:56:12 -0800</creation_ts>
          <short_desc>[iOS] Add long press support for links in WKPDFView</short_desc>
          <delta_ts>2014-11-04 20:56:47 -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>528+ (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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>enrica</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1046084</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 08:56:12 -0800</bug_when>
    <thetext>[iOS] Add long press support for links in WKPDFView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046086</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 08:57:35 -0800</bug_when>
    <thetext>rdar://problem/18334903</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046091</commentid>
    <comment_count>2</comment_count>
      <attachid>240928</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 09:19:05 -0800</bug_when>
    <thetext>Created attachment 240928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046092</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-04 09:21:12 -0800</bug_when>
    <thetext>Attachment 240928 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:353:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 3 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>1046097</commentid>
    <comment_count>4</comment_count>
      <attachid>240928</attachid>
    <who name="">mitz</who>
    <bug_when>2014-11-04 09:48:16 -0800</bug_when>
    <thetext>Comment on attachment 240928
Patch

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

&gt; Source/WebKit2/ChangeLog:25
&gt; +        (-[WKPDFView updatePositionInformation]): Added an empty implementation.

Perhaps this delegate method should be optional?

&gt; Source/WebKit2/ChangeLog:30
&gt; +        (-[WKPDFView startInteractionWithElement:]): Added an empty implementation.
&gt; +        (-[WKPDFView stopInteraction]): Ditto.

Perhaps these delegate method should be optional?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:343
&gt; +    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, duration * NSEC_PER_SEC), dispatch_get_main_queue(), ^ {

Extra space between ^ and {

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:359
&gt; +        return [NSURL URLWithString:anchorString relativeToURL:documentURL];

You can use +_web_URLWithWTFString:relativeToURL: here.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:-363
&gt; -    ASSERT(isMainThread());

Why?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:420
&gt; +    _positionInformation.url = [url absoluteString];

url.absoluteString

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:446
&gt; +        (NSString *)kUTTypeUTF8PlainText : _positionInformation.url,

Is this really “UTF-8”?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:450
&gt; +    [[UIPasteboard generalPasteboard] setItems:@[representations]];

Need spaces inside the @[], can use .items = ;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046170</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 14:08:36 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 240928 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240928&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:25
&gt; &gt; +        (-[WKPDFView updatePositionInformation]): Added an empty implementation.
&gt; 
&gt; Perhaps this delegate method should be optional?

Yeah.

&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:30
&gt; &gt; +        (-[WKPDFView startInteractionWithElement:]): Added an empty implementation.
&gt; &gt; +        (-[WKPDFView stopInteraction]): Ditto.
&gt; 
&gt; Perhaps these delegate method should be optional?

Ok.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:343
&gt; &gt; +    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, duration * NSEC_PER_SEC), dispatch_get_main_queue(), ^ {
&gt; 
&gt; Extra space between ^ and {

Will fix.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:359
&gt; &gt; +        return [NSURL URLWithString:anchorString relativeToURL:documentURL];
&gt; 
&gt; You can use +_web_URLWithWTFString:relativeToURL: here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:-363
&gt; &gt; -    ASSERT(isMainThread());
&gt; 
&gt; Why?

Oops. I meant to move this to _highlightLinkAnnotation:forDuration:completionHandler:, not remove it.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:420
&gt; &gt; +    _positionInformation.url = [url absoluteString];
&gt; 
&gt; url.absoluteString

Ok.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:446
&gt; &gt; +        (NSString *)kUTTypeUTF8PlainText : _positionInformation.url,
&gt; 
&gt; Is this really “UTF-8”?

kUTTypeUTF8PlainText is the pasteboard type that&apos;s used if you were to call -[UIPasteboard setString:].

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:450
&gt; &gt; +    [[UIPasteboard generalPasteboard] setItems:@[representations]];
&gt; 
&gt; Need spaces inside the @[], can use .items = ;

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046189</commentid>
    <comment_count>6</comment_count>
      <attachid>240953</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 14:52:31 -0800</bug_when>
    <thetext>Created attachment 240953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046191</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-04 14:53:50 -0800</bug_when>
    <thetext>Attachment 240953 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:355:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046210</commentid>
    <comment_count>8</comment_count>
      <attachid>240953</attachid>
    <who name="">mitz</who>
    <bug_when>2014-11-04 15:17:19 -0800</bug_when>
    <thetext>Comment on attachment 240953
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:426
&gt; +    [self _highlightLinkAnnotation:linkAnnotation forDuration:.75 completionHandler:^ {

^{</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046302</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 17:24:12 -0800</bug_when>
    <thetext>Committed r175595: &lt;http://trac.webkit.org/changeset/175595&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046365</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 20:30:07 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 240928 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240928&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:359
&gt; &gt; +        return [NSURL URLWithString:anchorString relativeToURL:documentURL];
&gt; 
&gt; You can use +_web_URLWithWTFString:relativeToURL: here.

Turns out this method behaves differently than +URLWithString:relativeToURL:. NSURL&apos;s method ignores fragments the base URL, but our method doesn&apos;t. If the base URL already contains a fragment and then we navigate to another one, we end up appending to the existing fragment rather than replacing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046366</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-11-04 20:31:45 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 240928 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=240928&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:359
&gt; &gt; &gt; +        return [NSURL URLWithString:anchorString relativeToURL:documentURL];
&gt; &gt; 
&gt; &gt; You can use +_web_URLWithWTFString:relativeToURL: here.
&gt; 
&gt; Turns out this method behaves differently than
&gt; +URLWithString:relativeToURL:. NSURL&apos;s method ignores fragments the base
&gt; URL, but our method doesn&apos;t. If the base URL already contains a fragment and
&gt; then we navigate to another one, we end up appending to the existing
&gt; fragment rather than replacing it.

Uh oh. Sorry about giving you bad advice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046367</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 20:35:29 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; Comment on attachment 240928 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=240928&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:359
&gt; &gt; &gt; &gt; +        return [NSURL URLWithString:anchorString relativeToURL:documentURL];
&gt; &gt; &gt; 
&gt; &gt; &gt; You can use +_web_URLWithWTFString:relativeToURL: here.
&gt; &gt; 
&gt; &gt; Turns out this method behaves differently than
&gt; &gt; +URLWithString:relativeToURL:. NSURL&apos;s method ignores fragments the base
&gt; &gt; URL, but our method doesn&apos;t. If the base URL already contains a fragment and
&gt; &gt; then we navigate to another one, we end up appending to the existing
&gt; &gt; fragment rather than replacing it.
&gt; 
&gt; Uh oh. Sorry about giving you bad advice!

That&apos;s ok. I&apos;m trying to see who&apos;s behavior is correct to see if I need to file a bug. RFC 3986 says &quot;If the base URI is obtained from a URI reference, then that reference must be converted to absolute form and stripped of any fragment component prior to its use as a base URI.&quot; in http://tools.ietf.org/html/rfc3986#section-5.1), so it sounds like perhaps KURL should be doing this.

Anyway, I&apos;m going to switch back to the NSURL method unless you object, Dan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046368</commentid>
    <comment_count>13</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-11-04 20:36:20 -0800</bug_when>
    <thetext>(In reply to comment #12)

&gt; Anyway, I&apos;m going to switch back to the NSURL method unless you object, Dan.

Do it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046376</commentid>
    <comment_count>14</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-11-04 20:56:47 -0800</bug_when>
    <thetext>Committed r175607: &lt;http://trac.webkit.org/changeset/175607&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240928</attachid>
            <date>2014-11-04 09:19:05 -0800</date>
            <delta_ts>2014-11-04 14:52:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138357-20141104091915.patch</filename>
            <type>text/plain</type>
            <size>11542</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzFlMTczNWY1OTk2YjU4
NDFlOTZjMGM3MGMxMTU4YjczNzRmODA2MS4uNDVjMjk0ZGI5NWJmNThkZWQ0NWZkYTFhODQ5MzM2
NGQ0MzJhYzM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTExLTA0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBZGQgbG9uZyBwcmVz
cyBzdXBwb3J0IGZvciBsaW5rcyBpbiBXS1BERlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODM1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHRvIHNo
b3cgYSBsaW5rIGFjdGlvbiBzaGVldCBpbiByZXNwb25zZSB0byBsb25nLXByZXNzaW5nIG9uIGEg
bGluay4gSGF2ZSBXS1BERlZpZXcKKyAgICAgICAgY29uZm9ybSB0byBXS0FjdGlvblNoZWV0QXNz
aXN0YW50RGVsZWdhdGUgaW4gb3JkZXIgdG8gcmVzcG9uZCB0byB0aGUgb3BlbiBhbmQgY29weSBh
Y3Rpb25zIGFzIHdlbGwgYXMgdG8KKyAgICAgICAgcHJvdmlkZSB0aGUgbGluaydzIFVSTCBhbmQg
cG9zaXRpb24gaW5mb3JtYXRpb24gdG8gV0tBY3Rpb25TaGVldEFzc2lzdGFudC4gVGhlIGxvbmct
cHJlc3NlZCBsaW5rIGlzIGhpZ2hsaWdodGVkCisgICAgICAgIGZvciAuNzUgc2Vjb25kcyBiZWZv
cmUgdGhlIHNoZWV0IGlzIGRpc3BsYXllZCBpbiBvcmRlciB0byBtYXRjaCBVSVdlYlBERlZpZXcu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oOiBDb25mb3JtZWQgdG8gV0tB
Y3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQ
REZWaWV3Lm1tOgorICAgICAgICAoLVtXS1BERlZpZXcgd2ViX2luaXRXaXRoRnJhbWU6d2ViVmll
dzpdKTogSW5zdGFudGlhdGVkIGEgV0tBY3Rpb25TaGVldEFzc2lzdGFudCBhbmQgc2V0IHNlbGYg
YXMgaXRzIGRlbGVnYXRlLgorICAgICAgICAoLVtXS1BERlZpZXcgX2hpZ2hsaWdodExpbmtBbm5v
dGF0aW9uOmZvckR1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBNb3ZlZCBoaWdobGlnaHQg
ZHJhd2luZyB0byBoZXJlIGZyb20KKyAgICAgICAgYW5ub3RhdGlvbjp3YXNUb3VjaGVkQXRQb2lu
dDpjb250cm9sbGVyOiBpbiBvcmRlciB0byBiZSByZXVzZWQgZm9yIGxvbmctcHJlc3MuCisgICAg
ICAgICgtW1dLUERGVmlldyBfVVJMRm9yTGlua0Fubm90YXRpb246XSk6IE1vdmVkIFVSTCBjcmVh
dGlvbiB0byBoZXJlIGZyb20gYW5ub3RhdGlvbjp3YXNUb3VjaGVkQXRQb2ludDpjb250cm9sbGVy
OgorICAgICAgICBpbiBvcmRlciB0byBiZSByZXVzZWQgZm9yIGxvbmctcHJlc3MuIEdlbmVyYXRl
ZCBhbiBhYnNvbHV0ZSBVUkwgc2luY2UgdGhpcyBVUkwgbWlnaHQgZ28gaW50byB0aGUgcGFzdGVi
b2FyZC4KKyAgICAgICAgKC1bV0tQREZWaWV3IGFubm90YXRpb246d2FzVG91Y2hlZEF0UG9pbnQ6
Y29udHJvbGxlcjpdKTogQ2hhbmdlZCB0byBjYWxsCisgICAgICAgIF9oaWdobGlnaHRMaW5rQW5u
b3RhdGlvbjpmb3JEdXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjogYW5kIF9VUkxGb3JMaW5rQW5u
b3RhdGlvbjouCisgICAgICAgICgtW1dLUERGVmlldyBhbm5vdGF0aW9uOmlzQmVpbmdQcmVzc2Vk
QXRQb2ludDpjb250cm9sbGVyOl0pOiBTZXQgdmFsdWVzIG9uIF9wb3NpdGlvbkluZm9ybWF0aW9u
IGFuZCBjYWxsZWQKKyAgICAgICAgLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHNob3dMaW5rU2hl
ZXRdIGFmdGVyIHNob3dpbmcgYSBoaWdobGlnaHQgZm9yIC43NSBzZWNvbmRzLgorICAgICAgICAo
LVtXS1BERlZpZXcgcG9zaXRpb25JbmZvcm1hdGlvbl0pOiBSZXR1cm5lZCBfcG9zaXRpb25JbmZv
cm1hdGlvbi4KKyAgICAgICAgKC1bV0tQREZWaWV3IHVwZGF0ZVBvc2l0aW9uSW5mb3JtYXRpb25d
KTogQWRkZWQgYW4gZW1wdHkgaW1wbGVtZW50YXRpb24uCisgICAgICAgICgtW1dLUERGVmlldyBw
ZXJmb3JtQWN0aW9uOl0pOiBBZGRlZCBhIFVURi04IHRleHQgYW5kIFVSTCByZXByZXNlbnRhdGlv
biBvZiB0aGUgcHJlc3NlZCBVUkwgdG8gdGhlIHBhc3RlYm9hcmQuCisgICAgICAgICgtW1dLUERG
VmlldyBvcGVuRWxlbWVudEF0TG9jYXRpb246XSk6IENhbGxlZCBXZWJQYWdlOjpuYXZpZ2F0ZVRv
VVJMV2l0aFNpbXVsYXRlZENsaWNrKCkuCisgICAgICAgICgtW1dLUERGVmlldyBhY3Rpb25zRm9y
RWxlbWVudDpkZWZhdWx0QWN0aW9uczpdKTogUmV0dXJuZWQgYWN0aW9ucyBmcm9tIFVJQ2xpZW50
OjphY3Rpb25zRm9yRWxlbWVudCgpLgorICAgICAgICAoLVtXS1BERlZpZXcgc3RhcnRJbnRlcmFj
dGlvbldpdGhFbGVtZW50Ol0pOiBBZGRlZCBhbiBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KKyAgICAg
ICAgKC1bV0tQREZWaWV3IHN0b3BJbnRlcmFjdGlvbl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQ
REZWaWV3IF9jcmVhdGVIaWdobGlnaHRWaWV3V2l0aEZyYW1lOl0pOiBEZWxldGVkLgorCiAyMDE0
LTExLTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGltaW5h
dGUgUmVzb3VyY2VCdWZmZXIgYW5kIHVzZSBTaGFyZWRCdWZmZXIgZGlyZWN0bHkgaW5zdGVhZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmgKaW5kZXggMTkwNDk5MTgxNTZi
MDNjNmQzNWRkOWM5YTAxODExYzNmYjUyMWUyMC4uNWJhZmI1OTRmZDM4YzIzZjA5ZjFkOTE4MDE1
OTBjMzRlZjVmOWE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S1BERlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5o
CkBAIC0yNSwxMiArMjUsMTMgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAorI2ltcG9ydCAiV0tB
Y3Rpb25TaGVldEFzc2lzdGFudC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVy
LmgiCiAjaW1wb3J0IDxDb3JlUERGL1VJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPENvcmVQREYvVUlQREZQYWdlVmlldy5oPgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAK
LUBpbnRlcmZhY2UgV0tQREZWaWV3IDogVUlWaWV3IDxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIs
IFVJUERGUGFnZVZpZXdEZWxlZ2F0ZSwgVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlckRlbGVnYXRl
PgorQGludGVyZmFjZSBXS1BERlZpZXcgOiBVSVZpZXcgPFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
ciwgVUlQREZQYWdlVmlld0RlbGVnYXRlLCBVSVBERkFubm90YXRpb25Db250cm9sbGVyRGVsZWdh
dGUsIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZT4KIAogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWU7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIENHUERGRG9jdW1lbnRSZWYgcGRmRG9jdW1lbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IDA5NmIzY2Y2YmExODg2MDcw
ZjdmM2FlZmRlNDcwMGFiZGVjMDIxODcuLjIyNGM3NTNmNGU0MjNjMTk2ZTIwNWI5YmYxZWJmNTYx
MGFkZjkxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkFQSVVJQ2xp
ZW50LmgiCiAjaW1wb3J0ICJTZXNzaW9uU3RhdGUuaCIKICNpbXBvcnQgIldLUERGUGFnZU51bWJl
ckluZGljYXRvci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTM2LDEwICsz
NywxMCBAQAogI2ltcG9ydCA8Q29yZVBERi9VSVBERkxpbmtBbm5vdGF0aW9uLmg+CiAjaW1wb3J0
IDxDb3JlUERGL1VJUERGUGFnZS5oPgogI2ltcG9ydCA8Q29yZVBERi9VSVBERlBhZ2VWaWV3Lmg+
CisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFVJ
S2l0L1VJU2Nyb2xsVmlld19Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9fVUlIaWdobGlnaHRWaWV3U1BJLmg+Ci0jaW1wb3J0IDxjaHJv
bm8+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTc5LDYgKzgwLDkgQEAgQGltcGxlbWVudGF0aW9uIFdLUERGVmlldyB7CiAKICAgICBCT09M
IF9pc1N0YXJ0aW5nWm9vbTsKICAgICBCT09MIF9pc1BlcmZvcm1pbmdTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uOworCisgICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ+IF9hY3Rpb25T
aGVldEFzc2lzdGFudDsKKyAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uIF9wb3NpdGlvbkluZm9ybWF0aW9uOwogfQogCiAtIChpbnN0YW5jZXR5cGUpd2ViX2luaXRX
aXRoRnJhbWU6KENHUmVjdClmcmFtZSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CkBAIC05
NSw2ICs5OSw5IEBAIC0gKGluc3RhbmNldHlwZSl3ZWJfaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZy
YW1lIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKICAgICBbX3Njcm9sbFZpZXcgc2V0TWF4
aW11bVpvb21TY2FsZTpwZGZNYXhpbXVtWm9vbVNjYWxlXTsKICAgICBbX3Njcm9sbFZpZXcgc2V0
QmFja2dyb3VuZENvbG9yOltVSUNvbG9yIGdyYXlDb2xvcl1dOwogCisgICAgX2FjdGlvblNoZWV0
QXNzaXN0YW50ID0gYWRvcHROUyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRX
aXRoVmlldzpzZWxmXSk7CisgICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpz
ZWxmXTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0zMTksMTcgKzMyNiw0MCBAQCAtICh2
b2lkKV9yZXNldFpvb21BbmltYXRlZDooQk9PTClhbmltYXRlZAogICAgIF9pc1N0YXJ0aW5nWm9v
bSA9IE5POwogfQogCi0tIChSZXRhaW5QdHI8X1VJSGlnaGxpZ2h0Vmlldz4pX2NyZWF0ZUhpZ2hs
aWdodFZpZXdXaXRoRnJhbWU6KENHUmVjdClmcmFtZQorLSAodm9pZClfaGlnaGxpZ2h0TGlua0Fu
bm90YXRpb246KFVJUERGTGlua0Fubm90YXRpb24gKilsaW5rQW5ub3RhdGlvbiBmb3JEdXJhdGlv
bjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBzdGF0aWMgY29uc3QgQ0dGbG9hdCBoaWdobGlnaHRC
b3JkZXJSYWRpdXMgPSAzOwogICAgIHN0YXRpYyBjb25zdCBDR0Zsb2F0IGhpZ2hsaWdodENvbG9y
Q29tcG9uZW50ID0gMjYuMCAvIDI1NTsKICAgICBzdGF0aWMgVUlDb2xvciAqaGlnaGxpZ2h0Q29s
b3IgPSBbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoUmVkOmhpZ2hsaWdodENvbG9yQ29tcG9uZW50
IGdyZWVuOmhpZ2hsaWdodENvbG9yQ29tcG9uZW50IGJsdWU6aGlnaGxpZ2h0Q29sb3JDb21wb25l
bnQgYWxwaGE6MC4zXTsKIAotICAgIFJldGFpblB0cjxfVUlIaWdobGlnaHRWaWV3PiBoaWdobGln
aHRWaWV3ID0gYWRvcHROUyhbW19VSUhpZ2hsaWdodFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0SW5zZXQoZnJhbWUsIC1oaWdobGlnaHRCb3JkZXJSYWRpdXMsIC1oaWdobGlnaHRCb3Jk
ZXJSYWRpdXMpXSk7CisgICAgVUlQREZQYWdlVmlldyAqcGFnZVZpZXcgPSBsaW5rQW5ub3RhdGlv
bi5hbm5vdGF0aW9uQ29udHJvbGxlci5wYWdlVmlldzsKKyAgICBDR1JlY3QgaGlnaGxpZ2h0Vmll
d0ZyYW1lID0gW3NlbGYgY29udmVydFJlY3Q6W3BhZ2VWaWV3IGNvbnZlcnRSZWN0RnJvbVBERlBh
Z2VTcGFjZTpsaW5rQW5ub3RhdGlvbi5SZWN0XSBmcm9tVmlldzpwYWdlVmlld107CisgICAgUmV0
YWluUHRyPF9VSUhpZ2hsaWdodFZpZXc+IGhpZ2hsaWdodFZpZXcgPSBhZG9wdE5TKFtbX1VJSGln
aGxpZ2h0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RJbnNldChoaWdobGlnaHRWaWV3
RnJhbWUsIC1oaWdobGlnaHRCb3JkZXJSYWRpdXMsIC1oaWdobGlnaHRCb3JkZXJSYWRpdXMpXSk7
CiAgICAgW2hpZ2hsaWdodFZpZXcgc2V0T3BhcXVlOk5PXTsKICAgICBbaGlnaGxpZ2h0VmlldyBz
ZXRDb3JuZXJSYWRpdXM6aGlnaGxpZ2h0Qm9yZGVyUmFkaXVzXTsKICAgICBbaGlnaGxpZ2h0Vmll
dyBzZXRDb2xvcjpoaWdobGlnaHRDb2xvcl07Ci0gICAgcmV0dXJuIGhpZ2hsaWdodFZpZXc7CisK
KyAgICBbc2VsZiBhZGRTdWJ2aWV3OmhpZ2hsaWdodFZpZXcuZ2V0KCldOworICAgIGRpc3BhdGNo
X2FmdGVyKGRpc3BhdGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGR1cmF0aW9uICogTlNFQ19Q
RVJfU0VDKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXiB7CisgICAgICAgIFtoaWdobGln
aHRWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgIH0pOworfQorCistIChOU1VSTCAqKV9VUkxGb3JMaW5rQW5ub3RhdGlvbjooVUlQREZM
aW5rQW5ub3RhdGlvbiAqKWxpbmtBbm5vdGF0aW9uCit7CisgICAgTlNVUkwgKmRvY3VtZW50VVJM
ID0gX3dlYlZpZXcuVVJMOworCisgICAgaWYgKE5TVVJMICp1cmwgPSBsaW5rQW5ub3RhdGlvbi51
cmwpCisgICAgICAgIHJldHVybiBbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmwucmVsYXRpdmVTdHJp
bmcgcmVsYXRpdmVUb1VSTDpkb2N1bWVudFVSTF07CisKKyAgICBpZiAoTlNVSW50ZWdlciBwYWdl
TnVtYmVyID0gbGlua0Fubm90YXRpb24ucGFnZU51bWJlcikgeworICAgICAgICBTdHJpbmcgYW5j
aG9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCIjcGFnZSIpOworICAgICAgICBhbmNob3JTdHJpbmcu
YXBwZW5kKFN0cmluZzo6bnVtYmVyKHBhZ2VOdW1iZXIpKTsKKyAgICAgICAgcmV0dXJuIFtOU1VS
TCBVUkxXaXRoU3RyaW5nOmFuY2hvclN0cmluZyByZWxhdGl2ZVRvVVJMOmRvY3VtZW50VVJMXTsK
KyAgICB9CisKKyAgICByZXR1cm4gbmlsOwogfQogCiAjcHJhZ21hIG1hcmsgVUlQREZQYWdlVmll
d0RlbGVnYXRlCkBAIC0zNjAsMzUgKzM5MCw4MyBAQCAtICh2b2lkKXJlc2V0Wm9vbTooVUlQREZQ
YWdlVmlldyAqKXBhZ2VWaWV3CiAKIC0gKHZvaWQpYW5ub3RhdGlvbjooVUlQREZBbm5vdGF0aW9u
ICopYW5ub3RhdGlvbiB3YXNUb3VjaGVkQXRQb2ludDooQ0dQb2ludClwb2ludCBjb250cm9sbGVy
OihVSVBERkFubm90YXRpb25Db250cm9sbGVyICopY29udHJvbGxlcgogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KICAgICBpZiAoIVthbm5vdGF0aW9uIGlzS2luZE9mQ2xhc3M6W1VJ
UERGTGlua0Fubm90YXRpb24gY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVUlQREZM
aW5rQW5ub3RhdGlvbiAqbGlua0Fubm90YXRpb24gPSAoVUlQREZMaW5rQW5ub3RhdGlvbiAqKWFu
bm90YXRpb247Ci0gICAgU3RyaW5nIHVybFN0cmluZzsKLSAgICBpZiAoTlNVUkwgKnVybCA9IGxp
bmtBbm5vdGF0aW9uLnVybCkKLSAgICAgICAgdXJsU3RyaW5nID0gdXJsLmFic29sdXRlU3RyaW5n
OwotICAgIGVsc2UgaWYgKE5TVUludGVnZXIgcGFnZU51bWJlciA9IGxpbmtBbm5vdGF0aW9uLnBh
Z2VOdW1iZXIpIHsKLSAgICAgICAgdXJsU3RyaW5nID0gQVNDSUlMaXRlcmFsKCIjcGFnZSIpOwot
ICAgICAgICB1cmxTdHJpbmcuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHBhZ2VOdW1iZXIpKTsKLSAg
ICB9Ci0KLSAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IHVybCA9IFtzZWxmIF9VUkxGb3JMaW5rQW5ub3RhdGlvbjpsaW5rQW5ub3RhdGlvbl07CisgICAg
aWYgKCF1cmwpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHUG9pbnQgZG9jdW1lbnRQb2ludCA9
IFtjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6c2VsZl07CiAg
ICAgQ0dQb2ludCBzY3JlZW5Qb2ludCA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UG9pbnQ6W3NlbGYg
Y29udmVydFBvaW50OmRvY3VtZW50UG9pbnQgdG9WaWV3Om5pbF0gdG9XaW5kb3c6bmlsXTsKLSAg
ICBzdGF0aWMgY29uc3QgaW50NjRfdCBkaXNwYXRjaE9mZnNldCA9IHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcz4oc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcygyMDApKS5jb3VudCgpOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHJldGFpbmVkV2Vi
VmlldyA9IF93ZWJWaWV3OwogCi0gICAgQ0dSZWN0IGhpZ2hsaWdodFZpZXdGcmFtZSA9IFtzZWxm
IGNvbnZlcnRSZWN0Oltjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZlcnRSZWN0RnJvbVBERlBhZ2VT
cGFjZTphbm5vdGF0aW9uLlJlY3RdIGZyb21WaWV3OmNvbnRyb2xsZXIucGFnZVZpZXddOwotICAg
IFJldGFpblB0cjxfVUlIaWdobGlnaHRWaWV3PiBoaWdobGlnaHRWaWV3ID0gW3NlbGYgX2NyZWF0
ZUhpZ2hsaWdodFZpZXdXaXRoRnJhbWU6aGlnaGxpZ2h0Vmlld0ZyYW1lXTsKLSAgICBbc2VsZiBh
ZGRTdWJ2aWV3OmhpZ2hsaWdodFZpZXcuZ2V0KCldOwotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRpc3BhdGNoT2Zmc2V0KSwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXiB7Ci0gICAgICAgIHJldGFpbmVkV2ViVmlldy0+X3BhZ2UtPm5hdmln
YXRlVG9VUkxXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCByb3VuZGVkSW50UG9pbnQoZG9j
dW1lbnRQb2ludCksIHJvdW5kZWRJbnRQb2ludChzY3JlZW5Qb2ludCkpOwotICAgICAgICBbaGln
aGxpZ2h0VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICB9KTsKKyAgICBbc2VsZiBfaGln
aGxpZ2h0TGlua0Fubm90YXRpb246bGlua0Fubm90YXRpb24gZm9yRHVyYXRpb246LjIgY29tcGxl
dGlvbkhhbmRsZXI6XiB7CisgICAgICAgIHJldGFpbmVkV2ViVmlldy0+X3BhZ2UtPm5hdmlnYXRl
VG9VUkxXaXRoU2ltdWxhdGVkQ2xpY2soW3VybCBhYnNvbHV0ZVN0cmluZ10sIHJvdW5kZWRJbnRQ
b2ludChkb2N1bWVudFBvaW50KSwgcm91bmRlZEludFBvaW50KHNjcmVlblBvaW50KSk7CisgICAg
fV07Cit9CisKKy0gKHZvaWQpYW5ub3RhdGlvbjooVUlQREZBbm5vdGF0aW9uICopYW5ub3RhdGlv
biBpc0JlaW5nUHJlc3NlZEF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29udHJvbGxlcjooVUlQREZB
bm5vdGF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBpZiAoIVthbm5vdGF0aW9u
IGlzS2luZE9mQ2xhc3M6W1VJUERGTGlua0Fubm90YXRpb24gY2xhc3NdXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgVUlQREZMaW5rQW5ub3RhdGlvbiAqbGlua0Fubm90YXRpb24gPSAoVUlQREZM
aW5rQW5ub3RhdGlvbiAqKWFubm90YXRpb247CisgICAgTlNVUkwgKnVybCA9IFtzZWxmIF9VUkxG
b3JMaW5rQW5ub3RhdGlvbjpsaW5rQW5ub3RhdGlvbl07CisgICAgaWYgKCF1cmwpCisgICAgICAg
IHJldHVybjsKKworICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybCA9IFt1cmwgYWJzb2x1dGVT
dHJpbmddOworICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50ID0gcm91bmRlZEludFBvaW50
KFtjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6c2VsZl0pOwor
ICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyA9IHJvdW5kZWRJbnRSZWN0KFtzZWxmIGNv
bnZlcnRSZWN0Oltjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZlcnRSZWN0RnJvbVBERlBhZ2VTcGFj
ZTphbm5vdGF0aW9uLlJlY3RdIGZyb21WaWV3OmNvbnRyb2xsZXIucGFnZVZpZXddKTsKKworICAg
IFtzZWxmIF9oaWdobGlnaHRMaW5rQW5ub3RhdGlvbjpsaW5rQW5ub3RhdGlvbiBmb3JEdXJhdGlv
bjouNzUgY29tcGxldGlvbkhhbmRsZXI6XiB7CisgICAgICAgIFtfYWN0aW9uU2hlZXRBc3Npc3Rh
bnQgc2hvd0xpbmtTaGVldF07CisgICAgfV07Cit9CisKKyNwcmFnbWEgbWFyayBXS0FjdGlvblNo
ZWV0QXNzaXN0YW50RGVsZWdhdGUKKworLSAoY29uc3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9y
bWF0aW9uQXRQb3NpdGlvbiYpcG9zaXRpb25JbmZvcm1hdGlvbgoreworICAgIHJldHVybiBfcG9z
aXRpb25JbmZvcm1hdGlvbjsKK30KKworLSAodm9pZCl1cGRhdGVQb3NpdGlvbkluZm9ybWF0aW9u
Cit7Cit9CisKKy0gKHZvaWQpcGVyZm9ybUFjdGlvbjooV2ViS2l0OjpTaGVldEFjdGlvbilhY3Rp
b24KK3sKKyAgICBpZiAoYWN0aW9uICE9IFdlYktpdDo6U2hlZXRBY3Rpb246OkNvcHkpCisgICAg
ICAgIHJldHVybjsKKworICAgIE5TRGljdGlvbmFyeSAqcmVwcmVzZW50YXRpb25zID0gQHsKKyAg
ICAgICAgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgOiBfcG9zaXRpb25JbmZvcm1h
dGlvbi51cmwsCisgICAgICAgIChOU1N0cmluZyAqKWtVVFR5cGVVUkwgOiBbTlNVUkwgVVJMV2l0
aFN0cmluZzpfcG9zaXRpb25JbmZvcm1hdGlvbi51cmxdCisgICAgfTsKKworICAgIFtbVUlQYXN0
ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRJdGVtczpAW3JlcHJlc2VudGF0aW9uc11dOwor
fQorCistICh2b2lkKW9wZW5FbGVtZW50QXRMb2NhdGlvbjooQ0dQb2ludClsb2NhdGlvbgorewor
ICAgIENHUG9pbnQgc2NyZWVuUG9pbnQgPSBbc2VsZi53aW5kb3cgY29udmVydFBvaW50OltzZWxm
IGNvbnZlcnRQb2ludDpsb2NhdGlvbiB0b1ZpZXc6bmlsXSB0b1dpbmRvdzpuaWxdOworICAgIF93
ZWJWaWV3LT5fcGFnZS0+bmF2aWdhdGVUb1VSTFdpdGhTaW11bGF0ZWRDbGljayhfcG9zaXRpb25J
bmZvcm1hdGlvbi51cmwsIHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIHJvdW5kZWRJbnRQb2lu
dChzY3JlZW5Qb2ludCkpOworfQorCistIChSZXRhaW5QdHI8TlNBcnJheT4pYWN0aW9uc0ZvckVs
ZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9uczoo
UmV0YWluUHRyPE5TQXJyYXk+KWRlZmF1bHRBY3Rpb25zCit7CisgICAgcmV0dXJuIF93ZWJWaWV3
LT5fcGFnZS0+dWlDbGllbnQoKS5hY3Rpb25zRm9yRWxlbWVudChlbGVtZW50LCBXVEY6Om1vdmUo
ZGVmYXVsdEFjdGlvbnMpKTsKK30KKworLSAodm9pZClzdGFydEludGVyYWN0aW9uV2l0aEVsZW1l
bnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudAoreworfQorCistICh2b2lkKXN0
b3BJbnRlcmFjdGlvbgorewogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240953</attachid>
            <date>2014-11-04 14:52:31 -0800</date>
            <delta_ts>2014-11-04 15:17:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138357-20141104145241.patch</filename>
            <type>text/plain</type>
            <size>15780</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjRlMzFmYmI3YTZjNzBl
MWJlZGQ5NTMwOTI2OWVjMDZhOWZiZGY1ZC4uODMwOWY0NTA3MjlhMGYwNWVkODQwMmE1OTUzZjRk
ZWI5ZWY2MzQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE0LTExLTA0ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbaU9TXSBBZGQgbG9uZyBwcmVz
cyBzdXBwb3J0IGZvciBsaW5rcyBpbiBXS1BERlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODM1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHRvIHNo
b3cgYSBsaW5rIGFjdGlvbiBzaGVldCBpbiByZXNwb25zZSB0byBsb25nLXByZXNzaW5nIG9uIGEg
bGluay4gSGF2ZSBXS1BERlZpZXcKKyAgICAgICAgY29uZm9ybSB0byBXS0FjdGlvblNoZWV0QXNz
aXN0YW50RGVsZWdhdGUgaW4gb3JkZXIgdG8gcmVzcG9uZCB0byB0aGUgb3BlbiBhbmQgY29weSBh
Y3Rpb25zIGFzIHdlbGwgYXMgdG8KKyAgICAgICAgcHJvdmlkZSB0aGUgbGluaydzIFVSTCBhbmQg
cG9zaXRpb24gaW5mb3JtYXRpb24gdG8gV0tBY3Rpb25TaGVldEFzc2lzdGFudC4gVGhlIGxvbmct
cHJlc3NlZCBsaW5rIGlzIGhpZ2hsaWdodGVkCisgICAgICAgIGZvciAuNzUgc2Vjb25kcyBiZWZv
cmUgdGhlIHNoZWV0IGlzIGRpc3BsYXllZCBpbiBvcmRlciB0byBtYXRjaCBVSVdlYlBERlZpZXcu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaDogTWFk
ZSBwcm90b2NvbCBtZXRob2RzIHRoYXQgV0tQREZWaWV3IGRvZXNuJ3QgaW1wbGVtZW50IG9wdGlv
bmFsLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbToK
KyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCB1cGRhdGVQb3NpdGlvbkluZm9ybWF0
aW9uXSk6IENoZWNrZWQgaWYgZGVsZWdhdGUgcmVzcG9uZHMgdG8KKyAgICAgICAgdXBkYXRlUG9z
aXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OiBiZWZvcmUgY2FsbGluZy4K
KyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBfY3JlYXRlU2hlZXRXaXRoRWxlbWVu
dEFjdGlvbnM6c2hvd0xpbmtUaXRsZTpdKTogQ2hlY2tlZCBpZiBkZWxlZ2F0ZSByZXNwb25kcyB0
bworICAgICAgICBhY3Rpb25TaGVldEFzc2lzdGFudDp3aWxsU3RhcnRJbnRlcmFjdGlvbldpdGhF
bGVtZW50OiBiZWZvcmUgY2FsbGluZy4KKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCBjbGVhbnVwU2hlZXRdKTogQ2hlY2tlZCBpZiBkZWxlZ2F0ZSByZXNwb25kcyB0byBhY3Rpb25T
aGVldEFzc2lzdGFudERpZFN0b3BJbnRlcmFjdGlvbjoKKyAgICAgICAgYmVmb3JlIGNhbGxpbmcu
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaDogQ29uZm9ybWVkIHRvIFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERG
Vmlldy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IHdlYl9pbml0V2l0aEZyYW1lOndlYlZpZXc6
XSk6IEluc3RhbnRpYXRlZCBhIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYW5kIHNldCBzZWxmIGFz
IGl0cyBkZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tQREZWaWV3IF9oaWdobGlnaHRMaW5rQW5ub3Rh
dGlvbjpmb3JEdXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKTogTW92ZWQgaGlnaGxpZ2h0IGRy
YXdpbmcgdG8gaGVyZSBmcm9tCisgICAgICAgIGFubm90YXRpb246d2FzVG91Y2hlZEF0UG9pbnQ6
Y29udHJvbGxlcjogaW4gb3JkZXIgdG8gYmUgcmV1c2VkIGZvciBsb25nLXByZXNzLgorICAgICAg
ICAoLVtXS1BERlZpZXcgX1VSTEZvckxpbmtBbm5vdGF0aW9uOl0pOiBNb3ZlZCBVUkwgY3JlYXRp
b24gdG8gaGVyZSBmcm9tIGFubm90YXRpb246d2FzVG91Y2hlZEF0UG9pbnQ6Y29udHJvbGxlcjoK
KyAgICAgICAgaW4gb3JkZXIgdG8gYmUgcmV1c2VkIGZvciBsb25nLXByZXNzLiBHZW5lcmF0ZWQg
YW4gYWJzb2x1dGUgVVJMIHNpbmNlIHRoaXMgVVJMIG1pZ2h0IGdvIGludG8gdGhlIHBhc3RlYm9h
cmQuCisgICAgICAgICgtW1dLUERGVmlldyBhbm5vdGF0aW9uOndhc1RvdWNoZWRBdFBvaW50OmNv
bnRyb2xsZXI6XSk6IENoYW5nZWQgdG8gY2FsbAorICAgICAgICBfaGlnaGxpZ2h0TGlua0Fubm90
YXRpb246Zm9yRHVyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6IGFuZCBfVVJMRm9yTGlua0Fubm90
YXRpb246LgorICAgICAgICAoLVtXS1BERlZpZXcgYW5ub3RhdGlvbjppc0JlaW5nUHJlc3NlZEF0
UG9pbnQ6Y29udHJvbGxlcjpdKTogU2V0IHZhbHVlcyBvbiBfcG9zaXRpb25JbmZvcm1hdGlvbiBh
bmQgY2FsbGVkCisgICAgICAgIC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBzaG93TGlua1NoZWV0
XSBhZnRlciBzaG93aW5nIGEgaGlnaGxpZ2h0IGZvciAuNzUgc2Vjb25kcy4KKyAgICAgICAgKC1b
V0tQREZWaWV3IHBvc2l0aW9uSW5mb3JtYXRpb25dKTogUmV0dXJuZWQgX3Bvc2l0aW9uSW5mb3Jt
YXRpb24uCisgICAgICAgICgtW1dLUERGVmlldyBwZXJmb3JtQWN0aW9uOl0pOiBBZGRlZCBhIFVU
Ri04IHRleHQgYW5kIFVSTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJlc3NlZCBVUkwgdG8gdGhl
IHBhc3RlYm9hcmQuCisgICAgICAgICgtW1dLUERGVmlldyBvcGVuRWxlbWVudEF0TG9jYXRpb246
XSk6IENhbGxlZCBXZWJQYWdlOjpuYXZpZ2F0ZVRvVVJMV2l0aFNpbXVsYXRlZENsaWNrKCkuCisg
ICAgICAgICgtW1dLUERGVmlldyBhY3Rpb25zRm9yRWxlbWVudDpkZWZhdWx0QWN0aW9uczpdKTog
UmV0dXJuZWQgYWN0aW9ucyBmcm9tIFVJQ2xpZW50OjphY3Rpb25zRm9yRWxlbWVudCgpLgorICAg
ICAgICAoLVtXS1BERlZpZXcgX2NyZWF0ZUhpZ2hsaWdodFZpZXdXaXRoRnJhbWU6XSk6IERlbGV0
ZWQuCisKKzIwMTQtMTEtMDQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCiAgICAg
ICAgIFtpT1NdIEluY2x1ZGUgYSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHBhcmFtZXRlciBpbiBX
S0FjdGlvblNoZWV0QXNzaXN0YW50RGVsZWdhdGUgbWV0aG9kcwogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzkyCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKaW5kZXggZTI1
Y2MzNmZlNWExNmJmZjQxZDZkOTYxNTY3ZmJkZmE0ZTIwYjJhNC4uYzVhZmEwNWQ3ZDk4MWQzOTg0
OTg2MmEzY2ZjZjI0ODY3YjU0YzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKQEAgLTQwLDE1ICs0MCwxOCBAQCBz
dHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb247CiBAY2xhc3MgX1dLQWN0aXZh
dGVkRWxlbWVudEluZm87CiBAcHJvdG9jb2wgV0tBY3Rpb25TaGVldERlbGVnYXRlOwogCi1AcHJv
dG9jb2wgV0tBY3Rpb25TaGVldEFzc2lzdGFudERlbGVnYXRlCitAcHJvdG9jb2wgV0tBY3Rpb25T
aGVldEFzc2lzdGFudERlbGVnYXRlIDxOU09iamVjdD4KIEByZXF1aXJlZAogLSAoY29uc3QgV2Vi
S2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpcG9zaXRpb25JbmZvcm1hdGlv
bkZvckFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0
YW50OwotLSAodm9pZCl1cGRhdGVQb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Np
c3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQ7CiAtICh2b2lkKWFjdGlv
blNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHBlcmZv
cm1BY3Rpb246KFdlYktpdDo6U2hlZXRBY3Rpb24pYWN0aW9uOwogLSAodm9pZClhY3Rpb25TaGVl
dEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBvcGVuRWxlbWVu
dEF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb247CiAtIChSZXRhaW5QdHI8TlNBcnJheT4pYWN0
aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgZGVj
aWRlQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopZWxlbWVudCBk
ZWZhdWx0QWN0aW9uczooUmV0YWluUHRyPE5TQXJyYXk+KWRlZmF1bHRBY3Rpb25zOworCitAb3B0
aW9uYWwKKy0gKHZvaWQpdXBkYXRlUG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNz
aXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50OwogLSAodm9pZClhY3Rp
b25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCB3aWxs
U3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVs
ZW1lbnQ7CiAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50RGlkU3RvcEludGVyYWN0aW9uOihX
S0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50OworCiBAZW5kCiAKIEBpbnRlcmZhY2Ug
V0tBY3Rpb25TaGVldEFzc2lzdGFudCA6IE5TT2JqZWN0IDxXS0FjdGlvblNoZWV0RGVsZWdhdGUs
IERERGV0ZWN0aW9uQ29udHJvbGxlckludGVyYWN0aW9uRGVsZWdhdGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5k
ZXggMTc5NzI0Mzk4YTk0ZTg2NGJkNDc5NmE4ZmJlMzZiMjUwMDU1ZDhjNS4uNTMzMjJiNmRmYjIy
ZThlMGNiMzU4MGE2YmFjNTAxYzM4MThmNjU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAtMTYzLDcgKzE2
Myw5IEBAIC0gKENHUmVjdClwcmVzZW50YXRpb25SZWN0SW5Ib3N0Vmlld0ZvclNoZWV0CiAKIC0g
KHZvaWQpdXBkYXRlUG9zaXRpb25JbmZvcm1hdGlvbgogewotICAgIFtfZGVsZWdhdGUuZ2V0KCkg
dXBkYXRlUG9zaXRpb25JbmZvcm1hdGlvbkZvckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBfZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHVwZGF0ZVBvc2l0aW9uSW5mb3JtYXRpb25Gb3JB
Y3Rpb25TaGVldEFzc2lzdGFudDopXSkKKyAgICAgICAgW2RlbGVnYXRlIHVwZGF0ZVBvc2l0aW9u
SW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsKIH0KIAogLSAoQk9PTClw
cmVzZW50U2hlZXQKQEAgLTIzNiw3ICsyMzgsOSBAQCAtICh2b2lkKV9jcmVhdGVTaGVldFdpdGhF
bGVtZW50QWN0aW9uczooTlNBcnJheSAqKWFjdGlvbnMgc2hvd0xpbmtUaXRsZTooQk9PTClzaAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVyOl4oVUlBbGVydEFjdGlvbiAqYWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZiBjbGVhbnVwU2hlZXRd
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9XV07Ci0gICAgW2RlbGVnYXRlIGFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGYgd2lsbFN0YXJ0
SW50ZXJhY3Rpb25XaXRoRWxlbWVudDpfZWxlbWVudEluZm8uZ2V0KCldOworCisgICAgaWYgKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGFjdGlvblNoZWV0QXNzaXN0YW50
OndpbGxTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnQ6KV0pCisgICAgICAgIFtkZWxlZ2F0ZSBh
Y3Rpb25TaGVldEFzc2lzdGFudDpzZWxmIHdpbGxTdGFydEludGVyYWN0aW9uV2l0aEVsZW1lbnQ6
X2VsZW1lbnRJbmZvLmdldCgpXTsKIH0KIAogLSAodm9pZClzaG93SW1hZ2VTaGVldApAQCAtMzY1
LDcgKzM2OSw5IEBAIC0gKHZvaWQpc2hvd0RhdGFEZXRlY3RvcnNTaGVldAogCiAtICh2b2lkKWNs
ZWFudXBTaGVldAogewotICAgIFtfZGVsZWdhdGUuZ2V0KCkgYWN0aW9uU2hlZXRBc3Npc3RhbnRE
aWRTdG9wSW50ZXJhY3Rpb246c2VsZl07CisgICAgYXV0byBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoYWN0
aW9uU2hlZXRBc3Npc3RhbnREaWRTdG9wSW50ZXJhY3Rpb246KV0pCisgICAgICAgIFtkZWxlZ2F0
ZSBhY3Rpb25TaGVldEFzc2lzdGFudERpZFN0b3BJbnRlcmFjdGlvbjpzZWxmXTsKIAogICAgIFtf
aW50ZXJhY3Rpb25TaGVldCBkb25lV2l0aFNoZWV0XTsKICAgICBbX2ludGVyYWN0aW9uU2hlZXQg
c2V0U2hlZXREZWxlZ2F0ZTpuaWxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS1BERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3LmgKaW5kZXggMTkwNDk5MTgxNTZiMDNjNmQzNWRkOWM5YTAxODExYzNmYjUyMWUyMC4uNWJh
ZmI1OTRmZDM4YzIzZjA5ZjFkOTE4MDE1OTBjMzRlZjVmOWE2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5oCkBAIC0yNSwxMiArMjUsMTMgQEAKIAogI2lmIFBMQVRG
T1JNKElPUykKIAorI2ltcG9ydCAiV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgiCiAjaW1wb3J0IDxDb3JlUERGL1VJUERGQW5ub3Rh
dGlvbkNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlVmlldy5oPgogI2lt
cG9ydCA8VUlLaXQvVUlWaWV3Lmg+CiAKLUBpbnRlcmZhY2UgV0tQREZWaWV3IDogVUlWaWV3IDxX
S1dlYlZpZXdDb250ZW50UHJvdmlkZXIsIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZSwgVUlQREZBbm5v
dGF0aW9uQ29udHJvbGxlckRlbGVnYXRlPgorQGludGVyZmFjZSBXS1BERlZpZXcgOiBVSVZpZXcg
PFdLV2ViVmlld0NvbnRlbnRQcm92aWRlciwgVUlQREZQYWdlVmlld0RlbGVnYXRlLCBVSVBERkFu
bm90YXRpb25Db250cm9sbGVyRGVsZWdhdGUsIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0
ZT4KIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc3VnZ2VzdGVk
RmlsZW5hbWU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUERGRG9jdW1lbnRS
ZWYgcGRmRG9jdW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1t
CmluZGV4IDA5NmIzY2Y2YmExODg2MDcwZjdmM2FlZmRlNDcwMGFiZGVjMDIxODcuLmIyNDUwNTAx
N2M3Y2YwYjg2YWRlMWQxZGEzYjNlZWQzNWI1YjA1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBQTEFURk9STShJ
T1MpCiAKKyNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJTZXNzaW9uU3RhdGUuaCIK
KyNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldLUERGUGFnZU51bWJlckluZGlj
YXRvci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgpAQCAtMzYsMTAgKzM4LDEwIEBACiAjaW1wb3J0IDxDb3JlUERGL1VJUERGTGlua0Fu
bm90YXRpb24uaD4KICNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlLmg+CiAjaW1wb3J0IDxDb3Jl
UERGL1VJUERGUGFnZVZpZXcuaD4KKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVU
eXBlcy5oPgogI2ltcG9ydCA8VUlLaXQvVUlTY3JvbGxWaWV3X1ByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL19VSUhpZ2hsaWdodFZpZXdT
UEkuaD4KLSNpbXBvcnQgPGNocm9ubz4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBv
cnQgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNzksNiArODEsOSBAQCBAaW1wbGVtZW50YXRpb24gV0tQ
REZWaWV3IHsKIAogICAgIEJPT0wgX2lzU3RhcnRpbmdab29tOwogICAgIEJPT0wgX2lzUGVyZm9y
bWluZ1NhbWVEb2N1bWVudE5hdmlnYXRpb247CisKKyAgICBSZXRhaW5QdHI8V0tBY3Rpb25TaGVl
dEFzc2lzdGFudD4gX2FjdGlvblNoZWV0QXNzaXN0YW50OworICAgIFdlYktpdDo6SW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24gX3Bvc2l0aW9uSW5mb3JtYXRpb247CiB9CiAKIC0gKGlu
c3RhbmNldHlwZSl3ZWJfaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcKQEAgLTk1LDYgKzEwMCw5IEBAIC0gKGluc3RhbmNldHlwZSl3ZWJfaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKICAg
ICBbX3Njcm9sbFZpZXcgc2V0TWF4aW11bVpvb21TY2FsZTpwZGZNYXhpbXVtWm9vbVNjYWxlXTsK
ICAgICBbX3Njcm9sbFZpZXcgc2V0QmFja2dyb3VuZENvbG9yOltVSUNvbG9yIGdyYXlDb2xvcl1d
OwogCisgICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRvcHROUyhbW1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7CisgICAgW19hY3Rpb25TaGVldEFz
c2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0z
MTksMTcgKzMyNyw0MSBAQCAtICh2b2lkKV9yZXNldFpvb21BbmltYXRlZDooQk9PTClhbmltYXRl
ZAogICAgIF9pc1N0YXJ0aW5nWm9vbSA9IE5POwogfQogCi0tIChSZXRhaW5QdHI8X1VJSGlnaGxp
Z2h0Vmlldz4pX2NyZWF0ZUhpZ2hsaWdodFZpZXdXaXRoRnJhbWU6KENHUmVjdClmcmFtZQorLSAo
dm9pZClfaGlnaGxpZ2h0TGlua0Fubm90YXRpb246KFVJUERGTGlua0Fubm90YXRpb24gKilsaW5r
QW5ub3RhdGlvbiBmb3JEdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBzdGF0aWMgY29u
c3QgQ0dGbG9hdCBoaWdobGlnaHRCb3JkZXJSYWRpdXMgPSAzOwogICAgIHN0YXRpYyBjb25zdCBD
R0Zsb2F0IGhpZ2hsaWdodENvbG9yQ29tcG9uZW50ID0gMjYuMCAvIDI1NTsKICAgICBzdGF0aWMg
VUlDb2xvciAqaGlnaGxpZ2h0Q29sb3IgPSBbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoUmVkOmhp
Z2hsaWdodENvbG9yQ29tcG9uZW50IGdyZWVuOmhpZ2hsaWdodENvbG9yQ29tcG9uZW50IGJsdWU6
aGlnaGxpZ2h0Q29sb3JDb21wb25lbnQgYWxwaGE6MC4zXTsKIAotICAgIFJldGFpblB0cjxfVUlI
aWdobGlnaHRWaWV3PiBoaWdobGlnaHRWaWV3ID0gYWRvcHROUyhbW19VSUhpZ2hsaWdodFZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0SW5zZXQoZnJhbWUsIC1oaWdobGlnaHRCb3JkZXJS
YWRpdXMsIC1oaWdobGlnaHRCb3JkZXJSYWRpdXMpXSk7CisgICAgVUlQREZQYWdlVmlldyAqcGFn
ZVZpZXcgPSBsaW5rQW5ub3RhdGlvbi5hbm5vdGF0aW9uQ29udHJvbGxlci5wYWdlVmlldzsKKyAg
ICBDR1JlY3QgaGlnaGxpZ2h0Vmlld0ZyYW1lID0gW3NlbGYgY29udmVydFJlY3Q6W3BhZ2VWaWV3
IGNvbnZlcnRSZWN0RnJvbVBERlBhZ2VTcGFjZTpsaW5rQW5ub3RhdGlvbi5SZWN0XSBmcm9tVmll
dzpwYWdlVmlld107CisgICAgUmV0YWluUHRyPF9VSUhpZ2hsaWdodFZpZXc+IGhpZ2hsaWdodFZp
ZXcgPSBhZG9wdE5TKFtbX1VJSGlnaGxpZ2h0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RJbnNldChoaWdobGlnaHRWaWV3RnJhbWUsIC1oaWdobGlnaHRCb3JkZXJSYWRpdXMsIC1oaWdo
bGlnaHRCb3JkZXJSYWRpdXMpXSk7CiAgICAgW2hpZ2hsaWdodFZpZXcgc2V0T3BhcXVlOk5PXTsK
ICAgICBbaGlnaGxpZ2h0VmlldyBzZXRDb3JuZXJSYWRpdXM6aGlnaGxpZ2h0Qm9yZGVyUmFkaXVz
XTsKICAgICBbaGlnaGxpZ2h0VmlldyBzZXRDb2xvcjpoaWdobGlnaHRDb2xvcl07Ci0gICAgcmV0
dXJuIGhpZ2hsaWdodFZpZXc7CisKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFtz
ZWxmIGFkZFN1YnZpZXc6aGlnaGxpZ2h0Vmlldy5nZXQoKV07CisgICAgZGlzcGF0Y2hfYWZ0ZXIo
ZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24gKiBOU0VDX1BFUl9TRUMp
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBbaGlnaGxpZ2h0VmlldyBy
ZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9
KTsKK30KKworLSAoTlNVUkwgKilfVVJMRm9yTGlua0Fubm90YXRpb246KFVJUERGTGlua0Fubm90
YXRpb24gKilsaW5rQW5ub3RhdGlvbgoreworICAgIE5TVVJMICpkb2N1bWVudFVSTCA9IF93ZWJW
aWV3LlVSTDsKKworICAgIGlmIChOU1VSTCAqdXJsID0gbGlua0Fubm90YXRpb24udXJsKQorICAg
ICAgICByZXR1cm4gW05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsLnJlbGF0aXZlU3RyaW5nIHJlbGF0
aXZlVG9VUkw6ZG9jdW1lbnRVUkxdOworCisgICAgaWYgKE5TVUludGVnZXIgcGFnZU51bWJlciA9
IGxpbmtBbm5vdGF0aW9uLnBhZ2VOdW1iZXIpIHsKKyAgICAgICAgU3RyaW5nIGFuY2hvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiI3BhZ2UiKTsKKyAgICAgICAgYW5jaG9yU3RyaW5nLmFwcGVuZChT
dHJpbmc6Om51bWJlcihwYWdlTnVtYmVyKSk7CisgICAgICAgIHJldHVybiBbTlNVUkwgX3dlYl9V
UkxXaXRoV1RGU3RyaW5nOmFuY2hvclN0cmluZyByZWxhdGl2ZVRvVVJMOmRvY3VtZW50VVJMXTsK
KyAgICB9CisKKyAgICByZXR1cm4gbmlsOwogfQogCiAjcHJhZ21hIG1hcmsgVUlQREZQYWdlVmll
d0RlbGVnYXRlCkBAIC0zNjAsMzUgKzM5Miw3MSBAQCAtICh2b2lkKXJlc2V0Wm9vbTooVUlQREZQ
YWdlVmlldyAqKXBhZ2VWaWV3CiAKIC0gKHZvaWQpYW5ub3RhdGlvbjooVUlQREZBbm5vdGF0aW9u
ICopYW5ub3RhdGlvbiB3YXNUb3VjaGVkQXRQb2ludDooQ0dQb2ludClwb2ludCBjb250cm9sbGVy
OihVSVBERkFubm90YXRpb25Db250cm9sbGVyICopY29udHJvbGxlcgogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0KICAgICBpZiAoIVthbm5vdGF0aW9uIGlzS2luZE9mQ2xhc3M6W1VJ
UERGTGlua0Fubm90YXRpb24gY2xhc3NdXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVUlQREZM
aW5rQW5ub3RhdGlvbiAqbGlua0Fubm90YXRpb24gPSAoVUlQREZMaW5rQW5ub3RhdGlvbiAqKWFu
bm90YXRpb247Ci0gICAgU3RyaW5nIHVybFN0cmluZzsKLSAgICBpZiAoTlNVUkwgKnVybCA9IGxp
bmtBbm5vdGF0aW9uLnVybCkKLSAgICAgICAgdXJsU3RyaW5nID0gdXJsLmFic29sdXRlU3RyaW5n
OwotICAgIGVsc2UgaWYgKE5TVUludGVnZXIgcGFnZU51bWJlciA9IGxpbmtBbm5vdGF0aW9uLnBh
Z2VOdW1iZXIpIHsKLSAgICAgICAgdXJsU3RyaW5nID0gQVNDSUlMaXRlcmFsKCIjcGFnZSIpOwot
ICAgICAgICB1cmxTdHJpbmcuYXBwZW5kKFN0cmluZzo6bnVtYmVyKHBhZ2VOdW1iZXIpKTsKLSAg
ICB9Ci0KLSAgICBpZiAodXJsU3RyaW5nLmlzRW1wdHkoKSkKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IHVybCA9IFtzZWxmIF9VUkxGb3JMaW5rQW5ub3RhdGlvbjpsaW5rQW5ub3RhdGlvbl07CisgICAg
aWYgKCF1cmwpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHUG9pbnQgZG9jdW1lbnRQb2ludCA9
IFtjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZlcnRQb2ludDpwb2ludCB0b1ZpZXc6c2VsZl07CiAg
ICAgQ0dQb2ludCBzY3JlZW5Qb2ludCA9IFtzZWxmLndpbmRvdyBjb252ZXJ0UG9pbnQ6W3NlbGYg
Y29udmVydFBvaW50OmRvY3VtZW50UG9pbnQgdG9WaWV3Om5pbF0gdG9XaW5kb3c6bmlsXTsKLSAg
ICBzdGF0aWMgY29uc3QgaW50NjRfdCBkaXNwYXRjaE9mZnNldCA9IHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcz4oc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcygyMDApKS5jb3VudCgpOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHJldGFpbmVkV2Vi
VmlldyA9IF93ZWJWaWV3OwogCi0gICAgQ0dSZWN0IGhpZ2hsaWdodFZpZXdGcmFtZSA9IFtzZWxm
IGNvbnZlcnRSZWN0Oltjb250cm9sbGVyLnBhZ2VWaWV3IGNvbnZlcnRSZWN0RnJvbVBERlBhZ2VT
cGFjZTphbm5vdGF0aW9uLlJlY3RdIGZyb21WaWV3OmNvbnRyb2xsZXIucGFnZVZpZXddOwotICAg
IFJldGFpblB0cjxfVUlIaWdobGlnaHRWaWV3PiBoaWdobGlnaHRWaWV3ID0gW3NlbGYgX2NyZWF0
ZUhpZ2hsaWdodFZpZXdXaXRoRnJhbWU6aGlnaGxpZ2h0Vmlld0ZyYW1lXTsKLSAgICBbc2VsZiBh
ZGRTdWJ2aWV3OmhpZ2hsaWdodFZpZXcuZ2V0KCldOwotICAgIGRpc3BhdGNoX2FmdGVyKGRpc3Bh
dGNoX3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRpc3BhdGNoT2Zmc2V0KSwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXiB7Ci0gICAgICAgIHJldGFpbmVkV2ViVmlldy0+X3BhZ2UtPm5hdmln
YXRlVG9VUkxXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCByb3VuZGVkSW50UG9pbnQoZG9j
dW1lbnRQb2ludCksIHJvdW5kZWRJbnRQb2ludChzY3JlZW5Qb2ludCkpOwotICAgICAgICBbaGln
aGxpZ2h0VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICB9KTsKKyAgICBbc2VsZiBfaGln
aGxpZ2h0TGlua0Fubm90YXRpb246bGlua0Fubm90YXRpb24gZm9yRHVyYXRpb246LjIgY29tcGxl
dGlvbkhhbmRsZXI6XiB7CisgICAgICAgIHJldGFpbmVkV2ViVmlldy0+X3BhZ2UtPm5hdmlnYXRl
VG9VUkxXaXRoU2ltdWxhdGVkQ2xpY2soW3VybCBhYnNvbHV0ZVN0cmluZ10sIHJvdW5kZWRJbnRQ
b2ludChkb2N1bWVudFBvaW50KSwgcm91bmRlZEludFBvaW50KHNjcmVlblBvaW50KSk7CisgICAg
fV07Cit9CisKKy0gKHZvaWQpYW5ub3RhdGlvbjooVUlQREZBbm5vdGF0aW9uICopYW5ub3RhdGlv
biBpc0JlaW5nUHJlc3NlZEF0UG9pbnQ6KENHUG9pbnQpcG9pbnQgY29udHJvbGxlcjooVUlQREZB
bm5vdGF0aW9uQ29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBpZiAoIVthbm5vdGF0aW9u
IGlzS2luZE9mQ2xhc3M6W1VJUERGTGlua0Fubm90YXRpb24gY2xhc3NdXSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgVUlQREZMaW5rQW5ub3RhdGlvbiAqbGlua0Fubm90YXRpb24gPSAoVUlQREZM
aW5rQW5ub3RhdGlvbiAqKWFubm90YXRpb247CisgICAgTlNVUkwgKnVybCA9IFtzZWxmIF9VUkxG
b3JMaW5rQW5ub3RhdGlvbjpsaW5rQW5ub3RhdGlvbl07CisgICAgaWYgKCF1cmwpCisgICAgICAg
IHJldHVybjsKKworICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uLnVybCA9IHVybC5hYnNvbHV0ZVN0
cmluZzsKKyAgICBfcG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCA9IHJvdW5kZWRJbnRQb2ludChb
Y29udHJvbGxlci5wYWdlVmlldyBjb252ZXJ0UG9pbnQ6cG9pbnQgdG9WaWV3OnNlbGZdKTsKKyAg
ICBfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgPSByb3VuZGVkSW50UmVjdChbc2VsZiBjb252
ZXJ0UmVjdDpbY29udHJvbGxlci5wYWdlVmlldyBjb252ZXJ0UmVjdEZyb21QREZQYWdlU3BhY2U6
YW5ub3RhdGlvbi5SZWN0XSBmcm9tVmlldzpjb250cm9sbGVyLnBhZ2VWaWV3XSk7CisKKyAgICBb
c2VsZiBfaGlnaGxpZ2h0TGlua0Fubm90YXRpb246bGlua0Fubm90YXRpb24gZm9yRHVyYXRpb246
Ljc1IGNvbXBsZXRpb25IYW5kbGVyOl4geworICAgICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50
IHNob3dMaW5rU2hlZXRdOworICAgIH1dOworfQorCisjcHJhZ21hIG1hcmsgV0tBY3Rpb25TaGVl
dEFzc2lzdGFudERlbGVnYXRlCisKKy0gKGNvbnN0IFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24mKXBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVldEFzc2lzdGFu
dDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudAoreworICAgIHJldHVybiBfcG9z
aXRpb25JbmZvcm1hdGlvbjsKK30KKworLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBwZXJmb3JtQWN0aW9uOihXZWJLaXQ6OlNo
ZWV0QWN0aW9uKWFjdGlvbgoreworICAgIGlmIChhY3Rpb24gIT0gV2ViS2l0OjpTaGVldEFjdGlv
bjo6Q29weSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNEaWN0aW9uYXJ5ICpyZXByZXNlbnRh
dGlvbnMgPSBAeworICAgICAgICAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCA6IF9w
b3NpdGlvbkluZm9ybWF0aW9uLnVybCwKKyAgICAgICAgKE5TU3RyaW5nICopa1VUVHlwZVVSTCA6
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9uLnVybF0KKyAgICB9Owor
CisgICAgW1VJUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0uaXRlbXMgPSBAWyByZXByZXNl
bnRhdGlvbnMgXTsKK30KKworLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25T
aGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBvcGVuRWxlbWVudEF0TG9jYXRpb246KENHUG9pbnQp
bG9jYXRpb24KK3sKKyAgICBDR1BvaW50IHNjcmVlblBvaW50ID0gW3NlbGYud2luZG93IGNvbnZl
cnRQb2ludDpbc2VsZiBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gdG9WaWV3Om5pbF0gdG9XaW5kb3c6
bmlsXTsKKyAgICBfd2ViVmlldy0+X3BhZ2UtPm5hdmlnYXRlVG9VUkxXaXRoU2ltdWxhdGVkQ2xp
Y2soX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsLCByb3VuZGVkSW50UG9pbnQobG9jYXRpb24pLCBy
b3VuZGVkSW50UG9pbnQoc2NyZWVuUG9pbnQpKTsKK30KKworLSAoUmV0YWluUHRyPE5TQXJyYXk+
KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50
IGRlY2lkZUFjdGlvbnNGb3JFbGVtZW50OihfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1l
bnQgZGVmYXVsdEFjdGlvbnM6KFJldGFpblB0cjxOU0FycmF5PilkZWZhdWx0QWN0aW9ucworewor
ICAgIHJldHVybiBfd2ViVmlldy0+X3BhZ2UtPnVpQ2xpZW50KCkuYWN0aW9uc0ZvckVsZW1lbnQo
ZWxlbWVudCwgV1RGOjptb3ZlKGRlZmF1bHRBY3Rpb25zKSk7CiB9CiAKIEBlbmQK
</data>
<flag name="review"
          id="265753"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>