<?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>154318</bug_id>
          
          <creation_ts>2016-02-16 17:34:23 -0800</creation_ts>
          <short_desc>Allow double tap to zoom in fast-click pages</short_desc>
          <delta_ts>2016-02-16 19:27:26 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>iOS 9.3</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="Jon Lee">jonlee</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>benjamin</cc>
    
    <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165423</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-02-16 17:34:23 -0800</bug_when>
    <thetext>rdar://problem/24223767</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165429</commentid>
    <comment_count>1</comment_count>
      <attachid>271514</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-02-16 17:55:13 -0800</bug_when>
    <thetext>Created attachment 271514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165430</commentid>
    <comment_count>2</comment_count>
      <attachid>271514</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-02-16 17:57:18 -0800</bug_when>
    <thetext>Comment on attachment 271514
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:941
&gt; +    [_fastDoubleTapGestureRecognizer setEnabled:NO];
&gt; +    [_fastDoubleTapGestureRecognizer setEnabled:YES];

Really?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165432</commentid>
    <comment_count>3</comment_count>
      <attachid>271514</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-02-16 18:04:39 -0800</bug_when>
    <thetext>Comment on attachment 271514
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:941
&gt;&gt; +    [_fastDoubleTapGestureRecognizer setEnabled:YES];
&gt; 
&gt; Really?

Maybe add a comment to make it clear this isn&apos;t a typo.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1342
&gt; +- (void)_didNotHandleTapAsClick:(const WebCore::IntPoint&amp;)point

Method name doesn&apos;t obviously read as a setter (it sounds like a getter), and doesn&apos;t imply that things like data detectors will kick in. It needs to sound more imperative.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1405
&gt; +- (void)_fastDoubleTapRecognized:(UITapGestureRecognizer *)gestureRecognizer

&quot;fast double tap&quot; makes it sound like there&apos;s another kind of double tap. is it more like &quot;interruptible double tap&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165436</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-02-16 18:17:47 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=271514&amp;action=review

Some comments.
I am not sure to understand this patch. I&apos;ll have to talk to Jon.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h:158
&gt; +    BOOL _isDoubleTapPending;

This must be reset in [-cleanupInteraction] or [-setupInteraction]. 

Otherwise, you may keep a bogus state after a crash.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1353
&gt; +    if (!_isDoubleTapPending)
&gt; +        return;
&gt; +
&gt; +    _smartMagnificationController-&gt;handleSmartMagnificationGesture(_lastInteractionLocation);
&gt; +    _isDoubleTapPending = NO;

Is it expected to show the data detector AND zoom?
I *think* zooming dismisses some of the pop overs.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1403
&gt; +- (void)_resetIsDoubleTapPending
&gt; +{
&gt; +    _isDoubleTapPending = NO;
&gt; +}

Looks like adding complexity. All the lines with [self _resetIsDoubleTapPending] could be &quot;_isDoubleTapPending = NO;&quot;.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1407
&gt; +    _lastInteractionLocation = gestureRecognizer.location;

This is a bit odd. As far as I know, &quot;lastInteractionLocation&quot; previously always referred to taps/clicks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165437</commentid>
    <comment_count>5</comment_count>
      <attachid>271515</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-02-16 18:17:58 -0800</bug_when>
    <thetext>Created attachment 271515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165439</commentid>
    <comment_count>6</comment_count>
      <attachid>271514</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-02-16 18:21:33 -0800</bug_when>
    <thetext>Comment on attachment 271514
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:941
&gt;&gt;&gt; +    [_fastDoubleTapGestureRecognizer setEnabled:YES];
&gt;&gt; 
&gt;&gt; Really?
&gt; 
&gt; Maybe add a comment to make it clear this isn&apos;t a typo.

Turns out I can remove this.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1342
&gt;&gt; +- (void)_didNotHandleTapAsClick:(const WebCore::IntPoint&amp;)point
&gt; 
&gt; Method name doesn&apos;t obviously read as a setter (it sounds like a getter), and doesn&apos;t imply that things like data detectors will kick in. It needs to sound more imperative.

This is an existing name that signals an incoming message from the Web Process. It&apos;s an event handler, like _singleTapRecognized, which can also do a number of things.

&gt;&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1405
&gt;&gt; +- (void)_fastDoubleTapRecognized:(UITapGestureRecognizer *)gestureRecognizer
&gt; 
&gt; &quot;fast double tap&quot; makes it sound like there&apos;s another kind of double tap. is it more like &quot;interruptible double tap&quot;?

I definitely agree here. It actually means the double tap that is recognized when we&apos;re in fast click mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165441</commentid>
    <comment_count>7</comment_count>
      <attachid>271515</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-02-16 18:22:09 -0800</bug_when>
    <thetext>Comment on attachment 271515
Patch

smfr gave r+ to the first patch. This one is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165445</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-02-16 18:26:24 -0800</bug_when>
    <thetext>
&gt; &gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:1407
&gt; &gt; +    _lastInteractionLocation = gestureRecognizer.location;
&gt; 
&gt; This is a bit odd. As far as I know, &quot;lastInteractionLocation&quot; previously
&gt; always referred to taps/clicks.

The other double tap recognizer does the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165465</commentid>
    <comment_count>9</comment_count>
      <attachid>271517</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-02-16 18:45:10 -0800</bug_when>
    <thetext>Created attachment 271517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165471</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-02-16 19:27:26 -0800</bug_when>
    <thetext>Committed r196679: &lt;http://trac.webkit.org/changeset/196679&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271514</attachid>
            <date>2016-02-16 17:55:13 -0800</date>
            <delta_ts>2016-02-16 18:21:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154318-20160217125451.patch</filename>
            <type>text/plain</type>
            <size>13686</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDc4YzI1YmNkMmQ1NzUy
