<?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>169805</bug_id>
          
          <creation_ts>2017-03-16 20:28:34 -0700</creation_ts>
          <short_desc>[WK1] Support animated transitions when performing a data interaction operation</short_desc>
          <delta_ts>2017-03-17 15:38:46 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288908</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-16 20:28:34 -0700</bug_when>
    <thetext>Support animated transitions when performing a data interaction operation in a WK1 web view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288923</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-16 21:08:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/31045767&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288928</commentid>
    <comment_count>2</comment_count>
      <attachid>304751</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-16 21:22:25 -0700</bug_when>
    <thetext>Created attachment 304751
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288967</commentid>
    <comment_count>3</comment_count>
      <attachid>304751</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2017-03-17 02:33:01 -0700</bug_when>
    <thetext>Comment on attachment 304751
First pass

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

&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.h:52
&gt;  private:

Is this change needed, the implementations are empty.

&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:82
&gt; +

empty implementations, do these belong in this patch?

&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:196
&gt; +

empty implementations, do these belong in this patch?

&gt; Source/WebKit/mac/WebView/WebView.mm:669
&gt; +            _contentImageWithoutSelectionRectInRootViewCoordinates = indicatorData.contentImageWithoutSelectionRectInRootViewCoordinates;

retain here, also release this and _contentImageWithoutSelection in dealloc.

&gt; Source/WebKit/mac/WebView/WebView.mm:1912
&gt;  #endif // ENABLE(DATA_INTERACTION) &amp;&amp; defined(__cplusplus)

empty method? what is it used for?

&gt; Source/WebKit/mac/WebView/WebViewData.h:292
&gt;  #endif

is this the best way to transfer this data?

&gt; Source/WebKit/mac/WebView/WebViewInternal.h:262
&gt;  #endif

The implementation is empty, is this used?

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:-59
&gt; -

Make sure that this removed from where it is needed first, so as to not cause code to stop compiling.

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:194
&gt;  @end

Is everything above being used? Can we re-purpose some of the existing properties?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289008</commentid>
    <comment_count>4</comment_count>
      <attachid>304751</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-17 08:36:44 -0700</bug_when>
    <thetext>Comment on attachment 304751
First pass

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

&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.h:52
&gt;&gt;  private:
&gt; 
&gt; Is this change needed, the implementations are empty.

The implementation we care about is in WebKitAdditions. It just takes a snapshot using TextIndicator and sets dataOperationTextIndicator -- I will post the patch later.

&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:82
&gt;&gt; +
&gt; 
&gt; empty implementations, do these belong in this patch?

Yes. didConcludeEditDrag() was formerly implemented in the header, now it&apos;s just declared there and defined in the implementation.

&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebDragClient.mm:196
&gt;&gt; +
&gt; 
&gt; empty implementations, do these belong in this patch?

Yes. didConcludeEditDrag() was formerly implemented in the header, now it&apos;s just declared there and defined in the implementation.

&gt;&gt; Source/WebKit/mac/WebView/WebView.mm:669
&gt;&gt; +            _contentImageWithoutSelectionRectInRootViewCoordinates = indicatorData.contentImageWithoutSelectionRectInRootViewCoordinates;
&gt; 
&gt; retain here, also release this and _contentImageWithoutSelection in dealloc.

This is a CGRect, and isn&apos;t something we can or should retain.

Fixed the _contentImageWithoutSelection leak though -- good catch!

&gt;&gt; Source/WebKit/mac/WebView/WebView.mm:1912
&gt;&gt;  #endif // ENABLE(DATA_INTERACTION) &amp;&amp; defined(__cplusplus)
&gt; 
&gt; empty method? what is it used for?

Refer to the other empty methods preceding this. Although on second glance, it looks like these are just for staging if &lt;WebKitAdditions/WebViewAdditions.mm&gt; is not available yet? In which case we should just remove the empty implementations for _requestStartDataInteraction:globalPosition: ... -_endedDataInteraction:global: instead...

&gt;&gt; Source/WebKit/mac/WebView/WebViewData.h:292
&gt;&gt;  #endif
&gt; 
&gt; is this the best way to transfer this data?

I believe so, for the same reason textIndicatorData is a member of WebViewPrivate.

Also, we need access to this in two places in UIWebDocumentView anyways (refer to the UIKit change) so even if we made -[WebView _performDataInteraction:client:global:operation:], we&apos;d have to store dataOperationTextIndicator somewhere that UIWebDocumentView can access.

&gt;&gt; Source/WebKit/mac/WebView/WebViewInternal.h:262
&gt;&gt;  #endif
&gt; 
&gt; The implementation is empty, is this used?

The implementation we care about is in WebKitAdditions (patch not yet posted).

&gt;&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:-59
&gt;&gt; -
&gt; 
&gt; Make sure that this removed from where it is needed first, so as to not cause code to stop compiling.

👍

&gt;&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:194
&gt;&gt;  @end
&gt; 
&gt; Is everything above being used? Can we re-purpose some of the existing properties?

No, we definitely should not repurpose the existing properties (though it might make staging a bit easier). WebUITextIndicatorData is meant to mirror TextIndicatorData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289011</commentid>
    <comment_count>5</comment_count>
      <attachid>304751</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-17 08:49:42 -0700</bug_when>
    <thetext>Comment on attachment 304751
First pass

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

&gt;&gt;&gt; Source/WebKit/mac/WebView/WebView.mm:1912
&gt;&gt;&gt;  #endif // ENABLE(DATA_INTERACTION) &amp;&amp; defined(__cplusplus)
&gt;&gt; 
&gt;&gt; empty method? what is it used for?
&gt; 
&gt; Refer to the other empty methods preceding this. Although on second glance, it looks like these are just for staging if &lt;WebKitAdditions/WebViewAdditions.mm&gt; is not available yet? In which case we should just remove the empty implementations for _requestStartDataInteraction:globalPosition: ... -_endedDataInteraction:global: instead...

On second glance, this is not just a staging hack -- we&apos;ll need to keep this, and also add a stub implementation for -_dataOperationTextIndicator (this appears to be the cause of the EWS build failures).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289016</commentid>
    <comment_count>6</comment_count>
      <attachid>304783</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-17 09:01:39 -0700</bug_when>
    <thetext>Created attachment 304783
Fix OpenSource build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289018</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-17 09:05:37 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 304751 [details]
&gt; First pass
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=304751&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/mac/WebView/WebView.mm:1912
&gt; &gt;&gt;&gt;  #endif // ENABLE(DATA_INTERACTION) &amp;&amp; defined(__cplusplus)
&gt; &gt;&gt; 
&gt; &gt;&gt; empty method? what is it used for?
&gt; &gt; 
&gt; &gt; Refer to the other empty methods preceding this. Although on second glance, it looks like these are just for staging if &lt;WebKitAdditions/WebViewAdditions.mm&gt; is not available yet? In which case we should just remove the empty implementations for _requestStartDataInteraction:globalPosition: ... -_endedDataInteraction:global: instead...
&gt; 
&gt; On second glance, this is not just a staging hack -- we&apos;ll need to keep
&gt; this, and also add a stub implementation for -_dataOperationTextIndicator
&gt; (this appears to be the cause of the EWS build failures).

Hm...it looks like we&apos;ll actually need to stub -_dataOperationTextIndicator and not -_didConcludeEditDataInteraction, since the former is SPI but the latter is IPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289028</commentid>
    <comment_count>8</comment_count>
      <attachid>304787</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-17 09:47:28 -0700</bug_when>
    <thetext>Created attachment 304787
Fix OpenSource iOS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289081</commentid>
    <comment_count>9</comment_count>
      <attachid>304802</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-03-17 11:50:10 -0700</bug_when>
    <thetext>Created attachment 304802
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289094</commentid>
    <comment_count>10</comment_count>
      <attachid>304802</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-17 12:30:47 -0700</bug_when>
    <thetext>Comment on attachment 304802
Patch for landing

Clearing flags on attachment: 304802

Committed r214111: &lt;http://trac.webkit.org/changeset/214111&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304751</attachid>
            <date>2017-03-16 21:22:25 -0700</date>
            <delta_ts>2017-03-17 09:01:37 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-169805-20170316212224.patch</filename>
            <type>text/plain</type>
            <size>17667</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkzYTY4MTIyYzU2ZTll
