<?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>156429</bug_id>
          
          <creation_ts>2016-04-08 17:11:28 -0700</creation_ts>
          <short_desc>[iOS WK2] WKWebViews should consult ancestor UIScrollViews to determine tiling area</short_desc>
          <delta_ts>2016-05-09 12:32:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182374</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-08 17:11:28 -0700</bug_when>
    <thetext>[iOS WK2] WKWebViews should consult ancestor UIScrollViews to determine tiling area</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182378</commentid>
    <comment_count>1</comment_count>
      <attachid>276062</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-08 17:23:21 -0700</bug_when>
    <thetext>Created attachment 276062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182382</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-08 17:23:52 -0700</bug_when>
    <thetext>rdar://problem/25455111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182383</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-08 17:25:11 -0700</bug_when>
    <thetext>Attachment 276062 did not pass style-queue:


ERROR: Source/WebKit2/Shared/VisibleContentRectUpdateInfo.h:60:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182384</commentid>
    <comment_count>4</comment_count>
      <attachid>276062</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-04-08 17:27:40 -0700</bug_when>
    <thetext>Comment on attachment 276062
Patch

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

&gt; Source/WebCore/page/Page.h:302
&gt; +    bool enclosedInScrollView() const { return m_enclosedInScrollView; }
&gt; +    void setEnclosedInScrollView(bool f) { m_enclosedInScrollView = f; }

I wonder if this is too generic. We have something called ScrollView, which this has nothing to do with.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1870
&gt; +    if (_enclosingScrollViewScrollTimer)

Why NSTimer instead of a DeferrableOneShot? That will be a lot cheaper than rescheduling an NSTimer every scrolling increment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182402</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-04-08 18:19:13 -0700</bug_when>
    <thetext>https://trac.webkit.org/r199259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189877</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-03 15:19:32 -0700</bug_when>
    <thetext>Reverted r199259 and r200161 for reason:

Seems to have caused a ~1.2% PLT regression on iOS

Committed r200390: &lt;http://trac.webkit.org/changeset/200390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191251</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-05-09 12:32:17 -0700</bug_when>
    <thetext>It was re-landed in https://trac.webkit.org/r200470</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276062</attachid>
            <date>2016-04-08 17:23:21 -0700</date>
            <delta_ts>2016-04-08 17:27:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156429-20160408172326.patch</filename>
            <type>text/plain</type>
            <size>33683</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY4Nzk5Y2E1YTFmNmQ0