NzE2OTUyNjIyNDQxZmFlYzY2Y2JmZTkxNC4uZGZjYTFiOGFiNjAxMTc5MmY0ODA4MGQ2NDVmZjMy
NjE4OWM3MmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE2LTAyLTE2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBkb3VibGUgdGFwIHRv
IHpvb20gaW4gZmFzdC1jbGljayBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDIyMzc2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdXIg
ZmFzdC1jbGljayBhbGdvcml0aG0gZXhwb3NlZCBhIG51bWJlciBvZiBjYXNlcyB3aGVyZQorICAg
ICAgICBwZW9wbGUgbWlzc2VkIHRoZSBkb3VibGUtdGFwLXRvLXpvb20gYmVoYXZpb3VyLiBJbiBw
YXJ0aWN1bGFyLAorICAgICAgICB3aGVuIHlvdSBkb3VibGUgdGFwIG9uIGEgbGFyZ2UgYm9keSBv
ZiB0ZXh0LCB0eXBpY2FsIGluCisgICAgICAgIGJsb2dzIGFuZCBhcnRpY2xlcy4KKworICAgICAg
ICBUaGlzIHBhdGNoIGVuaGFuY2VzIHRoZSBhbGdvcml0aG0gdG8gaGF2ZSBhIHBhcmFsbGVsCisg
ICAgICAgIGRvdWJsZS10YXAgZ2VzdHVyZSByZWNvZ25pemVyIGluIHRoZSBzaXR1YXRpb25zIHdo
ZXJlCisgICAgICAgIGZhc3QtY2xpY2sgaXMgZW5hYmxlZC4gVGhpcyBuZXcgZ2VzdHVyZSByZWNv
bmdpemVyIGRvZXMKKyAgICAgICAgbm90IGNhdXNlIHRoZSBzaW5nbGUgdGFwIHRvIGJsb2NrIGZv
ciAzNTBtcywgc28gY2xpY2tzCisgICAgICAgIGFyZSBzdGlsbCBkaXNwYXRjaGVkIGZhc3QuIElm
IGl0IGZpcmVzLCB3ZSBhbHJlYWR5IGhhdmUKKyAgICAgICAgc29tZSBpbmZvcm1hdGlvbiBhYm91
dCB3aGV0aGVyIHdlIGhhdmUgYSBwZW5kaW5nIGRvdWJsZQorICAgICAgICB0YXAsIGJhc2VkIG9u
IHRoZSBmaXJzdCB0YXAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZURvdWJsZVRh
cEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkpOiBSZW1vdmUgdGhlIG9wdGltaXphdGlvbgor
ICAgICAgICB0aGF0IG9ubHkgdG9sZCB0aGUgY29udGVudCB2aWV3IHRvIGRpc2FibGUgb24gcGFn
ZXMgdGhhdCBhbGxvd2VkIGRvdWJsZSB0YXBzLiBXZSBub3cgYWxsb3cKKyAgICAgICAgdGhlbSBl
dmVuIG9uIGZhc3QgY2xpY2sgcGFnZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oOiBBZGQgdGhlIG5ldyBVSVRhcEdlc3R1cmVSZWNvZ25pemVy
IGZvciBkb3VibGUgdGFwcworICAgICAgICBpbiBmYXN0IGNsaWNrIHBhZ2VzLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKTogU2V0IHVwIHRoZSBuZXcgVUlUYXBHZXN0
dXJlUmVjb2duaXplci4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjbGVhbnVwSW50ZXJhY3Rp
b25dKTogQW5kIHJlbW92ZSBpdCB3aGVuIHdlJ3JlIGRvbmUuCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfaW5zcGVjdG9yTm9kZVNlYXJjaFJlY29nbml6ZWQ6XSk6IFNv
bWV0aGluZyBoYXBwZW5lZCwgd2UgYXJlIG5vIGxvbmdlciBpbgorICAgICAgICBhIHBvdGVudGlh
bCBkb3VibGUgdGFwIHNpdHVhdGlvbi4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlzYWJs
ZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3Nhcnk6XSk6IFRvZ2dsZSB0aGUgbmV3
IGdlc3R1cmUKKyAgICAgICAgcmVjb2duaXplciBvZmYgdGhlbiBvbi4gV2hpbGUgdGhpcyBzZWVt
cyB3ZWlyZCwgaXQncyBhY3R1YWxseSB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIHJlc2V0CisgICAg
ICAgIGEgcmVjb2duaXplciB0aGF0IG1pZ2h0IGJlIHBhcnQgb2YgdGhlIHdheSB0aHJvdWdoIGRl
dGVjdGluZyB0aGUgZ2VzdHVyZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVj
b2duaXplcjpzaG91bGRSZWNvZ25pemVTaW11bHRhbmVvdXNseVdpdGhHZXN0dXJlUmVjb2duaXpl
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBnZXN0dXJlUmVjb2duaXplclNob3VsZEJl
Z2luOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9oaWdobGlnaHRMb25nUHJlc3NSZWNv
Z25pemVkOl0pOiBBZ2Fpbiwgc29tZXRoaW5nIGhhcHBlbmVkLCBzbyB3ZSBhcmUKKyAgICAgICAg
bm8gbG9uZ2VyIGluIGEgZG91YmxlIHRhcCBzaXR1YXRpb24uCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2xvbmdQcmVzc1JlY29nbml6ZWQ6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9zaW5nbGVUYXBSZWNvZ25pemVkOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZG91YmxlVGFwUmVjb2duaXplZDpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nXSk6CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2Zhc3REb3VibGVUYXBSZWNvZ25pemVkOl0pOiBXZSdyZSBub3cgcGVuZGluZyBhIGRv
dWJsZSB0YXAuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3R3b0ZpbmdlckRvdWJsZVRhcFJl
Y29nbml6ZWQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RpZE5vdEhhbmRsZVRhcEFz
Q2xpY2s6XSk6IElmIHdlIGdldCBoZXJlIGFuZCB3ZSBoYXZlIGEgcGVuZGluZworICAgICAgICBk
b3VibGUgdGFwLCB0aGVuIHRyaWdnZXIgYSB6b29tIG9wZXJhdGlvbi4KKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOl0pOgorCiAyMDE2LTAyLTEx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VXNlIEJsb2JSZXNvdXJjZUhhbmRsZSB3aGVuIGxvYWRpbmcgYmxvYiB1cmxzLCBldmVuIHdoZW4g
dXNpbmcgTmV0d29ya1Nlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDQ3NWIxYWE2M2U5MmI1MTY4YzI2MTEzZmM2NjUx
MjNhODIxMmM4N2EuLmEzYzMyOTcxZjc2ZGQ3OTZlMzgwZTJmNTQxNzNlOTlhN2RhMmMxZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5t
bQpAQCAtMjYxLDkgKzI2MSw2IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRl
bnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpk
aXNhYmxlRG91YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeSh1aW50NjRfdCByZXF1
ZXN0SUQpCiB7Ci0gICAgaWYgKCFtX3dlYlZpZXcuX2FsbG93c0RvdWJsZVRhcEdlc3R1cmVzKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBbbV9jb250ZW50VmlldyBfZGlzYWJsZURvdWJsZVRhcEdl
c3R1cmVzRHVyaW5nVGFwSWZOZWNlc3Nhcnk6cmVxdWVzdElEXTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgK
aW5kZXggODc3ZTRhZWQ0ODE2MjdmODE0Njc1NGRhN2MwNjVjMGUwOWQwOTJjNS4uZjQzMGViNzk3
ZDk4YzI1ZWRjODgzNTFiZTY4ZTZiZDU5MWU5NTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMDIs
NiArMTAyLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5QdHI8
X1VJV2ViSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9oaWdobGlnaHRMb25n
UHJlc3NHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlMb25nUHJlc3NHZXN0dXJl
UmVjb2duaXplcj4gX2xvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxV
SVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CisgICAg
UmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF9mYXN0RG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5n
ZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8V0tJbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXI+IF9pbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJl
Y29nbml6ZXI7CiAKQEAgLTE1NCw2ICsxNTUsNyBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRh
dGEgewogICAgIEJPT0wgX2hhc1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbjsKICAgICBCT09MIF9p
c1RhcEhpZ2hsaWdodElEVmFsaWQ7CiAgICAgQk9PTCBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzczsK
KyAgICBCT09MIF9pc0RvdWJsZVRhcFBlbmRpbmc7CiAgICAgQk9PTCBfaGlnaGxpZ2h0TG9uZ1By
ZXNzQ2FuQ2xpY2s7CiAgICAgQk9PTCBfaGFzVGFwSGlnaGxpZ2h0Rm9yUG90ZW50aWFsVGFwOwog
ICAgIEJPT0wgX3NlbGVjdGlvbk5lZWRzVXBkYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCAwZDJh
YjZjNDY5NzBlODNkZmFlZDVkMWE1NWRjMGJmMWFhOTAzNWNmLi5lMmMxNjYyNDI2OGIxZThhM2Fk
Nzk2NDE4ZTE0NzViZTlmYzk0NzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNDYyLDYgKzQ2Miwx
MiBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2RlIHRvVUlXZWJTZWxlY3Rpb25Nb2RlKFdLU2Vs
ZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAgIFtfc2luZ2xlVGFwR2VzdHVyZVJlY29n
bml6ZXIgc2V0UmVzZXRUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9zaW5nbGVUYXBEaWRS
ZXNldDopXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc2luZ2xlVGFwR2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOwogCisgICAgX2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXpl
ciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdl
dDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX2Zhc3REb3VibGVUYXBSZWNvZ25pemVkOildKTsKKyAg
ICBbX2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXROdW1iZXJPZlRhcHNSZXF1aXJl
ZDoyXTsKKyAgICBbX2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpz
ZWxmXTsKKyAgICBbX2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRFbmFibGVkOk5P
XTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfZmFzdERvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyLmdldCgpXTsKKwogICAgIFtzZWxmIF9jcmVhdGVBbmRDb25maWd1cmVEb3VibGVU
YXBHZXN0dXJlUmVjb2duaXplcl07CiAKICAgICBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXplciBhbGxvY10gaW5pdFdp
dGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF90d29GaW5nZXJEb3VibGVUYXBSZWNvZ25p
emVkOildKTsKQEAgLTUzMyw2ICs1MzksOSBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25Nb2RlIHRv
VUlXZWJTZWxlY3Rpb25Nb2RlKFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdAogICAg
IFtfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKICAgICBbc2Vs
ZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0
KCldOwogCisgICAgW19mYXN0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6
bmlsXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfZmFzdERvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKwogICAgIFtfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVy
ZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVj
b2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogCkBA
IC01NjAsNiArNTY5LDcgQEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0
aW9uTW9kZShXS1NlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICBbc2VsZiByZW1v
dmVHZXN0dXJlUmVjb2duaXplcjpfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
ICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9oaWdobGlnaHRMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6
X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0
dXJlUmVjb2duaXplcjpfZmFzdERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAg
ICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOwogfQogCkBAIC01NjksNiArNTc5LDcgQEAgc3RhdGljIFVJV2Vi
U2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShXS1NlbGVjdGlvbkdyYW51bGFyaXR5
IGdyYW51bGFyaXQKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc2luZ2xlVGFwR2Vz
dHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9o
aWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRk
R2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAg
ICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfZmFzdERvdWJsZVRhcEdlc3R1cmVSZWNvZ25p
emVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91
YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogfQogCkBAIC03MzMsNiArNzQ0LDcgQEAg
c3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShXS1NlbGVjdGlv
bkdyYW51bGFyaXR5IGdyYW51bGFyaXQKIC0gKHZvaWQpX2luc3BlY3Rvck5vZGVTZWFyY2hSZWNv
Z25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBB
U1NFUlQoX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkKTsKKyAgICBbc2VsZiBfcmVzZXRJc0Rv
dWJsZVRhcFBlbmRpbmddOwogCiAgICAgQ0dQb2ludCBwb2ludCA9IFtnZXN0dXJlUmVjb2duaXpl
ciBsb2NhdGlvbkluVmlldzpzZWxmXTsKIApAQCAtOTIxLDEwICs5MzMsMTIgQEAgc3RhdGljIE5T
VmFsdWUgKm5zU2l6ZUZvclRhcEhpZ2hsaWdodEJvcmRlclJhZGl1cyhXZWJDb3JlOjpJbnRTaXpl
IGJvcmRlclJhZGl1cywKIAogLSAodm9pZClfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5n
VGFwSWZOZWNlc3Nhcnk6KHVpbnQ2NF90KXJlcXVlc3RJRAogewotICAgIGlmICghX3BvdGVudGlh
bFRhcEluUHJvZ3Jlc3MgfHwgX2xhdGVzdFRhcElEICE9IHJlcXVlc3RJRCkKKyAgICBpZiAoX2xh
dGVzdFRhcElEICE9IHJlcXVlc3RJRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgW3NlbGYgX3Nl
dERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpOT107CisgICAgW19mYXN0RG91YmxlVGFwR2VzdHVy
ZVJlY29nbml6ZXIgc2V0RW5hYmxlZDpOT107CisgICAgW19mYXN0RG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIgc2V0RW5hYmxlZDpZRVNdOwogfQogCiAtICh2b2lkKV9jYW5jZWxMb25nUHJlc3NH
ZXN0dXJlUmVjb2duaXplcgpAQCAtMTA1MCw2ICsxMDY0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIg
KmIsIFVJCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVy
ZVJlY29nbml6ZXIsIF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX3RleHRTZWxl
Y3Rpb25Bc3Npc3RhbnQuZ2V0KCkuc2luZ2xlVGFwR2VzdHVyZSkpCiAgICAgICAgIHJldHVybiBZ
RVM7CiAKKyAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJHZXN0dXJl
UmVjb2duaXplciwgX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBfZmFzdERvdWJs
ZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKworICAg
IGlmIChpc1NhbWVQYWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVy
LCBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF9mYXN0RG91Ymxl
VGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCkpKQorICAgICAgICByZXR1cm4gWUVTOworCiAgICAg
aWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIs
IF9oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX3ByZXZpZXdTZWNv
bmRhcnlHZXN0dXJlUmVjb2duaXplci5nZXQoKSkpCiAgICAgICAgIHJldHVybiBZRVM7CiAKQEAg
LTExMTMsNiArMTEzMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVy
ZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAKICAgICBpZiAoZ2Vz
dHVyZVJlY29nbml6ZXIgPT0gX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCiAg
ICAgICAgIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXpl
cgorICAgICAgICB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfZmFzdERvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyCiAgICAgICAgIHx8IGdlc3R1cmVSZWNvZ25pemVyID09IF90d29GaW5nZXJEb3Vi
bGVUYXBHZXN0dXJlUmVjb2duaXplcgogICAgICAgICB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBf
c2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpIHsKIApAQCAtMTIzNCw2ICsxMjU1LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0
dXJlUmVjb2duaXplciAqYiwgVUkKIC0gKHZvaWQpX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6
ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewog
ICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIpOworICAgIFtzZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107CiAKICAg
ICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50
OwogCkBAIC0xMjY0LDYgKzEyODYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihV
SUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogLSAodm9p
ZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdl
c3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9sb25n
UHJlc3NHZXN0dXJlUmVjb2duaXplcik7CisgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5k
aW5nXTsKIAogICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVy
LnN0YXJ0UG9pbnQ7CiAKQEAgLTEyODgsNiArMTMxMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIs
IFVJCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9zaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplcik7CiAgICAgQVNTRVJUKCFfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyk7CisgICAg
W3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nXTsKIAogICAgIF9wYWdlLT5wb3RlbnRpYWxU
YXBBdFBvc2l0aW9uKGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uLCArK19sYXRlc3RUYXBJRCk7
CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBZRVM7CkBAIC0xMzE1LDYgKzEzMzksMjAg
QEAgc3RhdGljIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50Vmll
dyogY29udGVudFZpZXcpCiAgICAgW3NlbGYgX2NhbmNlbEludGVyYWN0aW9uXTsKIH0KIAorLSAo
dm9pZClfZGlkTm90SGFuZGxlVGFwQXNDbGljazooY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKXBv
aW50Cit7CisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBhbHNvIHRha2UgaW50byBhY2NvdW50IHdo
ZXRoZXIgb3Igbm90IHRoZSBVSSBkZWxlZ2F0ZQorICAgIC8vIGhhcyBoYW5kbGVkIHRoaXMgbm90
aWZpY2F0aW9uLgorICAgIGlmIChfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uICYmIHBvaW50
ID09IF9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlz
RGF0YURldGVjdG9yTGluaykKKyAgICAgICAgW3NlbGYgX3Nob3dEYXRhRGV0ZWN0b3JzU2hlZXRd
OworCisgICAgaWYgKCFfaXNEb3VibGVUYXBQZW5kaW5nKQorICAgICAgICByZXR1cm47CisKKyAg
ICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZShfbGFzdEludGVyYWN0aW9uTG9jYXRpb24pOworICAgIF9pc0RvdWJsZVRhcFBlbmRp
bmcgPSBOTzsKK30KKwogLSAodm9pZClfc2luZ2xlVGFwQ29tbWl0ZWQ6KFVJVGFwR2VzdHVyZVJl
Y29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIEFTU0VSVChnZXN0dXJlUmVjb2du
aXplciA9PSBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpOwpAQCAtMTM1MywxMyArMTM5MSwy
NiBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRW
aWV3KiBjb250ZW50VmlldykKIAogLSAodm9pZClfZG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CisgICAgW3NlbGYgX3Jlc2V0
SXNEb3VibGVUYXBQZW5kaW5nXTsKICAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0
dXJlUmVjb2duaXplci5sb2NhdGlvbjsKIAogICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyLT5oYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVyLmxv
Y2F0aW9uKTsKIH0KIAorLSAodm9pZClfcmVzZXRJc0RvdWJsZVRhcFBlbmRpbmcKK3sKKyAgICBf
aXNEb3VibGVUYXBQZW5kaW5nID0gTk87Cit9CisKKy0gKHZvaWQpX2Zhc3REb3VibGVUYXBSZWNv
Z25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAg
ICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbjsK
KyAgICBfaXNEb3VibGVUYXBQZW5kaW5nID0gWUVTOworfQorCiAtICh2b2lkKV90d29GaW5nZXJE
b3VibGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKIHsKKyAgICBbc2VsZiBfcmVzZXRJc0RvdWJsZVRhcFBlbmRpbmddOwogICAgIF9sYXN0
SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uOwogCiAgICAg
X3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVJlc2V0TWFnbmlmaWNhdGlvbkdl
c3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24pOwpAQCAtMTQwMywxNCArMTQ1NCw2IEBA
IHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZpZXcq
IGNvbnRlbnRWaWV3KQogICAgIF9wYWdlLT5jbGVhclNlbGVjdGlvbigpOwogfQogCi0tICh2b2lk
KV9kaWROb3RIYW5kbGVUYXBBc0NsaWNrOihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpcG9pbnQK
LXsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFsc28gdGFrZSBpbnRvIGFjY291bnQgd2hldGhl
ciBvciBub3QgdGhlIFVJIGRlbGVnYXRlCi0gICAgLy8gaGFzIGhhbmRsZWQgdGhpcyBub3RpZmlj
YXRpb24uCi0gICAgaWYgKF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gJiYgcG9pbnQgPT0g
X3Bvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24uaXNEYXRh
RGV0ZWN0b3JMaW5rKQotICAgICAgICBbc2VsZiBfc2hvd0RhdGFEZXRlY3RvcnNTaGVldF07Ci19
Ci0KIC0gKHZvaWQpX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6KGNvbnN0IEludGVyYWN0
aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJilpbmZvCiB7CiAgICAgX3Bvc2l0aW9uSW5mb3JtYXRp
b24gPSBpbmZvOwpAQCAtMjQ2Miw2ICsyNTA1LDcgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hh
bmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJbnRQb2kK
ICAgICAgICAgX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yID0gW3NlbGYgX3RhcEhpZ2hs
aWdodENvbG9yRm9yRmFzdENsaWNrOllFU107CiAKICAgICBbX2RvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyIHNldEVuYWJsZWQ6ZW5hYmxlZF07CisgICAgW19mYXN0RG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIgc2V0RW5hYmxlZDohZW5hYmxlZF07CiB9CiAKIC0gKHZvaWQpYWNjZXNzb3J5QXV0
b0ZpbGwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271515</attachid>
            <date>2016-02-16 18:17:58 -0800</date>
            <delta_ts>2016-02-16 18:22:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154318-20160217131737.patch</filename>
            <type>text/plain</type>
            <size>13416</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDc4YzI1YmNkMmQ1NzUy