MjJhNmQ2YzQwMjAwOWI0YjA5MjhjZDY5Yy4uNzZlNDliNTZkZjJhMGM3OGEwMjhmNmNjYmE1M2Mz
NTNlNDliOGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAzLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdIFN1cHBv
cnQgYW5pbWF0ZWQgdHJhbnNpdGlvbnMgd2hlbiBwZXJmb3JtaW5nIGEgZGF0YSBpbnRlcmFjdGlv
biBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEwNDU3Njc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBwZXJmb3JtaW5nIGEg
c25hcHNob3QgZXhjbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgdXNlIFNjcm9sbGFibGVB
cmVhOjp2aXNpYmxlQ29udGVudFJlY3QgdG8gY29tcHV0ZQorICAgICAgICB0aGUgdmlzaWJsZSBj
b250ZW50IHJlY3QgcmF0aGVyIHRoYW4gRnJhbWVWaWV3Ojp2aXN1YWxWaWV3cG9ydFJlY3QuIElu
IFdlYktpdDEsIHRoZSBsYXR0ZXIgd2lsbCByZXR1cm4gdGhlCisgICAgICAgIGVudGlyZSBjb250
ZW50IHZpZXcncyBib3VuZHMuCisKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dGFrZVNuYXBzaG90cyk6CisKIDIwMTctMDMtMTQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyRWxlbWVudHMg
c2hvdWxkIHVucmVnaXN0ZXIgZm9yIHZpZXdwb3J0IHZpc2liaWxpdHkgY2FsbGJhY2tzIHdoZW4g
dGhleSBhcmUgZGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDQzNmIzY2VhOGEwNGMyYmJk
YzIwMjk1NjcxYjM0MTY1ZTBiODI2Yi4uMzc4Y2JlZmRlZjdlZmVkYThkYWVjODhkOTk5NDYyMTY3
NDY5N2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTAzLTE2ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdIFN1
cHBvcnQgYW5pbWF0ZWQgdHJhbnNpdGlvbnMgd2hlbiBwZXJmb3JtaW5nIGEgZGF0YSBpbnRlcmFj
dGlvbiBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEwNDU3Njc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJLaXQxIHN1
cHBvcnQgZm9yIGFuaW1hdGVkIHRyYW5zaXRpb25zIHdoZW4gcGVyZm9ybWluZyBhIGRhdGEgaW50
ZXJhY3Rpb24gb3BlcmF0aW9uLiBTZWUgcGVyLW1ldGhvZCBjaGFuZ2VzCisgICAgICAgIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBET00vRE9NRWxlbWVudC5oOgorICAgICAgICAqIERP
TS9ET01FbGVtZW50Lm1tOgorICAgICAgICAoLVtET01FbGVtZW50IGJvdW5kc0luUm9vdFZpZXdT
cGFjZV0pOgorCisgICAgICAgIEludHJvZHVjZSAtW0RPTUVsZW1lbnQgYm91bmRzSW5Sb290Vmll
d1NwYWNlXSwgd2hpY2ggcmV0dXJucyB0aGUgYm91bmRzIG9mIHRoZSBlbGVtZW50IGluIHJvb3Qg
dmlldyBjb29yZGluYXRlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERy
YWcpOgorCisgICAgICAgIEFkZCBib2lsZXJwbGF0ZSBwbHVtYmluZy4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0
V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCisgICAgICAgIEFkZCBjb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uIGFuZCBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9u
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyB0byBXZWJVSVRleHRJbmRpY2F0b3JEYXRhLgorCisg
ICAgICAgIChmbG9hdFJlY3RzRm9yQ0dSZWN0QXJyYXkpOgorICAgICAgICAoLVtXZWJWaWV3IF9j
cmVhdGVJbWFnZVdpdGhQbGF0dGVyRm9ySW1hZ2U6Ym91bmRpbmdSZWN0OmNvbnRlbnRTY2FsZUZh
Y3RvcjpjbGlwcGluZ1JlY3RzOl0pOgorCisgICAgICAgIEludHJvZHVjZXMgYSBTUEkgaGVscGVy
IG1ldGhvZCBpbiBXZWJWaWV3IHRoYXQgY2xpZW50cyBjYW4gdXNlIHRvIGdlbmVyYXRlIGFuIGlt
YWdlIG9mIGEgdGV4dCBwbGF0dGVyIGdpdmVuIGFuCisgICAgICAgIGltYWdlIG9mIHNvbWUgdGV4
dCwgYXMgd2VsbCBhcyBjbGlwcGluZyByZWN0cyB0byBhcHBseSB0byB0aGUgaW1hZ2UuCisKKyAg
ICAgICAgKC1bV2ViVmlldyBfZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3JdKToKKworICAgICAg
ICBBZGQgU1BJIHRvIGZldGNoIHRoZSB0ZXh0IGluZGljYXRvciB1c2VkIHRvIGRyaXZlIGFuaW1h
dGlvbnMgZm9yIHRoZSBjdXJyZW50IGRhdGEgb3BlcmF0aW9uLgorCisgICAgICAgICgtW1dlYlZp
ZXcgX2RpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wMy0xNCAgTWVnYW4gR2Fy
ZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvcnJlY3RseSBleHBv
cnQgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRv
ci5jcHAKaW5kZXggM2ExM2E1MjIwNmUwZmMxMmM2OGQ3ODZlYjY5NTU2YzdiZTczZjBmZC4uOTdk
YmE0OTU4OGJjZmZjYzE1YTU1ZGM1MTgwZDU1ZjFlYzY2NTE2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RleHRJbmRpY2F0b3IuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIGJvb2wgdGFrZVNu
YXBzaG90cyhUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNu
YXBzaG8KIAogICAgIGlmIChkYXRhLm9wdGlvbnMgJiBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZVNuYXBzaG90T2ZBbGxWaXNpYmxlQ29udGVudFdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAg
ZmxvYXQgc25hcHNob3RTY2FsZUZhY3RvcjsKLSAgICAgICAgYXV0byBzbmFwc2hvdFJlY3QgPSBl
bmNsb3NpbmdJbnRSZWN0KGZyYW1lLnZpZXcoKS0+dmlzdWFsVmlld3BvcnRSZWN0KCkpOworICAg
ICAgICBhdXRvIHNuYXBzaG90UmVjdCA9IGZyYW1lLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CiAgICAgICAgIGRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IHRha2VTbmFw
c2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdF
eGNsdWRpbmdTZWxlY3Rpb24sIHNuYXBzaG90U2NhbGVGYWN0b3IsIHsgfSk7CiAgICAgICAgIGRh
dGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhzbmFwc2hvdFJlY3QpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5oCmluZGV4IDBjNGNmZTFjZGUyZjFjOTY1MjljNWQw
OWE1NzZiYTllNmE0Yzc5M2YuLjk3MTg3OGUwZGU0Y2RjMDIzZTYzNDJhNDY5OGQ0MmEyYzFkMzI1
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQuaApAQCAtMjUsNiArMjUsMTAgQEAKIAog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTU5vZGUuaD4KIAorI2lmIFRBUkdFVF9PU19JUEhPTkUK
KyNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgorCiBAY2xhc3Mg
RE9NQXR0cjsKIEBjbGFzcyBET01DU1NTdHlsZURlY2xhcmF0aW9uOwogQGNsYXNzIERPTUVsZW1l
bnQ7CkBAIC02Miw2ICs2NiwxMCBAQCBXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQygxMF80KQog
QHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpsYXN0RWxlbWVudENoaWxk
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwogQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWdu
ZWQgY2hpbGRFbGVtZW50Q291bnQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7CiAKKyNpZiBU
QVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKHJlYWRvbmx5KSBDR1JlY3QgYm91bmRzSW5Sb290
Vmlld1NwYWNlOworI2VuZGlmCisKIC0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWU7CiAtICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIHZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwogLSAodm9pZClyZW1v
dmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQu
bW0KaW5kZXggZjU3MzNhOTJjZDQzNzAxYzc0YWYzOWRiNTUyNTk4NzM4NGUyMDBlNy4uNmQxODNj
OTNmYzNjNTBkZjRjOTFmYjY5NzZkZGUyMzQ5MGZiYTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RP
TUVsZW1lbnQubW0KQEAgLTI2OSw2ICsyNjksMTUgQEAgRE9NRWxlbWVudCAqa2l0KFdlYkNvcmU6
OkVsZW1lbnQqIHZhbHVlKQogICAgIHJldHVybiB1bndyYXAoKnNlbGYpLmNoaWxkRWxlbWVudENv
dW50KCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCistIChDR1JlY3QpYm91bmRzSW5Sb290Vmll
d1NwYWNlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGF1dG8gYm91bmRzID0gdW53cmFwKCpzZWxmKS5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKKyAg
ICByZXR1cm4gQ0dSZWN0TWFrZShib3VuZHMueCgpLCBib3VuZHMueSgpLCBib3VuZHMud2lkdGgo
KSwgYm91bmRzLmhlaWdodCgpKTsKK30KKyNlbmRpZgorCiAtIChOU1N0cmluZyAqKWdldEF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCmluZGV4IGU2OTZkMGVjMzA0NjgzOGMwNDRjYWQwN2RhNDJkODBhODI4NjIxZWMu
LjEyOGYxZTFjMmJkNWQxMmQwYzJmZjc5OTE2NzMwNjBiYjU5NzllMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBk
ZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdl
YkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIGRpZENvbmNsdWRl
RWRpdERyYWcoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBv
dmVycmlkZTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDAx
YjlmNjVkOTkyMzA3MTNiMjAxZmY0ODQ3ZDIzNTI2ODA1ZTMwMTAuLmM4YjA1M2MzMDVlZDZkNDUw
YjFmNDdlNTJmMjAxMjNhMDgxNmY4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtNzYsNiArNzYsMTAgQEAgYm9vbCBXZWJE
cmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K3ZvaWQgV2ViRHJhZ0NsaWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCit7Cit9CisKIHN0YXRp
YyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZyYW1lKQogewogICAgIEFTU0VS
VChmcmFtZSk7CkBAIC0xODUsNiArMTg5LDExIEBAIGJvb2wgV2ViRHJhZ0NsaWVudDo6dXNlTGVn
YWN5RHJhZ0NsaWVudCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit2b2lkIFdlYkRyYWdD
bGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQoreworfQorCiBXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDhkMzVmYzEwYWE1YWJhNGU3MjU0
MmRmNjhmZWYxZTI1MTQzNTk3ZjAuLjk1YTA3NWZmMjhkMTkyMmEyMDdhZjhhMDM5MmEzYTFmZDg5
NTBmYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE3Niw2ICsxNzYs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTMyMCw5ICszMjEsMTcgQEAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisjaW1wb3J0IDxVSUtpdC9VSUJlemllclBh
dGguaD4KKyNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2Uu
aD4KIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
QmV6aWVyUGF0aCkKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKIFNPRlRfTElOS19D
TEFTUyhVSUtpdCwgVUlJbWFnZSkKK1NPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0JlZ2luSW1h
Z2VDb250ZXh0V2l0aE9wdGlvbnMsIHZvaWQsIChDR1NpemUgc2l6ZSwgQk9PTCBvcGFxdWUsIENH
RmxvYXQgc2NhbGUpLCAoc2l6ZSwgb3BhcXVlLCBzY2FsZSkpCitTT0ZUX0xJTksoVUlLaXQsIFVJ
R3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwgQ0dDb250ZXh0UmVmLCAodm9pZCksICgpKQorU09G
VF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29udGV4dCwg
VUlJbWFnZSAqLCAodm9pZCksICgpKQorU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzRW5kSW1h
Z2VDb250ZXh0LCB2b2lkLCAodm9pZCksICgpKQogI2VuZGlmCiAKICNpZiBIQVZFKFRPVUNIX0JB
UikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQpAQCAtNjI2LDEzICs2
MzUsMTUgQEAgcHJpdmF0ZToKIEBzeW50aGVzaXplIHRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXM9X3RleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiBAc3lu
dGhlc2l6ZSB0ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzPV90ZXh0UmVjdHNJbkJv
dW5kaW5nUmVjdENvb3JkaW5hdGVzOwogQHN5bnRoZXNpemUgY29udGVudEltYWdlV2l0aEhpZ2hs
aWdodD1fY29udGVudEltYWdlV2l0aEhpZ2hsaWdodDsKK0BzeW50aGVzaXplIGNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb249X2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb247CitAc3ludGhl
c2l6ZSBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cz1fY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7
CiBAc3ludGhlc2l6ZSBjb250ZW50SW1hZ2U9X2NvbnRlbnRJbWFnZTsKIAogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAoV2ViVUlUZXh0SW5kaWNhdG9ySW50
ZXJuYWwpCiAKLS0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0lt
YWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JEYXRhOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YSAmKWluZGljYXRvckRhdGEgc2NhbGU6KENHRmxvYXQpc2NhbGUKKy0gKFdlYlVJVGV4dEluZGlj
YXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JE
YXRhOihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYpaW5kaWNhdG9yRGF0YSBzY2FsZTooQ0dGbG9h
dClzY2FsZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtNjQ5LDggKzY2MCwxNiBAQCBwcml2YXRlOgogICAgIGlmIChpbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQpCiAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRo
SGlnaGxpZ2h0ID0gW1tbZ2V0VUlJbWFnZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpp
bmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdl
KCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1p
cnJvcmVkXSByZXRhaW5dOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZSkKLSAg
ICAgICAgX2NvbnRlbnRJbWFnZSA9IFtbW2dldFVJSW1hZ2VDbGFzcygpIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCku
Z2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJv
cmVkXSByZXRhaW5dOwotICAgIAorICAgICAgICBfY29udGVudEltYWdlID0gW1tbZ2V0VUlJbWFn
ZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25VcF0gcmV0YWluXTsKKworICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKKyAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGlu
ZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0aXZlSW1h
Z2UoKTsKKyAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICBfY29udGVudElt
YWdlV2l0aG91dFNlbGVjdGlvbiA9IFtbW2dldFVJSW1hZ2VDbGFzcygpIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdIHJldGFpbl07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91
dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOworICAgICAg
ICB9CisgICAgfQorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTE3ODEsNiArMTgwMCw1MyBA
QCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3Nhcnko
KQogfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCisKK3N0YXRpYyBWZWN0b3I8RmxvYXRS
ZWN0PiBmbG9hdFJlY3RzRm9yQ0dSZWN0QXJyYXkoTlNBcnJheTxOU1ZhbHVlICo+ICpyZWN0VmFs
dWVzKQoreworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzOworICAgIGZvciAoTlNWYWx1ZSAq
cmVjdFZhbHVlIGluIHJlY3RWYWx1ZXMpCisgICAgICAgIHJlY3RzLmFwcGVuZChyZWN0VmFsdWUu
Q0dSZWN0VmFsdWUpOworICAgIHJldHVybiByZWN0czsKK30KKworLSAoVUlJbWFnZSAqKV9jcmVh
dGVJbWFnZVdpdGhQbGF0dGVyRm9ySW1hZ2U6KFVJSW1hZ2UgKilpbWFnZSBib3VuZGluZ1JlY3Q6
KENHUmVjdClib3VuZGluZ1JlY3QgY29udGVudFNjYWxlRmFjdG9yOihDR0Zsb2F0KWNvbnRlbnRT
Y2FsZUZhY3RvciBjbGlwcGluZ1JlY3RzOihOU0FycmF5PE5TVmFsdWUgKj4gKiljbGlwcGluZ1Jl
Y3RzCit7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIENHRmxv
YXQgaW1hZ2VTY2FsZUZhY3RvciA9IGNvbnRlbnRTY2FsZUZhY3RvciAvIF9wcml2YXRlLT5wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIENHUmVjdCBpbWFnZVBhaW50Qm91bmRzID0gQ0dS
ZWN0TWFrZSgwLCAwLCBDR1JlY3RHZXRXaWR0aChib3VuZGluZ1JlY3QpICogaW1hZ2VTY2FsZUZh
Y3RvciwgQ0dSZWN0R2V0SGVpZ2h0KGJvdW5kaW5nUmVjdCkgKiBpbWFnZVNjYWxlRmFjdG9yKTsK
KyAgICBVSUdyYXBoaWNzQmVnaW5JbWFnZUNvbnRleHRXaXRoT3B0aW9ucyhpbWFnZVBhaW50Qm91
bmRzLnNpemUsIE5PLCBfcHJpdmF0ZS0+cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAg
Q0dDb250ZXh0UmVmIG5ld0NvbnRleHQgPSBVSUdyYXBoaWNzR2V0Q3VycmVudENvbnRleHQoKTsK
KworICAgIGF1dG8gc2NhbGVkQ2xpcHBpbmdSZWN0cyA9IGZsb2F0UmVjdHNGb3JDR1JlY3RBcnJh
eShjbGlwcGluZ1JlY3RzKTsKKyAgICBmb3IgKGF1dG8mIHRleHRCb3VuZGluZ1JlY3QgOiBzY2Fs
ZWRDbGlwcGluZ1JlY3RzKQorICAgICAgICB0ZXh0Qm91bmRpbmdSZWN0LnNjYWxlKGltYWdlU2Nh
bGVGYWN0b3IpOworCisgICAgaWYgKCFzY2FsZWRDbGlwcGluZ1JlY3RzLmlzRW1wdHkoKSkgewor
ICAgICAgICBhdXRvIHdlYmNvcmVQYXRoID0gUGF0aFV0aWxpdGllczo6cGF0aFdpdGhTaHJpbmtX
cmFwcGVkUmVjdHMoc2NhbGVkQ2xpcHBpbmdSZWN0cywgNiAqIGltYWdlU2NhbGVGYWN0b3IpOwor
ICAgICAgICBbW2dldFVJQmV6aWVyUGF0aENsYXNzKCkgYmV6aWVyUGF0aFdpdGhDR1BhdGg6d2Vi
Y29yZVBhdGguZW5zdXJlUGxhdGZvcm1QYXRoKCldIGFkZENsaXBdOworICAgIH0KKworICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBtYXRjaCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgdGV4
dCwgb3IgaWYgdGhlIGJhY2tncm91bmQgY2Fubm90IGJlIGNhcHR1cmVkIGFzIGEgc2luZ2xlIGNv
bG9yLCB3ZSBzaG91bGQgZmFsbCBiYWNrCisgICAgLy8gdG8gYSBkZWZhdWx0IHJlcHJlc2VudGF0
aW9uLCBlLmcuIGJsYWNrIHRleHQgb24gYSB3aGl0ZSBiYWNrZ3JvdW5kLgorICAgIENHQ29udGV4
dFNldEZpbGxDb2xvcldpdGhDb2xvcihuZXdDb250ZXh0LCBbW2dldFVJQ29sb3JDbGFzcygpIHdo
aXRlQ29sb3JdIENHQ29sb3JdKTsKKyAgICBmb3IgKGF1dG8gdGV4dEJvdW5kaW5nUmVjdCA6IHNj
YWxlZENsaXBwaW5nUmVjdHMpCisgICAgICAgIENHQ29udGV4dEZpbGxSZWN0KG5ld0NvbnRleHQs
IHRleHRCb3VuZGluZ1JlY3QpOworCisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKG5ld0NvbnRl
eHQsIDAsIENHUmVjdEdldEhlaWdodChpbWFnZVBhaW50Qm91bmRzKSk7CisgICAgQ0dDb250ZXh0
U2NhbGVDVE0obmV3Q29udGV4dCwgMSwgLTEpOworICAgIENHQ29udGV4dERyYXdJbWFnZShuZXdD
b250ZXh0LCBpbWFnZVBhaW50Qm91bmRzLCBpbWFnZS5DR0ltYWdlKTsKKworICAgIFVJSW1hZ2Ug
KnByZXZpZXdJbWFnZSA9IFVJR3JhcGhpY3NHZXRJbWFnZUZyb21DdXJyZW50SW1hZ2VDb250ZXh0
KCk7CisgICAgVUlHcmFwaGljc0VuZEltYWdlQ29udGV4dCgpOworCisgICAgcmV0dXJuIFtwcmV2
aWV3SW1hZ2UgcmV0YWluXTsKK30KKworI2VuZGlmCisKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFD
VElPTikgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKIC0gKEJPT0wpX3JlcXVlc3RTdGFydERhdGFJ
bnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQb2lu
dClnbG9iYWxQb3NpdGlvbgogewpAQCAtMTc5NSw2ICsxODYxLDExIEBAIHN0YXRpYyB2b2lkIFdl
YktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAgICAgICAgIF9wcml2
YXRlLT50ZXh0SW5kaWNhdG9yRGF0YSA9IFtbW1dlYlVJVGV4dEluZGljYXRvckRhdGEgYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6aW1hZ2Ugc2NhbGU6X3ByaXZhdGUtPnBhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCldIHJldGFpbl07CiB9CiAKKy0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilfZGF0YU9w
ZXJhdGlvblRleHRJbmRpY2F0b3IKK3sKKyAgICByZXR1cm4gX3ByaXZhdGUtPmRhdGFPcGVyYXRp
b25UZXh0SW5kaWNhdG9yLmdldCgpOworfQorCiAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICop
X2dldERhdGFJbnRlcmFjdGlvbkRhdGEKIHsKICAgICByZXR1cm4gX3ByaXZhdGUtPnRleHRJbmRp
Y2F0b3JEYXRhOwpAQCAtMTgzNCw2ICsxOTA1LDEwIEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRp
YWxpemVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAtICh2b2lkKV9lbmRlZERhdGFJbnRl
cmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9z
aXRpb24KIHsKIH0KKworLSAodm9pZClfZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0aW9uCit7
Cit9CiAjZW5kaWYgLy8gRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pICYmIGRlZmluZWQoX19jcGx1
c3BsdXMpCiAKIHN0YXRpYyBOU011dGFibGVTZXQgKmtub3duUGx1Z2luTUlNRVR5cGVzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCBiMWJjNzhlYTZiOTgzMDZj
ZGVjODE3OTI3MzkyODcyZmY2YmQyNDg4Li4yNWY4YTNiMGQ5ZTA0YWRjOGQ1OWU3ODY3NmU4Njg4
YzJjMDEyMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdE
YXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0y
ODgsNiArMjg4LDcgQEAgcHJpdmF0ZToKICAgICAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikKICAgICBXZWJVSVRleHRJbmRpY2F0b3JEYXRhICp0ZXh0SW5kaWNhdG9yRGF0YTsKKyAgICBS
ZXRhaW5QdHI8V2ViVUlUZXh0SW5kaWNhdG9yRGF0YT4gZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0
b3I7CiAjZW5kaWYKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJu
YWwuaAppbmRleCA2YzBkMzQwMDViYTRhMmUzZGIwZDVlZjk1MjVmOTYzNjFlZTZiMTc1Li5hODk1
Y2M2MjY3ZDNmNDMwNTFhNWJhMjA4ODg3ZmM0YjdjZjNmNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKQEAgLTkyLDcgKzkyLDcgQEAgT0JKQ19DTEFT
UyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikgJiYg
ZGVmaW5lZChfX2NwbHVzcGx1cykKIEBpbnRlcmZhY2UgV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAo
V2ViVUlUZXh0SW5kaWNhdG9ySW50ZXJuYWwpCi0tIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICop
aW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTooV2ViQ29y
ZTo6VGV4dEluZGljYXRvckRhdGEmKWluZGljYXRvckRhdGEgc2NhbGU6KENHRmxvYXQpc2NhbGU7
CistIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopaW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJlZilp
bWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTooY29uc3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEm
KWluZGljYXRvckRhdGEgc2NhbGU6KENHRmxvYXQpc2NhbGU7CiAtIChXZWJVSVRleHRJbmRpY2F0
b3JEYXRhICopaW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJlZilpbWFnZSBzY2FsZTooQ0dGbG9hdClz
Y2FsZTsKIEBlbmQKICNlbmRpZgpAQCAtMjU4LDYgKzI1OCw3IEBAIE9CSkNfQ0xBU1MgTlNUZXh0
QWx0ZXJuYXRpdmVzOwogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pICYmIGRlZmluZWQo
X19jcGx1c3BsdXMpCiAtICh2b2lkKV9zZXREYXRhSW50ZXJhY3Rpb25EYXRhOihDR0ltYWdlUmVm
KWltYWdlIHRleHRJbmRpY2F0b3I6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRv
ckRhdGE+KXRleHRJbmRpY2F0b3IgYXRDbGllbnRQb3NpdGlvbjooQ0dQb2ludCljbGllbnRQb3Np
dGlvbiBhbmNob3JQb2ludDooQ0dQb2ludClhbmNob3JQb2ludCBhY3Rpb246KHVpbnQ2NF90KWFj
dGlvbjsKKy0gKHZvaWQpX2RpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbjsKICNlbmRpZgog
CiAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5j
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOGQy
MTE4Y2ZhNTQwOTMyZDM5NjFiODkzYWJhZmNlYTg2MzFiOGQ1Ny4uOTFiMzE2OWYzMTM3MzkyYjQx
MDlkZDM2YTM5MWY4Y2JmMjA3NmE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNTUsOCArNTUsNiBAQAogI2VuZGlmCiAjZW5kaWYKIAotI2RlZmlu
ZSBXRUJLSVRfRElfQkxPQ0sgMQotCiBAY2xhc3MgVUlJbWFnZTsKIEBjbGFzcyBOU0Vycm9yOwog
QGNsYXNzIFdlYkZyYW1lOwpAQCAtMTkxLDcgKzE4OSw4IEBAIHR5cGVkZWYgZW51bSB7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBDR0Zsb2F0IGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9y
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVUlJbWFnZSAqY29udGVudEltYWdlV2l0
aEhpZ2hsaWdodDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFVJSW1hZ2UgKmNvbnRl
bnRJbWFnZTsKLQorQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVUlJbWFnZSAqY29udGVu
dEltYWdlV2l0aG91dFNlbGVjdGlvbjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIENH
UmVjdCBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRl
czsKIEBlbmQKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCkBAIC00NjcsNiArNDY2LDcgQEAgQ291
bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAKIC0gKEJPT0wpX3JlcXVlc3RTdGFydERh
dGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQ
b2ludClnbG9iYWxQb3NpdGlvbjsKIC0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilfZ2V0RGF0
YUludGVyYWN0aW9uRGF0YTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25n
LCBnZXR0ZXI9X2RhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9yKSBXZWJVSVRleHRJbmRpY2F0b3JE
YXRhICpkYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcjsKIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0
YUludGVyYWN0aW9uOihpZClkYXRhSW50ZXJhY3Rpb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBv
c2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90
KW9wZXJhdGlvbjsKIC0gKHVpbnQ2NF90KV91cGRhdGVkRGF0YUludGVyYWN0aW9uOihpZClkYXRh
SW50ZXJhY3Rpb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2lu
dClnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbjsKIC0gKHZvaWQp
X2V4aXRlZERhdGFJbnRlcmFjdGlvbjooaWQpZGF0YUludGVyYWN0aW9uIGNsaWVudDooQ0dQb2lu
dCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9u
Oih1aW50NjRfdClvcGVyYXRpb247CkBAIC00NzQsNiArNDc0LDcgQEAgQ291bGQgYmUgd29ydGgg
YWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lkKV9lbmRlZERhdGFJbnRlcmFjdGlvbjooQ0dQb2lu
dCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpY2xpZW50UG9zaXRpb247CiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCistIChVSUltYWdlICopX2NyZWF0ZUltYWdlV2l0aFBsYXR0ZXJGb3JJ
bWFnZTooVUlJbWFnZSAqKWltYWdlIGJvdW5kaW5nUmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdCBj
b250ZW50U2NhbGVGYWN0b3I6KENHRmxvYXQpY29udGVudFNjYWxlRmFjdG9yIGNsaXBwaW5nUmVj
dHM6KE5TQXJyYXk8TlNWYWx1ZSAqPiAqKWNsaXBwaW5nUmVjdHM7CiAvLyBEZXByZWNhdGVkLiBV
c2UgLVtXZWJEYXRhU291cmNlIF9xdWlja0xvb2tDb250ZW50XSBpbnN0ZWFkLgogLSAoTlNEaWN0
aW9uYXJ5ICopcXVpY2tMb29rQ29udGVudEZvclVSTDooTlNVUkwgKil1cmw7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304783</attachid>
            <date>2017-03-17 09:01:39 -0700</date>
            <delta_ts>2017-03-17 09:47:23 -0700</delta_ts>
            <desc>Fix OpenSource build</desc>
            <filename>bug-169805-20170317090138.patch</filename>
            <type>text/plain</type>
            <size>17966</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkzYTY4MTIyYzU2ZTll
