<?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>134424</bug_id>
          
          <creation_ts>2014-06-27 20:39:23 -0700</creation_ts>
          <short_desc>[iOS][WK2] Move tap highlight to the inverseScaleRootView</short_desc>
          <delta_ts>2014-07-06 18:09:09 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019173</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-27 20:39:23 -0700</bug_when>
    <thetext>[iOS][WK2] Move tap highlight to the inverseScaleRootView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019176</commentid>
    <comment_count>1</comment_count>
      <attachid>234040</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-27 20:56:09 -0700</bug_when>
    <thetext>Created attachment 234040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019177</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-27 20:57:49 -0700</bug_when>
    <thetext>Attachment 234040 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:806:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:808:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:808:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:808:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:809:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:810:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:811:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:812:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 8 in 4 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>1019178</commentid>
    <comment_count>3</comment_count>
      <attachid>234041</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-27 21:00:01 -0700</bug_when>
    <thetext>Created attachment 234041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019179</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-27 21:00:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/17480880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019180</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-27 21:02:24 -0700</bug_when>
    <thetext>Attachment 234041 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:806:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:808:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:808:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:808:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:809:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:810:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:811:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:812:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 8 in 4 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>1019205</commentid>
    <comment_count>6</comment_count>
      <attachid>234041</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-06-28 03:17:04 -0700</bug_when>
    <thetext>Comment on attachment 234041
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:74
&gt; +const CGFloat UIWebViewMinimumHighlightRadius = 2.0;

This constant name seems nonideal.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:521
&gt; +    CGFloat selfScale = [[self layer] transform].m11;

moar dot notation

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:559
&gt; +    [borderRadii addObject:[NSValue valueWithCGSize:CGSizeMake(_tapHighlightInformation.topLeftRadius.width() + UIWebViewMinimumHighlightRadius, _tapHighlightInformation.topLeftRadius.height() + UIWebViewMinimumHighlightRadius)]];

I bet you could come up with a much less wordy way to write these.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:806
&gt; +                         [[_highlightView layer] setOpacity:0];

dots etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019414</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-30 15:11:37 -0700</bug_when>
    <thetext>Committed r170600: &lt;http://trac.webkit.org/changeset/170600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020716</commentid>
    <comment_count>8</comment_count>
      <attachid>234041</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-06 17:16:28 -0700</bug_when>
    <thetext>Comment on attachment 234041
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h:190
&gt; +    return fabs(a - b) &lt; std::numeric_limits&lt;float&gt;::epsilon();

This converts a - b to a double, and back to a float before comparing with epsilon, which is way more expensive than we’d like. It should use fabsf to avoid this.

By the way, I believe this is only an acceptable technique for numbers in a small range of float. For large floats, this will be the same as &quot;==&quot;; a difference of epsilon can’t actually be represented, and for very small numbers (denormalized) this will return true for values that differ quite a bit. This might be OK for our current purposes but it’s questionable for broader use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020725</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-06 17:28:01 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 234041 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=234041&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h:190
&gt; &gt; +    return fabs(a - b) &lt; std::numeric_limits&lt;float&gt;::epsilon();
&gt; 
&gt; This converts a - b to a double, and back to a float before comparing with epsilon, which is way more expensive than we’d like. It should use fabsf to avoid this.
&gt; 
&gt; By the way, I believe this is only an acceptable technique for numbers in a small range of float. For large floats, this will be the same as &quot;==&quot;; a difference of epsilon can’t actually be represented, and for very small numbers (denormalized) this will return true for values that differ quite a bit. This might be OK for our current purposes but it’s questionable for broader use.