NzE2OTUyNjIyNDQxZmFlYzY2Y2JmZTkxNC4uMjVkNzc5MjY0YWY2ODM2ZTBmMmNlNWNjOTA3Y2M2
N2I2NzQzNjcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAyLTE2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBkb3VibGUgdGFwIHRv
IHpvb20gaW4gZmFzdC1jbGljayBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDIyMzc2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdXIg
ZmFzdC1jbGljayBhbGdvcml0aG0gZXhwb3NlZCBhIG51bWJlciBvZiBjYXNlcyB3aGVyZQorICAg
ICAgICBwZW9wbGUgbWlzc2VkIHRoZSBkb3VibGUtdGFwLXRvLXpvb20gYmVoYXZpb3VyLiBJbiBw
YXJ0aWN1bGFyLAorICAgICAgICB3aGVuIHlvdSBkb3VibGUgdGFwIG9uIGEgbGFyZ2UgYm9keSBv
ZiB0ZXh0LCB0eXBpY2FsIGluCisgICAgICAgIGJsb2dzIGFuZCBhcnRpY2xlcy4KKworICAgICAg
ICBUaGlzIHBhdGNoIGVuaGFuY2VzIHRoZSBhbGdvcml0aG0gdG8gaGF2ZSBhIHBhcmFsbGVsCisg
ICAgICAgIGRvdWJsZS10YXAgZ2VzdHVyZSByZWNvZ25pemVyIGluIHRoZSBzaXR1YXRpb25zIHdo
ZXJlCisgICAgICAgIGZhc3QtY2xpY2sgaXMgZW5hYmxlZC4gVGhpcyBuZXcgZ2VzdHVyZSByZWNv
bmdpemVyIGRvZXMKKyAgICAgICAgbm90IGNhdXNlIHRoZSBzaW5nbGUgdGFwIHRvIGJsb2NrIGZv
ciAzNTBtcywgc28gY2xpY2tzCisgICAgICAgIGFyZSBzdGlsbCBkaXNwYXRjaGVkIGZhc3QuIElm
IGl0IGZpcmVzLCB3ZSBhbHJlYWR5IGhhdmUKKyAgICAgICAgc29tZSBpbmZvcm1hdGlvbiBhYm91
dCB3aGV0aGVyIHdlIGhhdmUgYSBwZW5kaW5nIGRvdWJsZQorICAgICAgICB0YXAsIGJhc2VkIG9u
IHRoZSBmaXJzdCB0YXAuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZURvdWJsZVRh
cEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkpOiBSZW1vdmUgdGhlIG9wdGltaXphdGlvbgor
ICAgICAgICB0aGF0IG9ubHkgdG9sZCB0aGUgY29udGVudCB2aWV3IHRvIGRpc2FibGUgb24gcGFn
ZXMgdGhhdCBhbGxvd2VkIGRvdWJsZSB0YXBzLiBXZSBub3cgYWxsb3cKKyAgICAgICAgdGhlbSBl
dmVuIG9uIGZhc3QgY2xpY2sgcGFnZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oOiBBZGQgdGhlIG5ldyBVSVRhcEdlc3R1cmVSZWNvZ25pemVy
IGZvciBkb3VibGUgdGFwcworICAgICAgICBpbiBmYXN0IGNsaWNrIHBhZ2VzLgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IHNldHVwSW50ZXJhY3Rpb25dKTogU2V0IHVwIHRoZSBuZXcgVUlUYXBHZXN0
dXJlUmVjb2duaXplci4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjbGVhbnVwSW50ZXJhY3Rp
b25dKTogQW5kIHJlbW92ZSBpdCB3aGVuIHdlJ3JlIGRvbmUuCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBfaW5zcGVjdG9yTm9kZVNlYXJjaFJlY29nbml6ZWQ6XSk6IFNv
bWV0aGluZyBoYXBwZW5lZCwgd2UgYXJlIG5vIGxvbmdlciBpbgorICAgICAgICBhIHBvdGVudGlh
bCBkb3VibGUgdGFwIHNpdHVhdGlvbi4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlzYWJs
ZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3Nhcnk6XSk6IFJlbW92ZSB0aGUgY2hl
Y2sKKyAgICAgICAgZm9yIHBvdGVudGlhbCB0YXAgaW4gcHJvZ3Jlc3MuCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXI6c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3Vz
bHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2Vz
dHVyZVJlY29nbml6ZXJTaG91bGRCZWdpbjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
aGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDpdKTogQWdhaW4sIHNvbWV0aGluZyBoYXBwZW5l
ZCwgc28gd2UgYXJlCisgICAgICAgIG5vIGxvbmdlciBpbiBhIGRvdWJsZSB0YXAgc2l0dWF0aW9u
LgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9sb25nUHJlc3NSZWNvZ25pemVkOl0pOiBEaXR0
by4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFwUmVjb2duaXplZDpdKTogRGl0
dG8uCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2RvdWJsZVRhcFJlY29nbml6ZWQ6XSk6IERp
dHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9yZXNldElzRG91YmxlVGFwUGVuZGluZ10p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mYXN0RG91YmxlVGFwUmVjb2duaXplZDpdKTog
V2UncmUgbm93IHBlbmRpbmcgYSBkb3VibGUgdGFwLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IF90d29GaW5nZXJEb3VibGVUYXBSZWNvZ25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9kaWROb3RIYW5kbGVUYXBBc0NsaWNrOl0pOiBJZiB3ZSBnZXQgaGVyZSBhbmQgd2UgaGF2
ZSBhIHBlbmRpbmcKKyAgICAgICAgZG91YmxlIHRhcCwgdGhlbiB0cmlnZ2VyIGEgem9vbSBvcGVy
YXRpb24uCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5h
YmxlZDpdKToKKwogMjAxNi0wMi0xMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBCbG9iUmVzb3VyY2VIYW5kbGUgd2hlbiBsb2FkaW5n
IGJsb2IgdXJscywgZXZlbiB3aGVuIHVzaW5nIE5ldHdvcmtTZXNzaW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA0NzViMWFh
NjNlOTJiNTE2OGMyNjExM2ZjNjY1MTIzYTgyMTJjODdhLi5hM2MzMjk3MWY3NmRkNzk2ZTM4MGUy
ZjU0MTczZTk5YTdkYTJjMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTI2MSw5ICsyNjEsNiBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikKIAog
dm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZO
ZWNlc3NhcnkodWludDY0X3QgcmVxdWVzdElEKQogewotICAgIGlmICghbV93ZWJWaWV3Ll9hbGxv
d3NEb3VibGVUYXBHZXN0dXJlcykKLSAgICAgICAgcmV0dXJuOwotCiAgICAgW21fY29udGVudFZp
ZXcgX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5OnJlcXVlc3RJ
RF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDg3N2U0YWVkNDgxNjI3ZjgxNDY3NTRkYTdjMDY1
YzBlMDlkMDkyYzUuLmY0MzBlYjc5N2Q5OGMyNWVkYzg4MzUxYmU2OGU2YmQ1OTFlOTU4OWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaApAQCAtMTAyLDYgKzEwMiw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9u
RGF0YSB7CiAgICAgUmV0YWluUHRyPF9VSVdlYkhpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyPiBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWlu
UHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9sb25nUHJlc3NHZXN0dXJlUmVjb2du
aXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdl
c3R1cmVSZWNvZ25pemVyOworICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBf
ZmFzdERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxVSVRhcEdlc3R1
cmVSZWNvZ25pemVyPiBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAg
UmV0YWluUHRyPFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyPiBfaW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCkBAIC0xNTQsNiArMTU1LDcgQEAgc3Ry
dWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9oYXNWYWxpZFBvc2l0aW9uSW5m
b3JtYXRpb247CiAgICAgQk9PTCBfaXNUYXBIaWdobGlnaHRJRFZhbGlkOwogICAgIEJPT0wgX3Bv
dGVudGlhbFRhcEluUHJvZ3Jlc3M7CisgICAgQk9PTCBfaXNEb3VibGVUYXBQZW5kaW5nOwogICAg
IEJPT0wgX2hpZ2hsaWdodExvbmdQcmVzc0NhbkNsaWNrOwogICAgIEJPT0wgX2hhc1RhcEhpZ2hs
aWdodEZvclBvdGVudGlhbFRhcDsKICAgICBCT09MIF9zZWxlY3Rpb25OZWVkc1VwZGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVy
YWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KaW5kZXggMGQyYWI2YzQ2OTcwZTgzZGZhZWQ1ZDFhNTVkYzBiZjFhYTkwMzVj
Zi4uYTkwYWY4MGFlOTZkM2U0YTNhNjk1YjcxYWRkNDIxM2IwNDhlOWMyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTQ2Miw2ICs0NjIsMTIgQEAgc3RhdGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJ
V2ViU2VsZWN0aW9uTW9kZShXS1NlbGVjdGlvbkdyYW51bGFyaXR5IGdyYW51bGFyaXQKICAgICBb
X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldFJlc2V0VGFyZ2V0OnNlbGYgYWN0aW9uOkBz
ZWxlY3Rvcihfc2luZ2xlVGFwRGlkUmVzZXQ6KV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29n
bml6ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAorICAgIF9mYXN0RG91
YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbVUlUYXBHZXN0dXJlUmVjb2duaXpl
ciBhbGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9mYXN0RG91Ymxl
VGFwUmVjb2duaXplZDopXSk7CisgICAgW19mYXN0RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIg
c2V0TnVtYmVyT2ZUYXBzUmVxdWlyZWQ6Ml07CisgICAgW19mYXN0RG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW19mYXN0RG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIgc2V0RW5hYmxlZDpOT107CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6
X2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisKICAgICBbc2VsZiBfY3Jl
YXRlQW5kQ29uZmlndXJlRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXJdOwogCiAgICAgX3R3b0Zp
bmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyID0gYWRvcHROUyhbW1VJVGFwR2VzdHVyZVJl
Y29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfdHdv
RmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDopXSk7CkBAIC01MzMsNiArNTM5LDkgQEAgc3RhdGlj
IFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShXS1NlbGVjdGlvbkdyYW51
bGFyaXR5IGdyYW51bGFyaXQKICAgICBbX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERl
bGVnYXRlOm5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAorICAgIFtfZmFzdERvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29n
bml6ZXI6X2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisKICAgICBbX3R3
b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAg
W3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyLmdldCgpXTsKIApAQCAtNTYwLDYgKzU2OSw3IEBAIHN0YXRpYyBVSVdlYlNlbGVj
dGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUoV0tTZWxlY3Rpb25HcmFudWxhcml0eSBncmFu
dWxhcml0CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3NpbmdsZVRhcEdlc3R1
cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpf
aGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJl
bW92ZUdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07
CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2Zhc3REb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3
b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIH0KIApAQCAtNTY5LDYg
KzU3OSw3IEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUo
V0tTZWxlY3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJl
Y29nbml6ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBh
ZGRHZXN0dXJlUmVjb2duaXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIu
Z2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2Zhc3RE
b3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJl
Y29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIH0K
IApAQCAtNzMzLDYgKzc0NCw3IEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNl
bGVjdGlvbk1vZGUoV0tTZWxlY3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAtICh2b2lkKV9p
bnNwZWN0b3JOb2RlU2VhcmNoUmVjb2duaXplZDooVUlHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1
cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCk7
CisgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nXTsKIAogICAgIENHUG9pbnQgcG9p
bnQgPSBbZ2VzdHVyZVJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6c2VsZl07CiAKQEAgLTkyMSw3
ICs5MzMsNyBAQCBzdGF0aWMgTlNWYWx1ZSAqbnNTaXplRm9yVGFwSGlnaGxpZ2h0Qm9yZGVyUmFk
aXVzKFdlYkNvcmU6OkludFNpemUgYm9yZGVyUmFkaXVzLAogCiAtICh2b2lkKV9kaXNhYmxlRG91
YmxlVGFwR2VzdHVyZXNEdXJpbmdUYXBJZk5lY2Vzc2FyeToodWludDY0X3QpcmVxdWVzdElECiB7
Ci0gICAgaWYgKCFfcG90ZW50aWFsVGFwSW5Qcm9ncmVzcyB8fCBfbGF0ZXN0VGFwSUQgIT0gcmVx
dWVzdElEKQorICAgIGlmIChfbGF0ZXN0VGFwSUQgIT0gcmVxdWVzdElEKQogICAgICAgICByZXR1
cm47CiAKICAgICBbc2VsZiBfc2V0RG91YmxlVGFwR2VzdHVyZXNFbmFibGVkOk5PXTsKQEAgLTEw
NTAsNiArMTA2MiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVS
ZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogICAgIGlmIChpc1NhbWVQ
YWlyKGdlc3R1cmVSZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfc2luZ2xlVGFw
R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCksIF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50LmdldCgpLnNp
bmdsZVRhcEdlc3R1cmUpKQogICAgICAgICByZXR1cm4gWUVTOwogCisgICAgaWYgKGlzU2FtZVBh
aXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9zaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKSwgX2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKSkpCisgICAgICAgIHJldHVybiBZRVM7CisKKyAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJl
UmVjb2duaXplciwgb3RoZXJHZXN0dXJlUmVjb2duaXplciwgX2hpZ2hsaWdodExvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyLmdldCgpLCBfZmFzdERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdl
dCgpKSkKKyAgICAgICAgcmV0dXJuIFlFUzsKKwogICAgIGlmIChpc1NhbWVQYWlyKGdlc3R1cmVS
ZWNvZ25pemVyLCBvdGhlckdlc3R1cmVSZWNvZ25pemVyLCBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIuZ2V0KCksIF9wcmV2aWV3U2Vjb25kYXJ5R2VzdHVyZVJlY29nbml6ZXIu
Z2V0KCkpKQogICAgICAgICByZXR1cm4gWUVTOwogCkBAIC0xMTEzLDYgKzExMzEsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1
cmVSZWNvZ25pemVyICpiLCBVSQogCiAgICAgaWYgKGdlc3R1cmVSZWNvZ25pemVyID09IF9oaWdo
bGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcgogICAgICAgICB8fCBnZXN0dXJlUmVjb2du
aXplciA9PSBfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIKKyAgICAgICAgfHwgZ2VzdHVyZVJl
Y29nbml6ZXIgPT0gX2Zhc3REb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcgogICAgICAgICB8fCBn
ZXN0dXJlUmVjb2duaXplciA9PSBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIK
ICAgICAgICAgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyKSB7CiAKQEAgLTEyMzQsNiArMTI1Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQ
YWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAt
ICh2b2lkKV9oaWdobGlnaHRMb25nUHJlc3NSZWNvZ25pemVkOihVSUxvbmdQcmVzc0dlc3R1cmVS
ZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NFUlQoZ2VzdHVyZVJlY29n
bml6ZXIgPT0gX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyKTsKKyAgICBbc2Vs
ZiBfcmVzZXRJc0RvdWJsZVRhcFBlbmRpbmddOwogCiAgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0
aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIuc3RhcnRQb2ludDsKIApAQCAtMTI2NCw2ICsxMjg0LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwg
VUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKIC0gKHZvaWQpX2xvbmdQcmVzc1JlY29nbml6ZWQ6
KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAg
IEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIp
OworICAgIFtzZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107CiAKICAgICBfbGFzdEludGVy
YWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50OwogCkBAIC0xMjg4
LDYgKzEzMDksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNv
Z25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogewogICAgIEFTU0VSVChnZXN0
dXJlUmVjb2duaXplciA9PSBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpOwogICAgIEFTU0VS
VCghX3BvdGVudGlhbFRhcEluUHJvZ3Jlc3MpOworICAgIFtzZWxmIF9yZXNldElzRG91YmxlVGFw
UGVuZGluZ107CiAKICAgICBfcGFnZS0+cG90ZW50aWFsVGFwQXRQb3NpdGlvbihnZXN0dXJlUmVj
b2duaXplci5sb2NhdGlvbiwgKytfbGF0ZXN0VGFwSUQpOwogICAgIF9wb3RlbnRpYWxUYXBJblBy
b2dyZXNzID0gWUVTOwpAQCAtMTMxNSw2ICsxMzM3LDIwIEBAIHN0YXRpYyB2b2lkIGNhbmNlbFBv
dGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZpZXcqIGNvbnRlbnRWaWV3KQogICAgIFtz
ZWxmIF9jYW5jZWxJbnRlcmFjdGlvbl07CiB9CiAKKy0gKHZvaWQpX2RpZE5vdEhhbmRsZVRhcEFz
Q2xpY2s6KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jilwb2ludAoreworICAgIC8vIEZJWE1FOiB3
ZSBzaG91bGQgYWxzbyB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgVUkgZGVs
ZWdhdGUKKyAgICAvLyBoYXMgaGFuZGxlZCB0aGlzIG5vdGlmaWNhdGlvbi4KKyAgICBpZiAoX2hh
c1ZhbGlkUG9zaXRpb25JbmZvcm1hdGlvbiAmJiBwb2ludCA9PSBfcG9zaXRpb25JbmZvcm1hdGlv
bi5wb2ludCAmJiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc0RhdGFEZXRlY3RvckxpbmspCisgICAg
ICAgIFtzZWxmIF9zaG93RGF0YURldGVjdG9yc1NoZWV0XTsKKworICAgIGlmICghX2lzRG91Ymxl
VGFwUGVuZGluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNv
bnRyb2xsZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoX2xhc3RJbnRlcmFjdGlv
bkxvY2F0aW9uKTsKKyAgICBfaXNEb3VibGVUYXBQZW5kaW5nID0gTk87Cit9CisKIC0gKHZvaWQp
X3NpbmdsZVRhcENvbW1pdGVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKIHsKICAgICBBU1NFUlQoZ2VzdHVyZVJlY29nbml6ZXIgPT0gX3NpbmdsZVRhcEdlc3R1
cmVSZWNvZ25pemVyKTsKQEAgLTEzNTMsMTMgKzEzODksMjYgQEAgc3RhdGljIHZvaWQgY2FuY2Vs
UG90ZW50aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50VmlldyogY29udGVudFZpZXcpCiAKIC0g
KHZvaWQpX2RvdWJsZVRhcFJlY29nbml6ZWQ6KFVJVGFwR2VzdHVyZVJlY29nbml6ZXIgKilnZXN0
dXJlUmVjb2duaXplcgogeworICAgIFtzZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107CiAg
ICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb247
CiAKICAgICBfc21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlci0+aGFuZGxlU21hcnRNYWduaWZp
Y2F0aW9uR2VzdHVyZShnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbik7CiB9CiAKKy0gKHZvaWQp
X3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nCit7CisgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9IE5P
OworfQorCistICh2b2lkKV9mYXN0RG91YmxlVGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgX2xhc3RJbnRlcmFjdGlvbkxvY2F0
aW9uID0gZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb247CisgICAgX2lzRG91YmxlVGFwUGVuZGlu
ZyA9IFlFUzsKK30KKwogLSAodm9pZClfdHdvRmluZ2VyRG91YmxlVGFwUmVjb2duaXplZDooVUlU
YXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CisgICAgW3NlbGYgX3Jl
c2V0SXNEb3VibGVUYXBQZW5kaW5nXTsKICAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBn
ZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbjsKIAogICAgIF9zbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLT5oYW5kbGVSZXNldE1hZ25pZmljYXRpb25HZXN0dXJlKGdlc3R1cmVSZWNvZ25pemVy
LmxvY2F0aW9uKTsKQEAgLTE0MDMsMTQgKzE0NTIsNiBAQCBzdGF0aWMgdm9pZCBjYW5jZWxQb3Rl
bnRpYWxUYXBJZk5lY2Vzc2FyeShXS0NvbnRlbnRWaWV3KiBjb250ZW50VmlldykKICAgICBfcGFn
ZS0+Y2xlYXJTZWxlY3Rpb24oKTsKIH0KIAotLSAodm9pZClfZGlkTm90SGFuZGxlVGFwQXNDbGlj
azooY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKXBvaW50Ci17Ci0gICAgLy8gRklYTUU6IHdlIHNo
b3VsZCBhbHNvIHRha2UgaW50byBhY2NvdW50IHdoZXRoZXIgb3Igbm90IHRoZSBVSSBkZWxlZ2F0
ZQotICAgIC8vIGhhcyBoYW5kbGVkIHRoaXMgbm90aWZpY2F0aW9uLgotICAgIGlmIChfaGFzVmFs
aWRQb3NpdGlvbkluZm9ybWF0aW9uICYmIHBvaW50ID09IF9wb3NpdGlvbkluZm9ybWF0aW9uLnBv
aW50ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzRGF0YURldGVjdG9yTGluaykKLSAgICAgICAg
W3NlbGYgX3Nob3dEYXRhRGV0ZWN0b3JzU2hlZXRdOwotfQotCiAtICh2b2lkKV9wb3NpdGlvbklu
Zm9ybWF0aW9uRGlkQ2hhbmdlOihjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlv
biYpaW5mbwogewogICAgIF9wb3NpdGlvbkluZm9ybWF0aW9uID0gaW5mbzsKQEAgLTI0NjIsNiAr
MjUwMyw4IEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goV0tDb250ZW50
VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAgICAgICAgIF90YXBIaWdobGlnaHRJ
bmZvcm1hdGlvbi5jb2xvciA9IFtzZWxmIF90YXBIaWdobGlnaHRDb2xvckZvckZhc3RDbGljazpZ
RVNdOwogCiAgICAgW19kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRFbmFibGVkOmVuYWJs
ZWRdOworICAgIFtfZmFzdERvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6IWVu
YWJsZWRdOworICAgIFtzZWxmIF9yZXNldElzRG91YmxlVGFwUGVuZGluZ107CiB9CiAKIC0gKHZv
aWQpYWNjZXNzb3J5QXV0b0ZpbGwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271517</attachid>
            <date>2016-02-16 18:45:10 -0800</date>
            <delta_ts>2016-02-16 18:45:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154318-20160217134448.patch</filename>
            <type>text/plain</type>
            <size>14307</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDc4YzI1YmNkMmQ1NzUy