MjJhNmQ2YzQwMjAwOWI0YjA5MjhjZDY5Yy4uNzZlNDliNTZkZjJhMGM3OGEwMjhmNmNjYmE1M2Mz
NTNlNDliOGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAzLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdIFN1cHBv
cnQgYW5pbWF0ZWQgdHJhbnNpdGlvbnMgd2hlbiBwZXJmb3JtaW5nIGEgZGF0YSBpbnRlcmFjdGlv
biBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEwNDU3Njc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBwZXJmb3JtaW5nIGEg
c25hcHNob3QgZXhjbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgdXNlIFNjcm9sbGFibGVB
cmVhOjp2aXNpYmxlQ29udGVudFJlY3QgdG8gY29tcHV0ZQorICAgICAgICB0aGUgdmlzaWJsZSBj
b250ZW50IHJlY3QgcmF0aGVyIHRoYW4gRnJhbWVWaWV3Ojp2aXN1YWxWaWV3cG9ydFJlY3QuIElu
IFdlYktpdDEsIHRoZSBsYXR0ZXIgd2lsbCByZXR1cm4gdGhlCisgICAgICAgIGVudGlyZSBjb250
ZW50IHZpZXcncyBib3VuZHMuCisKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dGFrZVNuYXBzaG90cyk6CisKIDIwMTctMDMtMTQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyRWxlbWVudHMg
c2hvdWxkIHVucmVnaXN0ZXIgZm9yIHZpZXdwb3J0IHZpc2liaWxpdHkgY2FsbGJhY2tzIHdoZW4g
dGhleSBhcmUgZGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDQzNmIzY2VhOGEwNGMyYmJk
YzIwMjk1NjcxYjM0MTY1ZTBiODI2Yi4uMzc4Y2JlZmRlZjdlZmVkYThkYWVjODhkOTk5NDYyMTY3
NDY5N2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTAzLTE2ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdIFN1
cHBvcnQgYW5pbWF0ZWQgdHJhbnNpdGlvbnMgd2hlbiBwZXJmb3JtaW5nIGEgZGF0YSBpbnRlcmFj
dGlvbiBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEwNDU3Njc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJLaXQxIHN1
cHBvcnQgZm9yIGFuaW1hdGVkIHRyYW5zaXRpb25zIHdoZW4gcGVyZm9ybWluZyBhIGRhdGEgaW50
ZXJhY3Rpb24gb3BlcmF0aW9uLiBTZWUgcGVyLW1ldGhvZCBjaGFuZ2VzCisgICAgICAgIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBET00vRE9NRWxlbWVudC5oOgorICAgICAgICAqIERP
TS9ET01FbGVtZW50Lm1tOgorICAgICAgICAoLVtET01FbGVtZW50IGJvdW5kc0luUm9vdFZpZXdT
cGFjZV0pOgorCisgICAgICAgIEludHJvZHVjZSAtW0RPTUVsZW1lbnQgYm91bmRzSW5Sb290Vmll
d1NwYWNlXSwgd2hpY2ggcmV0dXJucyB0aGUgYm91bmRzIG9mIHRoZSBlbGVtZW50IGluIHJvb3Qg
dmlldyBjb29yZGluYXRlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERy
YWcpOgorCisgICAgICAgIEFkZCBib2lsZXJwbGF0ZSBwbHVtYmluZy4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0
V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCisgICAgICAgIEFkZCBjb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uIGFuZCBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9u
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyB0byBXZWJVSVRleHRJbmRpY2F0b3JEYXRhLgorCisg
ICAgICAgIChmbG9hdFJlY3RzRm9yQ0dSZWN0QXJyYXkpOgorICAgICAgICAoLVtXZWJWaWV3IF9j
cmVhdGVJbWFnZVdpdGhQbGF0dGVyRm9ySW1hZ2U6Ym91bmRpbmdSZWN0OmNvbnRlbnRTY2FsZUZh
Y3RvcjpjbGlwcGluZ1JlY3RzOl0pOgorCisgICAgICAgIEludHJvZHVjZXMgYSBTUEkgaGVscGVy
IG1ldGhvZCBpbiBXZWJWaWV3IHRoYXQgY2xpZW50cyBjYW4gdXNlIHRvIGdlbmVyYXRlIGFuIGlt
YWdlIG9mIGEgdGV4dCBwbGF0dGVyIGdpdmVuIGFuCisgICAgICAgIGltYWdlIG9mIHNvbWUgdGV4
dCwgYXMgd2VsbCBhcyBjbGlwcGluZyByZWN0cyB0byBhcHBseSB0byB0aGUgaW1hZ2UuCisKKyAg
ICAgICAgKC1bV2ViVmlldyBfZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3JdKToKKworICAgICAg
ICBBZGQgU1BJIHRvIGZldGNoIHRoZSB0ZXh0IGluZGljYXRvciB1c2VkIHRvIGRyaXZlIGFuaW1h
dGlvbnMgZm9yIHRoZSBjdXJyZW50IGRhdGEgb3BlcmF0aW9uLgorCisgICAgICAgICgtW1dlYlZp
ZXcgX2RpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wMy0xNCAgTWVnYW4gR2Fy
ZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvcnJlY3RseSBleHBv
cnQgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRv
ci5jcHAKaW5kZXggM2ExM2E1MjIwNmUwZmMxMmM2OGQ3ODZlYjY5NTU2YzdiZTczZjBmZC4uOTdk
YmE0OTU4OGJjZmZjYzE1YTU1ZGM1MTgwZDU1ZjFlYzY2NTE2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RleHRJbmRpY2F0b3IuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIGJvb2wgdGFrZVNu
YXBzaG90cyhUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNu
YXBzaG8KIAogICAgIGlmIChkYXRhLm9wdGlvbnMgJiBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZVNuYXBzaG90T2ZBbGxWaXNpYmxlQ29udGVudFdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAg
ZmxvYXQgc25hcHNob3RTY2FsZUZhY3RvcjsKLSAgICAgICAgYXV0byBzbmFwc2hvdFJlY3QgPSBl
bmNsb3NpbmdJbnRSZWN0KGZyYW1lLnZpZXcoKS0+dmlzdWFsVmlld3BvcnRSZWN0KCkpOworICAg
ICAgICBhdXRvIHNuYXBzaG90UmVjdCA9IGZyYW1lLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CiAgICAgICAgIGRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IHRha2VTbmFw
c2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdF
eGNsdWRpbmdTZWxlY3Rpb24sIHNuYXBzaG90U2NhbGVGYWN0b3IsIHsgfSk7CiAgICAgICAgIGRh
dGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhzbmFwc2hvdFJlY3QpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5oCmluZGV4IDBjNGNmZTFjZGUyZjFjOTY1MjljNWQw
OWE1NzZiYTllNmE0Yzc5M2YuLjk3MTg3OGUwZGU0Y2RjMDIzZTYzNDJhNDY5OGQ0MmEyYzFkMzI1
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQuaApAQCAtMjUsNiArMjUsMTAgQEAKIAog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTU5vZGUuaD4KIAorI2lmIFRBUkdFVF9PU19JUEhPTkUK
KyNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgorCiBAY2xhc3Mg
RE9NQXR0cjsKIEBjbGFzcyBET01DU1NTdHlsZURlY2xhcmF0aW9uOwogQGNsYXNzIERPTUVsZW1l
bnQ7CkBAIC02Miw2ICs2NiwxMCBAQCBXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQygxMF80KQog
QHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpsYXN0RWxlbWVudENoaWxk
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwogQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWdu
ZWQgY2hpbGRFbGVtZW50Q291bnQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7CiAKKyNpZiBU
QVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKHJlYWRvbmx5KSBDR1JlY3QgYm91bmRzSW5Sb290
Vmlld1NwYWNlOworI2VuZGlmCisKIC0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWU7CiAtICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIHZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwogLSAodm9pZClyZW1v
dmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQu
bW0KaW5kZXggZjU3MzNhOTJjZDQzNzAxYzc0YWYzOWRiNTUyNTk4NzM4NGUyMDBlNy4uNmQxODNj
OTNmYzNjNTBkZjRjOTFmYjY5NzZkZGUyMzQ5MGZiYTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RP
TUVsZW1lbnQubW0KQEAgLTI2OSw2ICsyNjksMTUgQEAgRE9NRWxlbWVudCAqa2l0KFdlYkNvcmU6
OkVsZW1lbnQqIHZhbHVlKQogICAgIHJldHVybiB1bndyYXAoKnNlbGYpLmNoaWxkRWxlbWVudENv
dW50KCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCistIChDR1JlY3QpYm91bmRzSW5Sb290Vmll
d1NwYWNlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGF1dG8gYm91bmRzID0gdW53cmFwKCpzZWxmKS5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKKyAg
ICByZXR1cm4gQ0dSZWN0TWFrZShib3VuZHMueCgpLCBib3VuZHMueSgpLCBib3VuZHMud2lkdGgo
KSwgYm91bmRzLmhlaWdodCgpKTsKK30KKyNlbmRpZgorCiAtIChOU1N0cmluZyAqKWdldEF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCmluZGV4IGU2OTZkMGVjMzA0NjgzOGMwNDRjYWQwN2RhNDJkODBhODI4NjIxZWMu
LjEyOGYxZTFjMmJkNWQxMmQwYzJmZjc5OTE2NzMwNjBiYjU5NzllMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBk
ZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdl
YkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIGRpZENvbmNsdWRl
RWRpdERyYWcoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBv
dmVycmlkZTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDAx
YjlmNjVkOTkyMzA3MTNiMjAxZmY0ODQ3ZDIzNTI2ODA1ZTMwMTAuLmM4YjA1M2MzMDVlZDZkNDUw
YjFmNDdlNTJmMjAxMjNhMDgxNmY4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtNzYsNiArNzYsMTAgQEAgYm9vbCBXZWJE
cmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K3ZvaWQgV2ViRHJhZ0NsaWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCit7Cit9CisKIHN0YXRp
YyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZyYW1lKQogewogICAgIEFTU0VS
VChmcmFtZSk7CkBAIC0xODUsNiArMTg5LDExIEBAIGJvb2wgV2ViRHJhZ0NsaWVudDo6dXNlTGVn
YWN5RHJhZ0NsaWVudCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit2b2lkIFdlYkRyYWdD
bGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQoreworfQorCiBXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDhkMzVmYzEwYWE1YWJhNGU3MjU0
MmRmNjhmZWYxZTI1MTQzNTk3ZjAuLmZlNjI2YzAxZjVjOWViZDY4OWJjNmEzZTkyMDMzNTg4YTQx
M2Y0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE3Niw2ICsxNzYs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTMyMCw5ICszMjEsMTcgQEAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisjaW1wb3J0IDxVSUtpdC9VSUJlemllclBh
dGguaD4KKyNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2Uu
aD4KIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
QmV6aWVyUGF0aCkKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKIFNPRlRfTElOS19D
TEFTUyhVSUtpdCwgVUlJbWFnZSkKK1NPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0JlZ2luSW1h
Z2VDb250ZXh0V2l0aE9wdGlvbnMsIHZvaWQsIChDR1NpemUgc2l6ZSwgQk9PTCBvcGFxdWUsIENH
RmxvYXQgc2NhbGUpLCAoc2l6ZSwgb3BhcXVlLCBzY2FsZSkpCitTT0ZUX0xJTksoVUlLaXQsIFVJ
R3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwgQ0dDb250ZXh0UmVmLCAodm9pZCksICgpKQorU09G
VF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29udGV4dCwg
VUlJbWFnZSAqLCAodm9pZCksICgpKQorU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzRW5kSW1h
Z2VDb250ZXh0LCB2b2lkLCAodm9pZCksICgpKQogI2VuZGlmCiAKICNpZiBIQVZFKFRPVUNIX0JB
UikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQpAQCAtNjI2LDEzICs2
MzUsMTUgQEAgcHJpdmF0ZToKIEBzeW50aGVzaXplIHRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXM9X3RleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiBAc3lu
dGhlc2l6ZSB0ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzPV90ZXh0UmVjdHNJbkJv
dW5kaW5nUmVjdENvb3JkaW5hdGVzOwogQHN5bnRoZXNpemUgY29udGVudEltYWdlV2l0aEhpZ2hs
aWdodD1fY29udGVudEltYWdlV2l0aEhpZ2hsaWdodDsKK0BzeW50aGVzaXplIGNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb249X2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb247CitAc3ludGhl
c2l6ZSBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cz1fY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7
CiBAc3ludGhlc2l6ZSBjb250ZW50SW1hZ2U9X2NvbnRlbnRJbWFnZTsKIAogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAoV2ViVUlUZXh0SW5kaWNhdG9ySW50
ZXJuYWwpCiAKLS0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0lt
YWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JEYXRhOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YSAmKWluZGljYXRvckRhdGEgc2NhbGU6KENHRmxvYXQpc2NhbGUKKy0gKFdlYlVJVGV4dEluZGlj
YXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JE
YXRhOihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYpaW5kaWNhdG9yRGF0YSBzY2FsZTooQ0dGbG9h
dClzY2FsZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtNjQ5LDggKzY2MCwxNiBAQCBwcml2YXRlOgogICAgIGlmIChpbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQpCiAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRo
SGlnaGxpZ2h0ID0gW1tbZ2V0VUlJbWFnZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpp
bmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdl
KCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1p
cnJvcmVkXSByZXRhaW5dOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZSkKLSAg
ICAgICAgX2NvbnRlbnRJbWFnZSA9IFtbW2dldFVJSW1hZ2VDbGFzcygpIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCku
Z2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJv
cmVkXSByZXRhaW5dOwotICAgIAorICAgICAgICBfY29udGVudEltYWdlID0gW1tbZ2V0VUlJbWFn
ZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25VcF0gcmV0YWluXTsKKworICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKKyAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGlu
ZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0aXZlSW1h
Z2UoKTsKKyAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICBfY29udGVudElt
YWdlV2l0aG91dFNlbGVjdGlvbiA9IFtbW2dldFVJSW1hZ2VDbGFzcygpIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdIHJldGFpbl07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91
dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOworICAgICAg
ICB9CisgICAgfQorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTY2OSw2ICs2ODgsNyBAQCBw
cml2YXRlOgogICAgIFtfZGF0YUludGVyYWN0aW9uSW1hZ2UgcmVsZWFzZV07CiAgICAgW190ZXh0
UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzIHJlbGVhc2VdOwogICAgIFtfY29udGVudElt
YWdlV2l0aEhpZ2hsaWdodCByZWxlYXNlXTsKKyAgICBbX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb24gcmVsZWFzZV07CiAgICAgW19jb250ZW50SW1hZ2UgcmVsZWFzZV07CiAgICAgCiAgICAg
W3N1cGVyIGRlYWxsb2NdOwpAQCAtMTc4MSw2ICsxODAxLDUzIEBAIHN0YXRpYyB2b2lkIFdlYktp
dEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiB9CiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKElPUykKKworc3RhdGljIFZlY3RvcjxGbG9hdFJlY3Q+IGZsb2F0UmVjdHNGb3JD
R1JlY3RBcnJheShOU0FycmF5PE5TVmFsdWUgKj4gKnJlY3RWYWx1ZXMpCit7CisgICAgVmVjdG9y
PEZsb2F0UmVjdD4gcmVjdHM7CisgICAgZm9yIChOU1ZhbHVlICpyZWN0VmFsdWUgaW4gcmVjdFZh
bHVlcykKKyAgICAgICAgcmVjdHMuYXBwZW5kKHJlY3RWYWx1ZS5DR1JlY3RWYWx1ZSk7CisgICAg
cmV0dXJuIHJlY3RzOworfQorCistIChVSUltYWdlICopX2NyZWF0ZUltYWdlV2l0aFBsYXR0ZXJG
b3JJbWFnZTooVUlJbWFnZSAqKWltYWdlIGJvdW5kaW5nUmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVj
dCBjb250ZW50U2NhbGVGYWN0b3I6KENHRmxvYXQpY29udGVudFNjYWxlRmFjdG9yIGNsaXBwaW5n
UmVjdHM6KE5TQXJyYXk8TlNWYWx1ZSAqPiAqKWNsaXBwaW5nUmVjdHMKK3sKKyAgICBpZiAoIWlt
YWdlKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQ0dGbG9hdCBpbWFnZVNjYWxlRmFjdG9y
ID0gY29udGVudFNjYWxlRmFjdG9yIC8gX3ByaXZhdGUtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCk7CisgICAgQ0dSZWN0IGltYWdlUGFpbnRCb3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIENHUmVj
dEdldFdpZHRoKGJvdW5kaW5nUmVjdCkgKiBpbWFnZVNjYWxlRmFjdG9yLCBDR1JlY3RHZXRIZWln
aHQoYm91bmRpbmdSZWN0KSAqIGltYWdlU2NhbGVGYWN0b3IpOworICAgIFVJR3JhcGhpY3NCZWdp
bkltYWdlQ29udGV4dFdpdGhPcHRpb25zKGltYWdlUGFpbnRCb3VuZHMuc2l6ZSwgTk8sIF9wcml2
YXRlLT5wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBDR0NvbnRleHRSZWYgbmV3Q29u
dGV4dCA9IFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCgpOworCisgICAgYXV0byBzY2FsZWRD
bGlwcGluZ1JlY3RzID0gZmxvYXRSZWN0c0ZvckNHUmVjdEFycmF5KGNsaXBwaW5nUmVjdHMpOwor
ICAgIGZvciAoYXV0byYgdGV4dEJvdW5kaW5nUmVjdCA6IHNjYWxlZENsaXBwaW5nUmVjdHMpCisg
ICAgICAgIHRleHRCb3VuZGluZ1JlY3Quc2NhbGUoaW1hZ2VTY2FsZUZhY3Rvcik7CisKKyAgICBp
ZiAoIXNjYWxlZENsaXBwaW5nUmVjdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gd2ViY29y
ZVBhdGggPSBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZWRSZWN0cyhzY2FsZWRD
bGlwcGluZ1JlY3RzLCA2ICogaW1hZ2VTY2FsZUZhY3Rvcik7CisgICAgICAgIFtbZ2V0VUlCZXpp
ZXJQYXRoQ2xhc3MoKSBiZXppZXJQYXRoV2l0aENHUGF0aDp3ZWJjb3JlUGF0aC5lbnN1cmVQbGF0
Zm9ybVBhdGgoKV0gYWRkQ2xpcF07CisgICAgfQorCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IG1hdGNoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB0ZXh0LCBvciBpZiB0aGUgYmFja2dy
b3VuZCBjYW5ub3QgYmUgY2FwdHVyZWQgYXMgYSBzaW5nbGUgY29sb3IsIHdlIHNob3VsZCBmYWxs
IGJhY2sKKyAgICAvLyB0byBhIGRlZmF1bHQgcmVwcmVzZW50YXRpb24sIGUuZy4gYmxhY2sgdGV4
dCBvbiBhIHdoaXRlIGJhY2tncm91bmQuCisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENv
bG9yKG5ld0NvbnRleHQsIFtbZ2V0VUlDb2xvckNsYXNzKCkgd2hpdGVDb2xvcl0gQ0dDb2xvcl0p
OworICAgIGZvciAoYXV0byB0ZXh0Qm91bmRpbmdSZWN0IDogc2NhbGVkQ2xpcHBpbmdSZWN0cykK
KyAgICAgICAgQ0dDb250ZXh0RmlsbFJlY3QobmV3Q29udGV4dCwgdGV4dEJvdW5kaW5nUmVjdCk7
CisKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obmV3Q29udGV4dCwgMCwgQ0dSZWN0R2V0SGVp
Z2h0KGltYWdlUGFpbnRCb3VuZHMpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShuZXdDb250ZXh0
LCAxLCAtMSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKG5ld0NvbnRleHQsIGltYWdlUGFpbnRC
b3VuZHMsIGltYWdlLkNHSW1hZ2UpOworCisgICAgVUlJbWFnZSAqcHJldmlld0ltYWdlID0gVUlH
cmFwaGljc0dldEltYWdlRnJvbUN1cnJlbnRJbWFnZUNvbnRleHQoKTsKKyAgICBVSUdyYXBoaWNz
RW5kSW1hZ2VDb250ZXh0KCk7CisKKyAgICByZXR1cm4gW3ByZXZpZXdJbWFnZSByZXRhaW5dOwor
fQorCisjZW5kaWYKKwogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKSAmJiBkZWZpbmVkKF9f
Y3BsdXNwbHVzKQogLSAoQk9PTClfcmVxdWVzdFN0YXJ0RGF0YUludGVyYWN0aW9uOihDR1BvaW50
KWNsaWVudFBvc2l0aW9uIGdsb2JhbFBvc2l0aW9uOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uCiB7
CkBAIC0xNzk1LDYgKzE4NjIsMTEgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVw
YWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKICAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JE
YXRhID0gW1tbV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWFn
ZSBzY2FsZTpfcHJpdmF0ZS0+cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKV0gcmV0YWluXTsKIH0K
IAorLSAoV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqKV9kYXRhT3BlcmF0aW9uVGV4dEluZGljYXRv
cgoreworICAgIHJldHVybiBfcHJpdmF0ZS0+ZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3IuZ2V0
KCk7Cit9CisKIC0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilfZ2V0RGF0YUludGVyYWN0aW9u
RGF0YQogewogICAgIHJldHVybiBfcHJpdmF0ZS0+dGV4dEluZGljYXRvckRhdGE7CkBAIC0xODM0
LDYgKzE5MDYsMTEgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRl
cklmTmVjZXNzYXJ5KCkKIC0gKHZvaWQpX2VuZGVkRGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNs
aWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbgogewogfQorCistIChX
ZWJVSVRleHRJbmRpY2F0b3JEYXRhICopX2RhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9yCit7Cisg
ICAgcmV0dXJuIG5pbDsKK30KICNlbmRpZiAvLyBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikgJiYg
ZGVmaW5lZChfX2NwbHVzcGx1cykKIAogc3RhdGljIE5TTXV0YWJsZVNldCAqa25vd25QbHVnaW5N
SU1FVHlwZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
RGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCmluZGV4IGIx
YmM3OGVhNmI5ODMwNmNkZWM4MTc5MjczOTI4NzJmZjZiZDI0ODguLjI1ZjhhM2IwZDllMDRhZGM4
ZDU5ZTc4Njc2ZTg2ODhjMmMwMTIwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmgKQEAgLTI4OCw2ICsyODgsNyBAQCBwcml2YXRlOgogICAgIAogI2lmIEVOQUJMRShE
QVRBX0lOVEVSQUNUSU9OKQogICAgIFdlYlVJVGV4dEluZGljYXRvckRhdGEgKnRleHRJbmRpY2F0
b3JEYXRhOworICAgIFJldGFpblB0cjxXZWJVSVRleHRJbmRpY2F0b3JEYXRhPiBkYXRhT3BlcmF0
aW9uVGV4dEluZGljYXRvcjsKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IDZjMGQzNDAwNWJhNGEyZTNkYjBkNWVmOTUyNWY5NjM2
MWVlNmIxNzUuLmE4OTVjYzYyNjdkM2Y0MzA1MWE1YmEyMDg4ODdmYzRiN2NmM2Y2YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVybmFsLmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaApAQCAtOTIsNyArOTIs
NyBAQCBPQkpDX0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKIAogI2lmIEVOQUJMRShEQVRBX0lO
VEVSQUNUSU9OKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogQGludGVyZmFjZSBXZWJVSVRleHRJ
bmRpY2F0b3JEYXRhIChXZWJVSVRleHRJbmRpY2F0b3JJbnRlcm5hbCkKLS0gKFdlYlVJVGV4dElu
ZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0
b3JEYXRhOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YSYpaW5kaWNhdG9yRGF0YSBzY2FsZToo
Q0dGbG9hdClzY2FsZTsKKy0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdl
OihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JEYXRhOihjb25zdCBXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yRGF0YSYpaW5kaWNhdG9yRGF0YSBzY2FsZTooQ0dGbG9hdClzY2FsZTsKIC0gKFdl
YlVJVGV4dEluZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHNj
YWxlOihDR0Zsb2F0KXNjYWxlOwogQGVuZAogI2VuZGlmCkBAIC0yNTgsNiArMjU4LDcgQEAgT0JK
Q19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKIC0gKHZvaWQpX3NldERhdGFJbnRlcmFjdGlvbkRh
dGE6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4dEluZGljYXRvcjooc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4pdGV4dEluZGljYXRvciBhdENsaWVudFBvc2l0aW9uOihDR1Bv
aW50KWNsaWVudFBvc2l0aW9uIGFuY2hvclBvaW50OihDR1BvaW50KWFuY2hvclBvaW50IGFjdGlv
bjoodWludDY0X3QpYWN0aW9uOworLSAodm9pZClfZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0
aW9uOwogI2VuZGlmCiAKIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5j
ZXMgKilwcmVmZXJlbmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaAppbmRleCA4ZDIxMThjZmE1NDA5MzJkMzk2MWI4OTNhYmFmY2VhODYzMWI4ZDU3Li45MWIz
MTY5ZjMxMzczOTJiNDEwOWRkMzZhMzkxZjhjYmYyMDc2YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC01NSw4ICs1NSw2IEBACiAjZW5kaWYKICNl
bmRpZgogCi0jZGVmaW5lIFdFQktJVF9ESV9CTE9DSyAxCi0KIEBjbGFzcyBVSUltYWdlOwogQGNs
YXNzIE5TRXJyb3I7CiBAY2xhc3MgV2ViRnJhbWU7CkBAIC0xOTEsNyArMTg5LDggQEAgdHlwZWRl
ZiBlbnVtIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIENHRmxvYXQgY29udGVudElt
YWdlU2NhbGVGYWN0b3I7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBVSUltYWdlICpj
b250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0OwogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
VUlJbWFnZSAqY29udGVudEltYWdlOwotCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBV
SUltYWdlICpjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uOworQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgQ0dSZWN0IGNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290
Vmlld0Nvb3JkaW5hdGVzOwogQGVuZAogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKQEAgLTQ2Nyw2
ICs0NjYsNyBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIAogLSAoQk9PTClf
cmVxdWVzdFN0YXJ0RGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2Jh
bFBvc2l0aW9uOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uOwogLSAoV2ViVUlUZXh0SW5kaWNhdG9y
RGF0YSAqKV9nZXREYXRhSW50ZXJhY3Rpb25EYXRhOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBzdHJvbmcsIGdldHRlcj1fZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3IpIFdlYlVJ
VGV4dEluZGljYXRvckRhdGEgKmRhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9yOwogLSAodWludDY0
X3QpX2VudGVyZWREYXRhSW50ZXJhY3Rpb246KGlkKWRhdGFJbnRlcmFjdGlvbiBjbGllbnQ6KENH
UG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJh
dGlvbjoodWludDY0X3Qpb3BlcmF0aW9uOwogLSAodWludDY0X3QpX3VwZGF0ZWREYXRhSW50ZXJh
Y3Rpb246KGlkKWRhdGFJbnRlcmFjdGlvbiBjbGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24g
Z2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0
aW9uOwogLSAodm9pZClfZXhpdGVkRGF0YUludGVyYWN0aW9uOihpZClkYXRhSW50ZXJhY3Rpb24g
Y2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3Np
dGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbjsKQEAgLTQ3NCw2ICs0NzQsNyBAQCBD
b3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKHZvaWQpX2VuZGVkRGF0YUludGVy
YWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludCljbGllbnRQb3Np
dGlvbjsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKKy0gKFVJSW1hZ2UgKilfY3JlYXRlSW1hZ2VX
aXRoUGxhdHRlckZvckltYWdlOihVSUltYWdlICopaW1hZ2UgYm91bmRpbmdSZWN0OihDR1JlY3Qp
Ym91bmRpbmdSZWN0IGNvbnRlbnRTY2FsZUZhY3RvcjooQ0dGbG9hdCljb250ZW50U2NhbGVGYWN0
b3IgY2xpcHBpbmdSZWN0czooTlNBcnJheTxOU1ZhbHVlICo+ICopY2xpcHBpbmdSZWN0czsKIC8v
IERlcHJlY2F0ZWQuIFVzZSAtW1dlYkRhdGFTb3VyY2UgX3F1aWNrTG9va0NvbnRlbnRdIGluc3Rl
YWQuCiAtIChOU0RpY3Rpb25hcnkgKilxdWlja0xvb2tDb250ZW50Rm9yVVJMOihOU1VSTCAqKXVy
bDsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304787</attachid>
            <date>2017-03-17 09:47:28 -0700</date>
            <delta_ts>2017-03-17 11:20:24 -0700</delta_ts>
            <desc>Fix OpenSource iOS builds</desc>
            <filename>bug-169805-20170317094728.patch</filename>
            <type>text/plain</type>
            <size>18079</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkzYTY4MTIyYzU2ZTll