That was not my intent at all here. :(

My intent was to have the comparison done with double. I was expecting the compiler to load  std::numeric_limits&lt;float&gt;::epsilon() to double from a constant. Overall, everything should have been fairly cheap on ARM.

What I am missing here is why is the left side converted to float instead of the right side &quot;converted&quot; to double? I thought the implicit conversion would always upconvert in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020728</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-06 17:34:55 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; My intent was to have the comparison done with double.

So you expected subtraction to be done with float precision, then wanted the result of that subtraction to be converted to a double, then do an absolute value on the double value, then compare that with a double constant that contains the float precision epsilon?

I accept that you expected that, but do not understand why it’s desirable. Why is any conversion to double helpful? If conversion to double is helpful, say for performance or precision resasons, why is the right time to convert to double *after* subtraction but *before* computing absolute value, rather than, say, before the subtraction or after the absolute value computation?

&gt; What I am missing here is why is the left side converted to float instead of the right side &quot;converted&quot; to double?

Sorry, my mistake, naturally the left side won’t be converted to float.

If we do indeed intend to intentionally convert to double, calling fabs with a float argument is an unnecessarily oblique way to do so, since it’s a common programming mistake typically made by those who do *not* intend to convert to double.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020731</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-06 17:46:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; My intent was to have the comparison done with double.
&gt; 
&gt; So you expected subtraction to be done with float precision, then wanted the result of that subtraction to be converted to a double, then do an absolute value on the double value, then compare that with a double constant that contains the float precision epsilon?
&gt; 
&gt; I accept that you expected that, but do not understand why it’s desirable. Why is any conversion to double helpful? If conversion to double is helpful, say for performance or precision resasons, why is the right time to convert to double *after* subtraction but *before* computing absolute value, rather than, say, before the subtraction or after the absolute value computation?

Ok, I see the mistake now, this is wrong. The arguments were supposed to be template type, abstracting the CGFloat being float or double.

The reason that code was there is that the UIProcess handle its transform on double, while the WebProcess represents them as float. We must ignore small differences in scale between what is on screen and the WebProcess&apos;s page scale factor otherwise we create update cycles.

I bet this code only works today because of the conversion double-&gt;float of the arguments instead of using the abs() &lt; epsilon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020733</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-07-06 17:52:07 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; The arguments were supposed to be template type, abstracting the CGFloat being float or double.

In that case, I suggest using the newfangled std::abs, now overloaded for many types. Rather than fabs, which only works on double.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020738</commentid>
    <comment_count>13</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-07-06 18:09:09 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; The arguments were supposed to be template type, abstracting the CGFloat being float or double.
&gt; 
&gt; In that case, I suggest using the newfangled std::abs, now overloaded for many types. Rather than fabs, which only works on double.

Sounds good! I&apos;ll update this code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234040</attachid>
            <date>2014-06-27 20:56:09 -0700</date>
            <delta_ts>2014-06-27 20:59:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134424-20140627205543.patch</filename>
            <type>text/plain</type>
            <size>17514</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDY3YjY0MDA4YTk0Mjll
YjNjMjUzNGU5NmQ1YTQ2NjAxNTc5OWQyZi4uNWU0ODk3NzAzZDU5ZDUzODE5NjA5MTQyNThjOGQx
MWJhODQxNjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE0LTA2LTI3ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
TW92ZSB0YXAgaGlnaGxpZ2h0IHRvIHRoZSBpbnZlcnNlU2NhbGVSb290VmlldworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDI0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xNzQ4MDg4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFbnJpY2EgaW50cm9kdWNlZCB0aGUgaW52ZXJzZVNjYWxlUm9vdFZp
ZXcgdGhhdCBpcyBhIGR5bmFtaWMgdmVyc2lvbiBvZiBfaGlnaGxpZ2h0Um9vdFZpZXcuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgdGFwIGhpZ2hsaWdodCBmcm9tIGl0cyBvd24gaW52
ZXJzZSByb290IHRvIF9oaWdobGlnaHRSb290Vmlldy4gVGhpcyBwcm92aWRlcyBiZXR0ZXIgaGFu
ZGxpbmcKKyAgICAgICAgb2Ygc2NhbGUsIGJldHRlciBiZWhhdmlvciBvbiBjcmFzaCwgYW5kIHJl
bW92ZSBvbmUgZXh0cmEgdmlldyBmcm9tIHRoZSBoaWVyYXJjaHkuCisKKyAgICAgICAgVGhlIGNv
ZGUgaXMgcHJldHR5IG11Y2ggdGhlIHNhbWUsIGp1c3QgbW92ZWQgYXJvdW5kLiBTb21lIG9mIHRo
ZSBjaGFuZ2VzOgorCisgICAgICAgIE5vdyB0aGUgY29kZSBuZWVkcyB0byBoYW5kbGUgcmVwYWlu
dGluZyBsaXZlIHdoZW4gdGhlIHZpZXcgc2NhbGUuIFRvIGRvIHRoYXQsIF9zaG93VGFwSGlnaGxp
Z2h0WFhYIHdhcyBzcGxpdCBpbiB0d286CisgICAgICAgIC1fc2hvd1RhcEhpZ2hsaWdodCB0byBz
ZXR1cCB0aGUgdmlldy4KKyAgICAgICAgLV91cGRhdGVUYXBIaWdobGlnaHQgdG8gdXBkYXRlIHRo
ZSB2aWV3IGJhc2VkIG9uIHRoZSBjdXJyZW50IHNjYWxlLgorCisgICAgICAgIFNpbmNlIHRoZSB2
aWV3IHVwZGF0ZXMgbGl2ZSBvbiBzY2FsaW5nLCB3ZSBuZWVkIHRvIHJlY29tcHV0ZSB0aGUgY29v
cmRpbmF0ZXMgZm9yIGVhY2ggdXBkYXRlLiBUbyBkbyB0aGF0LCB0aGUgX3BvdGVudGlhbFRhcEhp
Z2hsaWdodEluZm9ybWF0aW9uCisgICAgICAgIHdhcyBnZW5lcmFsaXplZCB0byBoYW5kbGUgYWxs
IGNhc2VzIG9mIGhpZ2hsaWdodC4KKworICAgICAgICBTaW5jZSB3ZSBjYW4gbm8gbG9uZ2VyIHRl
c3QgZm9yIHRoZSBudWxsaXR5IG9mIF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbiwK
KyAgICAgICAgYSBuZXcgYXR0cmlidXRlIGlzIGludHJvZHVjZWQgZm9yIHRoYXQ6IF9oYXNUYXBI
aWdobGlnaHRGb3JQb3RlbnRpYWxUYXAuCisKKyAgICAgICAgVGhlIGxhc3QgYml0IG9mIGNoYW5n
ZSBjb25jZXJuIHJlZW50ZXJpbmcgdGhlIHRhcCBoaWdobGlnaHQuIFRoaXMgYmVjb21lcyBxdWl0
ZSBzaW1wbGU6CisgICAgICAgIDEpIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgaXMgdXBkYXRlZCBi
ZWZvcmUgdGhlIGFuaW1hdGlvbiBzdGFydHMKKyAgICAgICAgICAgc28gdGhhdCBpdCBjYW4gYmUg
c2V0IGFnYWluIGR1cmluZyBhbiBhbmltYXRpb24uCisgICAgICAgIDIpIFRoZSBhbmltYXRpb24g
Y2hlY2tzIHRoZSAiZmluaXNoZWQiIGZsYWdzIGJlZm9yZSByZW1vdmluZyB0aGUgdmlldyBmcm9t
IGl0cyBzdXBlcnZpZXcKKyAgICAgICAgICAgdG8gYXZvaWQgYnJlYWtpbmcgdGhlIG5ldyBhbmlt
YXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKHdpdGhpbkVwc2lsb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaWRVcGRhdGVWaXNp
YmxlUmVjdDp1bm9ic2N1cmVkUmVjdDp1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5h
dGVzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0YXRlOmlzQ2hhbmdpbmdPYnNjdXJlZElu
c2V0c0ludGVyYWN0aXZlbHk6XSk6CisgICAgICAgIE1ha2UgX3VwZGF0ZVVuc2NhbGVkVmlldyBj
b25kaXRpb25hbCB0byBzY2FsZSBjaGFuZ2VzLCB0aGF0IHRoaW5nIGlzbid0IGNoZWFwIQorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDoKKyAgICAg
ICAgKHdpdGhpbkVwc2lsb24pOgorICAgICAgICBNb3ZlIHdpdGhpbkVwc2lsb24oKSBmcm9tIFdL
Q29udGVudFZpZXcgdG8gdXNlIGl0IGZyb20gYm90aCBjbGFzc2VzLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X3VwZGF0ZVVuc2NhbGVkVmlld10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF91cGRhdGVU
YXBIaWdobGlnaHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2hvd1RhcEhpZ2hsaWdo
dF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1
ZXN0OmNvbG9yOnF1YWRzOnRvcExlZnRSYWRpdXM6dG9wUmlnaHRSYWRpdXM6Ym90dG9tTGVmdFJh
ZGl1czpib3R0b21SaWdodFJhZGl1czpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY2Fu
Y2VsSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZmluaXNoSW50ZXJh
Y3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFwRGlkUmVzZXQ6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NpbmdsZVRhcENvbW1pdGVkOl0pOgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93VGFwSGlnaGxpZ2h0V2l0aENvbG9yOnF1YWRzOnRvcExl
ZnRSYWRpdXM6dG9wUmlnaHRSYWRpdXM6Ym90dG9tTGVmdFJhZGl1czpib3R0b21SaWdodFJhZGl1
czpdKTogRGVsZXRlZC4KKwogMjAxNC0wNi0yNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRmx1c2ggdGhyb3R0bGluZyB3aXRoIHJlbW90ZSBsYXllcnMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
NGFlNGY5ODgzOTQwZjE5NjRlZDMwOWM0MTg3MTkzYjg2MWE5YmM2MC4uMGI3MDQ2ODk2MmEyNTlj
YmI4MDBjNTU3NTlkMTM0MzcxNTBhNzczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTczOSwxMSArNzM5LDYgQEAgc3RhdGljIENH
RmxvYXQgY29udGVudFpvb21TY2FsZShXS1dlYlZpZXcqIHdlYlZpZXcpCiAgICAgX3VzZXNNaW5p
bWFsVUkgPSBOTzsKIH0KIAotc3RhdGljIGlubGluZSBib29sIHdpdGhpbkVwc2lsb24oZmxvYXQg
YSwgZmxvYXQgYikKLXsKLSAgICByZXR1cm4gZmFicyhhIC0gYikgPCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6ZXBzaWxvbigpOwotfQotCiBzdGF0aWMgdm9pZCBjaGFuZ2VDb250ZW50T2Zm
c2V0Qm91bmRlZEluVmFsaWRSYW5nZShVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgY29udGVudE9mZnNldCkKIHsKICAgICBVSUVkZ2VJbnNldHMgY29udGVudElu
c2V0cyA9IHNjcm9sbFZpZXcuY29udGVudEluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IGVmOWFkMzRiOWVhM2YzNDFmMmJmOWZlMmVi
YTUxNDY0MWYxZWE3M2IuLjgxMmM4NDYyMWE2YzFjYTBmMDk4ZDgyNzAzZmVlYTJjZWI0NDdjNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAg
LTU1Niw2ICs1NTYsOCBAQCBzdGF0aWMgdm9pZCBsYXllclBhdGgoQ0FTaGFwZUxheWVyICpsYXll
ciwgY29uc3QgRmxvYXRRdWFkJiBvdXRlclF1YWQpCiAtICh2b2lkKWRpZFVwZGF0ZVZpc2libGVS
ZWN0OihDR1JlY3QpdmlzaWJsZVJlY3QgdW5vYnNjdXJlZFJlY3Q6KENHUmVjdCl1bm9ic2N1cmVk
UmVjdCB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpdW5vYnNj
dXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlcwogICAgIHNjYWxlOihDR0Zsb2F0KXpvb21T
Y2FsZSBtaW5pbXVtU2NhbGU6KENHRmxvYXQpbWluaW11bVNjYWxlIGluU3RhYmxlU3RhdGU6KEJP
T0wpaXNTdGFibGVTdGF0ZSBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5OihC
T09MKWlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHkKIHsKKyAgICBkb3VibGUg
b2xkRGlzcGxheWVkQ29udGVudFNjYWxlID0gX3BhZ2UtPmRpc3BsYXllZENvbnRlbnRTY2FsZSgp
OworCiAgICAgZG91YmxlIHRpbWVzdGFtcCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OwogICAgIEhpc3RvcmljYWxWZWxvY2l0eURhdGE6OlZlbG9jaXR5RGF0YSB2ZWxvY2l0eURhdGE7
CiAgICAgaWYgKCFpc1N0YWJsZVN0YXRlKQpAQCAtNTcyLDcgKzU3NCw5IEBAIHN0YXRpYyB2b2lk
IGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVh
ZCkKIAogICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gX3BhZ2UtPmRyYXdpbmdBcmVhKCkpCiAg
ICAgICAgIGRyYXdpbmdBcmVhLT51cGRhdGVEZWJ1Z0luZGljYXRvcigpOwotICAgIFtzZWxmIF91
cGRhdGVVbnNjYWxlZFZpZXddOworCisgICAgaWYgKCF3aXRoaW5FcHNpbG9uKG9sZERpc3BsYXll
ZENvbnRlbnRTY2FsZSwgem9vbVNjYWxlKSkKKyAgICAgICAgW3NlbGYgX3VwZGF0ZVVuc2NhbGVk
Vmlld107CiB9CiAKIC0gKHZvaWQpc2V0TWluaW11bVNpemU6KENHU2l6ZSlzaXplCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaAppbmRleCBiZDU1MzY1NjAzOWMwYWRlMjAyYTFkZTQ4ZDhlN2M1YmIwMjExYjMxLi5mODAx
OTU2YTY1YmU3NGUyOGMyOTQwZDc2NDBhYzg0ZTE4OWVlOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAg
LTEwMCw3ICsxMDAsNiBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogCiAgICAgUmV0
YWluUHRyPFVJVGV4dElucHV0VHJhaXRzPiBfdHJhaXRzOwogICAgIFJldGFpblB0cjxVSVdlYkZv
cm1BY2Nlc3Nvcnk+IF9mb3JtQWNjZXNzb3J5VmlldzsKLSAgICBSZXRhaW5QdHI8VUlWaWV3PiBf
aGlnaGxpZ2h0Um9vdFZpZXc7CiAgICAgUmV0YWluUHRyPF9VSUhpZ2hsaWdodFZpZXc+IF9oaWdo
bGlnaHRWaWV3OwogICAgIFJldGFpblB0cjxVSVZpZXc+IF9pbnZlcnNlU2NhbGVSb290VmlldzsK
ICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tYXJrZWRUZXh0OwpAQCAtMTIyLDcgKzEyMSw3IEBA
IHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgICAgIFdlYkNvcmU6OkludFNpemUg
Ym90dG9tTGVmdFJhZGl1czsKICAgICAgICAgV2ViQ29yZTo6SW50U2l6ZSBib3R0b21SaWdodFJh
ZGl1czsKICAgICB9OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxUYXBIaWdobGlnaHRJbmZvcm1hdGlv
bj4gX3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9uOworICAgIFRhcEhpZ2hsaWdodElu
Zm9ybWF0aW9uIF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbjsKIAogICAgIFdlYktpdDo6V0tBdXRv
Q29ycmVjdGlvbkRhdGEgX2F1dG9jb3JyZWN0aW9uRGF0YTsKICAgICBXZWJLaXQ6OkludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIF9wb3NpdGlvbkluZm9ybWF0aW9uOwpAQCAtMTM2LDYg
KzEzNSw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgQk9PTCBfaGFzVmFs
aWRQb3NpdGlvbkluZm9ybWF0aW9uOwogICAgIEJPT0wgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZDsK
ICAgICBCT09MIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzOworICAgIEJPT0wgX2hhc1RhcEhpZ2hs
aWdodEZvclBvdGVudGlhbFRhcDsKICAgICBCT09MIF9zZWxlY3Rpb25OZWVkc1VwZGF0ZTsKICAg
ICBCT09MIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb247CiAgICAgQk9PTCBfaW5zcGVjdG9yTm9k
ZVNlYXJjaEVuYWJsZWQ7CkBAIC0xODUsNCArMTg1LDkgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rp
b25EYXRhIHsKIC0gKHZvaWQpX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoOwogQGVuZAogCitz
dGF0aWMgaW5saW5lIGJvb2wgd2l0aGluRXBzaWxvbihmbG9hdCBhLCBmbG9hdCBiKQoreworICAg
IHJldHVybiBmYWJzKGEgLSBiKSA8IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9u
KCk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDJm
NTRjNzY1M2RkNWQzM2Q0ODk4M2IxMTAxZDYwOTY4OTQ0OTMyYjMuLjA0NDNlMjI5NTUxZmNkZmUy
YWNhMGI0ZGYxNmQ4NjI4M2MyMGMwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC03MSw2ICs3MSw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0YXRpYyBjb25zdCBmbG9hdCBoaWdobGln
aHREZWxheSA9IDAuMTI7CiBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5ICA9IDAu
NzU7Citjb25zdCBDR0Zsb2F0IFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMgPSAyLjA7
CiAKIEBpbnRlcmZhY2UgV0tUZXh0UmFuZ2UgOiBVSVRleHRSYW5nZSB7CiAgICAgQ0dSZWN0IF9z
dGFydFJlY3Q7CkBAIC0yNjcsNyArMjY4LDYgQEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0
b1VJV2ViU2VsZWN0aW9uTW9kZShXS1NlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAg
ICBbX2Zvcm1JbnB1dFNlc3Npb24gaW52YWxpZGF0ZV07CiAgICAgX2Zvcm1JbnB1dFNlc3Npb24g
PSBuaWw7CiAgICAgW19oaWdobGlnaHRWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwotICAgIFtf
aGlnaGxpZ2h0Um9vdFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgW19pbnZlcnNlU2Nh
bGVSb290VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBbX3RvdWNoRXZlbnRHZXN0dXJl
UmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwpAQCAtMzM5LDYgKzMz
OSw3IEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUoV0tT
ZWxlY3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW19pbnZlcnNlU2NhbGVSb290Vmll
dyBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoaW52ZXJzZVNjYWxlLCBp
bnZlcnNlU2NhbGUpXTsKICAgICBfc2VsZWN0aW9uTmVlZHNVcGRhdGUgPSBZRVM7CiAgICAgW3Nl
bGYgX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb25dOworICAgIFtzZWxmIF91cGRhdGVUYXBIaWdobGln
aHRdOwogfQogCiAtICh2b2lkKV9lbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoCkBAIC01MDcsMzUg
KzUwOCwyMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGlnaGxpZ2h0ZWRRdWFkc0FyZVNtYWxsZXJU
aGFuUmVjdChjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgcQogICAgIHJldHVybiB0cnVlOwogfQog
Ci0tICh2b2lkKV9zaG93VGFwSGlnaGxpZ2h0V2l0aENvbG9yOihjb25zdCBXZWJDb3JlOjpDb2xv
ciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGln
aHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRS
YWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFk
aXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRS
YWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJp
Z2h0UmFkaXVzCistICh2b2lkKV91cGRhdGVUYXBIaWdobGlnaHQKIHsKLSAgICBpZiAoIWhpZ2hs
aWdodGVkUXVhZHNBcmVTbWFsbGVyVGhhblJlY3QoaGlnaGxpZ2h0ZWRRdWFkcywgX3BhZ2UtPnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpKSkKKyAgICBpZiAoIVtfaGlnaGxpZ2h0VmlldyBzdXBlcnZp
ZXddKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBDR0Zsb2F0IFVJV2ViVmlld01pbmlt
dW1IaWdobGlnaHRSYWRpdXMgPSAyLjA7Ci0KLSAgICBpZiAoIV9oaWdobGlnaHRSb290Vmlldykg
ewotICAgICAgICBfaGlnaGxpZ2h0Um9vdFZpZXcgPSBhZG9wdE5TKFtbVUlWaWV3IGFsbG9jXSBp
bml0XSk7Ci0gICAgICAgIFtfaGlnaGxpZ2h0Um9vdFZpZXcgc2V0T3BhcXVlOk5PXTsKLSAgICAg
ICAgW19oaWdobGlnaHRSb290VmlldyBsYXllcl0uYW5jaG9yUG9pbnQgPSBDR1BvaW50TWFrZSgw
LCAwKTsKLQotICAgICAgICBfaGlnaGxpZ2h0VmlldyA9IGFkb3B0TlMoW1tfVUlIaWdobGlnaHRW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm9dKTsKLSAgICAgICAgW19oaWdobGln
aHRWaWV3IHNldE9wYXF1ZTpOT107Ci0gICAgICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRDb3JuZXJS
YWRpdXM6VUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1c107Ci0gICAgICAgIFtfaGlnaGxp
Z2h0Um9vdFZpZXcgYWRkU3VidmlldzpfaGlnaGxpZ2h0Vmlldy5nZXQoKV07Ci0gICAgfQotICAg
IFtzZWxmIGFkZFN1YnZpZXc6X2hpZ2hsaWdodFJvb3RWaWV3LmdldCgpXTsKLSAgICBDR0Zsb2F0
IHNlbGZTY2FsZSA9IFtbc2VsZiBsYXllcl0gdHJhbnNmb3JtXS5tMTE7Ci0gICAgQ0dGbG9hdCBo
aWdobGlnaHRWaWV3U2NhbGUgPSAxIC8gc2VsZlNjYWxlOwotICAgIFtfaGlnaGxpZ2h0Um9vdFZp
ZXcgc2V0VHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNmb3JtTWFrZVNjYWxlKGhpZ2hsaWdodFZpZXdT
Y2FsZSwgaGlnaGxpZ2h0Vmlld1NjYWxlKV07Ci0KICAgICB7Ci0gICAgICAgIFJldGFpblB0cjxV
SUNvbG9yPiBoaWdobGlnaHRVSUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGlu
aXRXaXRoUmVkOihjb2xvci5yZWQoKSAvIDI1NS4wKSBncmVlbjooY29sb3IuZ3JlZW4oKSAvIDI1
NS4wKSBibHVlOihjb2xvci5ibHVlKCkgLyAyNTUuMCkgYWxwaGE6KGNvbG9yLmFscGhhKCkgLyAy
NTUuMCldKTsKKyAgICAgICAgUmV0YWluUHRyPFVJQ29sb3I+IGhpZ2hsaWdodFVJS2l0Q29sb3Ig
PSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10gaW5pdFdpdGhDR0NvbG9yOmNhY2hlZENHQ29sb3Io
X3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yLCBXZWJDb3JlOjpDb2xvclNwYWNlRGV2aWNl
UkdCKV0pOwogICAgICAgICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6aGlnaGxpZ2h0VUlLaXRD
b2xvci5nZXQoKV07CiAgICAgfQogCisgICAgQ0dGbG9hdCBzZWxmU2NhbGUgPSBbW3NlbGYgbGF5
ZXJdIHRyYW5zZm9ybV0ubTExOwogICAgIGJvb2wgYWxsSGlnaGxpZ2h0UmVjdHNBcmVSZWN0aWxp
bmVhciA9IHRydWU7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBfcGFnZS0+ZGV2aWNl
U2NhbGVGYWN0b3IoKTsKKyAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRRdWFkPiYgaGln
aGxpZ2h0ZWRRdWFkcyA9IF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5xdWFkczsKICAgICBjb25z
dCBzaXplX3QgcXVhZENvdW50ID0gaGlnaGxpZ2h0ZWRRdWFkcy5zaXplKCk7CiAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiByZWN0cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpzdGF0aWNfY2FzdDxjb25zdCBOU1VJbnRlZ2VyPihxdWFkQ291
bnQpXSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBxdWFkQ291bnQ7ICsraSkgewpAQCAt
NTcwLDM1ICs1NTYsNDcgQEAgc3RhdGljIGlubGluZSBib29sIGhpZ2hsaWdodGVkUXVhZHNBcmVT
bWFsbGVyVGhhblJlY3QoY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIHEKICAgICB9CiAKICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGJvcmRlclJhZGlpID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdKTsKLSAgICBbYm9yZGVyUmFkaWkgYWRk
T2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHU2l6ZTpDR1NpemVNYWtlKHRvcExlZnRSYWRpdXMu
d2lkdGgoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMsIHRvcExlZnRSYWRpdXMu
aGVpZ2h0KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzKV1dOwotICAgIFtib3Jk
ZXJSYWRpaSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNHU2l6ZU1ha2UodG9w
UmlnaHRSYWRpdXMud2lkdGgoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMsIHRv
cFJpZ2h0UmFkaXVzLmhlaWdodCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cyld
XTsKLSAgICBbYm9yZGVyUmFkaWkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHU2l6ZTpD
R1NpemVNYWtlKGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSArIFVJV2ViVmlld01pbmltdW1IaWdo
bGlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCkgKyBVSVdlYlZpZXdNaW5pbXVt
SGlnaGxpZ2h0UmFkaXVzKV1dOwotICAgIFtib3JkZXJSYWRpaSBhZGRPYmplY3Q6W05TVmFsdWUg
dmFsdWVXaXRoQ0dTaXplOkNHU2l6ZU1ha2UoYm90dG9tUmlnaHRSYWRpdXMud2lkdGgoKSArIFVJ
V2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMsIGJvdHRvbVJpZ2h0UmFkaXVzLmhlaWdodCgp
ICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cyldXTsKKyAgICBbYm9yZGVyUmFkaWkg
YWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHU2l6ZTpDR1NpemVNYWtlKF90YXBIaWdobGln
aHRJbmZvcm1hdGlvbi50b3BMZWZ0UmFkaXVzLndpZHRoKCkgKyBVSVdlYlZpZXdNaW5pbXVtSGln
aGxpZ2h0UmFkaXVzLCBfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24udG9wTGVmdFJhZGl1cy5oZWln
aHQoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMpXV07CisgICAgW2JvcmRlclJh
ZGlpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1NpemU6Q0dTaXplTWFrZShfdGFwSGln
aGxpZ2h0SW5mb3JtYXRpb24udG9wUmlnaHRSYWRpdXMud2lkdGgoKSArIFVJV2ViVmlld01pbmlt
dW1IaWdobGlnaHRSYWRpdXMsIF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi50b3BSaWdodFJhZGl1
cy5oZWlnaHQoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMpXV07CisgICAgW2Jv
cmRlclJhZGlpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1NpemU6Q0dTaXplTWFrZShf
dGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24uYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpICsgVUlXZWJW
aWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cywgX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmJvdHRv
bUxlZnRSYWRpdXMuaGVpZ2h0KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzKV1d
OworICAgIFtib3JkZXJSYWRpaSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNH
U2l6ZU1ha2UoX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmJvdHRvbVJpZ2h0UmFkaXVzLndpZHRo
KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzLCBfdGFwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24uYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxp
Z2h0UmFkaXVzKV1dOwogICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRDb3JuZXJSYWRpaTpib3JkZXJS
YWRpaS5nZXQoKV07CiB9CiAKKy0gKHZvaWQpX3Nob3dUYXBIaWdobGlnaHQKK3sKKyAgICBpZiAo
IWhpZ2hsaWdodGVkUXVhZHNBcmVTbWFsbGVyVGhhblJlY3QoX3RhcEhpZ2hsaWdodEluZm9ybWF0
aW9uLnF1YWRzLCBfcGFnZS0+dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIV9oaWdobGlnaHRWaWV3KSB7CisgICAgICAgIF9oaWdobGlnaHRWaWV3
ID0gYWRvcHROUyhbW19VSUhpZ2hsaWdodFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
WmVyb10pOworICAgICAgICBbX2hpZ2hsaWdodFZpZXcgc2V0T3BhcXVlOk5PXTsKKyAgICAgICAg
W19oaWdobGlnaHRWaWV3IHNldENvcm5lclJhZGl1czpVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0
UmFkaXVzXTsKKyAgICB9CisgICAgW19pbnZlcnNlU2NhbGVSb290VmlldyBhZGRTdWJ2aWV3Ol9o
aWdobGlnaHRWaWV3LmdldCgpXTsKKyAgICBbc2VsZiBfdXBkYXRlVGFwSGlnaGxpZ2h0XTsKK30K
KwogLSAodm9pZClfZGlkR2V0VGFwSGlnaGxpZ2h0Rm9yUmVxdWVzdDoodWludDY0X3QpcmVxdWVz
dElEIGNvbG9yOihjb25zdCBXZWJDb3JlOjpDb2xvciYpY29sb3IgcXVhZHM6KGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiloaWdobGlnaHRlZFF1YWRzIHRvcExlZnRSYWRpdXM6KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKXRvcExlZnRSYWRpdXMgdG9wUmlnaHRSYWRpdXM6KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKXRvcFJpZ2h0UmFkaXVzIGJvdHRvbUxlZnRSYWRpdXM6KGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbUxlZnRSYWRpdXMgYm90dG9tUmlnaHRSYWRpdXM6KGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKWJvdHRvbVJpZ2h0UmFkaXVzCiB7CiAgICAgaWYgKCFfaXNU
YXBIaWdobGlnaHRJRFZhbGlkIHx8IF9sYXRlc3RUYXBIaWdobGlnaHRJRCAhPSByZXF1ZXN0SUQp
CiAgICAgICAgIHJldHVybjsKIAorICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBOTzsKKwor
ICAgIF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5jb2xvciA9IGNvbG9yOworICAgIF90YXBIaWdo
bGlnaHRJbmZvcm1hdGlvbi5xdWFkcyA9IGhpZ2hsaWdodGVkUXVhZHM7CisgICAgX3RhcEhpZ2hs
aWdodEluZm9ybWF0aW9uLnRvcExlZnRSYWRpdXMgPSB0b3BMZWZ0UmFkaXVzOworICAgIF90YXBI
aWdobGlnaHRJbmZvcm1hdGlvbi50b3BSaWdodFJhZGl1cyA9IHRvcFJpZ2h0UmFkaXVzOworICAg
IF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5ib3R0b21MZWZ0UmFkaXVzID0gYm90dG9tTGVmdFJh
ZGl1czsKKyAgICBfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24uYm90dG9tUmlnaHRSYWRpdXMgPSBi
b3R0b21SaWdodFJhZGl1czsKKwogICAgIGlmIChfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcykgewot
ICAgICAgICBfcG90ZW50aWFsVGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24gPSBzdGQ6Om1ha2VfdW5p
cXVlPFRhcEhpZ2hsaWdodEluZm9ybWF0aW9uPigpOwotICAgICAgICBfcG90ZW50aWFsVGFwSGln
aGxpZ2h0SW5mb3JtYXRpb24tPmNvbG9yID0gY29sb3I7Ci0gICAgICAgIF9wb3RlbnRpYWxUYXBI
aWdobGlnaHRJbmZvcm1hdGlvbi0+cXVhZHMgPSBoaWdobGlnaHRlZFF1YWRzOwotICAgICAgICBf
cG90ZW50aWFsVGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24tPnRvcExlZnRSYWRpdXMgPSB0b3BMZWZ0
UmFkaXVzOwotICAgICAgICBfcG90ZW50aWFsVGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24tPnRvcFJp
Z2h0UmFkaXVzID0gdG9wUmlnaHRSYWRpdXM7Ci0gICAgICAgIF9wb3RlbnRpYWxUYXBIaWdobGln
aHRJbmZvcm1hdGlvbi0+Ym90dG9tTGVmdFJhZGl1cyA9IGJvdHRvbUxlZnRSYWRpdXM7Ci0gICAg
ICAgIF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbi0+Ym90dG9tUmlnaHRSYWRpdXMg
PSBib3R0b21SaWdodFJhZGl1czsKKyAgICAgICAgX2hhc1RhcEhpZ2hsaWdodEZvclBvdGVudGlh
bFRhcCA9IFlFUzsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFtzZWxmIF9zaG93VGFw
SGlnaGxpZ2h0V2l0aENvbG9yOmNvbG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cXVhZHM6aGlnaGxpZ2h0ZWRRdWFkcwotICAgICAgICAgICAgICAgICAgICAgICB0b3BMZWZ0UmFk
aXVzOnRvcExlZnRSYWRpdXMKLSAgICAgICAgICAgICAgICAgICAgICB0b3BSaWdodFJhZGl1czp0
b3BSaWdodFJhZGl1cwotICAgICAgICAgICAgICAgICAgICBib3R0b21MZWZ0UmFkaXVzOmJvdHRv
bUxlZnRSYWRpdXMKLSAgICAgICAgICAgICAgICAgICBib3R0b21SaWdodFJhZGl1czpib3R0b21S
aWdodFJhZGl1c107CisgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOwogfQogCiAtICh2b2lk
KV9jYW5jZWxMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgpAQCAtNzk4LDIwICs3OTYsMjAgQEAg
c3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlH
ZXN0dXJlUmVjb2duaXplciAqYiwgVUkKIAogLSAodm9pZClfY2FuY2VsSW50ZXJhY3Rpb24KIHsK
LSAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gTk87Ci0gICAgW19oaWdobGlnaHRSb290Vmll
dyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBbX2hpZ2hsaWdodFZpZXcgcmVtb3ZlRnJvbVN1
cGVydmlld107CiB9CiAKIC0gKHZvaWQpX2ZpbmlzaEludGVyYWN0aW9uCiB7CiAgICAgW1VJVmll
dyBhbmltYXRlV2l0aER1cmF0aW9uOjAuMQogICAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9u
czpeewotICAgICAgICAgICAgICAgICAgICAgICAgIFtbX2hpZ2hsaWdodFJvb3RWaWV3IGxheWVy
XSBzZXRPcGFjaXR5OjBdOworICAgICAgICAgICAgICAgICAgICAgICAgIFtbX2hpZ2hsaWdodFZp
ZXcgbGF5ZXJdIHNldE9wYWNpdHk6MF07CiAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uOl4oQk9PTCl7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IE5POwotICAgICAgICAgICAgICAgICAgICAgICAg
IFtfaGlnaGxpZ2h0Um9vdFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgW1tfaGlnaGxpZ2h0Um9vdFZpZXcgbGF5ZXJdIHNldE9wYWNpdHk6MV07Cisg
ICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uOl4oQk9PTCBmaW5pc2hlZCl7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtfaGlnaGxpZ2h0VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW1tfaGlnaGxpZ2h0VmlldyBsYXllcl0gc2V0T3BhY2l0eToxXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9XTsKIH0K
IApAQCAtOTE3LDcgKzkxNSw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2Vz
dHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgQVNTRVJU
KGdlc3R1cmVSZWNvZ25pemVyID09IF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcik7CiAgICAg
aWYgKF9wb3RlbnRpYWxUYXBJblByb2dyZXNzKSB7CiAgICAgICAgIF9wb3RlbnRpYWxUYXBJblBy
b2dyZXNzID0gTk87Ci0gICAgICAgIF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbiA9
IG51bGxwdHI7CiAgICAgICAgIFtzZWxmIF9jYW5jZWxJbnRlcmFjdGlvbl07CiAgICAgICAgIF9w
YWdlLT5jYW5jZWxQb3RlbnRpYWxUYXAoKTsKICAgICB9CkBAIC05NTIsMTQgKzk0OSw5IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2Vz
dHVyZVJlY29nbml6ZXIgKmIsIFVJCiAKICAgICBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyA9IE5P
OwogCi0gICAgaWYgKF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbikgewotICAgICAg
ICBbc2VsZiBfc2hvd1RhcEhpZ2hsaWdodFdpdGhDb2xvcjpfcG90ZW50aWFsVGFwSGlnaGxpZ2h0
SW5mb3JtYXRpb24tPmNvbG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1
YWRzOl9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbi0+cXVhZHMKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRvcExlZnRSYWRpdXM6X3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9y
bWF0aW9uLT50b3BMZWZ0UmFkaXVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0
UmFkaXVzOl9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbi0+dG9wUmlnaHRSYWRpdXMK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXM6X3BvdGVudGlhbFRhcEhp
Z2hsaWdodEluZm9ybWF0aW9uLT5ib3R0b21MZWZ0UmFkaXVzCi0gICAgICAgICAgICAgICAgICAg
ICAgIGJvdHRvbVJpZ2h0UmFkaXVzOl9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbi0+
Ym90dG9tUmlnaHRSYWRpdXNdOwotICAgICAgICBfcG90ZW50aWFsVGFwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24gPSBudWxscHRyOworICAgIGlmIChfaGFzVGFwSGlnaGxpZ2h0Rm9yUG90ZW50aWFsVGFw
KSB7CisgICAgICAgIFtzZWxmIF9zaG93VGFwSGlnaGxpZ2h0XTsKKyAgICAgICAgX2hhc1RhcEhp
Z2hsaWdodEZvclBvdGVudGlhbFRhcCA9IE5POwogICAgIH0KIAogICAgIF9wYWdlLT5jb21taXRQ
b3RlbnRpYWxUYXAoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234041</attachid>
            <date>2014-06-27 21:00:01 -0700</date>
            <delta_ts>2014-07-06 17:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134424-20140627205936.patch</filename>
            <type>text/plain</type>
            <size>17516</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDY3YjY0MDA4YTk0Mjll
YjNjMjUzNGU5NmQ1YTQ2NjAxNTc5OWQyZi4uZWM0ZTY3OTBiMTJlNjExMWVkZmNhZGNmNTNmOTM5
ZTRhMTI5N2Q5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE0LTA2LTI3ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
TW92ZSB0YXAgaGlnaGxpZ2h0IHRvIHRoZSBpbnZlcnNlU2NhbGVSb290VmlldworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0NDI0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xNzQ4MDg4MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBFbnJpY2EgaW50cm9kdWNlZCB0aGUgaW52ZXJzZVNjYWxlUm9vdFZp
ZXcgdGhhdCBpcyBhIGR5bmFtaWMgdmVyc2lvbiBvZiBfaGlnaGxpZ2h0Um9vdFZpZXcuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgdGFwIGhpZ2hsaWdodCBmcm9tIGl0cyBvd24gaW52
ZXJzZSByb290IHRvIGludmVyc2VTY2FsZVJvb3RWaWV3LiBUaGlzIHByb3ZpZGVzIGJldHRlciBo
YW5kbGluZworICAgICAgICBvZiBzY2FsZSwgYmV0dGVyIGJlaGF2aW9yIG9uIGNyYXNoLCBhbmQg
cmVtb3ZlIG9uZSBleHRyYSB2aWV3IGZyb20gdGhlIGhpZXJhcmNoeS4KKworICAgICAgICBUaGUg
Y29kZSBpcyBwcmV0dHkgbXVjaCB0aGUgc2FtZSwganVzdCBtb3ZlZCBhcm91bmQuIFNvbWUgb2Yg
dGhlIGNoYW5nZXM6CisKKyAgICAgICAgTm93IHRoZSBjb2RlIG5lZWRzIHRvIGhhbmRsZSByZXBh
aW50aW5nIGxpdmUgd2hlbiB0aGUgdmlldyBzY2FsZS4gVG8gZG8gdGhhdCwgX3Nob3dUYXBIaWdo
bGlnaHRYWFggd2FzIHNwbGl0IGluIHR3bzoKKyAgICAgICAgLV9zaG93VGFwSGlnaGxpZ2h0IHRv
IHNldHVwIHRoZSB2aWV3LgorICAgICAgICAtX3VwZGF0ZVRhcEhpZ2hsaWdodCB0byB1cGRhdGUg
dGhlIHZpZXcgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2NhbGUuCisKKyAgICAgICAgU2luY2UgdGhl
IHZpZXcgdXBkYXRlcyBsaXZlIG9uIHNjYWxpbmcsIHdlIG5lZWQgdG8gcmVjb21wdXRlIHRoZSBj
b29yZGluYXRlcyBmb3IgZWFjaCB1cGRhdGUuIFRvIGRvIHRoYXQsIHRoZSBfcG90ZW50aWFsVGFw
SGlnaGxpZ2h0SW5mb3JtYXRpb24KKyAgICAgICAgd2FzIGdlbmVyYWxpemVkIHRvIGhhbmRsZSBh
bGwgY2FzZXMgb2YgaGlnaGxpZ2h0LgorCisgICAgICAgIFNpbmNlIHdlIGNhbiBubyBsb25nZXIg
dGVzdCBmb3IgdGhlIG51bGxpdHkgb2YgX3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9u
LAorICAgICAgICBhIG5ldyBhdHRyaWJ1dGUgaXMgaW50cm9kdWNlZCBmb3IgdGhhdDogX2hhc1Rh
cEhpZ2hsaWdodEZvclBvdGVudGlhbFRhcC4KKworICAgICAgICBUaGUgbGFzdCBiaXQgb2YgY2hh
bmdlIGNvbmNlcm4gcmVlbnRlcmluZyB0aGUgdGFwIGhpZ2hsaWdodC4gVGhpcyBiZWNvbWVzIHF1
aXRlIHNpbXBsZToKKyAgICAgICAgMSkgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCBpcyB1cGRhdGVk
IGJlZm9yZSB0aGUgYW5pbWF0aW9uIHN0YXJ0cworICAgICAgICAgICBzbyB0aGF0IGl0IGNhbiBi
ZSBzZXQgYWdhaW4gZHVyaW5nIGFuIGFuaW1hdGlvbi4KKyAgICAgICAgMikgVGhlIGFuaW1hdGlv
biBjaGVja3MgdGhlICJmaW5pc2hlZCIgZmxhZ3MgYmVmb3JlIHJlbW92aW5nIHRoZSB2aWV3IGZy
b20gaXRzIHN1cGVydmlldworICAgICAgICAgICB0byBhdm9pZCBicmVha2luZyB0aGUgbmV3IGFu
aW1hdGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAod2l0aGluRXBzaWxvbik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZFVwZGF0ZVZp
c2libGVSZWN0OnVub2JzY3VyZWRSZWN0OnVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRp
bmF0ZXM6c2NhbGU6bWluaW11bVNjYWxlOmluU3RhYmxlU3RhdGU6aXNDaGFuZ2luZ09ic2N1cmVk
SW5zZXRzSW50ZXJhY3RpdmVseTpdKToKKyAgICAgICAgTWFrZSBfdXBkYXRlVW5zY2FsZWRWaWV3
IGNvbmRpdGlvbmFsIHRvIHNjYWxlIGNoYW5nZXMsIHRoYXQgdGhpbmcgaXNuJ3QgY2hlYXAhCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAg
ICAgICAod2l0aGluRXBzaWxvbik6CisgICAgICAgIE1vdmUgd2l0aGluRXBzaWxvbigpIGZyb20g
V0tDb250ZW50VmlldyB0byB1c2UgaXQgZnJvbSBib3RoIGNsYXNzZXMuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBjbGVhbnVwSW50ZXJhY3Rpb25dKToKKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfdXBkYXRlVW5zY2FsZWRWaWV3XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3VwZGF0
ZVRhcEhpZ2hsaWdodF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaG93VGFwSGlnaGxp
Z2h0XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZEdldFRhcEhpZ2hsaWdodEZvclJl
cXVlc3Q6Y29sb3I6cXVhZHM6dG9wTGVmdFJhZGl1czp0b3BSaWdodFJhZGl1czpib3R0b21MZWZ0
UmFkaXVzOmJvdHRvbVJpZ2h0UmFkaXVzOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9j
YW5jZWxJbnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9maW5pc2hJbnRl
cmFjdGlvbl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9zaW5nbGVUYXBEaWRSZXNldDpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFwQ29tbWl0ZWQ6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3dUYXBIaWdobGlnaHRXaXRoQ29sb3I6cXVhZHM6dG9w
TGVmdFJhZGl1czp0b3BSaWdodFJhZGl1czpib3R0b21MZWZ0UmFkaXVzOmJvdHRvbVJpZ2h0UmFk
aXVzOl0pOiBEZWxldGVkLgorCiAyMDE0LTA2LTI3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBGbHVzaCB0aHJvdHRsaW5nIHdpdGggcmVtb3RlIGxheWVycwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCA0YWU0Zjk4ODM5NDBmMTk2NGVkMzA5YzQxODcxOTNiODYxYTliYzYwLi4wYjcwNDY4OTYyYTI1
OWNiYjgwMGM1NTc1OWQxMzQzNzE1MGE3NzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzM5LDExICs3MzksNiBAQCBzdGF0aWMg
Q0dGbG9hdCBjb250ZW50Wm9vbVNjYWxlKFdLV2ViVmlldyogd2ViVmlldykKICAgICBfdXNlc01p
bmltYWxVSSA9IE5POwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgd2l0aGluRXBzaWxvbihmbG9h
dCBhLCBmbG9hdCBiKQotewotICAgIHJldHVybiBmYWJzKGEgLSBiKSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGNoYW5nZUNvbnRlbnRP
ZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgV2ViQ29y
ZTo6RmxvYXRQb2ludCBjb250ZW50T2Zmc2V0KQogewogICAgIFVJRWRnZUluc2V0cyBjb250ZW50
SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggZWY5YWQzNGI5ZWEzZjM0MWYyYmY5ZmUy
ZWJhNTE0NjQxZjFlYTczYi4uODEyYzg0NjIxYTZjMWNhMGYwOThkODI3MDNmZWVhMmNlYjQ0N2M2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpA
QCAtNTU2LDYgKzU1Niw4IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxh
eWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJs
ZVJlY3Q6KENHUmVjdCl2aXNpYmxlUmVjdCB1bm9ic2N1cmVkUmVjdDooQ0dSZWN0KXVub2JzY3Vy
ZWRSZWN0IHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6KENHUmVjdCl1bm9i
c2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzCiAgICAgc2NhbGU6KENHRmxvYXQpem9v
bVNjYWxlIG1pbmltdW1TY2FsZTooQ0dGbG9hdCltaW5pbXVtU2NhbGUgaW5TdGFibGVTdGF0ZToo
Qk9PTClpc1N0YWJsZVN0YXRlIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6
KEJPT0wpaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseQogeworICAgIGRvdWJs
ZSBvbGREaXNwbGF5ZWRDb250ZW50U2NhbGUgPSBfcGFnZS0+ZGlzcGxheWVkQ29udGVudFNjYWxl
KCk7CisKICAgICBkb3VibGUgdGltZXN0YW1wID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CiAgICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YTo6VmVsb2NpdHlEYXRhIHZlbG9jaXR5RGF0
YTsKICAgICBpZiAoIWlzU3RhYmxlU3RhdGUpCkBAIC01NzIsNyArNTc0LDkgQEAgc3RhdGljIHZv
aWQgbGF5ZXJQYXRoKENBU2hhcGVMYXllciAqbGF5ZXIsIGNvbnN0IEZsb2F0UXVhZCYgb3V0ZXJR
dWFkKQogCiAgICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBfcGFnZS0+ZHJhd2luZ0FyZWEoKSkK
ICAgICAgICAgZHJhd2luZ0FyZWEtPnVwZGF0ZURlYnVnSW5kaWNhdG9yKCk7Ci0gICAgW3NlbGYg
X3VwZGF0ZVVuc2NhbGVkVmlld107CisKKyAgICBpZiAoIXdpdGhpbkVwc2lsb24ob2xkRGlzcGxh
eWVkQ29udGVudFNjYWxlLCB6b29tU2NhbGUpKQorICAgICAgICBbc2VsZiBfdXBkYXRlVW5zY2Fs
ZWRWaWV3XTsKIH0KIAogLSAodm9pZClzZXRNaW5pbXVtU2l6ZTooQ0dTaXplKXNpemUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCmluZGV4IGJkNTUzNjU2MDM5YzBhZGUyMDJhMWRlNDhkOGU3YzViYjAyMTFiMzEuLmY4
MDE5NTZhNjViZTc0ZTI4YzI5NDBkNzY0MGFjODRlMTg5ZWU4ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApA
QCAtMTAwLDcgKzEwMCw2IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAKICAgICBS
ZXRhaW5QdHI8VUlUZXh0SW5wdXRUcmFpdHM+IF90cmFpdHM7CiAgICAgUmV0YWluUHRyPFVJV2Vi
Rm9ybUFjY2Vzc29yeT4gX2Zvcm1BY2Nlc3NvcnlWaWV3OwotICAgIFJldGFpblB0cjxVSVZpZXc+
IF9oaWdobGlnaHRSb290VmlldzsKICAgICBSZXRhaW5QdHI8X1VJSGlnaGxpZ2h0Vmlldz4gX2hp
Z2hsaWdodFZpZXc7CiAgICAgUmV0YWluUHRyPFVJVmlldz4gX2ludmVyc2VTY2FsZVJvb3RWaWV3
OwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX21hcmtlZFRleHQ7CkBAIC0xMjIsNyArMTIxLDcg
QEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICAgICAgV2ViQ29yZTo6SW50U2l6
ZSBib3R0b21MZWZ0UmFkaXVzOwogICAgICAgICBXZWJDb3JlOjpJbnRTaXplIGJvdHRvbVJpZ2h0
UmFkaXVzOwogICAgIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFRhcEhpZ2hsaWdodEluZm9ybWF0
aW9uPiBfcG90ZW50aWFsVGFwSGlnaGxpZ2h0SW5mb3JtYXRpb247CisgICAgVGFwSGlnaGxpZ2h0
SW5mb3JtYXRpb24gX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uOwogCiAgICAgV2ViS2l0OjpXS0F1
dG9Db3JyZWN0aW9uRGF0YSBfYXV0b2NvcnJlY3Rpb25EYXRhOwogICAgIFdlYktpdDo6SW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gX3Bvc2l0aW9uSW5mb3JtYXRpb247CkBAIC0xMzYs
NiArMTM1LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9oYXNW
YWxpZFBvc2l0aW9uSW5mb3JtYXRpb247CiAgICAgQk9PTCBfaXNUYXBIaWdobGlnaHRJRFZhbGlk
OwogICAgIEJPT0wgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3M7CisgICAgQk9PTCBfaGFzVGFwSGln
aGxpZ2h0Rm9yUG90ZW50aWFsVGFwOwogICAgIEJPT0wgX3NlbGVjdGlvbk5lZWRzVXBkYXRlOwog
ICAgIEJPT0wgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbjsKICAgICBCT09MIF9pbnNwZWN0b3JO
b2RlU2VhcmNoRW5hYmxlZDsKQEAgLTE4NSw0ICsxODUsOSBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVj
dGlvbkRhdGEgewogLSAodm9pZClfZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2g7CiBAZW5kCiAK
K3N0YXRpYyBpbmxpbmUgYm9vbCB3aXRoaW5FcHNpbG9uKGZsb2F0IGEsIGZsb2F0IGIpCit7Cisg
ICAgcmV0dXJuIGZhYnMoYSAtIGIpIDwgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmVwc2ls
b24oKTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXgg
MmY1NGM3NjUzZGQ1ZDMzZDQ4OTgzYjExMDFkNjA5Njg5NDQ5MzJiMy4uMDQ0M2UyMjk1NTFmY2Rm
ZTJhY2EwYjRkZjE2ZDg2MjgzYzIwYzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTcxLDYgKzcx
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogc3RhdGljIGNvbnN0IGZsb2F0IGhpZ2hs
aWdodERlbGF5ID0gMC4xMjsKIHN0YXRpYyBjb25zdCBmbG9hdCB0YXBBbmRIb2xkRGVsYXkgID0g
MC43NTsKK2NvbnN0IENHRmxvYXQgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cyA9IDIu
MDsKIAogQGludGVyZmFjZSBXS1RleHRSYW5nZSA6IFVJVGV4dFJhbmdlIHsKICAgICBDR1JlY3Qg
X3N0YXJ0UmVjdDsKQEAgLTI2Nyw3ICsyNjgsNiBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2Rl
IHRvVUlXZWJTZWxlY3Rpb25Nb2RlKFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAog
ICAgIFtfZm9ybUlucHV0U2Vzc2lvbiBpbnZhbGlkYXRlXTsKICAgICBfZm9ybUlucHV0U2Vzc2lv
biA9IG5pbDsKICAgICBbX2hpZ2hsaWdodFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107Ci0gICAg
W19oaWdobGlnaHRSb290VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBbX2ludmVyc2VT
Y2FsZVJvb3RWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIFtfdG91Y2hFdmVudEdlc3R1
cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJl
Y29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CkBAIC0zMzksNiAr
MzM5LDcgQEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShX
S1NlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICBbX2ludmVyc2VTY2FsZVJvb3RW
aWV3IHNldFRyYW5zZm9ybTpDR0FmZmluZVRyYW5zZm9ybU1ha2VTY2FsZShpbnZlcnNlU2NhbGUs
IGludmVyc2VTY2FsZSldOwogICAgIF9zZWxlY3Rpb25OZWVkc1VwZGF0ZSA9IFlFUzsKICAgICBb
c2VsZiBfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbl07CisgICAgW3NlbGYgX3VwZGF0ZVRhcEhpZ2hs
aWdodF07CiB9CiAKIC0gKHZvaWQpX2VuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2gKQEAgLTUwNywz
NSArNTA4LDIwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoaWdobGlnaHRlZFF1YWRzQXJlU21hbGxl
clRoYW5SZWN0KGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBxCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLS0gKHZvaWQpX3Nob3dUYXBIaWdobGlnaHRXaXRoQ29sb3I6KGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiljb2xvciBxdWFkczooY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mKWhpZ2hs
aWdodGVkUXVhZHMgdG9wTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wTGVm
dFJhZGl1cyB0b3BSaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wUmlnaHRS
YWRpdXMgYm90dG9tTGVmdFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tTGVm
dFJhZGl1cyBib3R0b21SaWdodFJhZGl1czooY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9t
UmlnaHRSYWRpdXMKKy0gKHZvaWQpX3VwZGF0ZVRhcEhpZ2hsaWdodAogewotICAgIGlmICghaGln
aGxpZ2h0ZWRRdWFkc0FyZVNtYWxsZXJUaGFuUmVjdChoaWdobGlnaHRlZFF1YWRzLCBfcGFnZS0+
dW5vYnNjdXJlZENvbnRlbnRSZWN0KCkpKQorICAgIGlmICghW19oaWdobGlnaHRWaWV3IHN1cGVy
dmlld10pCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IENHRmxvYXQgVUlXZWJWaWV3TWlu
aW11bUhpZ2hsaWdodFJhZGl1cyA9IDIuMDsKLQotICAgIGlmICghX2hpZ2hsaWdodFJvb3RWaWV3
KSB7Ci0gICAgICAgIF9oaWdobGlnaHRSb290VmlldyA9IGFkb3B0TlMoW1tVSVZpZXcgYWxsb2Nd
IGluaXRdKTsKLSAgICAgICAgW19oaWdobGlnaHRSb290VmlldyBzZXRPcGFxdWU6Tk9dOwotICAg
ICAgICBbX2hpZ2hsaWdodFJvb3RWaWV3IGxheWVyXS5hbmNob3JQb2ludCA9IENHUG9pbnRNYWtl
KDAsIDApOwotCi0gICAgICAgIF9oaWdobGlnaHRWaWV3ID0gYWRvcHROUyhbW19VSUhpZ2hsaWdo
dFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVyb10pOwotICAgICAgICBbX2hpZ2hs
aWdodFZpZXcgc2V0T3BhcXVlOk5PXTsKLSAgICAgICAgW19oaWdobGlnaHRWaWV3IHNldENvcm5l
clJhZGl1czpVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzXTsKLSAgICAgICAgW19oaWdo
bGlnaHRSb290VmlldyBhZGRTdWJ2aWV3Ol9oaWdobGlnaHRWaWV3LmdldCgpXTsKLSAgICB9Ci0g
ICAgW3NlbGYgYWRkU3VidmlldzpfaGlnaGxpZ2h0Um9vdFZpZXcuZ2V0KCldOwotICAgIENHRmxv
YXQgc2VsZlNjYWxlID0gW1tzZWxmIGxheWVyXSB0cmFuc2Zvcm1dLm0xMTsKLSAgICBDR0Zsb2F0
IGhpZ2hsaWdodFZpZXdTY2FsZSA9IDEgLyBzZWxmU2NhbGU7Ci0gICAgW19oaWdobGlnaHRSb290
VmlldyBzZXRUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlU2NhbGUoaGlnaGxpZ2h0Vmll
d1NjYWxlLCBoaWdobGlnaHRWaWV3U2NhbGUpXTsKLQogICAgIHsKLSAgICAgICAgUmV0YWluUHRy
PFVJQ29sb3I+IGhpZ2hsaWdodFVJS2l0Q29sb3IgPSBhZG9wdE5TKFtbVUlDb2xvciBhbGxvY10g
aW5pdFdpdGhSZWQ6KGNvbG9yLnJlZCgpIC8gMjU1LjApIGdyZWVuOihjb2xvci5ncmVlbigpIC8g
MjU1LjApIGJsdWU6KGNvbG9yLmJsdWUoKSAvIDI1NS4wKSBhbHBoYTooY29sb3IuYWxwaGEoKSAv
IDI1NS4wKV0pOworICAgICAgICBSZXRhaW5QdHI8VUlDb2xvcj4gaGlnaGxpZ2h0VUlLaXRDb2xv
ciA9IGFkb3B0TlMoW1tVSUNvbG9yIGFsbG9jXSBpbml0V2l0aENHQ29sb3I6Y2FjaGVkQ0dDb2xv
cihfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24uY29sb3IsIFdlYkNvcmU6OkNvbG9yU3BhY2VEZXZp
Y2VSR0IpXSk7CiAgICAgICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRDb2xvcjpoaWdobGlnaHRVSUtp
dENvbG9yLmdldCgpXTsKICAgICB9CiAKKyAgICBDR0Zsb2F0IHNlbGZTY2FsZSA9IFtbc2VsZiBs
YXllcl0gdHJhbnNmb3JtXS5tMTE7CiAgICAgYm9vbCBhbGxIaWdobGlnaHRSZWN0c0FyZVJlY3Rp
bGluZWFyID0gdHJ1ZTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IF9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOworICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBo
aWdobGlnaHRlZFF1YWRzID0gX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLnF1YWRzOwogICAgIGNv
bnN0IHNpemVfdCBxdWFkQ291bnQgPSBoaWdobGlnaHRlZFF1YWRzLnNpemUoKTsKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IHJlY3RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OnN0YXRpY19jYXN0PGNvbnN0IE5TVUludGVnZXI+KHF1YWRD
b3VudCldKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDb3VudDsgKytpKSB7CkBA
IC01NzAsMzUgKzU1Niw0NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGlnaGxpZ2h0ZWRRdWFkc0Fy
ZVNtYWxsZXJUaGFuUmVjdChjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgcQogICAgIH0KIAogICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYm9yZGVyUmFkaWkgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6NF0pOwotICAgIFtib3JkZXJSYWRpaSBh
ZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNHU2l6ZU1ha2UodG9wTGVmdFJhZGl1
cy53aWR0aCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cywgdG9wTGVmdFJhZGl1
cy5oZWlnaHQoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMpXV07Ci0gICAgW2Jv
cmRlclJhZGlpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1NpemU6Q0dTaXplTWFrZSh0
b3BSaWdodFJhZGl1cy53aWR0aCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cywg
dG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVz
KV1dOwotICAgIFtib3JkZXJSYWRpaSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXpl
OkNHU2l6ZU1ha2UoYm90dG9tTGVmdFJhZGl1cy53aWR0aCgpICsgVUlXZWJWaWV3TWluaW11bUhp
Z2hsaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSArIFVJV2ViVmlld01pbmlt
dW1IaWdobGlnaHRSYWRpdXMpXV07Ci0gICAgW2JvcmRlclJhZGlpIGFkZE9iamVjdDpbTlNWYWx1
ZSB2YWx1ZVdpdGhDR1NpemU6Q0dTaXplTWFrZShib3R0b21SaWdodFJhZGl1cy53aWR0aCgpICsg
VUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cywgYm90dG9tUmlnaHRSYWRpdXMuaGVpZ2h0
KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzKV1dOworICAgIFtib3JkZXJSYWRp
aSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNHU2l6ZU1ha2UoX3RhcEhpZ2hs
aWdodEluZm9ybWF0aW9uLnRvcExlZnRSYWRpdXMud2lkdGgoKSArIFVJV2ViVmlld01pbmltdW1I
aWdobGlnaHRSYWRpdXMsIF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi50b3BMZWZ0UmFkaXVzLmhl
aWdodCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cyldXTsKKyAgICBbYm9yZGVy
UmFkaWkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHU2l6ZTpDR1NpemVNYWtlKF90YXBI
aWdobGlnaHRJbmZvcm1hdGlvbi50b3BSaWdodFJhZGl1cy53aWR0aCgpICsgVUlXZWJWaWV3TWlu
aW11bUhpZ2hsaWdodFJhZGl1cywgX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLnRvcFJpZ2h0UmFk
aXVzLmhlaWdodCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cyldXTsKKyAgICBb
Ym9yZGVyUmFkaWkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHU2l6ZTpDR1NpemVNYWtl
KF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5ib3R0b21MZWZ0UmFkaXVzLndpZHRoKCkgKyBVSVdl
YlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzLCBfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24uYm90
dG9tTGVmdFJhZGl1cy5oZWlnaHQoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMp
XV07CisgICAgW2JvcmRlclJhZGlpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1NpemU6
Q0dTaXplTWFrZShfdGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24uYm90dG9tUmlnaHRSYWRpdXMud2lk
dGgoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMsIF90YXBIaWdobGlnaHRJbmZv
cm1hdGlvbi5ib3R0b21SaWdodFJhZGl1cy5oZWlnaHQoKSArIFVJV2ViVmlld01pbmltdW1IaWdo
bGlnaHRSYWRpdXMpXV07CiAgICAgW19oaWdobGlnaHRWaWV3IHNldENvcm5lclJhZGlpOmJvcmRl
clJhZGlpLmdldCgpXTsKIH0KIAorLSAodm9pZClfc2hvd1RhcEhpZ2hsaWdodAoreworICAgIGlm
ICghaGlnaGxpZ2h0ZWRRdWFkc0FyZVNtYWxsZXJUaGFuUmVjdChfdGFwSGlnaGxpZ2h0SW5mb3Jt
YXRpb24ucXVhZHMsIF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghX2hpZ2hsaWdodFZpZXcpIHsKKyAgICAgICAgX2hpZ2hsaWdodFZp
ZXcgPSBhZG9wdE5TKFtbX1VJSGlnaGxpZ2h0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvXSk7CisgICAgICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRPcGFxdWU6Tk9dOworICAgICAg
ICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29ybmVyUmFkaXVzOlVJV2ViVmlld01pbmltdW1IaWdobGln
aHRSYWRpdXNdOworICAgIH0KKyAgICBbX2ludmVyc2VTY2FsZVJvb3RWaWV3IGFkZFN1YnZpZXc6
X2hpZ2hsaWdodFZpZXcuZ2V0KCldOworICAgIFtzZWxmIF91cGRhdGVUYXBIaWdobGlnaHRdOwor
fQorCiAtICh2b2lkKV9kaWRHZXRUYXBIaWdobGlnaHRGb3JSZXF1ZXN0Oih1aW50NjRfdClyZXF1
ZXN0SUQgY29sb3I6KGNvbnN0IFdlYkNvcmU6OkNvbG9yJiljb2xvciBxdWFkczooY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mKWhpZ2hsaWdodGVkUXVhZHMgdG9wTGVmdFJhZGl1czoo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wTGVmdFJhZGl1cyB0b3BSaWdodFJhZGl1czooY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpdG9wUmlnaHRSYWRpdXMgYm90dG9tTGVmdFJhZGl1czooY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tTGVmdFJhZGl1cyBib3R0b21SaWdodFJhZGl1czoo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpYm90dG9tUmlnaHRSYWRpdXMKIHsKICAgICBpZiAoIV9p
c1RhcEhpZ2hsaWdodElEVmFsaWQgfHwgX2xhdGVzdFRhcEhpZ2hsaWdodElEICE9IHJlcXVlc3RJ
RCkKICAgICAgICAgcmV0dXJuOwogCisgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9IE5POwor
CisgICAgX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yID0gY29sb3I7CisgICAgX3RhcEhp
Z2hsaWdodEluZm9ybWF0aW9uLnF1YWRzID0gaGlnaGxpZ2h0ZWRRdWFkczsKKyAgICBfdGFwSGln
aGxpZ2h0SW5mb3JtYXRpb24udG9wTGVmdFJhZGl1cyA9IHRvcExlZnRSYWRpdXM7CisgICAgX3Rh
cEhpZ2hsaWdodEluZm9ybWF0aW9uLnRvcFJpZ2h0UmFkaXVzID0gdG9wUmlnaHRSYWRpdXM7Cisg
ICAgX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmJvdHRvbUxlZnRSYWRpdXMgPSBib3R0b21MZWZ0
UmFkaXVzOworICAgIF90YXBIaWdobGlnaHRJbmZvcm1hdGlvbi5ib3R0b21SaWdodFJhZGl1cyA9
IGJvdHRvbVJpZ2h0UmFkaXVzOworCiAgICAgaWYgKF9wb3RlbnRpYWxUYXBJblByb2dyZXNzKSB7
Ci0gICAgICAgIF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbiA9IHN0ZDo6bWFrZV91
bmlxdWU8VGFwSGlnaGxpZ2h0SW5mb3JtYXRpb24+KCk7Ci0gICAgICAgIF9wb3RlbnRpYWxUYXBI
aWdobGlnaHRJbmZvcm1hdGlvbi0+Y29sb3IgPSBjb2xvcjsKLSAgICAgICAgX3BvdGVudGlhbFRh
cEhpZ2hsaWdodEluZm9ybWF0aW9uLT5xdWFkcyA9IGhpZ2hsaWdodGVkUXVhZHM7Ci0gICAgICAg
IF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbi0+dG9wTGVmdFJhZGl1cyA9IHRvcExl
ZnRSYWRpdXM7Ci0gICAgICAgIF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZvcm1hdGlvbi0+dG9w
UmlnaHRSYWRpdXMgPSB0b3BSaWdodFJhZGl1czsKLSAgICAgICAgX3BvdGVudGlhbFRhcEhpZ2hs
aWdodEluZm9ybWF0aW9uLT5ib3R0b21MZWZ0UmFkaXVzID0gYm90dG9tTGVmdFJhZGl1czsKLSAg
ICAgICAgX3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9uLT5ib3R0b21SaWdodFJhZGl1
cyA9IGJvdHRvbVJpZ2h0UmFkaXVzOworICAgICAgICBfaGFzVGFwSGlnaGxpZ2h0Rm9yUG90ZW50
aWFsVGFwID0gWUVTOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgW3NlbGYgX3Nob3dU
YXBIaWdobGlnaHRXaXRoQ29sb3I6Y29sb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBxdWFkczpoaWdobGlnaHRlZFF1YWRzCi0gICAgICAgICAgICAgICAgICAgICAgIHRvcExlZnRS
YWRpdXM6dG9wTGVmdFJhZGl1cwotICAgICAgICAgICAgICAgICAgICAgIHRvcFJpZ2h0UmFkaXVz
OnRvcFJpZ2h0UmFkaXVzCi0gICAgICAgICAgICAgICAgICAgIGJvdHRvbUxlZnRSYWRpdXM6Ym90
dG9tTGVmdFJhZGl1cwotICAgICAgICAgICAgICAgICAgIGJvdHRvbVJpZ2h0UmFkaXVzOmJvdHRv
bVJpZ2h0UmFkaXVzXTsKKyAgICBbc2VsZiBfc2hvd1RhcEhpZ2hsaWdodF07CiB9CiAKIC0gKHZv
aWQpX2NhbmNlbExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCkBAIC03OTgsMjAgKzc5NiwyMCBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBV
SUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogCiAtICh2b2lkKV9jYW5jZWxJbnRlcmFjdGlvbgog
ewotICAgIF9pc1RhcEhpZ2hsaWdodElEVmFsaWQgPSBOTzsKLSAgICBbX2hpZ2hsaWdodFJvb3RW
aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgIFtfaGlnaGxpZ2h0VmlldyByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKIH0KIAogLSAodm9pZClfZmluaXNoSW50ZXJhY3Rpb24KIHsKICAgICBbVUlW
aWV3IGFuaW1hdGVXaXRoRHVyYXRpb246MC4xCiAgICAgICAgICAgICAgICAgICAgICBhbmltYXRp
b25zOl57Ci0gICAgICAgICAgICAgICAgICAgICAgICAgW1tfaGlnaGxpZ2h0Um9vdFZpZXcgbGF5
ZXJdIHNldE9wYWNpdHk6MF07CisgICAgICAgICAgICAgICAgICAgICAgICAgW1tfaGlnaGxpZ2h0
VmlldyBsYXllcl0gc2V0T3BhY2l0eTowXTsKICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb246XihCT09MKXsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBfaXNUYXBIaWdobGlnaHRJRFZhbGlkID0gTk87Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgW19oaWdobGlnaHRSb290VmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBbW19oaWdobGlnaHRSb290VmlldyBsYXllcl0gc2V0T3BhY2l0eToxXTsK
KyAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb246XihCT09MIGZpbmlzaGVkKXsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZmluaXNoZWQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW19oaWdobGlnaHRWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbW19oaWdobGlnaHRWaWV3IGxheWVyXSBzZXRPcGFjaXR5OjFd
OworICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH1dOwog
fQogCkBAIC05MTcsNyArOTE1LDYgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlH
ZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBBU1NF
UlQoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKICAg
ICBpZiAoX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MpIHsKICAgICAgICAgX3BvdGVudGlhbFRhcElu
UHJvZ3Jlc3MgPSBOTzsKLSAgICAgICAgX3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9u
ID0gbnVsbHB0cjsKICAgICAgICAgW3NlbGYgX2NhbmNlbEludGVyYWN0aW9uXTsKICAgICAgICAg
X3BhZ2UtPmNhbmNlbFBvdGVudGlhbFRhcCgpOwogICAgIH0KQEAgLTk1MiwxNCArOTQ5LDkgQEAg
c3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlH
ZXN0dXJlUmVjb2duaXplciAqYiwgVUkKIAogICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0g
Tk87CiAKLSAgICBpZiAoX3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9uKSB7Ci0gICAg
ICAgIFtzZWxmIF9zaG93VGFwSGlnaGxpZ2h0V2l0aENvbG9yOl9wb3RlbnRpYWxUYXBIaWdobGln
aHRJbmZvcm1hdGlvbi0+Y29sb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cXVhZHM6X3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9uLT5xdWFkcwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9wTGVmdFJhZGl1czpfcG90ZW50aWFsVGFwSGlnaGxpZ2h0SW5m
b3JtYXRpb24tPnRvcExlZnRSYWRpdXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wUmln
aHRSYWRpdXM6X3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9uLT50b3BSaWdodFJhZGl1
cwotICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tTGVmdFJhZGl1czpfcG90ZW50aWFsVGFw
SGlnaGxpZ2h0SW5mb3JtYXRpb24tPmJvdHRvbUxlZnRSYWRpdXMKLSAgICAgICAgICAgICAgICAg
ICAgICAgYm90dG9tUmlnaHRSYWRpdXM6X3BvdGVudGlhbFRhcEhpZ2hsaWdodEluZm9ybWF0aW9u
LT5ib3R0b21SaWdodFJhZGl1c107Ci0gICAgICAgIF9wb3RlbnRpYWxUYXBIaWdobGlnaHRJbmZv
cm1hdGlvbiA9IG51bGxwdHI7CisgICAgaWYgKF9oYXNUYXBIaWdobGlnaHRGb3JQb3RlbnRpYWxU
YXApIHsKKyAgICAgICAgW3NlbGYgX3Nob3dUYXBIaWdobGlnaHRdOworICAgICAgICBfaGFzVGFw
SGlnaGxpZ2h0Rm9yUG90ZW50aWFsVGFwID0gTk87CiAgICAgfQogCiAgICAgX3BhZ2UtPmNvbW1p
dFBvdGVudGlhbFRhcCgpOwo=
</data>
<flag name="review"
          id="258572"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>