NzE2OTUyNjIyNDQxZmFlYzY2Y2JmZTkxNC4uYzg0NmJiOTJmNGRkMmYwZDMwZjZmY2NlZjVjNzdi
MTMyMTgzNjY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTAyLTE2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBkb3VibGUgdGFwIHRv
IHpvb20gaW4gZmFzdC1jbGljayBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzE4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDIyMzc2
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIgYW5kIEJlbmphbWluIFBvdWxh
aW4uCisgICAgICAgIAorICAgICAgICBNb3N0IG9mIHRoZSBwYXRjaCBjb21lcyBmcm9tIEpvbiBM
ZWUuCisKKyAgICAgICAgT3VyIGZhc3QtY2xpY2sgYWxnb3JpdGhtIGV4cG9zZWQgYSBudW1iZXIg
b2YgY2FzZXMgd2hlcmUKKyAgICAgICAgcGVvcGxlIG1pc3NlZCB0aGUgZG91YmxlLXRhcC10by16
b29tIGJlaGF2aW91ci4gSW4gcGFydGljdWxhciwKKyAgICAgICAgd2hlbiB5b3UgZG91YmxlIHRh
cCBvbiBhIGxhcmdlIGJvZHkgb2YgdGV4dCwgdHlwaWNhbCBpbgorICAgICAgICBibG9ncyBhbmQg
YXJ0aWNsZXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBlbmhhbmNlcyB0aGUgYWxnb3JpdGhtIHRv
IGhhdmUgYSBwYXJhbGxlbAorICAgICAgICBkb3VibGUtdGFwIGdlc3R1cmUgcmVjb2duaXplciBp
biB0aGUgc2l0dWF0aW9ucyB3aGVyZQorICAgICAgICBmYXN0LWNsaWNrIGlzIGVuYWJsZWQuIFRo
aXMgbmV3IGdlc3R1cmUgcmVjb25naXplciBkb2VzCisgICAgICAgIG5vdCBjYXVzZSB0aGUgc2lu
Z2xlIHRhcCB0byBibG9jayBmb3IgMzUwbXMsIHNvIGNsaWNrcworICAgICAgICBhcmUgc3RpbGwg
ZGlzcGF0Y2hlZCBmYXN0LiBJZiBpdCBmaXJlcywgd2UgYWxyZWFkeSBoYXZlCisgICAgICAgIHNv
bWUgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciB3ZSBoYXZlIGEgcGVuZGluZyBkb3VibGUKKyAg
ICAgICAgdGFwLCBiYXNlZCBvbiB0aGUgZmlyc3QgdGFwLgorCisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KTogUmVtb3Zl
IHRoZSBvcHRpbWl6YXRpb24KKyAgICAgICAgdGhhdCBvbmx5IHRvbGQgdGhlIGNvbnRlbnQgdmll
dyB0byBkaXNhYmxlIG9uIHBhZ2VzIHRoYXQgYWxsb3dlZCBkb3VibGUgdGFwcy4gV2Ugbm93IGFs
bG93CisgICAgICAgIHRoZW0gZXZlbiBvbiBmYXN0IGNsaWNrIHBhZ2VzLgorCisgICAgICAgICog
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaDogQWRkIHRoZSBuZXcgVUlU
YXBHZXN0dXJlUmVjb2duaXplciBmb3IgZG91YmxlIHRhcHMKKyAgICAgICAgaW4gZmFzdCBjbGlj
ayBwYWdlcy4gVGhpcyBpcyBjYWxsZWQgbm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0dXJlUmVjb2du
aXplciBiZWNhdXNlLCB1bmxpa2UKKyAgICAgICAgdGhlIGV4aXN0aW5nIERvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyLCB0aGlzIG9uZSBkb2VzIG5vdCBmb3JjZSB0aGUgc2luZ2xlVGFwUmVjb2du
aXplcgorICAgICAgICB0byB3YWl0LgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHNldHVwSW50ZXJh
Y3Rpb25dKTogU2V0IHVwIHRoZSBuZXcgVUlUYXBHZXN0dXJlUmVjb2duaXplci4KKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBjbGVhbnVwSW50ZXJhY3Rpb25dKTogQW5kIHJlbW92ZSBpdCB3aGVu
IHdlJ3JlIGRvbmUuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0
dXJlUmVjb2duaXplcnNdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX2FkZERl
ZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaW5z
cGVjdG9yTm9kZVNlYXJjaFJlY29nbml6ZWQ6XSk6IFNvbWV0aGluZyBoYXBwZW5lZCwgd2UgYXJl
IG5vIGxvbmdlciBpbgorICAgICAgICBhIHBvdGVudGlhbCBkb3VibGUgdGFwIHNpdHVhdGlvbi4K
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlzYWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5n
VGFwSWZOZWNlc3Nhcnk6XSk6IFJlbW92ZSB0aGUgY2hlY2sKKyAgICAgICAgZm9yIHBvdGVudGlh
bCB0YXAgaW4gcHJvZ3Jlc3MuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29n
bml6ZXI6c2hvdWxkUmVjb2duaXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXI6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZ2VzdHVyZVJlY29nbml6ZXJTaG91bGRCZWdp
bjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2du
aXplZDpdKTogQWdhaW4sIHNvbWV0aGluZyBoYXBwZW5lZCwgc28gd2UgYXJlCisgICAgICAgIG5v
IGxvbmdlciBpbiBhIGRvdWJsZSB0YXAgc2l0dWF0aW9uLgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9sb25nUHJlc3NSZWNvZ25pemVkOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tDb250ZW50
VmlldyBfc2luZ2xlVGFwUmVjb2duaXplZDpdKTogRGl0dG8uCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2RvdWJsZVRhcFJlY29nbml6ZWQ6XSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9yZXNldElzRG91YmxlVGFwUGVuZGluZ10pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9mYXN0RG91YmxlVGFwUmVjb2duaXplZDpdKTogV2UncmUgbm93IHBlbmRpbmcgYSBkb3Vi
bGUgdGFwLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF90d29GaW5nZXJEb3VibGVUYXBSZWNv
Z25pemVkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWROb3RIYW5kbGVUYXBBc0Ns
aWNrOl0pOiBJZiB3ZSBnZXQgaGVyZSBhbmQgd2UgaGF2ZSBhIHBlbmRpbmcKKyAgICAgICAgZG91
YmxlIHRhcCwgdGhlbiB0cmlnZ2VyIGEgem9vbSBvcGVyYXRpb24uCisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3NldERvdWJsZVRhcEdlc3R1cmVzRW5hYmxlZDpdKToKKwogMjAxNi0wMi0xMSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVz
ZSBCbG9iUmVzb3VyY2VIYW5kbGUgd2hlbiBsb2FkaW5nIGJsb2IgdXJscywgZXZlbiB3aGVuIHVz
aW5nIE5ldHdvcmtTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCA0NzViMWFhNjNlOTJiNTE2OGMyNjExM2ZjNjY1MTIz
YTgyMTJjODdhLi5hM2MzMjk3MWY3NmRkNzk2ZTM4MGUyZjU0MTczZTk5YTdkYTJjMWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0K
QEAgLTI2MSw5ICsyNjEsNiBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlz
YWJsZURvdWJsZVRhcEdlc3R1cmVzRHVyaW5nVGFwSWZOZWNlc3NhcnkodWludDY0X3QgcmVxdWVz
dElEKQogewotICAgIGlmICghbV93ZWJWaWV3Ll9hbGxvd3NEb3VibGVUYXBHZXN0dXJlcykKLSAg
ICAgICAgcmV0dXJuOwotCiAgICAgW21fY29udGVudFZpZXcgX2Rpc2FibGVEb3VibGVUYXBHZXN0
dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5OnJlcXVlc3RJRF07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmlu
ZGV4IDg3N2U0YWVkNDgxNjI3ZjgxNDY3NTRkYTdjMDY1YzBlMDlkMDkyYzUuLmZjMzE0YmNkNTg5
MjMyYTE5MjZjYmUwYWE4ZTFiMTFlMGUzM2Y2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMTAyLDYg
KzEwMiw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPF9V
SVdlYkhpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyPiBfaGlnaGxpZ2h0TG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJl
Y29nbml6ZXI+IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlU
YXBHZXN0dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOworICAgIFJl
dGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfbm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0
dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3R3
b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxXS0luc3Bl
Y3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplcj4gX2luc3BlY3Rvck5vZGVTZWFyY2hHZXN0
dXJlUmVjb2duaXplcjsKIApAQCAtMTU0LDYgKzE1NSw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0
aW9uRGF0YSB7CiAgICAgQk9PTCBfaGFzVmFsaWRQb3NpdGlvbkluZm9ybWF0aW9uOwogICAgIEJP
T0wgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZDsKICAgICBCT09MIF9wb3RlbnRpYWxUYXBJblByb2dy
ZXNzOworICAgIEJPT0wgX2lzRG91YmxlVGFwUGVuZGluZzsKICAgICBCT09MIF9oaWdobGlnaHRM
b25nUHJlc3NDYW5DbGljazsKICAgICBCT09MIF9oYXNUYXBIaWdobGlnaHRGb3JQb3RlbnRpYWxU
YXA7CiAgICAgQk9PTCBfc2VsZWN0aW9uTmVlZHNVcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4
IDBkMmFiNmM0Njk3MGU4M2RmYWVkNWQxYTU1ZGMwYmYxYWE5MDM1Y2YuLjgyOTAzZWVhMTY0NGI1
ZmU3OGM5ZDRhNzg1NzNlOWQ1YTE4MWQyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC00NjIsNiAr
NDYyLDEyIEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUo
V0tTZWxlY3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW19zaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplciBzZXRSZXNldFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3NpbmdsZVRh
cERpZFJlc2V0OildOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKKyAgICBfbm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0
dXJlUmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBp
bml0V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX25vbkJsb2NraW5nRG91YmxlVGFw
UmVjb2duaXplZDopXSk7CisgICAgW19ub25CbG9ja2luZ0RvdWJsZVRhcEdlc3R1cmVSZWNvZ25p
emVyIHNldE51bWJlck9mVGFwc1JlcXVpcmVkOjJdOworICAgIFtfbm9uQmxvY2tpbmdEb3VibGVU
YXBHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbX25vbkJsb2NraW5n
RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RW5hYmxlZDpOT107CisgICAgW3NlbGYgYWRk
R2VzdHVyZVJlY29nbml6ZXI6X25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIu
Z2V0KCldOworCiAgICAgW3NlbGYgX2NyZWF0ZUFuZENvbmZpZ3VyZURvdWJsZVRhcEdlc3R1cmVS
ZWNvZ25pemVyXTsKIAogICAgIF90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciA9
IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpz
ZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3R3b0ZpbmdlckRvdWJsZVRhcFJlY29nbml6ZWQ6KV0pOwpA
QCAtNDk1LDYgKzUwMSw4IEBAIHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVj
dGlvbk1vZGUoV0tTZWxlY3Rpb25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW19hY3Rpb25T
aGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsKICAgICBfc21hcnRNYWduaWZpY2F0aW9u
Q29udHJvbGxlciA9IHN0ZDo6bWFrZV91bmlxdWU8U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
cj4oc2VsZik7CiAgICAgX2lzRXhwZWN0aW5nRmFzdFNpbmdsZVRhcENvbW1pdCA9IE5POworICAg
IF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87CisgICAgX2lzRG91YmxlVGFwUGVuZGluZyA9
IE5POwogICAgIF9zaG93RGVidWdUYXBIaWdobGlnaHRzRm9yRmFzdENsaWNraW5nID0gW1tOU1Vz
ZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIldlYktpdFNob3dG
YXN0Q2xpY2tEZWJ1Z1RhcEhpZ2hsaWdodHMiXTsKIH0KIApAQCAtNTMzLDYgKzU0MSw5IEBAIHN0
YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUoV0tTZWxlY3Rpb25H
cmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW19kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplciBz
ZXREZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9kb3Vi
bGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKKyAgICBbX25vbkJsb2NraW5nRG91Ymxl
VGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbc2VsZiByZW1vdmVH
ZXN0dXJlUmVjb2duaXplcjpfbm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CisKICAgICBbX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERl
bGVnYXRlOm5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0Zpbmdl
ckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIApAQCAtNTYwLDYgKzU3MSw3IEBA
IHN0YXRpYyBVSVdlYlNlbGVjdGlvbk1vZGUgdG9VSVdlYlNlbGVjdGlvbk1vZGUoV0tTZWxlY3Rp
b25HcmFudWxhcml0eSBncmFudWxhcml0CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiByZW1vdmVH
ZXN0dXJlUmVjb2duaXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0
KCldOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X25v
bkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJl
bW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXpl
ci5nZXQoKV07CiB9CiAKQEAgLTU2OSw2ICs1ODEsNyBAQCBzdGF0aWMgVUlXZWJTZWxlY3Rpb25N
b2RlIHRvVUlXZWJTZWxlY3Rpb25Nb2RlKFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dAogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2hpZ2hsaWdodExv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVj
b2duaXplcjpfZG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxmIGFk
ZEdlc3R1cmVSZWNvZ25pemVyOl9ub25CbG9ja2luZ0RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
LmdldCgpXTsKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91Ymxl
VGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogfQogCkBAIC03MzMsNiArNzQ2LDcgQEAgc3Rh
dGljIFVJV2ViU2VsZWN0aW9uTW9kZSB0b1VJV2ViU2VsZWN0aW9uTW9kZShXS1NlbGVjdGlvbkdy
YW51bGFyaXR5IGdyYW51bGFyaXQKIC0gKHZvaWQpX2luc3BlY3Rvck5vZGVTZWFyY2hSZWNvZ25p
emVkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKICAgICBBU1NF
UlQoX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkKTsKKyAgICBbc2VsZiBfcmVzZXRJc0RvdWJs
ZVRhcFBlbmRpbmddOwogCiAgICAgQ0dQb2ludCBwb2ludCA9IFtnZXN0dXJlUmVjb2duaXplciBs
b2NhdGlvbkluVmlldzpzZWxmXTsKIApAQCAtOTIxLDcgKzkzNSw3IEBAIHN0YXRpYyBOU1ZhbHVl
ICpuc1NpemVGb3JUYXBIaWdobGlnaHRCb3JkZXJSYWRpdXMoV2ViQ29yZTo6SW50U2l6ZSBib3Jk
ZXJSYWRpdXMsCiAKIC0gKHZvaWQpX2Rpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElm
TmVjZXNzYXJ5Oih1aW50NjRfdClyZXF1ZXN0SUQKIHsKLSAgICBpZiAoIV9wb3RlbnRpYWxUYXBJ
blByb2dyZXNzIHx8IF9sYXRlc3RUYXBJRCAhPSByZXF1ZXN0SUQpCisgICAgaWYgKF9sYXRlc3RU
YXBJRCAhPSByZXF1ZXN0SUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFtzZWxmIF9zZXREb3Vi
bGVUYXBHZXN0dXJlc0VuYWJsZWQ6Tk9dOwpAQCAtMTA1MCw2ICsxMDY0LDEyIEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJl
Y29nbml6ZXIgKmIsIFVJCiAgICAgaWYgKGlzU2FtZVBhaXIoZ2VzdHVyZVJlY29nbml6ZXIsIG90
aGVyR2VzdHVyZVJlY29nbml6ZXIsIF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKSwg
X3RleHRTZWxlY3Rpb25Bc3Npc3RhbnQuZ2V0KCkuc2luZ2xlVGFwR2VzdHVyZSkpCiAgICAgICAg
IHJldHVybiBZRVM7CiAKKyAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3Ro
ZXJHZXN0dXJlUmVjb2duaXplciwgX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpLCBf
bm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKSkpCisgICAgICAgIHJl
dHVybiBZRVM7CisKKyAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwgb3RoZXJH
ZXN0dXJlUmVjb2duaXplciwgX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdl
dCgpLCBfbm9uQmxvY2tpbmdEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKSkpCisgICAg
ICAgIHJldHVybiBZRVM7CisKICAgICBpZiAoaXNTYW1lUGFpcihnZXN0dXJlUmVjb2duaXplciwg
b3RoZXJHZXN0dXJlUmVjb2duaXplciwgX2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyLmdldCgpLCBfcHJldmlld1NlY29uZGFyeUdlc3R1cmVSZWNvZ25pemVyLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuIFlFUzsKIApAQCAtMTExMyw2ICsxMTMzLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXpl
ciAqYiwgVUkKIAogICAgIGlmIChnZXN0dXJlUmVjb2duaXplciA9PSBfaGlnaGxpZ2h0TG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIKICAgICAgICAgfHwgZ2VzdHVyZVJlY29nbml6ZXIgPT0gX2Rv
dWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyCisgICAgICAgIHx8IGdlc3R1cmVSZWNvZ25pemVyID09
IF9ub25CbG9ja2luZ0RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyCiAgICAgICAgIHx8IGdlc3R1
cmVSZWNvZ25pemVyID09IF90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplcgogICAg
ICAgICB8fCBnZXN0dXJlUmVjb2duaXplciA9PSBfc2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIp
IHsKIApAQCAtMTIzNCw2ICsxMjU1LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIo
VUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKIC0gKHZv
aWQpX2hpZ2hsaWdodExvbmdQcmVzc1JlY29nbml6ZWQ6KFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIgKilnZXN0dXJlUmVjb2duaXplcgogewogICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXpl
ciA9PSBfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIpOworICAgIFtzZWxmIF9y
ZXNldElzRG91YmxlVGFwUGVuZGluZ107CiAKICAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24g
PSBnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50OwogCkBAIC0xMjY0LDYgKzEyODYsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihVSUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdl
c3R1cmVSZWNvZ25pemVyICpiLCBVSQogLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlM
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQVNT
RVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcik7Cisg
ICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5kaW5nXTsKIAogICAgIF9sYXN0SW50ZXJhY3Rp
b25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLnN0YXJ0UG9pbnQ7CiAKQEAgLTEyODgsNiAr
MTMxMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6
ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVS
ZWNvZ25pemVyID09IF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcik7CiAgICAgQVNTRVJUKCFf
cG90ZW50aWFsVGFwSW5Qcm9ncmVzcyk7CisgICAgW3NlbGYgX3Jlc2V0SXNEb3VibGVUYXBQZW5k
aW5nXTsKIAogICAgIF9wYWdlLT5wb3RlbnRpYWxUYXBBdFBvc2l0aW9uKGdlc3R1cmVSZWNvZ25p
emVyLmxvY2F0aW9uLCArK19sYXRlc3RUYXBJRCk7CiAgICAgX3BvdGVudGlhbFRhcEluUHJvZ3Jl
c3MgPSBZRVM7CkBAIC0xMzE1LDYgKzEzMzksMjIgQEAgc3RhdGljIHZvaWQgY2FuY2VsUG90ZW50
aWFsVGFwSWZOZWNlc3NhcnkoV0tDb250ZW50VmlldyogY29udGVudFZpZXcpCiAgICAgW3NlbGYg
X2NhbmNlbEludGVyYWN0aW9uXTsKIH0KIAorLSAodm9pZClfZGlkTm90SGFuZGxlVGFwQXNDbGlj
azooY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKXBvaW50Cit7CisgICAgLy8gRklYTUU6IHdlIHNo
b3VsZCBhbHNvIHRha2UgaW50byBhY2NvdW50IHdoZXRoZXIgb3Igbm90IHRoZSBVSSBkZWxlZ2F0
ZQorICAgIC8vIGhhcyBoYW5kbGVkIHRoaXMgbm90aWZpY2F0aW9uLgorICAgIGlmIChfaGFzVmFs
aWRQb3NpdGlvbkluZm9ybWF0aW9uICYmIHBvaW50ID09IF9wb3NpdGlvbkluZm9ybWF0aW9uLnBv
aW50ICYmIF9wb3NpdGlvbkluZm9ybWF0aW9uLmlzRGF0YURldGVjdG9yTGluaykgeworICAgICAg
ICBbc2VsZiBfc2hvd0RhdGFEZXRlY3RvcnNTaGVldF07CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIV9pc0RvdWJsZVRhcFBlbmRpbmcpCisgICAgICAgIHJldHVybjsKKworICAg
IF9zbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLT5oYW5kbGVTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbik7CisgICAgX2lzRG91YmxlVGFwUGVuZGlu
ZyA9IE5POworfQorCiAtICh2b2lkKV9zaW5nbGVUYXBDb21taXRlZDooVUlUYXBHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25p
emVyID09IF9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplcik7CkBAIC0xMzUzLDEzICsxMzkzLDI2
IEBAIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVudFZp
ZXcqIGNvbnRlbnRWaWV3KQogCiAtICh2b2lkKV9kb3VibGVUYXBSZWNvZ25pemVkOihVSVRhcEdl
c3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIHsKKyAgICBbc2VsZiBfcmVzZXRJ
c0RvdWJsZVRhcFBlbmRpbmddOwogICAgIF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1
cmVSZWNvZ25pemVyLmxvY2F0aW9uOwogCiAgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIubG9j
YXRpb24pOwogfQogCistICh2b2lkKV9yZXNldElzRG91YmxlVGFwUGVuZGluZworeworICAgIF9p
c0RvdWJsZVRhcFBlbmRpbmcgPSBOTzsKK30KKworLSAodm9pZClfbm9uQmxvY2tpbmdEb3VibGVU
YXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIK
K3sKKyAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5sb2Nh
dGlvbjsKKyAgICBfaXNEb3VibGVUYXBQZW5kaW5nID0gWUVTOworfQorCiAtICh2b2lkKV90d29G
aW5nZXJEb3VibGVUYXBSZWNvZ25pemVkOihVSVRhcEdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVy
ZVJlY29nbml6ZXIKIHsKKyAgICBbc2VsZiBfcmVzZXRJc0RvdWJsZVRhcFBlbmRpbmddOwogICAg
IF9sYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbiA9IGdlc3R1cmVSZWNvZ25pemVyLmxvY2F0aW9uOwog
CiAgICAgX3NtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXItPmhhbmRsZVJlc2V0TWFnbmlmaWNh
dGlvbkdlc3R1cmUoZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24pOwpAQCAtMTQwMywxNCArMTQ1
Niw2IEBAIHN0YXRpYyB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcElmTmVjZXNzYXJ5KFdLQ29udGVu
dFZpZXcqIGNvbnRlbnRWaWV3KQogICAgIF9wYWdlLT5jbGVhclNlbGVjdGlvbigpOwogfQogCi0t
ICh2b2lkKV9kaWROb3RIYW5kbGVUYXBBc0NsaWNrOihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
cG9pbnQKLXsKLSAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFsc28gdGFrZSBpbnRvIGFjY291bnQg
d2hldGhlciBvciBub3QgdGhlIFVJIGRlbGVnYXRlCi0gICAgLy8gaGFzIGhhbmRsZWQgdGhpcyBu
b3RpZmljYXRpb24uCi0gICAgaWYgKF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gJiYgcG9p
bnQgPT0gX3Bvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgJiYgX3Bvc2l0aW9uSW5mb3JtYXRpb24u
aXNEYXRhRGV0ZWN0b3JMaW5rKQotICAgICAgICBbc2VsZiBfc2hvd0RhdGFEZXRlY3RvcnNTaGVl
dF07Ci19Ci0KIC0gKHZvaWQpX3Bvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2U6KGNvbnN0IElu
dGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uJilpbmZvCiB7CiAgICAgX3Bvc2l0aW9uSW5m
b3JtYXRpb24gPSBpbmZvOwpAQCAtMjQ2Miw2ICsyNTA3LDggQEAgc3RhdGljIHZvaWQgc2VsZWN0
aW9uQ2hhbmdlZFdpdGhUb3VjaChXS0NvbnRlbnRWaWV3ICp2aWV3LCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2kKICAgICAgICAgX3RhcEhpZ2hsaWdodEluZm9ybWF0aW9uLmNvbG9yID0gW3NlbGYgX3Rh
cEhpZ2hsaWdodENvbG9yRm9yRmFzdENsaWNrOllFU107CiAKICAgICBbX2RvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6ZW5hYmxlZF07CisgICAgW19ub25CbG9ja2luZ0RvdWJs
ZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldEVuYWJsZWQ6IWVuYWJsZWRdOworICAgIFtzZWxmIF9y
ZXNldElzRG91YmxlVGFwUGVuZGluZ107CiB9CiAKIC0gKHZvaWQpYWNjZXNzb3J5QXV0b0ZpbGwK
</data>

          </attachment>
      

    </bug>

</bugzilla>