MjJhNmQ2YzQwMjAwOWI0YjA5MjhjZDY5Yy4uNzZlNDliNTZkZjJhMGM3OGEwMjhmNmNjYmE1M2Mz
NTNlNDliOGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAzLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdIFN1cHBv
cnQgYW5pbWF0ZWQgdHJhbnNpdGlvbnMgd2hlbiBwZXJmb3JtaW5nIGEgZGF0YSBpbnRlcmFjdGlv
biBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEwNDU3Njc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBwZXJmb3JtaW5nIGEg
c25hcHNob3QgZXhjbHVkaW5nIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgdXNlIFNjcm9sbGFibGVB
cmVhOjp2aXNpYmxlQ29udGVudFJlY3QgdG8gY29tcHV0ZQorICAgICAgICB0aGUgdmlzaWJsZSBj
b250ZW50IHJlY3QgcmF0aGVyIHRoYW4gRnJhbWVWaWV3Ojp2aXN1YWxWaWV3cG9ydFJlY3QuIElu
IFdlYktpdDEsIHRoZSBsYXR0ZXIgd2lsbCByZXR1cm4gdGhlCisgICAgICAgIGVudGlyZSBjb250
ZW50IHZpZXcncyBib3VuZHMuCisKKyAgICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6dGFrZVNuYXBzaG90cyk6CisKIDIwMTctMDMtMTQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuZGVyRWxlbWVudHMg
c2hvdWxkIHVucmVnaXN0ZXIgZm9yIHZpZXdwb3J0IHZpc2liaWxpdHkgY2FsbGJhY2tzIHdoZW4g
dGhleSBhcmUgZGVzdHJveWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggMDQzNmIzY2VhOGEwNGMyYmJk
YzIwMjk1NjcxYjM0MTY1ZTBiODI2Yi4uMzc4Y2JlZmRlZjdlZmVkYThkYWVjODhkOTk5NDYyMTY3
NDY5N2I0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTAzLTE2ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdIFN1
cHBvcnQgYW5pbWF0ZWQgdHJhbnNpdGlvbnMgd2hlbiBwZXJmb3JtaW5nIGEgZGF0YSBpbnRlcmFj
dGlvbiBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEwNDU3Njc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBXZWJLaXQxIHN1
cHBvcnQgZm9yIGFuaW1hdGVkIHRyYW5zaXRpb25zIHdoZW4gcGVyZm9ybWluZyBhIGRhdGEgaW50
ZXJhY3Rpb24gb3BlcmF0aW9uLiBTZWUgcGVyLW1ldGhvZCBjaGFuZ2VzCisgICAgICAgIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBET00vRE9NRWxlbWVudC5oOgorICAgICAgICAqIERP
TS9ET01FbGVtZW50Lm1tOgorICAgICAgICAoLVtET01FbGVtZW50IGJvdW5kc0luUm9vdFZpZXdT
cGFjZV0pOgorCisgICAgICAgIEludHJvZHVjZSAtW0RPTUVsZW1lbnQgYm91bmRzSW5Sb290Vmll
d1NwYWNlXSwgd2hpY2ggcmV0dXJucyB0aGUgYm91bmRzIG9mIHRoZSBlbGVtZW50IGluIHJvb3Qg
dmlldyBjb29yZGluYXRlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGll
bnQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RHJhZ0NsaWVudC5tbToKKyAgICAgICAgKFdlYkRyYWdDbGllbnQ6OmRpZENvbmNsdWRlRWRpdERy
YWcpOgorCisgICAgICAgIEFkZCBib2lsZXJwbGF0ZSBwbHVtYmluZy4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSBpbml0
V2l0aEltYWdlOnRleHRJbmRpY2F0b3JEYXRhOnNjYWxlOl0pOgorCisgICAgICAgIEFkZCBjb250
ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uIGFuZCBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9u
UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyB0byBXZWJVSVRleHRJbmRpY2F0b3JEYXRhLgorCisg
ICAgICAgIChmbG9hdFJlY3RzRm9yQ0dSZWN0QXJyYXkpOgorICAgICAgICAoLVtXZWJWaWV3IF9j
cmVhdGVJbWFnZVdpdGhQbGF0dGVyRm9ySW1hZ2U6Ym91bmRpbmdSZWN0OmNvbnRlbnRTY2FsZUZh
Y3RvcjpjbGlwcGluZ1JlY3RzOl0pOgorCisgICAgICAgIEludHJvZHVjZXMgYSBTUEkgaGVscGVy
IG1ldGhvZCBpbiBXZWJWaWV3IHRoYXQgY2xpZW50cyBjYW4gdXNlIHRvIGdlbmVyYXRlIGFuIGlt
YWdlIG9mIGEgdGV4dCBwbGF0dGVyIGdpdmVuIGFuCisgICAgICAgIGltYWdlIG9mIHNvbWUgdGV4
dCwgYXMgd2VsbCBhcyBjbGlwcGluZyByZWN0cyB0byBhcHBseSB0byB0aGUgaW1hZ2UuCisKKyAg
ICAgICAgKC1bV2ViVmlldyBfZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3JdKToKKworICAgICAg
ICBBZGQgU1BJIHRvIGZldGNoIHRoZSB0ZXh0IGluZGljYXRvciB1c2VkIHRvIGRyaXZlIGFuaW1h
dGlvbnMgZm9yIHRoZSBjdXJyZW50IGRhdGEgb3BlcmF0aW9uLgorCisgICAgICAgICgtW1dlYlZp
ZXcgX2RpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlld0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAxNy0wMy0xNCAgTWVnYW4gR2Fy
ZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENvcnJlY3RseSBleHBv
cnQgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRv
ci5jcHAKaW5kZXggM2ExM2E1MjIwNmUwZmMxMmM2OGQ3ODZlYjY5NTU2YzdiZTczZjBmZC4uOTdk
YmE0OTU4OGJjZmZjYzE1YTU1ZGM1MTgwZDU1ZjFlYzY2NTE2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1RleHRJbmRpY2F0b3IuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIGJvb2wgdGFrZVNu
YXBzaG90cyhUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwgRnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNu
YXBzaG8KIAogICAgIGlmIChkYXRhLm9wdGlvbnMgJiBUZXh0SW5kaWNhdG9yT3B0aW9uSW5jbHVk
ZVNuYXBzaG90T2ZBbGxWaXNpYmxlQ29udGVudFdpdGhvdXRTZWxlY3Rpb24pIHsKICAgICAgICAg
ZmxvYXQgc25hcHNob3RTY2FsZUZhY3RvcjsKLSAgICAgICAgYXV0byBzbmFwc2hvdFJlY3QgPSBl
bmNsb3NpbmdJbnRSZWN0KGZyYW1lLnZpZXcoKS0+dmlzdWFsVmlld3BvcnRSZWN0KCkpOworICAg
ICAgICBhdXRvIHNuYXBzaG90UmVjdCA9IGZyYW1lLnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0
KCk7CiAgICAgICAgIGRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiA9IHRha2VTbmFw
c2hvdChmcmFtZSwgc25hcHNob3RSZWN0LCBTbmFwc2hvdE9wdGlvbnNQYWludEV2ZXJ5dGhpbmdF
eGNsdWRpbmdTZWxlY3Rpb24sIHNuYXBzaG90U2NhbGVGYWN0b3IsIHsgfSk7CiAgICAgICAgIGRh
dGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMg
PSBmcmFtZS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhzbmFwc2hvdFJlY3QpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5oCmluZGV4IDBjNGNmZTFjZGUyZjFjOTY1MjljNWQw
OWE1NzZiYTllNmE0Yzc5M2YuLjk3MTg3OGUwZGU0Y2RjMDIzZTYzNDJhNDY5OGQ0MmEyYzFkMzI1
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQuaApAQCAtMjUsNiArMjUsMTAgQEAKIAog
I2ltcG9ydCA8V2ViS2l0TGVnYWN5L0RPTU5vZGUuaD4KIAorI2lmIFRBUkdFVF9PU19JUEhPTkUK
KyNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgorCiBAY2xhc3Mg
RE9NQXR0cjsKIEBjbGFzcyBET01DU1NTdHlsZURlY2xhcmF0aW9uOwogQGNsYXNzIERPTUVsZW1l
bnQ7CkBAIC02Miw2ICs2NiwxMCBAQCBXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQygxMF80KQog
QHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpsYXN0RWxlbWVudENoaWxk
IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwogQHByb3BlcnR5IChyZWFkb25seSkgdW5zaWdu
ZWQgY2hpbGRFbGVtZW50Q291bnQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7CiAKKyNpZiBU
QVJHRVRfT1NfSVBIT05FCitAcHJvcGVydHkgKHJlYWRvbmx5KSBDR1JlY3QgYm91bmRzSW5Sb290
Vmlld1NwYWNlOworI2VuZGlmCisKIC0gKE5TU3RyaW5nICopZ2V0QXR0cmlidXRlOihOU1N0cmlu
ZyAqKW5hbWU7CiAtICh2b2lkKXNldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lIHZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwogLSAodm9pZClyZW1v
dmVBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01FbGVtZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQu
bW0KaW5kZXggZjU3MzNhOTJjZDQzNzAxYzc0YWYzOWRiNTUyNTk4NzM4NGUyMDBlNy4uNmQxODNj
OTNmYzNjNTBkZjRjOTFmYjY5NzZkZGUyMzQ5MGZiYTkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RP
TUVsZW1lbnQubW0KQEAgLTI2OSw2ICsyNjksMTUgQEAgRE9NRWxlbWVudCAqa2l0KFdlYkNvcmU6
OkVsZW1lbnQqIHZhbHVlKQogICAgIHJldHVybiB1bndyYXAoKnNlbGYpLmNoaWxkRWxlbWVudENv
dW50KCk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCistIChDR1JlY3QpYm91bmRzSW5Sb290Vmll
d1NwYWNlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IGF1dG8gYm91bmRzID0gdW53cmFwKCpzZWxmKS5ib3VuZHNJblJvb3RWaWV3U3BhY2UoKTsKKyAg
ICByZXR1cm4gQ0dSZWN0TWFrZShib3VuZHMueCgpLCBib3VuZHMueSgpLCBib3VuZHMud2lkdGgo
KSwgYm91bmRzLmhlaWdodCgpKTsKK30KKyNlbmRpZgorCiAtIChOU1N0cmluZyAqKWdldEF0dHJp
YnV0ZTooTlNTdHJpbmcgKiluYW1lCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRHJh
Z0NsaWVudC5oCmluZGV4IGU2OTZkMGVjMzA0NjgzOGMwNDRjYWQwN2RhNDJkODBhODI4NjIxZWMu
LjEyOGYxZTFjMmJkNWQxMmQwYzJmZjc5OTE2NzMwNjBiYjU5NzllMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgdm9pZCBk
ZWNsYXJlQW5kV3JpdGVBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdl
YkNvcmU6OkVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIGRpZENvbmNsdWRl
RWRpdERyYWcoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERyYWcoKSBv
dmVycmlkZTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyogbV93ZWJWaWV3OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IDAx
YjlmNjVkOTkyMzA3MTNiMjAxZmY0ODQ3ZDIzNTI2ODA1ZTMwMTAuLmM4YjA1M2MzMDVlZDZkNDUw
YjFmNDdlNTJmMjAxMjNhMDgxNmY4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtNzYsNiArNzYsMTAgQEAgYm9vbCBXZWJE
cmFnQ2xpZW50Ojp1c2VMZWdhY3lEcmFnQ2xpZW50KCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K3ZvaWQgV2ViRHJhZ0NsaWVudDo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCit7Cit9CisKIHN0YXRp
YyBXZWJIVE1MVmlldyAqZ2V0VG9wSFRNTFZpZXcoRnJhbWUqIGZyYW1lKQogewogICAgIEFTU0VS
VChmcmFtZSk7CkBAIC0xODUsNiArMTg5LDExIEBAIGJvb2wgV2ViRHJhZ0NsaWVudDo6dXNlTGVn
YWN5RHJhZ0NsaWVudCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQorCit2b2lkIFdlYkRyYWdD
bGllbnQ6OmRpZENvbmNsdWRlRWRpdERyYWcoKQoreworfQorCiBXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24gV2ViRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmKQogewogICAgIHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25Ob25lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDhkMzVmYzEwYWE1YWJhNGU3MjU0
MmRmNjhmZWYxZTI1MTQzNTk3ZjAuLjhhOWE5YjRlOGJlZjNlOTQ0Nzc3YTg1YzY2Mjc4MGVjZTFk
ZDg1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE3Niw2ICsxNzYs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYWdlQ2FjaGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZUNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1BhdGhVdGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1FdmVu
dEZhY3RvcnlNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1JlbmRlclZpZXcuaD4KQEAgLTMyMCw5ICszMjEsMTcgQEAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCisjaW1wb3J0IDxVSUtpdC9VSUJlemllclBh
dGguaD4KKyNpbXBvcnQgPFVJS2l0L1VJQ29sb3IuaD4KICNpbXBvcnQgPFVJS2l0L1VJSW1hZ2Uu
aD4KIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
QmV6aWVyUGF0aCkKK1NPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlDb2xvcikKIFNPRlRfTElOS19D
TEFTUyhVSUtpdCwgVUlJbWFnZSkKK1NPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0JlZ2luSW1h
Z2VDb250ZXh0V2l0aE9wdGlvbnMsIHZvaWQsIChDR1NpemUgc2l6ZSwgQk9PTCBvcGFxdWUsIENH
RmxvYXQgc2NhbGUpLCAoc2l6ZSwgb3BhcXVlLCBzY2FsZSkpCitTT0ZUX0xJTksoVUlLaXQsIFVJ
R3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCwgQ0dDb250ZXh0UmVmLCAodm9pZCksICgpKQorU09G
VF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29udGV4dCwg
VUlJbWFnZSAqLCAodm9pZCksICgpKQorU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzRW5kSW1h
Z2VDb250ZXh0LCB2b2lkLCAodm9pZCksICgpKQogI2VuZGlmCiAKICNpZiBIQVZFKFRPVUNIX0JB
UikgJiYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQpAQCAtNjI2LDEzICs2
MzUsMTUgQEAgcHJpdmF0ZToKIEBzeW50aGVzaXplIHRleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3
Q29vcmRpbmF0ZXM9X3RleHRCb3VuZGluZ1JlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7CiBAc3lu
dGhlc2l6ZSB0ZXh0UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzPV90ZXh0UmVjdHNJbkJv
dW5kaW5nUmVjdENvb3JkaW5hdGVzOwogQHN5bnRoZXNpemUgY29udGVudEltYWdlV2l0aEhpZ2hs
aWdodD1fY29udGVudEltYWdlV2l0aEhpZ2hsaWdodDsKK0BzeW50aGVzaXplIGNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb249X2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb247CitAc3ludGhl
c2l6ZSBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRl
cz1fY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM7
CiBAc3ludGhlc2l6ZSBjb250ZW50SW1hZ2U9X2NvbnRlbnRJbWFnZTsKIAogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAoV2ViVUlUZXh0SW5kaWNhdG9ySW50
ZXJuYWwpCiAKLS0gKFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0lt
YWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JEYXRhOihXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0
YSAmKWluZGljYXRvckRhdGEgc2NhbGU6KENHRmxvYXQpc2NhbGUKKy0gKFdlYlVJVGV4dEluZGlj
YXRvckRhdGEgKilpbml0V2l0aEltYWdlOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3JE
YXRhOihjb25zdCBUZXh0SW5kaWNhdG9yRGF0YSYpaW5kaWNhdG9yRGF0YSBzY2FsZTooQ0dGbG9h
dClzY2FsZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtNjQ5LDggKzY2MCwxNiBAQCBwcml2YXRlOgogICAgIGlmIChpbmRpY2F0b3JE
YXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQpCiAgICAgICAgIF9jb250ZW50SW1hZ2VXaXRo
SGlnaGxpZ2h0ID0gW1tbZ2V0VUlJbWFnZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpp
bmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQuZ2V0KCktPm5hdGl2ZUltYWdl
KCkuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1p
cnJvcmVkXSByZXRhaW5dOwogICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZSkKLSAg
ICAgICAgX2NvbnRlbnRJbWFnZSA9IFtbW2dldFVJSW1hZ2VDbGFzcygpIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCku
Z2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uRG93bk1pcnJv
cmVkXSByZXRhaW5dOwotICAgIAorICAgICAgICBfY29udGVudEltYWdlID0gW1tbZ2V0VUlJbWFn
ZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTppbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFn
ZS5nZXQoKS0+bmF0aXZlSW1hZ2UoKS5nZXQoKSBzY2FsZTpzY2FsZSBvcmllbnRhdGlvbjpVSUlt
YWdlT3JpZW50YXRpb25VcF0gcmV0YWluXTsKKworICAgIGlmIChpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24pIHsKKyAgICAgICAgYXV0byBuYXRpdmVJbWFnZSA9IGlu
ZGljYXRvckRhdGEuY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbi5nZXQoKS0+bmF0aXZlSW1h
Z2UoKTsKKyAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICBfY29udGVudElt
YWdlV2l0aG91dFNlbGVjdGlvbiA9IFtbW2dldFVJSW1hZ2VDbGFzcygpIGFsbG9jXSBpbml0V2l0
aENHSW1hZ2U6bmF0aXZlSW1hZ2UuZ2V0KCkgc2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFn
ZU9yaWVudGF0aW9uVXBdIHJldGFpbl07CisgICAgICAgICAgICBfY29udGVudEltYWdlV2l0aG91
dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBpbmRpY2F0b3JEYXRhLmNvbnRl
bnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOworICAgICAg
ICB9CisgICAgfQorCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTY2OSw2ICs2ODgsNyBAQCBw
cml2YXRlOgogICAgIFtfZGF0YUludGVyYWN0aW9uSW1hZ2UgcmVsZWFzZV07CiAgICAgW190ZXh0
UmVjdHNJbkJvdW5kaW5nUmVjdENvb3JkaW5hdGVzIHJlbGVhc2VdOwogICAgIFtfY29udGVudElt
YWdlV2l0aEhpZ2hsaWdodCByZWxlYXNlXTsKKyAgICBbX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxl
Y3Rpb24gcmVsZWFzZV07CiAgICAgW19jb250ZW50SW1hZ2UgcmVsZWFzZV07CiAgICAgCiAgICAg
W3N1cGVyIGRlYWxsb2NdOwpAQCAtMTc5NSwxMSArMTgxNSw1OSBAQCBzdGF0aWMgdm9pZCBXZWJL
aXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgICAgICBfcHJpdmF0
ZS0+dGV4dEluZGljYXRvckRhdGEgPSBbW1tXZWJVSVRleHRJbmRpY2F0b3JEYXRhIGFsbG9jXSBp
bml0V2l0aEltYWdlOmltYWdlIHNjYWxlOl9wcml2YXRlLT5wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpXSByZXRhaW5dOwogfQogCistIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopX2RhdGFPcGVy
YXRpb25UZXh0SW5kaWNhdG9yCit7CisgICAgcmV0dXJuIF9wcml2YXRlLT5kYXRhT3BlcmF0aW9u
VGV4dEluZGljYXRvci5nZXQoKTsKK30KKwogLSAoV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqKV9n
ZXREYXRhSW50ZXJhY3Rpb25EYXRhCiB7CiAgICAgcmV0dXJuIF9wcml2YXRlLT50ZXh0SW5kaWNh
dG9yRGF0YTsKIH0KIAorc3RhdGljIFZlY3RvcjxGbG9hdFJlY3Q+IGZsb2F0UmVjdHNGb3JDR1Jl
Y3RBcnJheShOU0FycmF5PE5TVmFsdWUgKj4gKnJlY3RWYWx1ZXMpCit7CisgICAgVmVjdG9yPEZs
b2F0UmVjdD4gcmVjdHM7CisgICAgZm9yIChOU1ZhbHVlICpyZWN0VmFsdWUgaW4gcmVjdFZhbHVl
cykKKyAgICAgICAgcmVjdHMuYXBwZW5kKHJlY3RWYWx1ZS5DR1JlY3RWYWx1ZSk7CisgICAgcmV0
dXJuIHJlY3RzOworfQorCistIChVSUltYWdlICopX2NyZWF0ZUltYWdlV2l0aFBsYXR0ZXJGb3JJ
bWFnZTooVUlJbWFnZSAqKWltYWdlIGJvdW5kaW5nUmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdCBj
b250ZW50U2NhbGVGYWN0b3I6KENHRmxvYXQpY29udGVudFNjYWxlRmFjdG9yIGNsaXBwaW5nUmVj
dHM6KE5TQXJyYXk8TlNWYWx1ZSAqPiAqKWNsaXBwaW5nUmVjdHMKK3sKKyAgICBpZiAoIWltYWdl
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQ0dGbG9hdCBpbWFnZVNjYWxlRmFjdG9yID0g
Y29udGVudFNjYWxlRmFjdG9yIC8gX3ByaXZhdGUtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7
CisgICAgQ0dSZWN0IGltYWdlUGFpbnRCb3VuZHMgPSBDR1JlY3RNYWtlKDAsIDAsIENHUmVjdEdl
dFdpZHRoKGJvdW5kaW5nUmVjdCkgKiBpbWFnZVNjYWxlRmFjdG9yLCBDR1JlY3RHZXRIZWlnaHQo
Ym91bmRpbmdSZWN0KSAqIGltYWdlU2NhbGVGYWN0b3IpOworICAgIFVJR3JhcGhpY3NCZWdpbklt
YWdlQ29udGV4dFdpdGhPcHRpb25zKGltYWdlUGFpbnRCb3VuZHMuc2l6ZSwgTk8sIF9wcml2YXRl
LT5wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBDR0NvbnRleHRSZWYgbmV3Q29udGV4
dCA9IFVJR3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCgpOworCisgICAgYXV0byBzY2FsZWRDbGlw
cGluZ1JlY3RzID0gZmxvYXRSZWN0c0ZvckNHUmVjdEFycmF5KGNsaXBwaW5nUmVjdHMpOworICAg
IGZvciAoYXV0byYgdGV4dEJvdW5kaW5nUmVjdCA6IHNjYWxlZENsaXBwaW5nUmVjdHMpCisgICAg
ICAgIHRleHRCb3VuZGluZ1JlY3Quc2NhbGUoaW1hZ2VTY2FsZUZhY3Rvcik7CisKKyAgICBpZiAo
IXNjYWxlZENsaXBwaW5nUmVjdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gd2ViY29yZVBh
dGggPSBQYXRoVXRpbGl0aWVzOjpwYXRoV2l0aFNocmlua1dyYXBwZWRSZWN0cyhzY2FsZWRDbGlw
cGluZ1JlY3RzLCA2ICogaW1hZ2VTY2FsZUZhY3Rvcik7CisgICAgICAgIFtbZ2V0VUlCZXppZXJQ
YXRoQ2xhc3MoKSBiZXppZXJQYXRoV2l0aENHUGF0aDp3ZWJjb3JlUGF0aC5lbnN1cmVQbGF0Zm9y
bVBhdGgoKV0gYWRkQ2xpcF07CisgICAgfQorCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG1h
dGNoIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB0ZXh0LCBvciBpZiB0aGUgYmFja2dyb3Vu
ZCBjYW5ub3QgYmUgY2FwdHVyZWQgYXMgYSBzaW5nbGUgY29sb3IsIHdlIHNob3VsZCBmYWxsIGJh
Y2sKKyAgICAvLyB0byBhIGRlZmF1bHQgcmVwcmVzZW50YXRpb24sIGUuZy4gYmxhY2sgdGV4dCBv
biBhIHdoaXRlIGJhY2tncm91bmQuCisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9y
KG5ld0NvbnRleHQsIFtbZ2V0VUlDb2xvckNsYXNzKCkgd2hpdGVDb2xvcl0gQ0dDb2xvcl0pOwor
ICAgIGZvciAoYXV0byB0ZXh0Qm91bmRpbmdSZWN0IDogc2NhbGVkQ2xpcHBpbmdSZWN0cykKKyAg
ICAgICAgQ0dDb250ZXh0RmlsbFJlY3QobmV3Q29udGV4dCwgdGV4dEJvdW5kaW5nUmVjdCk7CisK
KyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0obmV3Q29udGV4dCwgMCwgQ0dSZWN0R2V0SGVpZ2h0
KGltYWdlUGFpbnRCb3VuZHMpKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShuZXdDb250ZXh0LCAx
LCAtMSk7CisgICAgQ0dDb250ZXh0RHJhd0ltYWdlKG5ld0NvbnRleHQsIGltYWdlUGFpbnRCb3Vu
ZHMsIGltYWdlLkNHSW1hZ2UpOworCisgICAgVUlJbWFnZSAqcHJldmlld0ltYWdlID0gVUlHcmFw
aGljc0dldEltYWdlRnJvbUN1cnJlbnRJbWFnZUNvbnRleHQoKTsKKyAgICBVSUdyYXBoaWNzRW5k
SW1hZ2VDb250ZXh0KCk7CisKKyAgICByZXR1cm4gW3ByZXZpZXdJbWFnZSByZXRhaW5dOworfQor
CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykgJiYgX19oYXNfaW5jbHVkZSg8V2ViS2l0QWRk
aXRpb25zL1dlYlZpZXdBZGRpdGlvbnMubW0+KQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9X
ZWJWaWV3QWRkaXRpb25zLm1tPgogI2VuZGlmCkBAIC0xODM0LDYgKzE5MDIsMTkgQEAgc3RhdGlj
IHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKIC0gKHZv
aWQpX2VuZGVkRGF0YUludGVyYWN0aW9uOihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDoo
Q0dQb2ludClnbG9iYWxQb3NpdGlvbgogewogfQorCistIChXZWJVSVRleHRJbmRpY2F0b3JEYXRh
ICopX2RhdGFPcGVyYXRpb25UZXh0SW5kaWNhdG9yCit7CisgICAgcmV0dXJuIG5pbDsKK30KKwor
I2lmIFBMQVRGT1JNKElPUykKKy0gKFVJSW1hZ2UgKilfY3JlYXRlSW1hZ2VXaXRoUGxhdHRlckZv
ckltYWdlOihVSUltYWdlICopaW1hZ2UgYm91bmRpbmdSZWN0OihDR1JlY3QpYm91bmRpbmdSZWN0
IGNvbnRlbnRTY2FsZUZhY3RvcjooQ0dGbG9hdCljb250ZW50U2NhbGVGYWN0b3IgY2xpcHBpbmdS
ZWN0czooTlNBcnJheTxOU1ZhbHVlICo+ICopY2xpcHBpbmdSZWN0cworeworICAgIHJldHVybiBu
aWw7Cit9CisjZW5kaWYKKwogI2VuZGlmIC8vIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9OKSAmJiBk
ZWZpbmVkKF9fY3BsdXNwbHVzKQogCiBzdGF0aWMgTlNNdXRhYmxlU2V0ICprbm93blBsdWdpbk1J
TUVUeXBlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdE
YXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggYjFi
Yzc4ZWE2Yjk4MzA2Y2RlYzgxNzkyNzM5Mjg3MmZmNmJkMjQ4OC4uMjVmOGEzYjBkOWUwNGFkYzhk
NTllNzg2NzZlODY4OGMyYzAxMjBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaApAQCAtMjg4LDYgKzI4OCw3IEBAIHByaXZhdGU6CiAgICAgCiAjaWYgRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pCiAgICAgV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqdGV4dEluZGljYXRv
ckRhdGE7CisgICAgUmV0YWluUHRyPFdlYlVJVGV4dEluZGljYXRvckRhdGE+IGRhdGFPcGVyYXRp
b25UZXh0SW5kaWNhdG9yOwogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlld0ludGVybmFsLmgKaW5kZXggNmMwZDM0MDA1YmE0YTJlM2RiMGQ1ZWY5NTI1Zjk2MzYx
ZWU2YjE3NS4uYTg5NWNjNjI2N2QzZjQzMDUxYTViYTIwODg4N2ZjNGI3Y2YzZjZjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oCkBAIC05Miw3ICs5Miw3
IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogCiAjaWYgRU5BQkxFKERBVEFfSU5U
RVJBQ1RJT04pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCiBAaW50ZXJmYWNlIFdlYlVJVGV4dElu
ZGljYXRvckRhdGEgKFdlYlVJVGV4dEluZGljYXRvckludGVybmFsKQotLSAoV2ViVUlUZXh0SW5k
aWNhdG9yRGF0YSAqKWluaXRXaXRoSW1hZ2U6KENHSW1hZ2VSZWYpaW1hZ2UgdGV4dEluZGljYXRv
ckRhdGE6KFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJilpbmRpY2F0b3JEYXRhIHNjYWxlOihD
R0Zsb2F0KXNjYWxlOworLSAoV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAqKWluaXRXaXRoSW1hZ2U6
KENHSW1hZ2VSZWYpaW1hZ2UgdGV4dEluZGljYXRvckRhdGE6KGNvbnN0IFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3JEYXRhJilpbmRpY2F0b3JEYXRhIHNjYWxlOihDR0Zsb2F0KXNjYWxlOwogLSAoV2Vi
VUlUZXh0SW5kaWNhdG9yRGF0YSAqKWluaXRXaXRoSW1hZ2U6KENHSW1hZ2VSZWYpaW1hZ2Ugc2Nh
bGU6KENHRmxvYXQpc2NhbGU7CiBAZW5kCiAjZW5kaWYKQEAgLTI1OCw2ICsyNTgsNyBAQCBPQkpD
X0NMQVNTIE5TVGV4dEFsdGVybmF0aXZlczsKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogLSAodm9pZClfc2V0RGF0YUludGVyYWN0aW9uRGF0
YTooQ0dJbWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yOihzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhPil0ZXh0SW5kaWNhdG9yIGF0Q2xpZW50UG9zaXRpb246KENHUG9p
bnQpY2xpZW50UG9zaXRpb24gYW5jaG9yUG9pbnQ6KENHUG9pbnQpYW5jaG9yUG9pbnQgYWN0aW9u
Oih1aW50NjRfdClhY3Rpb247CistICh2b2lkKV9kaWRDb25jbHVkZUVkaXREYXRhSW50ZXJhY3Rp
b247CiAjZW5kaWYKIAogLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbmNl
cyAqKXByZWZlcmVuY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IDhkMjExOGNmYTU0MDkzMmQzOTYxYjg5M2FiYWZjZWE4NjMxYjhkNTcuLjkxYjMx
NjlmMzEzNzM5MmI0MTA5ZGQzNmEzOTFmOGNiZjIwNzZhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTU1LDggKzU1LDYgQEAKICNlbmRpZgogI2Vu
ZGlmCiAKLSNkZWZpbmUgV0VCS0lUX0RJX0JMT0NLIDEKLQogQGNsYXNzIFVJSW1hZ2U7CiBAY2xh
c3MgTlNFcnJvcjsKIEBjbGFzcyBXZWJGcmFtZTsKQEAgLTE5MSw3ICsxODksOCBAQCB0eXBlZGVm
IGVudW0gewogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgQ0dGbG9hdCBjb250ZW50SW1h
Z2VTY2FsZUZhY3RvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFVJSW1hZ2UgKmNv
bnRlbnRJbWFnZVdpdGhIaWdobGlnaHQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBV
SUltYWdlICpjb250ZW50SW1hZ2U7Ci0KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFVJ
SW1hZ2UgKmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb247CitAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduKSBDR1JlY3QgY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RW
aWV3Q29vcmRpbmF0ZXM7CiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpAQCAtNDY3LDYg
KzQ2Niw3IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogCiAtIChCT09MKV9y
ZXF1ZXN0U3RhcnREYXRhSW50ZXJhY3Rpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFs
UG9zaXRpb246KENHUG9pbnQpZ2xvYmFsUG9zaXRpb247CiAtIChXZWJVSVRleHRJbmRpY2F0b3JE
YXRhICopX2dldERhdGFJbnRlcmFjdGlvbkRhdGE7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIHN0cm9uZywgZ2V0dGVyPV9kYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcikgV2ViVUlU
ZXh0SW5kaWNhdG9yRGF0YSAqZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3I7CiAtICh1aW50NjRf
dClfZW50ZXJlZERhdGFJbnRlcmFjdGlvbjooaWQpZGF0YUludGVyYWN0aW9uIGNsaWVudDooQ0dQ
b2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0
aW9uOih1aW50NjRfdClvcGVyYXRpb247CiAtICh1aW50NjRfdClfdXBkYXRlZERhdGFJbnRlcmFj
dGlvbjooaWQpZGF0YUludGVyYWN0aW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBn
bG9iYWw6KENHUG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRp
b247CiAtICh2b2lkKV9leGl0ZWREYXRhSW50ZXJhY3Rpb246KGlkKWRhdGFJbnRlcmFjdGlvbiBj
bGllbnQ6KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0
aW9uIG9wZXJhdGlvbjoodWludDY0X3Qpb3BlcmF0aW9uOwpAQCAtNDc0LDYgKzQ3NCw3IEBAIENv
dWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9pZClfZW5kZWREYXRhSW50ZXJh
Y3Rpb246KENHUG9pbnQpY2xpZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWNsaWVudFBvc2l0
aW9uOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQorLSAoVUlJbWFnZSAqKV9jcmVhdGVJbWFnZVdp
dGhQbGF0dGVyRm9ySW1hZ2U6KFVJSW1hZ2UgKilpbWFnZSBib3VuZGluZ1JlY3Q6KENHUmVjdCli
b3VuZGluZ1JlY3QgY29udGVudFNjYWxlRmFjdG9yOihDR0Zsb2F0KWNvbnRlbnRTY2FsZUZhY3Rv
ciBjbGlwcGluZ1JlY3RzOihOU0FycmF5PE5TVmFsdWUgKj4gKiljbGlwcGluZ1JlY3RzOwogLy8g
RGVwcmVjYXRlZC4gVXNlIC1bV2ViRGF0YVNvdXJjZSBfcXVpY2tMb29rQ29udGVudF0gaW5zdGVh
ZC4KIC0gKE5TRGljdGlvbmFyeSAqKXF1aWNrTG9va0NvbnRlbnRGb3JVUkw6KE5TVVJMICopdXJs
OwogI2VuZGlmCg==
</data>
<flag name="review"
          id="326282"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304802</attachid>
            <date>2017-03-17 11:50:10 -0700</date>
            <delta_ts>2017-03-17 12:30:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-169805-20170317115009.patch</filename>
            <type>text/plain</type>
            <size>18039</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDkzYTY4MTIyYzU2ZTll