ZjQ3NGJjM2NjNWFhNDMzMTU0YjliNmQ0Ni4uOTdjYjUyNWYzNWIxYjdkMmY1OTJiOWRkOTE5OTM0
MjFiNGNkYTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTA0LTA4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBX
S1dlYlZpZXdzIHNob3VsZCBjb25zdWx0IGFuY2VzdG9yIFVJU2Nyb2xsVmlld3MgdG8gZGV0ZXJt
aW5lIHRpbGluZyBhcmVhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTY0MjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjU0NTUxMTEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgV0tXZWJWaWV3
IGlzIGV4cGFuZGVkIHRvIGZ1bGwgc2l6ZSwgdGhlbiBlbWJlZGRlZCBpbiBVSVNjcm9sbFZpZXcs
IGl0IHdvdWxkCisgICAgICAgIGNyZWF0ZSBodWdlIHRpbGVzIHRoYXQgY292ZXIgdGhlIGVudGly
ZSB2aWV3IGFyZWEgKHNpbmNlIGl0IGNvbnNpZGVyZWQgaXRzZWxmIG5vbi1zY3JvbGxhYmxlKS4K
KworICAgICAgICBGaXggdG8gYWx3YXlzIHVzZSA1MTJ4NTEyIHRpbGVzIGluIHRoaXMgY29uZmln
dXJhdGlvbiwgYW5kIHRvIGFkanVzdCB0aGUgdGlsZSBjb3ZlcmFnZQorICAgICAgICBmb3IgdGhl
IGFyZWEgZXhwb3NlZCB0aHJvdWdoIHRoZSBlbmNsb3NpbmcgVUlTY3JvbGxWaWV3LgorCisgICAg
ICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlDb250cm9sbGVyOjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0pOiBz
ZXRPYnNjdXJlZEluc2V0KCkKKyAgICAgICAgbW92ZWQgZnJvbSBGcmFtZVZpZXcgdG8gUGFnZS4K
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OmFkanVzdFRpbGVkQmFja2luZ1Njcm9sbGFiaWxpdHkpOiBJZiB3ZSdyZSBjbGlwcGVkIGJ5
IGFuIGFuY2VzdG9yIHNjcm9sbFZpZXcsCisgICAgICAgIGp1c3QgYXNzdW1lIHdlJ3JlIHNjcm9s
bGFibGUgb24gYm90aCBheGVzLgorICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6b2JzY3VyZWRJbnNldCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzZXRP
YnNjdXJlZEluc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVuY2xvc2VkSW5TY3JvbGxW
aWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEVuY2xvc2VkSW5TY3JvbGxWaWV3KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxWaWV3OjpwbGF0Zm9ybU9ic2N1cmVkSW5zZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRPYnNjdXJlZEluc2V0KTogRGVsZXRlZC4KKwogMjAx
Ni0wNC0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TIFdLMl0gU3RvcCB1c2luZyBleHBvc2VkQ29udGVudFJlY3QgZm9yIGhpc3Rvcnkgc2Ny
b2xsIHN0YXRlIHJlc3RvcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWM4ZjcyZTViOWVlZjc5ODMwMWVi
NjlmOThjYTJlYmU4ZTU4ZDc5Zi4uNDUyMzhlZmNjMjE0Y2MyMDdmYjJmY2U1OWNlM2FjYjVhMDcy
OThmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE2LTA0LTA4ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSBXS1dlYlZp
ZXdzIHNob3VsZCBjb25zdWx0IGFuY2VzdG9yIFVJU2Nyb2xsVmlld3MgdG8gZGV0ZXJtaW5lIHRp
bGluZyBhcmVhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTY0MjkKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjU0NTUxMTEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGEgV0tXZWJWaWV3IGlzIGV4
cGFuZGVkIHRvIGZ1bGwgc2l6ZSwgdGhlbiBlbWJlZGRlZCBpbiBVSVNjcm9sbFZpZXcsIGl0IHdv
dWxkCisgICAgICAgIGNyZWF0ZSBodWdlIHRpbGVzIHRoYXQgY292ZXIgdGhlIGVudGlyZSB2aWV3
IGFyZWEgKHNpbmNlIGl0IGNvbnNpZGVyZWQgaXRzZWxmIG5vbi1zY3JvbGxhYmxlKS4KKworICAg
ICAgICBGaXggdG8gYWx3YXlzIHVzZSA1MTJ4NTEyIHRpbGVzIGluIHRoaXMgY29uZmlndXJhdGlv
biwgYW5kIHRvIGFkanVzdCB0aGUgdGlsZSBjb3ZlcmFnZQorICAgICAgICBmb3IgdGhlIGFyZWEg
ZXhwb3NlZCB0aHJvdWdoIHRoZSBlbmNsb3NpbmcgVUlTY3JvbGxWaWV3LgorCisgICAgICAgICog
U2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwOiBBZGQgZW5jbG9zZWRJblNj
cm9sbFZpZXcoKSwgd2hpY2ggaXMgdXNlZCB0bworICAgICAgICB0cmlnZ2VyIG5vcm1hbC1zaXpl
ZCB0aWxlcy4KKyAgICAgICAgKFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5o
OgorICAgICAgICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvKToKKyAgICAgICAgKFdlYktpdDo6VmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mbzo6ZW5jbG9zZWRJblNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViS2l0Ojpv
cGVyYXRvcj09KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRJbnZva2VVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxi
YWNrXSk6IFBhc3Mgb3VyIHNjcm9sbFZpZXcuCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkRmlu
aXNoU2Nyb2xsaW5nXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3RGlkU2Nyb2xs
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2Nyb2xsVmlld0RpZFpvb206XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBzY3JvbGxWaWV3RGlkRW5kWm9vbWluZzp3aXRoVmlldzphdFNjYWxlOl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Njcm9sbFZpZXdEaWRJbnRlcnJ1cHREZWNlbGVyYXRp
bmc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdmlzaWJsZVJlY3RJbkVuY2xvc2luZ1Njcm9s
bFZpZXc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdmlzaWJsZUNvbnRlbnRSZWN0XSk6IENv
bXB1dGUgdGhlIGV4cG9zZWQgcGFydCBvZiB0aGUgY29udGVudCByZWxhdGl2ZQorICAgICAgICB0
byB0aGUgV0tXZWJWaWV3LCB0aGVuIGludGVyc2VjdCB3aXRoIHRoZSBleHBvc2VkIHBhcnQgdmlh
IGFueSBhbmNlc3RvciBVSVNjcm9sbFZpZXcuCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkU2Ny
b2xsXSk6IFRoaXMgaXMgY2FsbGVkIGJ5IFVJS2l0IHdoZW4gc29tZSBhbmNlc3RvciBVSVNjcm9s
bFZpZXcgc2Nyb2xscy4KKyAgICAgICAgSG93ZXZlciwgd2UgZG9uJ3QgZ2V0IGFsbCB0aGUgVUlT
Y3JvbGxWaWV3IGRlbGVnYXRlIGNhbGxiYWNrcywgc28gaGF2ZSB0byB1c2UgYSB0aW1lciB0bwor
ICAgICAgICB0cmlnZ2VyIGEgY2FsbCB0byAtX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMgd2hl
biB3ZSdyZSBpbiBhIHN0YWJsZSBzdGF0ZS4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9lbmNsb3Np
bmdTY3JvbGxlclNjcm9sbGluZ0VuZGVkOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2ZyYW1l
T3JCb3VuZHNDaGFuZ2VkXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0c10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250ZW50
UmVjdEFmdGVyU2Nyb2xsSW5WaWV3Ol0pOiBHZXQgdGhlIHN0YWJsZSBzdGF0ZSBmcm9tIHRoZQor
ICAgICAgICBzY3JvbGwgdmlldyB0aGF0IHRoZSB1c2VyIGlzIGludGVyYWN0aW5nIHdpdGguCisg
ICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlQ29udGVudFJlY3RzV2l0aFN0YXRlOl0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6IFJhdGhlciB0aGFuIHBhc3MgYSBiYXppbGxpb24g
YXJndW1lbnRzIHRocm91Z2ggdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cygpLCBqdXN0CisgICAg
ICAgIHBhc3MgdGhlIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8gc3RydWN0LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaWRVcGRhdGVW
aXNpYmxlUmVjdDp1bm9ic2N1cmVkUmVjdDp1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3Jk
aW5hdGVzOm9ic2N1cmVkSW5zZXQ6c2NhbGU6bWluaW11bVNjYWxlOmluU3RhYmxlU3RhdGU6aXND
aGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseTplbmNsb3NlZEluU2Nyb2xsVmlldzpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaWRVcGRhdGVWaXNpYmxlUmVjdDp1bm9ic2N1
cmVkUmVjdDp1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOm9ic2N1cmVkSW5z
ZXQ6c2NhbGU6bWluaW11bVNjYWxlOmluU3RhYmxlU3RhdGU6aXNDaGFuZ2luZ09ic2N1cmVkSW5z
ZXRzSW50ZXJhY3RpdmVseTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVW
aXNpYmxlQ29udGVudFJlY3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjppbmRpY2F0b3JM
b2NhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKToKKwogMjAxNi0wNC0wNyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gU3RvcCB1
c2luZyBleHBvc2VkQ29udGVudFJlY3QgZm9yIGhpc3Rvcnkgc2Nyb2xsIHN0YXRlIHJlc3RvcmF0
aW9uCkBAIC00MiwxMyArMTAwLDE1IEBACiAgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3Lmg6CiAgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgogICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZFVwZGF0ZVZpc2libGVSZWN0OnVub2JzY3VyZWRSZWN0
OnVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6b2JzY3VyZWRJbnNldDpzY2Fs
ZTptaW5pbXVtU2NhbGU6aW5TdGFibGVTdGF0ZTppc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRl
cmFjdGl2ZWx5Ol0pOgorICAgICAgICBNYWtlIHRoZSBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvIGhlcmUgYW5kIHBhc3MgaXQgZG93bi4KICAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaWRV
cGRhdGVWaXNpYmxlUmVjdDp1bm9ic2N1cmVkUmVjdDp1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmll
d0Nvb3JkaW5hdGVzOnNjYWxlOm1pbmltdW1TY2FsZTppblN0YWJsZVN0YXRlOmlzQ2hhbmdpbmdP
YnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6XSk6IERlbGV0ZWQuCiAgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CiAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyk6CiAgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cmVzdG9yZVBhZ2VTdGF0ZSk6CiAgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tOgogICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN0b3JlUGFnZVN0
YXRlKToKLSAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMp
OiBzZXRPYnNjdXJlZEluc2V0KCkgbW92ZWQgZnJvbSBGcmFtZVZpZXcgdG8gUGFnZS4KKyAgICAg
ICAgQWxzbyBjYWxsIHNldEVuY2xvc2VkSW5TY3JvbGxWaWV3KCkgb24gUGFnZS4KIAogMjAxNi0w
NC0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDc2NzgwNWZhZWE3N2RhMmE4NjYw
ZGY2Nzg0Mzk1OGVjMWU2Zjc2MmIuLjMzMDNkMzNkNGIzZmY2ZWRlZDM1N2FkMGYzY2IwNGQ3NzBl
OGUyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApA
QCAtNzksMTUgKzc5LDE5IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVTY3JvbGxQb3Np
dGlvbkFuZFZpZXdTdGF0ZVRvSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKICAgICAgICAgaXRlbS0+
c2V0U2Nyb2xsUG9zaXRpb24oZnJhbWVWaWV3LT5jYWNoZWRTY3JvbGxQb3NpdGlvbigpKTsKICAg
ICBlbHNlCiAgICAgICAgIGl0ZW0tPnNldFNjcm9sbFBvc2l0aW9uKGZyYW1lVmlldy0+c2Nyb2xs
UG9zaXRpb24oKSk7CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgaXRlbS0+c2V0RXhwb3NlZENv
bnRlbnRSZWN0KGZyYW1lVmlldy0+ZXhwb3NlZENvbnRlbnRSZWN0KCkpOwogICAgIGl0ZW0tPnNl
dFVub2JzY3VyZWRDb250ZW50UmVjdChmcmFtZVZpZXctPnVub2JzY3VyZWRDb250ZW50UmVjdCgp
KTsKLSAgICBpdGVtLT5zZXRPYnNjdXJlZEluc2V0KGZyYW1lVmlldy0+cGxhdGZvcm1PYnNjdXJl
ZEluc2V0KCkpOwogI2VuZGlmCiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7Ci0g
ICAgaWYgKHBhZ2UgJiYgbV9mcmFtZS5pc01haW5GcmFtZSgpKQorICAgIGlmIChwYWdlICYmIG1f
ZnJhbWUuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpdGVtLT5zZXRQYWdlU2NhbGVGYWN0b3Io
cGFnZS0+cGFnZVNjYWxlRmFjdG9yKCkgLyBwYWdlLT52aWV3U2NhbGVGYWN0b3IoKSk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICBpdGVtLT5zZXRPYnNjdXJlZEluc2V0KHBhZ2UtPm9ic2N1
cmVkSW5zZXQoKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUg
Z3JlYXQgdG8gd29yayBvdXQgYSB3YXkgdG8gcHV0IHRoaXMgY29kZSBpbiBXZWJDb3JlIGluc3Rl
YWQgb2YgY2FsbGluZyB0aHJvdWdoIHRvIHRoZSBjbGllbnQuCiAgICAgbV9mcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5zYXZlVmlld1N0YXRlVG9JdGVtKGl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCmluZGV4IDE1Y2RjOTAwZmQ4NGE4OGM0ZWMxYmUwMjljYTE1M2NiYmI0Y2U4ZjAuLjY3
MWJhNWVjMzJlMjNiZmI3MzZkM2Q2YjljODI0MWMzYzhiOTE4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKQEAgLTI0ODUsNiArMjQ4NSwxMSBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0
VGlsZWRCYWNraW5nU2Nyb2xsYWJpbGl0eSgpCiAgICAgYm9vbCB2ZXJ0aWNhbGx5U2Nyb2xsYWJs
ZTsKICAgICBib29sIGNsaXBwZWRCeUFuY2VzdG9yVmlldyA9IHN0YXRpY19jYXN0PGJvb2w+KG1f
dmlld0V4cG9zZWRSZWN0KTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoUGFnZSogcGFn
ZSA9IGZyYW1lKCkucGFnZSgpKQorICAgICAgICBjbGlwcGVkQnlBbmNlc3RvclZpZXcgfD0gcGFn
ZS0+ZW5jbG9zZWRJblNjcm9sbFZpZXcoKTsKKyNlbmRpZgorCiAgICAgaWYgKGRlbGVnYXRlc1Nj
cm9sbGluZygpKSB7CiAgICAgICAgIEludFNpemUgZG9jdW1lbnRTaXplID0gY29udGVudHNTaXpl
KCk7CiAgICAgICAgIEludFNpemUgdmlzaWJsZVNpemUgPSB0aGlzLT52aXNpYmxlU2l6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA1MDU2MjVhODEyMzU5OTNkYjk3ZjAwYjdmODI3NjZmMTAxYmMwZmJm
Li45MGFmNDNlZTU2OTZhZTE5NjQyOWVlYWNiMmMxNjljNDJmMjM3NTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtMjkzLDcgKzI5MywxNSBAQCBwdWJsaWM6CiAKICAgICBmbG9hdCB0b3BDb250ZW50SW5z
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RvcENvbnRlbnRJbnNldDsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VG9wQ29udGVudEluc2V0KGZsb2F0KTsKKworI2lmIFBMQVRGT1JNKElPUykK
KyAgICBGbG9hdFNpemUgb2JzY3VyZWRJbnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JzY3VyZWRJ
bnNldDsgfQorICAgIHZvaWQgc2V0T2JzY3VyZWRJbnNldChGbG9hdFNpemUgaW5zZXQpIHsgbV9v
YnNjdXJlZEluc2V0ID0gaW5zZXQ7IH0KICAgICAKKyAgICBib29sIGVuY2xvc2VkSW5TY3JvbGxW
aWV3KCkgY29uc3QgeyByZXR1cm4gbV9lbmNsb3NlZEluU2Nyb2xsVmlldzsgfQorICAgIHZvaWQg
c2V0RW5jbG9zZWRJblNjcm9sbFZpZXcoYm9vbCBmKSB7IG1fZW5jbG9zZWRJblNjcm9sbFZpZXcg
PSBmOyB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRPU0laSU5HKQogICAgIGZs
b2F0IHRleHRBdXRvc2l6aW5nV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3RleHRBdXRvc2l6aW5n
V2lkdGg7IH0KICAgICB2b2lkIHNldFRleHRBdXRvc2l6aW5nV2lkdGgoZmxvYXQgdGV4dEF1dG9z
aXppbmdXaWR0aCkgeyBtX3RleHRBdXRvc2l6aW5nV2lkdGggPSB0ZXh0QXV0b3NpemluZ1dpZHRo
OyB9CkBAIC01OTksNyArNjA3LDEzIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV92aWV3U2NhbGVG
YWN0b3IgeyAxIH07CiAKICAgICBmbG9hdCBtX3RvcENvbnRlbnRJbnNldDsKLSAgICAKKworI2lm
IFBMQVRGT1JNKElPUykKKyAgICAvLyBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgaGlzdG9yeSBzY3Jv
bGwgcG9zaXRpb24gcmVzdG9yYXRpb24uCisgICAgRmxvYXRTaXplIG1fb2JzY3VyZWRJbnNldDsK
KyAgICBib29sIG1fZW5jbG9zZWRJblNjcm9sbFZpZXcgeyBmYWxzZSB9OworI2VuZGlmCisKICNp
ZiBFTkFCTEUoSU9TX1RFWFRfQVVUT1NJWklORykKICAgICBmbG9hdCBtX3RleHRBdXRvc2l6aW5n
V2lkdGg7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCAxYWM2
YmFmYWIwYmRkMWFmNWQzZDk2OGRjMDI0NzEwY2QxZWUzYTdiLi40ZjgwNWEyMTc4MDQ2OWYxYmQz
MWM2NzA0MDU3MDRjYzJlYmEyNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5o
CkBAIC0zNzgsMTEgKzM3OCw2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRmb3JtV2lkZ2V0KGNvbnN0IFNjcm9sbE9mZnNldCYg
b2xkT2Zmc2V0LCBjb25zdCBTY3JvbGxPZmZzZXQmIG5ld09mZnNldCk7CiAKLSNpZiBQTEFURk9S
TShJT1MpCi0gICAgRmxvYXRTaXplIHBsYXRmb3JtT2JzY3VyZWRJbnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2JzY3VyZWRJbnNldDsgfQotICAgIHZvaWQgcGxhdGZvcm1TZXRPYnNjdXJlZEluc2V0
KEZsb2F0U2l6ZSBpbnNldCkgeyBtX29ic2N1cmVkSW5zZXQgPSBpbnNldDsgfQotI2VuZGlmCi0K
IHByb3RlY3RlZDoKICAgICBTY3JvbGxWaWV3KCk7CiAKQEAgLTQ1OCw3ICs0NTMsNiBAQCBwcml2
YXRlOgogICAgIEZsb2F0UmVjdCBtX2V4cG9zZWRDb250ZW50UmVjdDsKICAgICBGbG9hdFNpemUg
bV91bm9ic2N1cmVkQ29udGVudFNpemU7CiAgICAgLy8gVGhpcyBpcyBvbmx5IHVzZWQgZm9yIGhp
c3Rvcnkgc2Nyb2xsIHBvc2l0aW9uIHJlc3RvcmF0aW9uLgotICAgIEZsb2F0U2l6ZSBtX29ic2N1
cmVkSW5zZXQ7CiAjZWxzZQogICAgIEludFJlY3QgbV9maXhlZFZpc2libGVDb250ZW50UmVjdDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8uY3BwCmluZGV4IDRkNDZlZWFmYzQ1NjNjNDRiOWJkODdkYjQxYjg3NjYw
ZmFiYjFiZWYuLjU1MjU4ZWNmNTM5NTE0YWY2OTVmYjBkZDI0YzQwNTZkOWQ4NDljOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mby5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgdm9pZCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBtX2luU3RhYmxlU3RhdGU7CiAgICAgZW5jb2RlciA8PCBtX2lzQ2hhbmdpbmdPYnNj
dXJlZEluc2V0c0ludGVyYWN0aXZlbHk7CiAgICAgZW5jb2RlciA8PCBtX2FsbG93U2hyaW5rVG9G
aXQ7CisgICAgZW5jb2RlciA8PCBtX2VuY2xvc2VkSW5TY3JvbGxWaWV3OwogfQogCiBib29sIFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgcmVzdWx0KQpAQCAtNzgsNiAr
NzksOCBAQCBib29sIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm86OmRlY29kZShJUEM6OkFy
Z3VtZW50RGVjb2RlciYgZGVjb2RlciwgVmlzaWJsZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9hbGxvd1Nocmlua1RvRml0KSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1fZW5jbG9z
ZWRJblNjcm9sbFZpZXcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mby5oCmluZGV4IDBmMzcwMTQ3ZmVmMDMyZDRmY2Q5NjA5ZGYyZTQxMmQwMTYxMzQy
NTcuLjY4NDcwMjdkODc2OTcyMTc3MTIxZWQ5ZjBkOGIzZmY3ZjBhODdiODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhwb3NlZENvbnRlbnRSZWN0LCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCwKICAgICAgICAgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVz
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGN1c3RvbUZpeGVkUG9zaXRpb25SZWN0LAotICAg
ICAgICBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIG9ic2N1cmVkSW5zZXQsIGRvdWJsZSBzY2Fs
ZSwgYm9vbCBpblN0YWJsZVN0YXRlLCBib29sIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVy
YWN0aXZlbHksIGJvb2wgYWxsb3dTaHJpbmtUb0ZpdCwKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBvYnNjdXJlZEluc2V0LCBkb3VibGUgc2NhbGUsIGJvb2wgaW5TdGFibGVTdGF0
ZSwgYm9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5LCBib29sIGFsbG93
U2hyaW5rVG9GaXQsIGJvb2wgZW5jbG9zZWRJblNjcm9sbFZpZXcsCiAgICAgICAgIGRvdWJsZSB0
aW1lc3RhbXAsIGRvdWJsZSBob3Jpem9udGFsVmVsb2NpdHksIGRvdWJsZSB2ZXJ0aWNhbFZlbG9j
aXR5LCBkb3VibGUgc2NhbGVDaGFuZ2VSYXRlLCB1aW50NjRfdCBsYXN0TGF5ZXJUcmVlVHJhbnNh
Y3Rpb25JZCkKICAgICAgICAgOiBtX2V4cG9zZWRDb250ZW50UmVjdChleHBvc2VkQ29udGVudFJl
Y3QpCiAgICAgICAgICwgbV91bm9ic2N1cmVkQ29udGVudFJlY3QodW5vYnNjdXJlZENvbnRlbnRS
ZWN0KQpAQCAtNTcsNiArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9pblN0YWJsZVN0YXRl
KGluU3RhYmxlU3RhdGUpCiAgICAgICAgICwgbV9pc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRl
cmFjdGl2ZWx5KGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHkpCiAgICAgICAg
ICwgbV9hbGxvd1Nocmlua1RvRml0KGFsbG93U2hyaW5rVG9GaXQpCisgICAgICAgICwgbV9lbmNs
b3NlZEluU2Nyb2xsVmlldyhlbmNsb3NlZEluU2Nyb2xsVmlldykKICAgICB7CiAgICAgfQogCkBA
IC03MCw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGluU3RhYmxlU3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX2luU3RhYmxlU3RhdGU7IH0KICAgICBib29sIGlzQ2hhbmdpbmdPYnNjdXJlZElu
c2V0c0ludGVyYWN0aXZlbHkoKSBjb25zdCB7IHJldHVybiBtX2lzQ2hhbmdpbmdPYnNjdXJlZElu
c2V0c0ludGVyYWN0aXZlbHk7IH0KICAgICBib29sIGFsbG93U2hyaW5rVG9GaXQoKSBjb25zdCB7
IHJldHVybiBtX2FsbG93U2hyaW5rVG9GaXQ7IH0KKyAgICBib29sIGVuY2xvc2VkSW5TY3JvbGxW
aWV3KCkgY29uc3QgeyByZXR1cm4gbV9lbmNsb3NlZEluU2Nyb2xsVmlldzsgfQogCiAgICAgZG91
YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CiAgICAgZG91Ymxl
IGhvcml6b250YWxWZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1faG9yaXpvbnRhbFZlbG9jaXR5
OyB9CkBAIC05Niw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luU3RhYmxlU3RhdGUg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2
ZWx5IHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dTaHJpbmtUb0ZpdCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2VuY2xvc2VkSW5TY3JvbGxWaWV3IHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgYSwgY29u
c3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgYikKQEAgLTExMCw3ICsxMTMsOCBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8m
IGEsIGNvbnN0IFZpc2libGVDb250ZQogICAgICAgICAmJiBhLnZlcnRpY2FsVmVsb2NpdHkoKSA9
PSBiLnZlcnRpY2FsVmVsb2NpdHkoKQogICAgICAgICAmJiBhLnNjYWxlQ2hhbmdlUmF0ZSgpID09
IGIuc2NhbGVDaGFuZ2VSYXRlKCkKICAgICAgICAgJiYgYS5pblN0YWJsZVN0YXRlKCkgPT0gYi5p
blN0YWJsZVN0YXRlKCkKLSAgICAgICAgJiYgYS5hbGxvd1Nocmlua1RvRml0KCkgPT0gYi5hbGxv
d1Nocmlua1RvRml0KCk7CisgICAgICAgICYmIGEuYWxsb3dTaHJpbmtUb0ZpdCgpID09IGIuYWxs
b3dTaHJpbmtUb0ZpdCgpCisgICAgICAgICYmIGEuZW5jbG9zZWRJblNjcm9sbFZpZXcoKSA9PSBi
LmVuY2xvc2VkSW5TY3JvbGxWaWV3KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBl
MmNlMTYyNjg0NWFmMmQ4MjVkYzUyOWNjZGQ0NDM1ZjJjMzdiZTJhLi4yMTJkZGRmMjM5MTljZTI4
ZjQxNjJjZDU1NmIyMTI3YjliNzI2ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjQwLDYgKzI0MCw4IEBAIEBpbXBsZW1lbnRh
dGlvbiBXS1dlYlZpZXcgewogICAgIFJldGFpblB0cjxVSVZpZXcgPFdLV2ViVmlld0NvbnRlbnRQ
cm92aWRlcj4+IF9jdXN0b21Db250ZW50VmlldzsKICAgICBSZXRhaW5QdHI8VUlWaWV3PiBfY3Vz
dG9tQ29udGVudEZpeGVkT3ZlcmxheVZpZXc7CiAKKyAgICBSZXRhaW5QdHI8TlNUaW1lcj4gX2Vu
Y2xvc2luZ1Njcm9sbFZpZXdTY3JvbGxUaW1lcjsKKwogICAgIFdlYkNvcmU6OkNvbG9yIF9zY3Jv
bGxWaWV3QmFja2dyb3VuZENvbG9yOwogCiAgICAgLy8gVGhpcyB2YWx1ZSB0cmFja3MgdGhlIGN1
cnJlbnQgYWRqdXN0bWVudCBhZGRlZCB0byB0aGUgYm90dG9tIGluc2V0IGR1ZSB0byB0aGUga2V5
Ym9hcmQgc2xpZGluZyBvdXQgZnJvbSB0aGUgYm90dG9tCkBAIC0xMDA2LDcgKzEwMDgsNyBAQCAt
ICh2b2lkKV9kaWRJbnZva2VVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrCiAgICAgX2RlbGF5
VXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyA9IE5POwogICAgIGlmIChfaGFkRGVsYXllZFVwZGF0
ZVZpc2libGVDb250ZW50UmVjdHMpIHsKICAgICAgICAgX2hhZERlbGF5ZWRVcGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzID0gTk87Ci0gICAgICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29udGVudFJl
Y3RzXTsKKyAgICAgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdEFmdGVyU2Nyb2xs
SW5WaWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsKICAgICB9CiB9CiAKQEAgLTE3NTAsNyArMTc1Miw3
IEBAIC0gKHZvaWQpX2RpZEZpbmlzaFNjcm9sbGluZwogICAgIGlmICghW3NlbGYgdXNlc1N0YW5k
YXJkQ29udGVudFZpZXddKQogICAgICAgICByZXR1cm47CiAKLSAgICBbc2VsZiBfdXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0c107CisgICAgW3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdEFm
dGVyU2Nyb2xsSW5WaWV3Ol9zY3JvbGxWaWV3LmdldCgpXTsKICAgICBbX2NvbnRlbnRWaWV3IGRp
ZEZpbmlzaFNjcm9sbGluZ107CiB9CiAKQEAgLTE4MDQsNyArMTgwNiw3IEBAIC0gKHZvaWQpc2Ny
b2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogICAgIGlmICghW3Nl
bGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKQogICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3
IHNjcm9sbFZpZXdEaWRTY3JvbGw6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXddOwogCi0gICAg
W3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOworICAgIFtzZWxmIF91cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RBZnRlclNjcm9sbEluVmlldzpzY3JvbGxWaWV3XTsKICAgICAKICAgICBp
ZiAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3JtYW5jZURhdGEqIHNjcm9s
bFBlcmZEYXRhID0gX3BhZ2UtPnNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YSgpKQogICAgICAgICBz
Y3JvbGxQZXJmRGF0YS0+ZGlkU2Nyb2xsKFtzZWxmIHZpc2libGVSZWN0SW5WaWV3Q29vcmRpbmF0
ZXNdKTsKQEAgLTE4MTMsMTMgKzE4MTUsMTMgQEAgLSAodm9pZClzY3JvbGxWaWV3RGlkU2Nyb2xs
OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiAtICh2b2lkKXNjcm9sbFZpZXdEaWRab29tOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiB7CiAgICAgW3NlbGYgX3VwZGF0ZVNjcm9sbFZpZXdC
YWNrZ3JvdW5kXTsKLSAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CisgICAg
W3NlbGYgX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdEFmdGVyU2Nyb2xsSW5WaWV3OnNjcm9sbFZp
ZXddOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmRab29taW5nOihVSVNjcm9sbFZpZXcg
KilzY3JvbGxWaWV3IHdpdGhWaWV3OihVSVZpZXcgKil2aWV3IGF0U2NhbGU6KENHRmxvYXQpc2Nh
bGUKIHsKICAgICBBU1NFUlQoc2Nyb2xsVmlldyA9PSBfc2Nyb2xsVmlldyk7Ci0gICAgW3NlbGYg
X3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHNdOworICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RBZnRlclNjcm9sbEluVmlldzpzY3JvbGxWaWV3XTsKICAgICBbX2NvbnRlbnRWaWV3
IGRpZFpvb21Ub1NjYWxlOnNjYWxlXTsKIH0KIApAQCAtMTgzNCw3ICsxODM2LDUwIEBAIC0gKHZv
aWQpX3Njcm9sbFZpZXdEaWRJbnRlcnJ1cHREZWNlbGVyYXRpbmc6KFVJU2Nyb2xsVmlldyAqKXNj
cm9sbFZpZXcKICAgICAgICAgcmV0dXJuOwogCiAgICAgW19jb250ZW50VmlldyBkaWRJbnRlcnJ1
cHRTY3JvbGxpbmddOworICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBZnRlclNj
cm9sbEluVmlldzpzY3JvbGxWaWV3XTsKK30KKworLSAoQ0dSZWN0KV92aXNpYmxlUmVjdEluRW5j
bG9zaW5nU2Nyb2xsVmlldzooVUlTY3JvbGxWaWV3ICopZW5jbG9zaW5nU2Nyb2xsVmlldworewor
ICAgIGlmICghZW5jbG9zaW5nU2Nyb2xsVmlldykKKyAgICAgICAgcmV0dXJuIHNlbGYuYm91bmRz
OworCisgICAgQ0dSZWN0IGV4cG9zZWRSZWN0ID0gW2VuY2xvc2luZ1Njcm9sbFZpZXcgY29udmVy
dFJlY3Q6ZW5jbG9zaW5nU2Nyb2xsVmlldy5ib3VuZHMgdG9WaWV3OnNlbGZdOworICAgIHJldHVy
biBDR1JlY3RJbnRlcnNlY3RzUmVjdChleHBvc2VkUmVjdCwgc2VsZi5ib3VuZHMpID8gQ0dSZWN0
SW50ZXJzZWN0aW9uKGV4cG9zZWRSZWN0LCBzZWxmLmJvdW5kcykgOiBDR1JlY3RaZXJvOworfQor
CistIChDR1JlY3QpX3Zpc2libGVDb250ZW50UmVjdAoreworICAgIENHUmVjdCB2aXNpYmxlUmVj
dEluQ29udGVudENvb3JkaW5hdGVzID0gX2Zyb3plblZpc2libGVDb250ZW50UmVjdCA/IF9mcm96
ZW5WaXNpYmxlQ29udGVudFJlY3QudmFsdWUoKSA6IFtzZWxmIGNvbnZlcnRSZWN0OnNlbGYuYm91
bmRzIHRvVmlldzpfY29udGVudFZpZXcuZ2V0KCldOworICAgIAorICAgIGlmIChVSVNjcm9sbFZp
ZXcgKmVuY2xvc2luZ1Njcm9sbGVyID0gW3NlbGYgX3Njcm9sbGVyXSkgeworICAgICAgICBDR1Jl
Y3Qgdmlld1Zpc2libGVSZWN0ID0gW3NlbGYgX3Zpc2libGVSZWN0SW5FbmNsb3NpbmdTY3JvbGxW
aWV3OmVuY2xvc2luZ1Njcm9sbGVyXTsKKyAgICAgICAgQ0dSZWN0IHZpZXdWaXNpYmxlQ29udGVu
dFJlY3QgPSBbc2VsZiBjb252ZXJ0UmVjdDp2aWV3VmlzaWJsZVJlY3QgdG9WaWV3Ol9jb250ZW50
Vmlldy5nZXQoKV07CisgICAgICAgIHZpc2libGVSZWN0SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBD
R1JlY3RJbnRlcnNlY3Rpb24odmlzaWJsZVJlY3RJbkNvbnRlbnRDb29yZGluYXRlcywgdmlld1Zp
c2libGVDb250ZW50UmVjdCk7CisgICAgfQorCisgICAgcmV0dXJuIHZpc2libGVSZWN0SW5Db250
ZW50Q29vcmRpbmF0ZXM7Cit9CisKKy8vIENhbGxlZCB3aGVuIHNvbWUgYW5jZXN0b3IgVUlTY3Jv
bGxWaWV3IHNjcm9sbHMuCistICh2b2lkKV9kaWRTY3JvbGwKK3sKKyAgICBbc2VsZiBfdXBkYXRl
VmlzaWJsZUNvbnRlbnRSZWN0QWZ0ZXJTY3JvbGxJblZpZXc6W3NlbGYgX3Njcm9sbGVyXV07CisK
KyAgICBjb25zdCBOU1RpbWVJbnRlcnZhbCBTY3JvbGxpbmdFbmRlZFRpbWVySW50ZXJ2YWwgPSAw
LjAzMjsKKyAgICBpZiAoX2VuY2xvc2luZ1Njcm9sbFZpZXdTY3JvbGxUaW1lcikKKyAgICAgICAg
W19lbmNsb3NpbmdTY3JvbGxWaWV3U2Nyb2xsVGltZXIgc2V0RmlyZURhdGU6W05TRGF0ZSBkYXRl
V2l0aFRpbWVJbnRlcnZhbFNpbmNlTm93OlNjcm9sbGluZ0VuZGVkVGltZXJJbnRlcnZhbF1dOwor
ICAgIGVsc2UgeworICAgICAgICBfZW5jbG9zaW5nU2Nyb2xsVmlld1Njcm9sbFRpbWVyID0gYWRv
cHROUyhbW05TVGltZXIgYWxsb2NdIGluaXRXaXRoRmlyZURhdGU6W05TRGF0ZSBkYXRlV2l0aFRp
bWVJbnRlcnZhbFNpbmNlTm93OlNjcm9sbGluZ0VuZGVkVGltZXJJbnRlcnZhbF0KKyAgICAgICAg
ICAgIGludGVydmFsOjAgdGFyZ2V0OnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9lbmNsb3NpbmdT
Y3JvbGxlclNjcm9sbGluZ0VuZGVkOikgdXNlckluZm86bmlsIHJlcGVhdHM6Tk9dKTsKKyAgICAg
ICAgW1tOU1J1bkxvb3AgbWFpblJ1bkxvb3BdIGFkZFRpbWVyOl9lbmNsb3NpbmdTY3JvbGxWaWV3
U2Nyb2xsVGltZXIuZ2V0KCkgZm9yTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZV07CisgICAgfQor
fQorCistICh2b2lkKV9lbmNsb3NpbmdTY3JvbGxlclNjcm9sbGluZ0VuZGVkOihOU1RpbWVyICop
dGltZXIKK3sKICAgICBbc2VsZiBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0c107CisgICAgX2Vu
Y2xvc2luZ1Njcm9sbFZpZXdTY3JvbGxUaW1lciA9IG5pbDsKIH0KIAogLSAodm9pZClfZnJhbWVP
ckJvdW5kc0NoYW5nZWQKQEAgLTE4NDcsNyArMTg5Miw3IEBAIC0gKHZvaWQpX2ZyYW1lT3JCb3Vu
ZHNDaGFuZ2VkCiAgICAgICAgICAgICBfcGFnZS0+c2V0Vmlld3BvcnRDb25maWd1cmF0aW9uTWlu
aW11bUxheW91dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXplKSk7CiAgICAgICAg
IGlmICghX292ZXJyaWRlc01heGltdW1Vbm9ic2N1cmVkU2l6ZSkKICAgICAgICAgICAgIF9wYWdl
LT5zZXRNYXhpbXVtVW5vYnNjdXJlZFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGJvdW5kcy5zaXpl
KSk7Ci0gICAgICAgIGlmIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0g
X3BhZ2UtPmRyYXdpbmdBcmVhKCkpCisgICAgICAgIGlmIChhdXRvIGRyYXdpbmdBcmVhID0gX3Bh
Z2UtPmRyYXdpbmdBcmVhKCkpCiAgICAgICAgICAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShXZWJD
b3JlOjpJbnRTaXplKGJvdW5kcy5zaXplKSwgV2ViQ29yZTo6SW50U2l6ZSgpLCBXZWJDb3JlOjpJ
bnRTaXplKCkpOwogICAgIH0KIApAQCAtMTg3Nyw2ICsxOTIyLDI5IEBAIC0gKEJPT0wpX3Njcm9s
bFZpZXdJc1J1YmJlckJhbmRpbmcKIAogLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
cwogeworICAgIC8vIEZvciB2aXNpYmxlIHJlY3QgdXBkYXRlcyBub3QgYXNzb2NpYXRlZCB3aXRo
IGEgc3BlZmljIFVJU2Nyb2xsVmlldywganVzdCBjb25zaWRlciBvdXIgb3duIHNjcm9sbGVyLgor
ICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBZnRlclNjcm9sbEluVmlldzpfc2Ny
b2xsVmlldy5nZXQoKV07Cit9CisKKy0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdEFm
dGVyU2Nyb2xsSW5WaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3Cit7CisgICAgQk9PTCBp
c1N0YWJsZVN0YXRlID0gIShbc2Nyb2xsVmlldyBpc0RyYWdnaW5nXSB8fCBbc2Nyb2xsVmlldyBp
c0RlY2VsZXJhdGluZ10gfHwgW3Njcm9sbFZpZXcgaXNab29taW5nXSB8fCBbc2Nyb2xsVmlldyBf
aXNBbmltYXRpbmdab29tXSB8fCBbc2Nyb2xsVmlldyBfaXNTY3JvbGxpbmdUb1RvcF0pOworCisg
ICAgaWYgKGlzU3RhYmxlU3RhdGUgJiYgc2Nyb2xsVmlldyA9PSBfc2Nyb2xsVmlldy5nZXQoKSkK
KyAgICAgICAgaXNTdGFibGVTdGF0ZSA9ICFfaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJh
Y3RpdmVseTsKKyAgICAKKyAgICBpZiAoaXNTdGFibGVTdGF0ZSAmJiBzY3JvbGxWaWV3ID09IF9z
Y3JvbGxWaWV3LmdldCgpKQorICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtzZWxmIF9zY3JvbGxW
aWV3SXNSdWJiZXJCYW5kaW5nXTsKKworICAgIC8vIEZJWE1FOiB0aGlzIGNhbiBiZSBtYWRlIHN0
YXRpYyBhZnRlciB3ZSBzdG9wIHN1cHBvcnRpbmcgaU9TIDgueC4KKyAgICBpZiAoaXNTdGFibGVT
dGF0ZSAmJiBbc2Nyb2xsVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9pc0ludGVy
cnVwdGluZ0RlY2VsZXJhdGlvbildKQorICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtzY3JvbGxW
aWV3IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9u
KV07CisKKyAgICBbc2VsZiBfdXBkYXRlQ29udGVudFJlY3RzV2l0aFN0YXRlOmlzU3RhYmxlU3Rh
dGVdOworfQorCistICh2b2lkKV91cGRhdGVDb250ZW50UmVjdHNXaXRoU3RhdGU6KEJPT0wpaW5T
dGFibGVTdGF0ZQorewogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXddKSB7
CiAgICAgICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2ViX2NvbXB1dGVkQ29udGVudEluc2V0RGlk
Q2hhbmdlXTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTg5NCw3ICsxOTYyLDcgQEAgLSAodm9pZClf
dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cwogICAgICAgICByZXR1cm47CiAKICAgICBDR1JlY3Qg
ZnVsbFZpZXdSZWN0ID0gc2VsZi5ib3VuZHM7Ci0gICAgQ0dSZWN0IHZpc2libGVSZWN0SW5Db250
ZW50Q29vcmRpbmF0ZXMgPSBfZnJvemVuVmlzaWJsZUNvbnRlbnRSZWN0ID8gX2Zyb3plblZpc2li
bGVDb250ZW50UmVjdC52YWx1ZSgpIDogW3NlbGYgY29udmVydFJlY3Q6ZnVsbFZpZXdSZWN0IHRv
VmlldzpfY29udGVudFZpZXcuZ2V0KCldOworICAgIENHUmVjdCB2aXNpYmxlUmVjdEluQ29udGVu
dENvb3JkaW5hdGVzID0gW3NlbGYgX3Zpc2libGVDb250ZW50UmVjdF07CiAKICAgICBVSUVkZ2VJ
bnNldHMgY29tcHV0ZWRDb250ZW50SW5zZXRVbmFkanVzdGVkRm9yS2V5Ym9hcmQgPSBbc2VsZiBf
Y29tcHV0ZWRDb250ZW50SW5zZXRdOwogICAgIGlmICghX2hhdmVTZXRPYnNjdXJlZEluc2V0cykK
QEAgLTE5MDUsMTcgKzE5NzMsMTAgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
cwogCiAgICAgQ0dGbG9hdCBzY2FsZUZhY3RvciA9IGNvbnRlbnRab29tU2NhbGUoc2VsZik7CiAK
LSAgICBCT09MIGlzU3RhYmxlU3RhdGUgPSAhKF9pc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRl
cmFjdGl2ZWx5IHx8IFtfc2Nyb2xsVmlldyBpc0RyYWdnaW5nXSB8fCBbX3Njcm9sbFZpZXcgaXNE
ZWNlbGVyYXRpbmddIHx8IFtfc2Nyb2xsVmlldyBpc1pvb21pbmddIHx8IFtfc2Nyb2xsVmlldyBf
aXNBbmltYXRpbmdab29tXSB8fCBbX3Njcm9sbFZpZXcgX2lzU2Nyb2xsaW5nVG9Ub3BdIHx8IFtz
ZWxmIF9zY3JvbGxWaWV3SXNSdWJiZXJCYW5kaW5nXSk7Ci0KLSAgICAvLyBGSVhNRTogdGhpcyBj
YW4gYmUgbWFkZSBzdGF0aWMgYWZ0ZXIgd2Ugc3RvcCBzdXBwb3J0aW5nIGlPUyA4LnguCi0gICAg
aWYgKGlzU3RhYmxlU3RhdGUgJiYgW19zY3JvbGxWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uKV0pCi0gICAgICAgIGlzU3RhYmxlU3Rh
dGUgPSAhW19zY3JvbGxWaWV3IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2lzSW50ZXJydXB0
aW5nRGVjZWxlcmF0aW9uKV07Ci0KICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAmJiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQotICAgIGlmIChpc1N0YWJsZVN0YXRlKSB7CisgICAgaWYgKGlu
U3RhYmxlU3RhdGUpIHsKICAgICAgICAgV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
clByb3h5KiBjb29yZGluYXRvciA9IF9wYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvclByb3h5KCk7
CiAgICAgICAgIGlmIChjb29yZGluYXRvciAmJiBjb29yZGluYXRvci0+aGFzQWN0aXZlU25hcFBv
aW50KCkpIHsKLSAgICAgICAgICAgIENHUmVjdCBmdWxsVmlld1JlY3QgPSBzZWxmLmJvdW5kczsK
ICAgICAgICAgICAgIENHUmVjdCB1bm9ic2N1cmVkUmVjdCA9IFVJRWRnZUluc2V0c0luc2V0UmVj
dChmdWxsVmlld1JlY3QsIGNvbXB1dGVkQ29udGVudEluc2V0VW5hZGp1c3RlZEZvcktleWJvYXJk
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQ0dQb2ludCBjdXJyZW50UG9pbnQgPSBbX3Nj
cm9sbFZpZXcgY29udGVudE9mZnNldF07CkBAIC0xOTM2LDggKzE5OTcsOSBAQCAtICh2b2lkKV91
cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzCiAgICAgICAgIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxW
aWV3Q29vcmRpbmF0ZXM6dW5vYnNjdXJlZFJlY3QKICAgICAgICAgb2JzY3VyZWRJbnNldDpDR1Np
emVNYWtlKF9vYnNjdXJlZEluc2V0cy5sZWZ0LCBfb2JzY3VyZWRJbnNldHMudG9wKQogICAgICAg
ICBzY2FsZTpzY2FsZUZhY3RvciBtaW5pbXVtU2NhbGU6W19zY3JvbGxWaWV3IG1pbmltdW1ab29t
U2NhbGVdCi0gICAgICAgIGluU3RhYmxlU3RhdGU6aXNTdGFibGVTdGF0ZQotICAgICAgICBpc0No
YW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5Ol9pc0NoYW5naW5nT2JzY3VyZWRJbnNl
dHNJbnRlcmFjdGl2ZWx5XTsKKyAgICAgICAgaW5TdGFibGVTdGF0ZTppblN0YWJsZVN0YXRlCisg
ICAgICAgIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6X2lzQ2hhbmdpbmdP
YnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHkKKyAgICAgICAgZW5jbG9zZWRJblNjcm9sbFZpZXc6
W3NlbGYgX3Njcm9sbGVyXV07CiB9CiAKIC0gKHZvaWQpX2RpZEZpbmlzaExvYWRGb3JNYWluRnJh
bWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaAppbmRleCBiNTMxYTMxZGRhYjM0NzQ0MTQ5ZjEyYThlNzFmNDRmNzQyOTBh
NDFlLi42ZTlkNDM1YmUxN2M4ODdkMjZjZGNkNzExMDcxYzI3ZGFkM2Q4ZmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC05OSw2ICs5OSw4IEBAIHN0cnVjdCBQcmludEluZm87CiAtICh2b2lkKV9kaWRJbnZv
a2VVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrOwogCiAtICh2b2lkKV91cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzOworLSAodm9pZClfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QWZ0ZXJTY3Jv
bGxJblZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXc7CistICh2b2lkKV91cGRhdGVDb250
ZW50UmVjdHNXaXRoU3RhdGU6KEJPT0wpaW5TdGFibGVTdGF0ZTsKIAogLSAodm9pZClfZGlkRmlu
aXNoTG9hZEZvck1haW5GcmFtZTsKIC0gKHZvaWQpX2RpZEZhaWxMb2FkRm9yTWFpbkZyYW1lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDQ2OGE4ZjFjMWIzZWE4
Y2M0MmUxZTNjZjA3YzQ0YmE4ODJkMTEwYzUuLjg5OWNlNGM4MjlmM2Y0NDU2ZWJlNmJlYzM3MjRl
MDNiYTRmN2UyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTQ1Miw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBl
eHBvc2VkQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3RWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUuZXhwb3NlZENvbnRlbnRSZWN0KCk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZS51bm9ic2N1cmVkQ29udGVudFJlY3QoKTsgfQogCi0gICAgdm9p
ZCB1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZXhw
b3NlZFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRl
cywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjdXN0b21GaXhlZFBvc2l0aW9uUmVjdCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBvYnNjdXJlZEluc2V0LCBkb3VibGUgc2NhbGUsIGJvb2wg
aW5TdGFibGVTdGF0ZSwgYm9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5
LCBib29sIGFsbG93U2hyaW5rVG9GaXQsIGRvdWJsZSB0aW1lc3RhbXAsIGRvdWJsZSBob3Jpem9u
dGFsVmVsb2NpdHksIGRvdWJsZSB2ZXJ0aWNhbFZlbG9jaXR5LCBkb3VibGUgc2NhbGVDaGFuZ2VS
YXRlKTsKKyAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlSW5mbyYpOwogICAgIHZvaWQgcmVzZW5kTGFzdFZpc2libGVDb250ZW50
UmVjdHMoKTsKIAogICAgIGVudW0gY2xhc3MgVW5vYnNjdXJlZFJlY3RDb25zdHJhaW50IHsgQ29u
c3RyYWluZWRUb0RvY3VtZW50UmVjdCwgVW5jb25zdHJhaW5lZCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaAppbmRleCBjYWQwMTRjNThhYzA4MTU3MmEx
MTBkNTE2ZDBmOTQ1NzJjMjllNmU3Li4xMmRmNTU3YjI4NTVkMzIyNjY0MWI1ZDBkYjgxMjY2MzI5
ZTJlZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
aApAQCAtNzAsNyArNzAsOSBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKICAgICB1bm9ic2N1cmVk
UmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOihDR1JlY3QpdW5vYnNjdXJlZFJlY3RJblNjcm9s
bFZpZXdDb29yZGluYXRlcwogICAgIG9ic2N1cmVkSW5zZXQ6KENHU2l6ZSl0b3BJbnNldAogICAg
IHNjYWxlOihDR0Zsb2F0KXNjYWxlIG1pbmltdW1TY2FsZTooQ0dGbG9hdCltaW5pbXVtU2NhbGUK
LSAgICBpblN0YWJsZVN0YXRlOihCT09MKWlzU3RhYmxlU3RhdGUgaXNDaGFuZ2luZ09ic2N1cmVk
SW5zZXRzSW50ZXJhY3RpdmVseTooQk9PTClpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFj
dGl2ZWx5OworICAgIGluU3RhYmxlU3RhdGU6KEJPT0wpaXNTdGFibGVTdGF0ZQorICAgIGlzQ2hh
bmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6KEJPT0wpaXNDaGFuZ2luZ09ic2N1cmVk
SW5zZXRzSW50ZXJhY3RpdmVseQorICAgIGVuY2xvc2VkSW5TY3JvbGxWaWV3OihCT09MKWVuY2xv
c2VkSW5TY3JvbGxWaWV3OwogCiAtICh2b2lkKWRpZEZpbmlzaFNjcm9sbGluZzsKIC0gKHZvaWQp
ZGlkSW50ZXJydXB0U2Nyb2xsaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCmluZGV4IGIzOTViMjZlZGU1YmNiOTcyYzA0NmJhZTk1YTU3YmRmYWI3
MmVhMDguLjkwMjVmYzAzMDgwYTc0NDg5MmI1Njg1MWU0MDFmNjEzOGQ5ODJkZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTM1Niw4ICsz
NTYsMTIgQEAgLSAodm9pZCl1cGRhdGVGaXhlZENsaXBwaW5nVmlldzooRmxvYXRSZWN0KWZpeGVk
UG9zaXRpb25SZWN0Rm9yVUkKIH0KIAogLSAodm9pZClkaWRVcGRhdGVWaXNpYmxlUmVjdDooQ0dS
ZWN0KXZpc2libGVSZWN0IHVub2JzY3VyZWRSZWN0OihDR1JlY3QpdW5vYnNjdXJlZFJlY3QgdW5v
YnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29yZGluYXRlczooQ0dSZWN0KXVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMKLSAgICBvYnNjdXJlZEluc2V0OihDR1NpemUpb2JzY3Vy
ZWRJbnNldCBzY2FsZTooQ0dGbG9hdCl6b29tU2NhbGUgbWluaW11bVNjYWxlOihDR0Zsb2F0KW1p
bmltdW1TY2FsZSBpblN0YWJsZVN0YXRlOihCT09MKWlzU3RhYmxlU3RhdGUgaXNDaGFuZ2luZ09i
c2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseTooQk9PTClpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJ
bnRlcmFjdGl2ZWx5CisgICAgb2JzY3VyZWRJbnNldDooQ0dTaXplKW9ic2N1cmVkSW5zZXQgc2Nh
bGU6KENHRmxvYXQpem9vbVNjYWxlIG1pbmltdW1TY2FsZTooQ0dGbG9hdCltaW5pbXVtU2NhbGUg
aW5TdGFibGVTdGF0ZTooQk9PTClpc1N0YWJsZVN0YXRlIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0
c0ludGVyYWN0aXZlbHk6KEJPT0wpaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVs
eSBlbmNsb3NlZEluU2Nyb2xsVmlldzooQk9PTCllbmNsb3NlZEluU2Nyb2xsVmlldwogeworICAg
IGF1dG8gZHJhd2luZ0FyZWEgPSBfcGFnZS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBpZiAoIWRyYXdp
bmdBcmVhKQorICAgICAgICByZXR1cm47CisKICAgICBkb3VibGUgdGltZXN0YW1wID0gbW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgSGlzdG9yaWNhbFZlbG9jaXR5RGF0YTo6VmVs
b2NpdHlEYXRhIHZlbG9jaXR5RGF0YTsKICAgICBpZiAoIWlzU3RhYmxlU3RhdGUpCkBAIC0zNjYs
MTYgKzM3MCwzMiBAQCAtICh2b2lkKWRpZFVwZGF0ZVZpc2libGVSZWN0OihDR1JlY3QpdmlzaWJs
ZVJlY3QgdW5vYnNjdXJlZFJlY3Q6KENHUmVjdCl1bm9ic2N1cgogICAgICAgICBfaGlzdG9yaWNh
bEtpbmVtYXRpY0RhdGEuY2xlYXIoKTsKIAogICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVj
dEZvckxheW91dCA9IF9wYWdlLT5jb21wdXRlQ3VzdG9tRml4ZWRQb3NpdGlvblJlY3QodW5vYnNj
dXJlZFJlY3QsIHpvb21TY2FsZSwgV2ViUGFnZVByb3h5OjpVbm9ic2N1cmVkUmVjdENvbnN0cmFp
bnQ6OkNvbnN0cmFpbmVkVG9Eb2N1bWVudFJlY3QpOwotICAgIF9wYWdlLT51cGRhdGVWaXNpYmxl
Q29udGVudFJlY3RzKHZpc2libGVSZWN0LCB1bm9ic2N1cmVkUmVjdCwgdW5vYnNjdXJlZFJlY3RJ
blNjcm9sbFZpZXdDb29yZGluYXRlcywgZml4ZWRQb3NpdGlvblJlY3RGb3JMYXlvdXQsIFdlYkNv
cmU6OkZsb2F0U2l6ZShvYnNjdXJlZEluc2V0KSwKLSAgICAgICAgem9vbVNjYWxlLCBpc1N0YWJs
ZVN0YXRlLCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5LCBfd2ViVmlldy5f
YWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdCwgdGltZXN0YW1wLCB2ZWxvY2l0eURhdGEuaG9yaXpv
bnRhbFZlbG9jaXR5LCB2ZWxvY2l0eURhdGEudmVydGljYWxWZWxvY2l0eSwgdmVsb2NpdHlEYXRh
LnNjYWxlQ2hhbmdlUmF0ZSk7CisKKyAgICBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8oCisgICAgICAgIHZpc2libGVSZWN0LAorICAgICAg
ICB1bm9ic2N1cmVkUmVjdCwKKyAgICAgICAgdW5vYnNjdXJlZFJlY3RJblNjcm9sbFZpZXdDb29y
ZGluYXRlcywKKyAgICAgICAgZml4ZWRQb3NpdGlvblJlY3RGb3JMYXlvdXQsCisgICAgICAgIFdl
YkNvcmU6OkZsb2F0U2l6ZShvYnNjdXJlZEluc2V0KSwKKyAgICAgICAgem9vbVNjYWxlLAorICAg
ICAgICBpc1N0YWJsZVN0YXRlLAorICAgICAgICBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRl
cmFjdGl2ZWx5LAorICAgICAgICBfd2ViVmlldy5fYWxsb3dzVmlld3BvcnRTaHJpbmtUb0ZpdCwK
KyAgICAgICAgZW5jbG9zZWRJblNjcm9sbFZpZXcsCisgICAgICAgIHRpbWVzdGFtcCwKKyAgICAg
ICAgdmVsb2NpdHlEYXRhLmhvcml6b250YWxWZWxvY2l0eSwKKyAgICAgICAgdmVsb2NpdHlEYXRh
LnZlcnRpY2FsVmVsb2NpdHksCisgICAgICAgIHZlbG9jaXR5RGF0YS5zY2FsZUNoYW5nZVJhdGUs
CisgICAgICAgIGRvd25jYXN0PFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk+KCpkcmF3
aW5nQXJlYSkubGFzdENvbW1pdHRlZExheWVyVHJlZVRyYW5zYWN0aW9uSUQoKSk7CisKKyAgICBf
cGFnZS0+dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvKTsKIAogICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkqIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yID0gX3BhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkoKTsKICAgICBGbG9h
dFJlY3QgZml4ZWRQb3NpdGlvblJlY3QgPSBfcGFnZS0+Y29tcHV0ZUN1c3RvbUZpeGVkUG9zaXRp
b25SZWN0KF9wYWdlLT51bm9ic2N1cmVkQ29udGVudFJlY3QoKSwgem9vbVNjYWxlKTsKICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+dmlld3BvcnRDaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5n
KHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5yb290U2Nyb2xsaW5nTm9kZUlEKCksIGZpeGVkUG9zaXRp
b25SZWN0LCB6b29tU2NhbGUpOwogCi0gICAgaWYgKGF1dG8gZHJhd2luZ0FyZWEgPSBfcGFnZS0+
ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgZHJhd2luZ0FyZWEtPnVwZGF0ZURlYnVnSW5kaWNhdG9y
KCk7Ci0gICAgICAgIAorICAgIGRyYXdpbmdBcmVhLT51cGRhdGVEZWJ1Z0luZGljYXRvcigpOwor
ICAgIAogICAgIFtzZWxmIHVwZGF0ZUZpeGVkQ2xpcHBpbmdWaWV3OmZpeGVkUG9zaXRpb25SZWN0
XTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCBiYWJmMmVlYzk4NGE2OGVlYTc0OWM3NDY2N2JjNjBhM2JmZWNkZjI2Li4zNjAy
NWM2MzhmMjg5NzAwYWJmNWU3ZjQ4ZDZhNjZhNjc0ODc3NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTgyLDE4ICsxODIsMTYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmF1dG9jb3JyZWN0aW9uQ29udGV4dENhbGxiYWNrKGNvbnN0
IFN0cmluZyYgYmVmb3JlVGV4dCwgY29uc3QKICAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNr
V2l0aFJldHVyblZhbHVlKGJlZm9yZVRleHQsIG1hcmtlZFRleHQsIHNlbGVjdGVkVGV4dCwgYWZ0
ZXJUZXh0LCBsb2NhdGlvbiwgbGVuZ3RoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0
ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBleHBvc2VkUmVj
dCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkUmVjdCwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGN1c3RvbUZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIG9ic2N1cmVkSW5zZXQsIGRvdWJsZSBzY2FsZSwgYm9vbCBpblN0YWJs
ZVN0YXRlLCBib29sIGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHksIGJvb2wg
YWxsb3dTaHJpbmtUb0ZpdCwgZG91YmxlIHRpbWVzdGFtcCwgZG91YmxlIGhvcml6b250YWxWZWxv
Y2l0eSwgZG91YmxlIHZlcnRpY2FsVmVsb2NpdHksIGRvdWJsZSBzY2FsZUNoYW5nZVJhdGUpCit2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUpCiB7CiAgICAg
aWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyhleHBvc2VkUmVjdCwgdW5v
YnNjdXJlZFJlY3QsIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXMsIGN1c3Rv
bUZpeGVkUG9zaXRpb25SZWN0LCBvYnNjdXJlZEluc2V0LCBzY2FsZSwgaW5TdGFibGVTdGF0ZSwg
aXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseSwgYWxsb3dTaHJpbmtUb0ZpdCwg
dGltZXN0YW1wLCBob3Jpem9udGFsVmVsb2NpdHksIHZlcnRpY2FsVmVsb2NpdHksIHNjYWxlQ2hh
bmdlUmF0ZSwgZG93bmNhc3Q8UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eT4oKmRyYXdp
bmdBcmVhKCkpLmxhc3RDb21taXR0ZWRMYXllclRyZWVUcmFuc2FjdGlvbklEKCkpOwotCi0gICAg
aWYgKHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8gPT0gbV9sYXN0VmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlKQorICAgIGlmICh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPT0gbV9sYXN0Vmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2xhc3RWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGUgPSB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6OlZpc2libGVD
b250ZW50UmVjdFVwZGF0ZShtX3BhZ2VJRCwgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyks
IDApOworICAgIG1fbGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSA9IHZpc2libGVDb250ZW50
UmVjdFVwZGF0ZTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNw
YXRjaGVyOjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUobV9wYWdlSUQsIHZpc2libGVDb250ZW50
UmVjdFVwZGF0ZSksIDApOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZW5kTGFzdFZpc2li
bGVDb250ZW50UmVjdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IDc0ZTVi
MDY5YzcyYjk2ZmMxNmI5MzkxM2QyNDk5ZmU5OWE3NTg3YjQuLjZmMjk2ZTdmNTBlZmU2Mjc4MDk1
ZjZiNDY0Y2VjYWM3MzE3NzY1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAg
LTI1OSw2ICsyNTksOCBAQCBGbG9hdFBvaW50IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OmluZGljYXRvckxvY2F0aW9uKCkgY29uc3QKICAgICBpZiAobV93ZWJQYWdlUHJveHkuZGVs
ZWdhdGVzU2Nyb2xsaW5nKCkpIHsKICNpZiBQTEFURk9STShJT1MpCiAgICAgICAgIEZsb2F0UG9p
bnQgdGlsZWRNYXBMb2NhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnVub2JzY3VyZWRDb250ZW50UmVj
dCgpLmxvY2F0aW9uKCk7CisgICAgICAgIHRpbGVkTWFwTG9jYXRpb24gPSB0aWxlZE1hcExvY2F0
aW9uLmV4cGFuZGVkVG8obV93ZWJQYWdlUHJveHkuZXhwb3NlZENvbnRlbnRSZWN0KCkubG9jYXRp
b24oKSArIEZsb2F0U2l6ZSgwLCA2MCkpOworCiAgICAgICAgIGZsb2F0IGFic29sdXRlSW5zZXQg
PSBpbmRpY2F0b3JJbnNldCAvIG1fd2ViUGFnZVByb3h5LmRpc3BsYXllZENvbnRlbnRTY2FsZSgp
OwogICAgICAgICB0aWxlZE1hcExvY2F0aW9uICs9IEZsb2F0U2l6ZShhYnNvbHV0ZUluc2V0LCBh
YnNvbHV0ZUluc2V0KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNTBiNDlhMDBmZDhmZDUzZDI0YzUyMTgw
NTA4Yjk1NTkxNzg4ZWVmOC4uODg0MDVhZTMyMjYxMzNhZWY5ZjM1N2M5MTBlNTUxNjcyOGE3OWVm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQpAQCAtMjk2NCw3ICsyOTY0LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2kK
ICAgICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwogCiAgICAgZnJhbWVWaWV3
LnNldFVub2JzY3VyZWRDb250ZW50U2l6ZSh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLnVu
b2JzY3VyZWRDb250ZW50UmVjdCgpLnNpemUoKSk7Ci0gICAgZnJhbWVWaWV3LnBsYXRmb3JtU2V0
T2JzY3VyZWRJbnNldCh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLm9ic2N1cmVkSW5zZXQo
KSk7CisgICAgbV9wYWdlLT5zZXRPYnNjdXJlZEluc2V0KHZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8ub2JzY3VyZWRJbnNldCgpKTsKKyAgICBtX3BhZ2UtPnNldEVuY2xvc2VkSW5TY3JvbGxW
aWV3KHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uZW5jbG9zZWRJblNjcm9sbFZpZXcoKSk7
CiAKICAgICBkb3VibGUgaG9yaXpvbnRhbFZlbG9jaXR5ID0gdmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mby5ob3Jpem9udGFsVmVsb2NpdHkoKTsKICAgICBkb3VibGUgdmVydGljYWxWZWxvY2l0
eSA9IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udmVydGljYWxWZWxvY2l0eSgpOwo=
</data>
<flag name="review"
          id="300376"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>