MjJhNmQ2YzQwMjAwOWI0YjA5MjhjZDY5Yy4uZmQwYjA3N2RiYzQzOTY0OTY5MTcxZTNiY2U3MGU5
NDAyNDlhYjFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAzLTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzFdIFN1cHBv
cnQgYW5pbWF0ZWQgdHJhbnNpdGlvbnMgd2hlbiBwZXJmb3JtaW5nIGEgZGF0YSBpbnRlcmFjdGlv
biBvcGVyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2OTgwNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzEwNDU3Njc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQmV0aCBEYWtpbiBhbmQgTWVnYW4gR2FyZG5lci4KKworICAgICAgICBXaGVu
IHBlcmZvcm1pbmcgYSBzbmFwc2hvdCBleGNsdWRpbmcgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLCB1
c2UgU2Nyb2xsYWJsZUFyZWE6OnZpc2libGVDb250ZW50UmVjdCB0byBjb21wdXRlCisgICAgICAg
IHRoZSB2aXNpYmxlIGNvbnRlbnQgcmVjdCByYXRoZXIgdGhhbiBGcmFtZVZpZXc6OnZpc3VhbFZp
ZXdwb3J0UmVjdC4gSW4gV2ViS2l0MSwgdGhlIGxhdHRlciB3aWxsIHJldHVybiB0aGUKKyAgICAg
ICAgZW50aXJlIGNvbnRlbnQgdmlldydzIGJvdW5kcy4KKworICAgICAgICAqIHBhZ2UvVGV4dElu
ZGljYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0YWtlU25hcHNob3RzKToKKwogMjAxNy0w
My0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW5kZXJFbGVtZW50cyBzaG91bGQgdW5yZWdpc3RlciBmb3Igdmlld3BvcnQgdmlzaWJpbGl0eSBj
YWxsYmFja3Mgd2hlbiB0aGV5IGFyZSBkZXN0cm95ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAwNDM2
YjNjZWE4YTA0YzJiYmRjMjAyOTU2NzFiMzQxNjVlMGI4MjZiLi5hNDM3ZmZmMWVkYjhlZGIyZmU5
OWIwM2VmYzhkOGI3ZmRhMzJjYjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAK
KzIwMTctMDMtMTYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dLMV0gU3VwcG9ydCBhbmltYXRlZCB0cmFuc2l0aW9ucyB3aGVuIHBlcmZvcm1pbmcg
YSBkYXRhIGludGVyYWN0aW9uIG9wZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5ODA1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMTA0
NTc2Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luIGFuZCBNZWdhbiBHYXJkbmVy
LgorCisgICAgICAgIEFkZHMgV2ViS2l0MSBzdXBwb3J0IGZvciBhbmltYXRlZCB0cmFuc2l0aW9u
cyB3aGVuIHBlcmZvcm1pbmcgYSBkYXRhIGludGVyYWN0aW9uIG9wZXJhdGlvbi4gU2VlIHBlci1t
ZXRob2QgY2hhbmdlcworICAgICAgICBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogRE9N
L0RPTUVsZW1lbnQuaDoKKyAgICAgICAgKiBET00vRE9NRWxlbWVudC5tbToKKyAgICAgICAgKC1b
RE9NRWxlbWVudCBib3VuZHNJblJvb3RWaWV3U3BhY2VdKToKKworICAgICAgICBJbnRyb2R1Y2Ug
LVtET01FbGVtZW50IGJvdW5kc0luUm9vdFZpZXdTcGFjZV0sIHdoaWNoIHJldHVybnMgdGhlIGJv
dW5kcyBvZiB0aGUgZWxlbWVudCBpbiByb290IHZpZXcgY29vcmRpbmF0ZXMuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICgpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJE
cmFnQ2xpZW50OjpkaWRDb25jbHVkZUVkaXREcmFnKToKKworICAgICAgICBBZGQgYm9pbGVycGxh
dGUgcGx1bWJpbmcuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlVJVGV4dEluZGljYXRvckRhdGEgaW5pdFdpdGhJbWFnZTp0ZXh0SW5kaWNhdG9yRGF0YTpz
Y2FsZTpdKToKKworICAgICAgICBBZGQgY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbiBhbmQg
Y29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgdG8g
V2ViVUlUZXh0SW5kaWNhdG9yRGF0YS4KKworICAgICAgICAoZmxvYXRSZWN0c0ZvckNHUmVjdEFy
cmF5KToKKyAgICAgICAgKC1bV2ViVmlldyBfY3JlYXRlSW1hZ2VXaXRoUGxhdHRlckZvckltYWdl
OmJvdW5kaW5nUmVjdDpjb250ZW50U2NhbGVGYWN0b3I6Y2xpcHBpbmdSZWN0czpdKToKKworICAg
ICAgICBJbnRyb2R1Y2VzIGEgU1BJIGhlbHBlciBtZXRob2QgaW4gV2ViVmlldyB0aGF0IGNsaWVu
dHMgY2FuIHVzZSB0byBnZW5lcmF0ZSBhbiBpbWFnZSBvZiBhIHRleHQgcGxhdHRlciBnaXZlbiBh
bgorICAgICAgICBpbWFnZSBvZiBzb21lIHRleHQsIGFzIHdlbGwgYXMgY2xpcHBpbmcgcmVjdHMg
dG8gYXBwbHkgdG8gdGhlIGltYWdlLgorCisgICAgICAgICgtW1dlYlZpZXcgX2RhdGFPcGVyYXRp
b25UZXh0SW5kaWNhdG9yXSk6CisKKyAgICAgICAgQWRkIFNQSSB0byBmZXRjaCB0aGUgdGV4dCBp
bmRpY2F0b3IgdXNlZCB0byBkcml2ZSBhbmltYXRpb25zIGZvciB0aGUgY3VycmVudCBkYXRhIG9w
ZXJhdGlvbi4KKworICAgICAgICAoLVtXZWJWaWV3IF9kaWRDb25jbHVkZUVkaXREYXRhSW50ZXJh
Y3Rpb25dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLmg6CisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRl
Lmg6CisKIDIwMTctMDMtMTQgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb3JyZWN0bHkgZXhwb3J0IFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCmluZGV4IDNhMTNhNTIyMDZlMGZjMTJj
NjhkNzg2ZWI2OTU1NmM3YmU3M2YwZmQuLjk3ZGJhNDk1ODhiY2ZmY2MxNWE1NWRjNTE4MGQ1NWYx
ZWM2NjUxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcApAQCAtMTc1LDcg
KzE3NSw3IEBAIHN0YXRpYyBib29sIHRha2VTbmFwc2hvdHMoVGV4dEluZGljYXRvckRhdGEmIGRh
dGEsIEZyYW1lJiBmcmFtZSwgSW50UmVjdCBzbmFwc2hvCiAKICAgICBpZiAoZGF0YS5vcHRpb25z
ICYgVGV4dEluZGljYXRvck9wdGlvbkluY2x1ZGVTbmFwc2hvdE9mQWxsVmlzaWJsZUNvbnRlbnRX
aXRob3V0U2VsZWN0aW9uKSB7CiAgICAgICAgIGZsb2F0IHNuYXBzaG90U2NhbGVGYWN0b3I7Ci0g
ICAgICAgIGF1dG8gc25hcHNob3RSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChmcmFtZS52aWV3KCkt
PnZpc3VhbFZpZXdwb3J0UmVjdCgpKTsKKyAgICAgICAgYXV0byBzbmFwc2hvdFJlY3QgPSBmcmFt
ZS52aWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOwogICAgICAgICBkYXRhLmNvbnRlbnRJbWFn
ZVdpdGhvdXRTZWxlY3Rpb24gPSB0YWtlU25hcHNob3QoZnJhbWUsIHNuYXBzaG90UmVjdCwgU25h
cHNob3RPcHRpb25zUGFpbnRFdmVyeXRoaW5nRXhjbHVkaW5nU2VsZWN0aW9uLCBzbmFwc2hvdFNj
YWxlRmFjdG9yLCB7IH0pOwogICAgICAgICBkYXRhLmNvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rp
b25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzID0gZnJhbWUudmlldygpLT5jb250ZW50c1RvUm9v
dFZpZXcoc25hcHNob3RSZWN0KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vRE9NRWxlbWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUVsZW1lbnQuaApp
bmRleCAwYzRjZmUxY2RlMmYxYzk2NTI5YzVkMDlhNTc2YmE5ZTZhNGM3OTNmLi45NzE4NzhlMGRl
NGNkYzAyM2U2MzQyYTQ2OThkNDJhMmMxZDMyNTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9ET00vRE9NRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVt
ZW50LmgKQEAgLTI1LDYgKzI1LDEwIEBACiAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9ET01Ob2Rl
Lmg+CiAKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ29yZUdy
YXBoaWNzLmg+CisjZW5kaWYKKwogQGNsYXNzIERPTUF0dHI7CiBAY2xhc3MgRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbjsKIEBjbGFzcyBET01FbGVtZW50OwpAQCAtNjIsNiArNjYsMTAgQEAgV0VCS0lU
X0NMQVNTX0FWQUlMQUJMRV9NQUMoMTBfNCkKIEBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykg
RE9NRWxlbWVudCAqbGFzdEVsZW1lbnRDaGlsZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsK
IEBwcm9wZXJ0eSAocmVhZG9ubHkpIHVuc2lnbmVkIGNoaWxkRWxlbWVudENvdW50IFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzYpOwogCisjaWYgVEFSR0VUX09TX0lQSE9ORQorQHByb3BlcnR5IChy
ZWFkb25seSkgQ0dSZWN0IGJvdW5kc0luUm9vdFZpZXdTcGFjZTsKKyNlbmRpZgorCiAtIChOU1N0
cmluZyAqKWdldEF0dHJpYnV0ZTooTlNTdHJpbmcgKiluYW1lOwogLSAodm9pZClzZXRBdHRyaWJ1
dGU6KE5TU3RyaW5nICopbmFtZSB2YWx1ZTooTlNTdHJpbmcgKil2YWx1ZSBXRUJLSVRfQVZBSUxB
QkxFX01BQygxMF81KTsKIC0gKHZvaWQpcmVtb3ZlQXR0cmlidXRlOihOU1N0cmluZyAqKW5hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NRWxlbWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tCmluZGV4IGY1NzMzYTkyY2Q0MzcwMWM3NGFm
MzlkYjU1MjU5ODczODRlMjAwZTcuLjZkMTgzYzkzZmMzYzUwZGY0YzkxZmI2OTc2ZGRlMjM0OTBm
YmE5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01FbGVtZW50Lm1tCkBAIC0yNjksNiArMjY5LDE1
IEBAIERPTUVsZW1lbnQgKmtpdChXZWJDb3JlOjpFbGVtZW50KiB2YWx1ZSkKICAgICByZXR1cm4g
dW53cmFwKCpzZWxmKS5jaGlsZEVsZW1lbnRDb3VudCgpOwogfQogCisjaWYgUExBVEZPUk0oSU9T
KQorLSAoQ0dSZWN0KWJvdW5kc0luUm9vdFZpZXdTcGFjZQoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBhdXRvIGJvdW5kcyA9IHVud3JhcCgqc2VsZiku
Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CisgICAgcmV0dXJuIENHUmVjdE1ha2UoYm91bmRzLngo
KSwgYm91bmRzLnkoKSwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSk7Cit9CisjZW5k
aWYKKwogLSAoTlNTdHJpbmcgKilnZXRBdHRyaWJ1dGU6KE5TU3RyaW5nICopbmFtZQogewogICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAppbmRleCBlNjk2ZDBlYzMwNDY4
MzhjMDQ0Y2FkMDdkYTQyZDgwYTgyODYyMWVjLi4xMjhmMWUxYzJiZDVkMTJkMGMyZmY3OTkxNjcz
MDYwYmI1OTc5ZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwog
I2VuZGlmCi0gICAgdm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBkaWRDb25jbHVkZUVkaXREcmFnKCkgb3ZlcnJpZGU7CiBwcml2YXRlOgogICAgIFdlYlZp
ZXcqIG1fd2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5tbQppbmRleCAwMWI5ZjY1ZDk5MjMwNzEzYjIwMWZmNDg0N2QyMzUy
NjgwNWUzMDEwLi5jOGIwNTNjMzA1ZWQ2ZDQ1MGIxZjQ3ZTUyZjIwMTIzYTA4MTZmODAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0K
QEAgLTc2LDYgKzc2LDEwIEBAIGJvb2wgV2ViRHJhZ0NsaWVudDo6dXNlTGVnYWN5RHJhZ0NsaWVu
dCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYkRyYWdDbGllbnQ6OmRpZENvbmNs
dWRlRWRpdERyYWcoKQoreworfQorCiBzdGF0aWMgV2ViSFRNTFZpZXcgKmdldFRvcEhUTUxWaWV3
KEZyYW1lKiBmcmFtZSkKIHsKICAgICBBU1NFUlQoZnJhbWUpOwpAQCAtMTg1LDYgKzE4OSwxMSBA
QCBib29sIFdlYkRyYWdDbGllbnQ6OnVzZUxlZ2FjeURyYWdDbGllbnQoKQogewogICAgIHJldHVy
biBmYWxzZTsKIH0KKwordm9pZCBXZWJEcmFnQ2xpZW50OjpkaWRDb25jbHVkZUVkaXREcmFnKCkK
K3sKK30KKwogV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIFdlYkRyYWdDbGllbnQ6OmFj
dGlvbk1hc2tGb3JEcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJikKIHsKICAgICByZXR1cm4g
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTm9uZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQppbmRleCA4ZDM1ZmMxMGFhNWFiYTRlNzI1NDJkZjY4ZmVmMWUyNTE0MzU5N2YwLi4wODI4ZTMx
NjFjYjlmZmZiZDk0MjUzZjdjYjE2NTdkYWJiYjIyZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCkBAIC0xNzYsNiArMTc2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNh
Y2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2VHcm91cC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXRoVXRpbGl0aWVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CkBA
IC0zMjAsOSArMzIxLDE3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVRBX0lOVEVSQUNUSU9O
KQorI2ltcG9ydCA8VUlLaXQvVUlCZXppZXJQYXRoLmg+CisjaW1wb3J0IDxVSUtpdC9VSUNvbG9y
Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+CiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0
KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUJlemllclBhdGgpCitTT0ZUX0xJTktfQ0xBU1Mo
VUlLaXQsIFVJQ29sb3IpCiBTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJSW1hZ2UpCitTT0ZUX0xJ
TksoVUlLaXQsIFVJR3JhcGhpY3NCZWdpbkltYWdlQ29udGV4dFdpdGhPcHRpb25zLCB2b2lkLCAo
Q0dTaXplIHNpemUsIEJPT0wgb3BhcXVlLCBDR0Zsb2F0IHNjYWxlKSwgKHNpemUsIG9wYXF1ZSwg
c2NhbGUpKQorU09GVF9MSU5LKFVJS2l0LCBVSUdyYXBoaWNzR2V0Q3VycmVudENvbnRleHQsIENH
Q29udGV4dFJlZiwgKHZvaWQpLCAoKSkKK1NPRlRfTElOSyhVSUtpdCwgVUlHcmFwaGljc0dldElt
YWdlRnJvbUN1cnJlbnRJbWFnZUNvbnRleHQsIFVJSW1hZ2UgKiwgKHZvaWQpLCAoKSkKK1NPRlRf
TElOSyhVSUtpdCwgVUlHcmFwaGljc0VuZEltYWdlQ29udGV4dCwgdm9pZCwgKHZvaWQpLCAoKSkK
ICNlbmRpZgogCiAjaWYgSEFWRShUT1VDSF9CQVIpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09O
VFJPTFNfTUFOQUdFUikKQEAgLTYyNiwxMyArNjM1LDE1IEBAIHByaXZhdGU6CiBAc3ludGhlc2l6
ZSB0ZXh0Qm91bmRpbmdSZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzPV90ZXh0Qm91bmRpbmdSZWN0
SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogQHN5bnRoZXNpemUgdGV4dFJlY3RzSW5Cb3VuZGluZ1Jl
Y3RDb29yZGluYXRlcz1fdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRlczsKIEBzeW50
aGVzaXplIGNvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQ9X2NvbnRlbnRJbWFnZVdpdGhIaWdobGln
aHQ7CitAc3ludGhlc2l6ZSBjb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uPV9jb250ZW50SW1h
Z2VXaXRob3V0U2VsZWN0aW9uOworQHN5bnRoZXNpemUgY29udGVudEltYWdlV2l0aG91dFNlbGVj
dGlvblJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXM9X2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rp
b25SZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVzOwogQHN5bnRoZXNpemUgY29udGVudEltYWdlPV9j
b250ZW50SW1hZ2U7CiAKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlVJVGV4dEluZGljYXRv
ckRhdGEgKFdlYlVJVGV4dEluZGljYXRvckludGVybmFsKQogCi0tIChXZWJVSVRleHRJbmRpY2F0
b3JEYXRhICopaW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0
YTooV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEgJilpbmRpY2F0b3JEYXRhIHNjYWxlOihDR0Zs
b2F0KXNjYWxlCistIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopaW5pdFdpdGhJbWFnZTooQ0dJ
bWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTooY29uc3QgVGV4dEluZGljYXRvckRhdGEm
KWluZGljYXRvckRhdGEgc2NhbGU6KENHRmxvYXQpc2NhbGUKIHsKICAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTY0OSw4ICs2NjAsMTYgQEAg
cHJpdmF0ZToKICAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRoSGlnaGxpZ2h0
KQogICAgICAgICBfY29udGVudEltYWdlV2l0aEhpZ2hsaWdodCA9IFtbW2dldFVJSW1hZ2VDbGFz
cygpIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRo
SGlnaGxpZ2h0LmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0
aW9uOlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF0gcmV0YWluXTsKICAgICBpZiAoaW5k
aWNhdG9yRGF0YS5jb250ZW50SW1hZ2UpCi0gICAgICAgIF9jb250ZW50SW1hZ2UgPSBbW1tnZXRV
SUltYWdlQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmluZGljYXRvckRhdGEuY29udGVu
dEltYWdlLmdldCgpLT5uYXRpdmVJbWFnZSgpLmdldCgpIHNjYWxlOnNjYWxlIG9yaWVudGF0aW9u
OlVJSW1hZ2VPcmllbnRhdGlvbkRvd25NaXJyb3JlZF0gcmV0YWluXTsKLSAgICAKKyAgICAgICAg
X2NvbnRlbnRJbWFnZSA9IFtbW2dldFVJSW1hZ2VDbGFzcygpIGFsbG9jXSBpbml0V2l0aENHSW1h
Z2U6aW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2UuZ2V0KCktPm5hdGl2ZUltYWdlKCkuZ2V0KCkg
c2NhbGU6c2NhbGUgb3JpZW50YXRpb246VUlJbWFnZU9yaWVudGF0aW9uVXBdIHJldGFpbl07CisK
KyAgICBpZiAoaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uKSB7Cisg
ICAgICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbmRpY2F0b3JEYXRhLmNvbnRlbnRJbWFnZVdpdGhv
dXRTZWxlY3Rpb24uZ2V0KCktPm5hdGl2ZUltYWdlKCk7CisgICAgICAgIGlmIChuYXRpdmVJbWFn
ZSkgeworICAgICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb24gPSBbW1tnZXRV
SUltYWdlQ2xhc3MoKSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdldCgpIHNj
YWxlOnNjYWxlIG9yaWVudGF0aW9uOlVJSW1hZ2VPcmllbnRhdGlvblVwXSByZXRhaW5dOworICAg
ICAgICAgICAgX2NvbnRlbnRJbWFnZVdpdGhvdXRTZWxlY3Rpb25SZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzID0gaW5kaWNhdG9yRGF0YS5jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uUmVjdElu
Um9vdFZpZXdDb29yZGluYXRlczsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiBzZWxm
OwogfQogCkBAIC02NjksNiArNjg4LDcgQEAgcHJpdmF0ZToKICAgICBbX2RhdGFJbnRlcmFjdGlv
bkltYWdlIHJlbGVhc2VdOwogICAgIFtfdGV4dFJlY3RzSW5Cb3VuZGluZ1JlY3RDb29yZGluYXRl
cyByZWxlYXNlXTsKICAgICBbX2NvbnRlbnRJbWFnZVdpdGhIaWdobGlnaHQgcmVsZWFzZV07Cisg
ICAgW19jb250ZW50SW1hZ2VXaXRob3V0U2VsZWN0aW9uIHJlbGVhc2VdOwogICAgIFtfY29udGVu
dEltYWdlIHJlbGVhc2VdOwogICAgIAogICAgIFtzdXBlciBkZWFsbG9jXTsKQEAgLTE3OTUsMTEg
KzE4MTUsNjIgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklm
TmVjZXNzYXJ5KCkKICAgICAgICAgX3ByaXZhdGUtPnRleHRJbmRpY2F0b3JEYXRhID0gW1tbV2Vi
VUlUZXh0SW5kaWNhdG9yRGF0YSBhbGxvY10gaW5pdFdpdGhJbWFnZTppbWFnZSBzY2FsZTpfcHJp
dmF0ZS0+cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKV0gcmV0YWluXTsKIH0KIAorLSAoV2ViVUlU
ZXh0SW5kaWNhdG9yRGF0YSAqKV9kYXRhT3BlcmF0aW9uVGV4dEluZGljYXRvcgoreworICAgIHJl
dHVybiBfcHJpdmF0ZS0+ZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3IuZ2V0KCk7Cit9CisKIC0g
KFdlYlVJVGV4dEluZGljYXRvckRhdGEgKilfZ2V0RGF0YUludGVyYWN0aW9uRGF0YQogewogICAg
IHJldHVybiBfcHJpdmF0ZS0+dGV4dEluZGljYXRvckRhdGE7CiB9CiAKK3N0YXRpYyBWZWN0b3I8
RmxvYXRSZWN0PiBmbG9hdFJlY3RzRm9yQ0dSZWN0QXJyYXkoTlNBcnJheTxOU1ZhbHVlICo+ICpy
ZWN0VmFsdWVzKQoreworICAgIFZlY3RvcjxGbG9hdFJlY3Q+IHJlY3RzOworICAgIGZvciAoTlNW
YWx1ZSAqcmVjdFZhbHVlIGluIHJlY3RWYWx1ZXMpCisgICAgICAgIHJlY3RzLmFwcGVuZChyZWN0
VmFsdWUuQ0dSZWN0VmFsdWUpOworICAgIHJldHVybiByZWN0czsKK30KKworLSAoVUlJbWFnZSAq
KV9jcmVhdGVJbWFnZVdpdGhQbGF0dGVyRm9ySW1hZ2U6KFVJSW1hZ2UgKilpbWFnZSBib3VuZGlu
Z1JlY3Q6KENHUmVjdClib3VuZGluZ1JlY3QgY29udGVudFNjYWxlRmFjdG9yOihDR0Zsb2F0KWNv
bnRlbnRTY2FsZUZhY3RvciBjbGlwcGluZ1JlY3RzOihOU0FycmF5PE5TVmFsdWUgKj4gKiljbGlw
cGluZ1JlY3RzCit7CisgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBDR0Zsb2F0
IGltYWdlU2NhbGVGYWN0b3IgPSBjb250ZW50U2NhbGVGYWN0b3IgLyBfcHJpdmF0ZS0+cGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKTsKKyAgICBDR1JlY3QgaW1hZ2VQYWludEJvdW5kcyA9IENHUmVj
dE1ha2UoMCwgMCwgQ0dSZWN0R2V0V2lkdGgoYm91bmRpbmdSZWN0KSAqIGltYWdlU2NhbGVGYWN0
b3IsIENHUmVjdEdldEhlaWdodChib3VuZGluZ1JlY3QpICogaW1hZ2VTY2FsZUZhY3Rvcik7Cisg
ICAgVUlHcmFwaGljc0JlZ2luSW1hZ2VDb250ZXh0V2l0aE9wdGlvbnMoaW1hZ2VQYWludEJvdW5k
cy5zaXplLCBOTywgX3ByaXZhdGUtPnBhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIENH
Q29udGV4dFJlZiBuZXdDb250ZXh0ID0gVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCk7CisK
KyAgICBhdXRvIHNjYWxlZENsaXBwaW5nUmVjdHMgPSBmbG9hdFJlY3RzRm9yQ0dSZWN0QXJyYXko
Y2xpcHBpbmdSZWN0cyk7CisgICAgZm9yIChhdXRvJiB0ZXh0Qm91bmRpbmdSZWN0IDogc2NhbGVk
Q2xpcHBpbmdSZWN0cykKKyAgICAgICAgdGV4dEJvdW5kaW5nUmVjdC5zY2FsZShpbWFnZVNjYWxl
RmFjdG9yKTsKKworICAgIGlmICghc2NhbGVkQ2xpcHBpbmdSZWN0cy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgYXV0byB3ZWJjb3JlUGF0aCA9IFBhdGhVdGlsaXRpZXM6OnBhdGhXaXRoU2hyaW5rV3Jh
cHBlZFJlY3RzKHNjYWxlZENsaXBwaW5nUmVjdHMsIDYgKiBpbWFnZVNjYWxlRmFjdG9yKTsKKyAg
ICAgICAgW1tnZXRVSUJlemllclBhdGhDbGFzcygpIGJlemllclBhdGhXaXRoQ0dQYXRoOndlYmNv
cmVQYXRoLmVuc3VyZVBsYXRmb3JtUGF0aCgpXSBhZGRDbGlwXTsKKyAgICB9CisKKyAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgbWF0Y2ggdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHRleHQs
IG9yIGlmIHRoZSBiYWNrZ3JvdW5kIGNhbm5vdCBiZSBjYXB0dXJlZCBhcyBhIHNpbmdsZSBjb2xv
ciwgd2Ugc2hvdWxkIGZhbGwgYmFjaworICAgIC8vIHRvIGEgZGVmYXVsdCByZXByZXNlbnRhdGlv
biwgZS5nLiBibGFjayB0ZXh0IG9uIGEgd2hpdGUgYmFja2dyb3VuZC4KKyAgICBDR0NvbnRleHRT
ZXRGaWxsQ29sb3JXaXRoQ29sb3IobmV3Q29udGV4dCwgW1tnZXRVSUNvbG9yQ2xhc3MoKSB3aGl0
ZUNvbG9yXSBDR0NvbG9yXSk7CisgICAgZm9yIChhdXRvIHRleHRCb3VuZGluZ1JlY3QgOiBzY2Fs
ZWRDbGlwcGluZ1JlY3RzKQorICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChuZXdDb250ZXh0LCB0
ZXh0Qm91bmRpbmdSZWN0KTsKKworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShuZXdDb250ZXh0
LCAwLCBDR1JlY3RHZXRIZWlnaHQoaW1hZ2VQYWludEJvdW5kcykpOworICAgIENHQ29udGV4dFNj
YWxlQ1RNKG5ld0NvbnRleHQsIDEsIC0xKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UobmV3Q29u
dGV4dCwgaW1hZ2VQYWludEJvdW5kcywgaW1hZ2UuQ0dJbWFnZSk7CisKKyAgICBVSUltYWdlICpw
cmV2aWV3SW1hZ2UgPSBVSUdyYXBoaWNzR2V0SW1hZ2VGcm9tQ3VycmVudEltYWdlQ29udGV4dCgp
OworICAgIFVJR3JhcGhpY3NFbmRJbWFnZUNvbnRleHQoKTsKKworICAgIHJldHVybiBbcHJldmll
d0ltYWdlIHJldGFpbl07Cit9CisKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKSAmJiBfX2hh
c19pbmNsdWRlKDxXZWJLaXRBZGRpdGlvbnMvV2ViVmlld0FkZGl0aW9ucy5tbT4pCiAjaW5jbHVk
ZSA8V2ViS2l0QWRkaXRpb25zL1dlYlZpZXdBZGRpdGlvbnMubW0+CiAjZW5kaWYKQEAgLTE4MzQs
NiArMTkwNSwxOSBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVy
SWZOZWNlc3NhcnkoKQogLSAodm9pZClfZW5kZWREYXRhSW50ZXJhY3Rpb246KENHUG9pbnQpY2xp
ZW50UG9zaXRpb24gZ2xvYmFsOihDR1BvaW50KWdsb2JhbFBvc2l0aW9uCiB7CiB9CisKKy0gKFdl
YlVJVGV4dEluZGljYXRvckRhdGEgKilfZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3IKK3sKKyAg
ICByZXR1cm4gbmlsOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorLSAoVUlJbWFnZSAqKV9jcmVh
dGVJbWFnZVdpdGhQbGF0dGVyRm9ySW1hZ2U6KFVJSW1hZ2UgKilpbWFnZSBib3VuZGluZ1JlY3Q6
KENHUmVjdClib3VuZGluZ1JlY3QgY29udGVudFNjYWxlRmFjdG9yOihDR0Zsb2F0KWNvbnRlbnRT
Y2FsZUZhY3RvciBjbGlwcGluZ1JlY3RzOihOU0FycmF5PE5TVmFsdWUgKj4gKiljbGlwcGluZ1Jl
Y3RzCit7CisgICAgcmV0dXJuIG5pbDsKK30KKyNlbmRpZgorCiAjZW5kaWYgLy8gRU5BQkxFKERB
VEFfSU5URVJBQ1RJT04pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCiAKIHN0YXRpYyBOU011dGFi
bGVTZXQgKmtub3duUGx1Z2luTUlNRVR5cGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld0RhdGEuaAppbmRleCBiMWJjNzhlYTZiOTgzMDZjZGVjODE3OTI3MzkyODcyZmY2YmQyNDg4
Li4yNWY4YTNiMGQ5ZTA0YWRjOGQ1OWU3ODY3NmU4Njg4YzJjMDEyMGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0yODgsNiArMjg4LDcgQEAgcHJpdmF0ZToK
ICAgICAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKICAgICBXZWJVSVRleHRJbmRpY2F0
b3JEYXRhICp0ZXh0SW5kaWNhdG9yRGF0YTsKKyAgICBSZXRhaW5QdHI8V2ViVUlUZXh0SW5kaWNh
dG9yRGF0YT4gZGF0YU9wZXJhdGlvblRleHRJbmRpY2F0b3I7CiAjZW5kaWYKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAppbmRleCA2YzBkMzQwMDViYTRh
MmUzZGIwZDVlZjk1MjVmOTYzNjFlZTZiMTc1Li5hODk1Y2M2MjY3ZDNmNDMwNTFhNWJhMjA4ODg3
ZmM0YjdjZjNmNmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0ludGVy
bmFsLmgKQEAgLTkyLDcgKzkyLDcgQEAgT0JKQ19DTEFTUyBOU1RleHRBbHRlcm5hdGl2ZXM7CiAK
ICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKIEBp
bnRlcmZhY2UgV2ViVUlUZXh0SW5kaWNhdG9yRGF0YSAoV2ViVUlUZXh0SW5kaWNhdG9ySW50ZXJu
YWwpCi0tIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopaW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJl
ZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YTooV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKWlu
ZGljYXRvckRhdGEgc2NhbGU6KENHRmxvYXQpc2NhbGU7CistIChXZWJVSVRleHRJbmRpY2F0b3JE
YXRhICopaW5pdFdpdGhJbWFnZTooQ0dJbWFnZVJlZilpbWFnZSB0ZXh0SW5kaWNhdG9yRGF0YToo
Y29uc3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmKWluZGljYXRvckRhdGEgc2NhbGU6KENH
RmxvYXQpc2NhbGU7CiAtIChXZWJVSVRleHRJbmRpY2F0b3JEYXRhICopaW5pdFdpdGhJbWFnZToo
Q0dJbWFnZVJlZilpbWFnZSBzY2FsZTooQ0dGbG9hdClzY2FsZTsKIEBlbmQKICNlbmRpZgpAQCAt
MjU4LDYgKzI1OCw3IEBAIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwogCiAjaWYgRU5B
QkxFKERBVEFfSU5URVJBQ1RJT04pICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCiAtICh2b2lkKV9z
ZXREYXRhSW50ZXJhY3Rpb25EYXRhOihDR0ltYWdlUmVmKWltYWdlIHRleHRJbmRpY2F0b3I6KHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KXRleHRJbmRpY2F0b3IgYXRD
bGllbnRQb3NpdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBhbmNob3JQb2ludDooQ0dQb2lu
dClhbmNob3JQb2ludCBhY3Rpb246KHVpbnQ2NF90KWFjdGlvbjsKKy0gKHZvaWQpX2RpZENvbmNs
dWRlRWRpdERhdGFJbnRlcmFjdGlvbjsKICNlbmRpZgogCiAtICh2b2lkKV9wcmVmZXJlbmNlc0No
YW5nZWQ6KFdlYlByZWZlcmVuY2VzICopcHJlZmVyZW5jZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOGQyMTE4Y2ZhNTQwOTMyZDM5NjFiODkzYWJh
ZmNlYTg2MzFiOGQ1Ny4uNDAxMmVmMTZhZWM0ODhmMzgyZDYwNTQzNTM5ZjhlN2ZlZGU5YWYwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtMTkxLDcg
KzE5MSw4IEBAIHR5cGVkZWYgZW51bSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBD
R0Zsb2F0IGNvbnRlbnRJbWFnZVNjYWxlRmFjdG9yOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
dGFpbikgVUlJbWFnZSAqY29udGVudEltYWdlV2l0aEhpZ2hsaWdodDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZXRhaW4pIFVJSW1hZ2UgKmNvbnRlbnRJbWFnZTsKLQorQHByb3BlcnR5IChub25h
dG9taWMsIHJldGFpbikgVUlJbWFnZSAqY29udGVudEltYWdlV2l0aG91dFNlbGVjdGlvbjsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIENHUmVjdCBjb250ZW50SW1hZ2VXaXRob3V0U2Vs
ZWN0aW9uUmVjdEluUm9vdFZpZXdDb29yZGluYXRlczsKIEBlbmQKIAogI2lmICFUQVJHRVRfT1Nf
SVBIT05FCkBAIC00NjcsNiArNDY4LDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBB
UEkuCiAKIC0gKEJPT0wpX3JlcXVlc3RTdGFydERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGll
bnRQb3NpdGlvbiBnbG9iYWxQb3NpdGlvbjooQ0dQb2ludClnbG9iYWxQb3NpdGlvbjsKIC0gKFdl
YlVJVGV4dEluZGljYXRvckRhdGEgKilfZ2V0RGF0YUludGVyYWN0aW9uRGF0YTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nLCBnZXR0ZXI9X2RhdGFPcGVyYXRpb25UZXh0
SW5kaWNhdG9yKSBXZWJVSVRleHRJbmRpY2F0b3JEYXRhICpkYXRhT3BlcmF0aW9uVGV4dEluZGlj
YXRvcjsKIC0gKHVpbnQ2NF90KV9lbnRlcmVkRGF0YUludGVyYWN0aW9uOihpZClkYXRhSW50ZXJh
Y3Rpb24gY2xpZW50OihDR1BvaW50KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9i
YWxQb3NpdGlvbiBvcGVyYXRpb246KHVpbnQ2NF90KW9wZXJhdGlvbjsKIC0gKHVpbnQ2NF90KV91
cGRhdGVkRGF0YUludGVyYWN0aW9uOihpZClkYXRhSW50ZXJhY3Rpb24gY2xpZW50OihDR1BvaW50
KWNsaWVudFBvc2l0aW9uIGdsb2JhbDooQ0dQb2ludClnbG9iYWxQb3NpdGlvbiBvcGVyYXRpb246
KHVpbnQ2NF90KW9wZXJhdGlvbjsKIC0gKHZvaWQpX2V4aXRlZERhdGFJbnRlcmFjdGlvbjooaWQp
ZGF0YUludGVyYWN0aW9uIGNsaWVudDooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENH
UG9pbnQpZ2xvYmFsUG9zaXRpb24gb3BlcmF0aW9uOih1aW50NjRfdClvcGVyYXRpb247CkBAIC00
NzQsNiArNDc2LDcgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lk
KV9lbmRlZERhdGFJbnRlcmFjdGlvbjooQ0dQb2ludCljbGllbnRQb3NpdGlvbiBnbG9iYWw6KENH
UG9pbnQpY2xpZW50UG9zaXRpb247CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCistIChVSUltYWdl
ICopX2NyZWF0ZUltYWdlV2l0aFBsYXR0ZXJGb3JJbWFnZTooVUlJbWFnZSAqKWltYWdlIGJvdW5k
aW5nUmVjdDooQ0dSZWN0KWJvdW5kaW5nUmVjdCBjb250ZW50U2NhbGVGYWN0b3I6KENHRmxvYXQp
Y29udGVudFNjYWxlRmFjdG9yIGNsaXBwaW5nUmVjdHM6KE5TQXJyYXk8TlNWYWx1ZSAqPiAqKWNs
aXBwaW5nUmVjdHM7CiAvLyBEZXByZWNhdGVkLiBVc2UgLVtXZWJEYXRhU291cmNlIF9xdWlja0xv
b2tDb250ZW50XSBpbnN0ZWFkLgogLSAoTlNEaWN0aW9uYXJ5ICopcXVpY2tMb29rQ29udGVudEZv
clVSTDooTlNVUkwgKil1cmw7CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>