<?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>168653</bug_id>
          
          <creation_ts>2017-02-21 06:45:49 -0800</creation_ts>
          <short_desc>[iOS] WebKit1 should use shared memory pressure handler code.</short_desc>
          <delta_ts>2017-02-21 13:06:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1279301</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-02-21 06:45:49 -0800</bug_when>
    <thetext>WebKit1 on iOS currently has its own little memory pressure handler implementation. Let&apos;s share the code with the other ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279308</commentid>
    <comment_count>1</comment_count>
      <attachid>302254</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-02-21 07:02:00 -0800</bug_when>
    <thetext>Created attachment 302254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279309</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 07:04:38 -0800</bug_when>
    <thetext>Attachment 302254 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebView.mm:9876:  No space between ^ and block definition.  [whitespace/brackets] [4]
Total errors found: 1 in 6 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>1279310</commentid>
    <comment_count>3</comment_count>
      <attachid>302255</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-02-21 07:06:09 -0800</bug_when>
    <thetext>Created attachment 302255
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279311</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 07:07:26 -0800</bug_when>
    <thetext>Attachment 302255 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebView.mm:9842:  No space between ^ and block definition.  [whitespace/brackets] [4]
Total errors found: 1 in 6 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>1279317</commentid>
    <comment_count>5</comment_count>
      <attachid>302255</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-02-21 07:24:38 -0800</bug_when>
    <thetext>Comment on attachment 302255
Patch

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

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:-459
&gt; -+ (BOOL)_isUnderMemoryPressure;
&gt; -+ (void)_clearMemoryPressure;
&gt; -+ (BOOL)_shouldWaitForMemoryClearMessage;
&gt; -+ (void)_releaseMemoryNow;

Please make sure there are no clients for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279327</commentid>
    <comment_count>6</comment_count>
      <attachid>302259</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-02-21 08:10:35 -0800</bug_when>
    <thetext>Created attachment 302259
Patch for landing

Keep _releaseMemoryNow as it turns out there are Apple-internal clients for that. Thx2Antti for being suspicious about this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279330</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 08:11:28 -0800</bug_when>
    <thetext>Attachment 302259 did not pass style-queue:


ERROR: Source/WebKit/mac/WebView/WebView.mm:1678:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/WebKit/mac/WebView/WebView.mm:9849:  No space between ^ and block definition.  [whitespace/brackets] [4]
Total errors found: 2 in 6 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>1279495</commentid>
    <comment_count>8</comment_count>
      <attachid>302259</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 13:06:36 -0800</bug_when>
    <thetext>Comment on attachment 302259
Patch for landing

Clearing flags on attachment: 302259

Committed r212742: &lt;http://trac.webkit.org/changeset/212742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279496</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-21 13:06:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302254</attachid>
            <date>2017-02-21 07:02:00 -0800</date>
            <delta_ts>2017-02-21 07:06:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168653.diff</filename>
            <type>text/plain</type>
            <size>16141</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMTU2MzI5NjM4YS4uZDYwODkxMDQwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wMi0yMSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gV2ViS2l0MSBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgcHJlc3N1
cmUgaGFuZGxlciBjb2RlLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY4NjUzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBp
T1MgV2ViS2l0MSBzcGVjaWZpYyBtZW1iZXJzIGFuZCBjb2RlIGZyb20gTWVtb3J5UHJlc3N1cmVI
YW5kbGVyIGluIGZhdm9yCisgICAgICAgIG9mIHVzaW5nIHRoZSBzYW1lIGNvZGUgdGhhdCBpT1Mg
V2ViS2l0MiBhbmQgbWFjT1MgV2ViS2l0IHVzZXMuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL01l
bW9yeVJlbGVhc2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1l
bW9yeSk6IEFkZCB0d28gY2xlYW51cCBjYWxscyB0aGF0IHdlcmUgb25seSBpbiB0aGUgaU9TIFdl
YlZpZXcgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bV9yZWxlYXNlTWVtb3J5
QmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJl
SGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6Omluc3RhbGxNZW1vcnlSZWxlYXNlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRSZWNlaXZlZE1lbW9yeVByZXNzdXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Y2xlYXJN
ZW1vcnlQcmVzc3VyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNob3VsZFdhaXRGb3JNZW1vcnlDbGVhck1lc3NhZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVz
c3VyZUlmTmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNy0wMi0yMCAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhbCBhdWRpby1vbmx5IHN0cmVhbSB3aWxsIG5v
dCB0cmlnZ2VyIHBsYXliYWNrIHRvIGJlZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCmluZGV4IDQ0ZWNjZWUyYWMzLi40OTViODExNjEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0K
QEAgLTMyLDYgKzMyLDEyIEBACiAjaW1wb3J0ICJMYXllclBvb2wuaCIKICNpbXBvcnQgPG5vdGlm
eS5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiTGVnYWN5VGlsZUNhY2hlLmgiCisj
aW1wb3J0ICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCIKKyNlbmRpZgorCisKIGV4
dGVybiAiQyIgdm9pZCBfc3FsaXRlM19wdXJnZUVsaWdpYmxlUGFnZXJDYWNoZU1lbW9yeSh2b2lk
KTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNiArNTMsMTEgQEAgdm9pZCBwbGF0Zm9y
bVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiAgICAgZm9yIChhdXRvJiBwb29sIDogTGF5ZXJQb29s
OjphbGxMYXllclBvb2xzKCkpCiAgICAgICAgIHBvb2wtPmRyYWluKCk7CiAKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgTGVnYWN5VGlsZUNhY2hlOjpkcmFpbkxheWVyUG9vbCgpOworICAgIHRpbGVD
b250cm9sbGVyTWVtb3J5SGFuZGxlcigpLnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCgwKTsK
KyNlbmRpZgorCiAjaWYgVVNFKElPU1VSRkFDRSkKICAgICBJT1N1cmZhY2VQb29sOjpzaGFyZWRQ
b29sKCkuZGlzY2FyZEFsbFN1cmZhY2VzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggMDI4YWM4YzI2NGEuLjkzY2Q0
ZDgyNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaApAQCAtMzYsMjUgKzM2LDEyIEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jZW5kaWYK
LQogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShJT1MpCi1lbnVtIE1lbW9yeVBy
ZXNzdXJlUmVhc29uIHsKLSAgICBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgPSAwIDw8IDAsCi0g
ICAgTWVtb3J5UHJlc3N1cmVSZWFzb25WTVByZXNzdXJlID0gMSA8PCAwLAotICAgIE1lbW9yeVBy
ZXNzdXJlUmVhc29uVk1TdGF0dXMgPSAxIDw8IDEsCi19OwotI2VuZGlmCi0KIGVudW0gY2xhc3Mg
TWVtb3J5VXNhZ2VQb2xpY3kgewogICAgIFVucmVzdHJpY3RlZCwgLy8gQWxsb2NhdGUgYXMgbXVj
aCBhcyB5b3Ugd2FudAogICAgIENvbnNlcnZhdGl2ZSwgLy8gTWF5YmUgeW91IGRvbid0IGNhY2hl
IGV2ZXJ5IHNpbmdsZSB0aGluZwpAQCAtOTUsMTQgKzgyLDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCBiKSB7IG1fdW5kZXJNZW1vcnlQcmVz
c3VyZSA9IGI7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHNo
YXJlIG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnN0YWxsTWVtb3J5UmVsZWFzZUJsb2NrKHZvaWQgKF5yZWxlYXNlTWVtb3J5QmxvY2spKCks
IGJvb2wgY2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSA9IHRydWUpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UmVjZWl2ZWRNZW1vcnlQcmVzc3VyZShNZW1vcnlQcmVzc3VyZVJlYXNv
bik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck1lbW9yeVByZXNzdXJlKCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCk7Ci0g
ICAgdm9pZCByZXNwb25kVG9NZW1vcnlQcmVzc3VyZUlmTmVlZGVkKCk7Ci0jZWxpZiBPUyhMSU5V
WCkKKyNpZiBPUyhMSU5VWCkKICAgICB2b2lkIHNldE1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRs
ZShpbnQgZmQpOwogI2VuZGlmCiAKQEAgLTIwMiwxNCArMTgyLDcgQEAgcHJpdmF0ZToKICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9tZW1vcnlLaWxsQ2FsbGJhY2s7CiAgICAgV1RGOjpGdW5j
dGlvbjxib29sKCk+IG1fcHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2s7CiAK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IENhbiB3ZSBzaGFyZSBtb3JlIG9mIHRo
aXMgd2l0aCBPcGVuU291cmNlPwotICAgIHVpbnQzMl90IG1fbWVtb3J5UHJlc3N1cmVSZWFzb24g
eyBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgfTsKLSAgICBib29sIG1fY2xlYXJQcmVzc3VyZU9u
TWVtb3J5UmVsZWFzZSB7IHRydWUgfTsKLSAgICB2b2lkIChebV9yZWxlYXNlTWVtb3J5QmxvY2sp
KCkgeyBudWxscHRyIH07Ci0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlciB7IG51
bGxwdHIgfTsKLSAgICBMb2NrIG1fb2JzZXJ2ZXJNdXRleDsKLSNlbGlmIE9TKExJTlVYKQorI2lm
IE9TKExJTlVYKQogICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2V2ZW50RkQ7CiAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IG1fcHJlc3N1cmVMZXZlbEZEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dEZEUG9sbGVyPiBtX2V2ZW50RkRQb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IGJm
ZmRkMzJhYmNlLi5kOGRkNjc3YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTE5Nyw3
MyArMTk3LDQgQEAgc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxv
Z2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGEKICAgICByZXR1cm4gTWVtb3J5VXNh
Z2Uge3N0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLmludGVybmFsKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90Pih2bUluZm8ucGh5c19mb290cHJpbnQpfTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKLXN0
YXRpYyB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNzdXJlQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2
ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IC8qYWN0aXZpdHkqLywgdm9pZCogLypp
bmZvKi8pCi17Ci0gICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5yZXNwb25k
VG9NZW1vcnlQcmVzc3VyZUlmTmVlZGVkKCk7Ci0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJJbnZhbGlk
YXRlKG9ic2VydmVyKTsKLSAgICBDRlJlbGVhc2Uob2JzZXJ2ZXIpOwotfQotCi12b2lkIE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbE1lbW9yeVJlbGVhc2VCbG9jayh2b2lkIChecmVsZWFz
ZU1lbW9yeUJsb2NrKSgpLCBib29sIGNsZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UpCi17Ci0g
ICAgaWYgKG1faW5zdGFsbGVkKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZWxlYXNlTWVtb3J5
QmxvY2sgPSBCbG9ja19jb3B5KHJlbGVhc2VNZW1vcnlCbG9jayk7Ci0gICAgbV9jbGVhclByZXNz
dXJlT25NZW1vcnlSZWxlYXNlID0gY2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZTsKLSAgICBt
X2luc3RhbGxlZCA9IHRydWU7Ci19Ci0KLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRS
ZWNlaXZlZE1lbW9yeVByZXNzdXJlKE1lbW9yeVByZXNzdXJlUmVhc29uIHJlYXNvbikKLXsKLSAg
ICBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSB0cnVlOwotCi0gICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwotICAgICAgICBpZiAoIW1fb2JzZXJ2ZXIpIHsK
LSAgICAgICAgICAgIG1fb2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxMLCBr
Q0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBOTyAvKiBkb24ndCByZXBl
YXQgKi8sCi0gICAgICAgICAgICAgICAgMCwgV2ViQ29yZTo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmVDYWxsYmFjaywgTlVMTCk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihXZWJU
aHJlYWRSdW5Mb29wKCksIG1fb2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAg
ICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKLSAgICAgICAgfQot
ICAgICAgICBtX21lbW9yeVByZXNzdXJlUmVhc29uIHw9IHJlYXNvbjsKLSAgICB9Ci19Ci0KLXZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjbGVhck1lbW9yeVByZXNzdXJlKCkKLXsKLSAgICBt
X3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBmYWxzZTsKLQotICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKLSAgICAgICAgbV9tZW1vcnlQcmVzc3VyZVJlYXNv
biA9IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZTsKLSAgICB9Ci19Ci0KLWJvb2wgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCkKLXsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwotICAgIHJldHVybiBtX21lbW9yeVBy
ZXNzdXJlUmVhc29uICYgTWVtb3J5UHJlc3N1cmVSZWFzb25WTVN0YXR1czsKLX0KLQotdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlSWZOZWVkZWQoKQot
ewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0KLSAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7Ci0gICAgICAgIG1fb2Jz
ZXJ2ZXIgPSAwOwotICAgIH0KLQotICAgIGlmIChpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewot
ICAgICAgICBBU1NFUlQobV9yZWxlYXNlTWVtb3J5QmxvY2spOwotICAgICAgICBMT0coTWVtb3J5
UHJlc3N1cmUsICJIYW5kbGUgbWVtb3J5IHByZXNzdXJlIGF0ICVzIiwgX19QUkVUVFlfRlVOQ1RJ
T05fXyk7Ci0gICAgICAgIG1fcmVsZWFzZU1lbW9yeUJsb2NrKCk7Ci0gICAgICAgIGlmIChtX2Ns
ZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UpCi0gICAgICAgICAgICBjbGVhck1lbW9yeVByZXNz
dXJlKCk7Ci0gICAgfQotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCmluZGV4IGFmOTY3MWE5NTYyLi40YzNlZmU1NDg3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAyLTIxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXZWJLaXQxIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9y
eSBwcmVzc3VyZSBoYW5kbGVyIGNvZGUuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
Njg2NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5tbToKKyAgICAgICAgKFdlYktpdEluaXRpYWxpemUpOiBE
b24ndCB1bmNvbmRpdGlvbmFsbHkgaW5zdGFsbCBhIG1lbW9yeSB3YXJuaW5nIGhhbmRsZXIganVz
dAorICAgICAgICBiZWNhdXNlIHRoZSBmcmFtZXdvcmsgaXMgbG9hZGVkLgorCiAyMDE3LTAyLTIw
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExpc3Qgb2Yg
V2ViQ29yZSBzeW1ib2xzIHRvIHJlLWV4cG9ydCBmcm9tIFdlYktpdExlZ2FjeSBzaG91bGQgYmUg
YnVpbHQgYXV0b21hdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9y
dC5tbQppbmRleCA2ZmM2MjI0MTZhNS4uMWYyNTY3NWIyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC04Nyw3ICs4Nyw2IEBAIHZvaWQgV2ViS2l0SW5p
dGlhbGl6ZSh2b2lkKQogICAgIC8vIFdlJ2QgcmF0aGVyIGVhdCB0aGlzIGNvc3QgYXQgc3RhcnR1
cCB0aGFuIHNsb3cgZG93biBzaXR1YXRpb25zIHRoYXQgbmVlZCB0byBiZSByZXNwb25zaXZlLgog
ICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjc3NjMwMT4uCiAgICAgTG9hZFdlYkxvY2FsaXpl
ZFN0cmluZ3MoKTsKLSAgICBbV2ViVmlldyByZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnNd
OwogICAgIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVxdWVz
dHMgYXJlIG1hZGUgaW4gdGhlIHByb2Nlc3MsIDxyZGFyOi8vcHJvYmxlbS85NjkxODcxPgogICAg
IFdlYkNvcmU6OmluaXRpYWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggYjI1MDg3MGQ5ZmEuLjExOWY2NDlhZWE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTctMDItMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdDEgc2hvdWxkIHVzZSBzaGFyZWQgbWVt
b3J5IHByZXNzdXJlIGhhbmRsZXIgY29kZS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE2ODY1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWdpc3RlciBhIFdlYlRocmVhZC1hd2FyZSBtZW1vcnkgY2FsbGJhY2sgd2l0aCB0aGUgc2hh
cmVkIE1lbW9yeVByZXNzdXJlSGFuZGxlcgorICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgb2xk
IGlPUyBXZWJLaXQxIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBTb21lIG9mIGl0IHdhcyBldmVu
CisgICAgICAgIGRlYWQgY29kZSBzaW5jZSBNb2JpbGVTYWZhcmkgaGFzIGJlZW4gdXNpbmcgV2Vi
S2l0MiBmb3IgcXVpdGUgYSB3aGlsZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyB3aWxsRW50
ZXJCYWNrZ3JvdW5kV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoV2ViSW5zdGFs
bE1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgICgrW1dlYlZpZXcgX2hhbmRsZU1lbW9y
eVdhcm5pbmddKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyByZWdpc3RlckZvck1lbW9y
eU5vdGlmaWNhdGlvbnNdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyBfcmVsZWFzZU1l
bW9yeU5vd10pOiBEZWxldGVkLgorICAgICAgICAoK1tXZWJWaWV3IF9jbGVhck1lbW9yeVByZXNz
dXJlXSk6IERlbGV0ZWQuCisgICAgICAgICgrW1dlYlZpZXcgX3Nob3VsZFdhaXRGb3JNZW1vcnlD
bGVhck1lc3NhZ2VdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRl
Lmg6CisKIDIwMTctMDItMjAgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEV4Y2x1ZGUgdmFyaW91cyBtYWMtc3BlY2lmaWMgaGVhZGVyIGZpbGVzIGZyb20g
aU9TIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
aCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCmluZGV4IGU1NjYzMWMzMzU3
Li44ZDlhNWEzYmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgKQEAgLTc1MCw3
ICs3NTAsNiBAQCBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiBmb3IgZWFjaC4KICsgKHZvaWQpcHVy
Z2VJbmFjdGl2ZUZvbnREYXRhOwogKyAodm9pZClkcmFpbkxheWVyUG9vbDsKICsgKHZvaWQpZGlz
Y2FyZEFsbENvbXBpbGVkQ29kZTsKLSsgKHZvaWQpcmVnaXN0ZXJGb3JNZW1vcnlOb3RpZmljYXRp
b25zOwogKyAodm9pZClyZWxlYXNlRmFzdE1hbGxvY01lbW9yeU9uQ3VycmVudFRocmVhZDsKICsg
KEJPT0wpaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQ6KHVuaWNoYXIpY2hhcmFjdGVyIGlz
UHJldmlvdXNDaGFyYWN0ZXI6KEJPT0wpYjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IGM0NjY3YmYwMzdkLi4yMjhjODFlYzg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtMTY3Myw3NiArMTY3Myw2IEBAIHN0YXRpYyB2b2lkIFdlYktpdElu
aXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAgICAgcmV0dXJuIHNlbGY7CiB9
CiAKLSsgKHZvaWQpX2hhbmRsZU1lbW9yeVdhcm5pbmcKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFk
SXNDdXJyZW50KCkpOwotICAgIFdlYktpdDo6TWVtb3J5TWVhc3VyZSB0b3RhbE1lbW9yeSgiTWVt
b3J5IHdhcm5pbmc6IE92ZXJhbGwgbWVtb3J5IGNoYW5nZSBmcm9tIFtXZWJWaWV3IF9oYW5kbGVN
ZW1vcnlXYXJuaW5nXS4iKTsKLQotICAgIC8vIEFsd2F5cyBwZWZvcm0gdGhlIGZvbGxvd2luZy4K
LSAgICBbV2ViVmlldyBwdXJnZUluYWN0aXZlRm9udERhdGFdOwotCi0gICAgLy8gT25seSBwZXJm
b3JtIHRoZSByZW1haW5pbmcgaWYgYSBub24tc2ltcGxlIGRvY3VtZW50IHdhcyBjcmVhdGVkLgot
ICAgIGlmICghZGlkT25lVGltZUluaXRpYWxpemF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXIoKS50cmltVW5wYXJlbnRlZFRpbGVzVG9UYXJn
ZXQoMCk7Ci0KLSAgICBbV2ViU3RvcmFnZU1hbmFnZXIgY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0
YWJhc2VzXTsKLSAgICBTdG9yYWdlVGhyZWFkOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJ
bkFsbFRocmVhZHMoKTsKLQotICAgIFtXZWJWaWV3IF9yZWxlYXNlTWVtb3J5Tm93XTsKLX0KLQot
KyAodm9pZClyZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnMKLXsKLSAgICBCT09MIHNob3Vs
ZEF1dG9DbGVhclByZXNzdXJlT25NZW1vcnlSZWxlYXNlID0gIVdlYkNvcmU6OklPU0FwcGxpY2F0
aW9uOjppc01vYmlsZVNhZmFyaSgpOwotCi0gICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5n
bGV0b24oKS5pbnN0YWxsTWVtb3J5UmVsZWFzZUJsb2NrKF57Ci0gICAgICAgIFtXZWJWaWV3IF9o
YW5kbGVNZW1vcnlXYXJuaW5nXTsKLSAgICB9LCBzaG91bGRBdXRvQ2xlYXJQcmVzc3VyZU9uTWVt
b3J5UmVsZWFzZSk7Ci0KLSAgICBzdGF0aWMgZGlzcGF0Y2hfc291cmNlX3QgbWVtb3J5Tm90aWZp
Y2F0aW9uRXZlbnRTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJD
RV9UWVBFX01FTU9SWVBSRVNTVVJFLCAwLCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOLCBk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vfc2V0X2V2ZW50X2hhbmRsZXIobWVtb3J5Tm90aWZp
Y2F0aW9uRXZlbnRTb3VyY2UsIF57Ci0gICAgICAgIC8vIFNldCBtZW1vcnkgcHJlc3N1cmUgZmxh
ZyBhbmQgc2NoZWR1bGUgcmVsZWFzaW5nIG1lbW9yeSBpbiB3ZWIgdGhyZWFkIHJ1bmxvb3AgZXhp
dC4KLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5zZXRSZWNlaXZl
ZE1lbW9yeVByZXNzdXJlKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlUmVhc29uVk1QcmVzc3VyZSk7
Ci0gICAgfSk7Ci0KLSAgICBkaXNwYXRjaF9yZXN1bWUobWVtb3J5Tm90aWZpY2F0aW9uRXZlbnRT
b3VyY2UpOwotCi0gICAgaWYgKCFzaG91bGRBdXRvQ2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFz
ZSkgewotICAgICAgICAvLyBMaXN0ZW4gdG8gbWVtb3J5IHN0YXR1cyBub3RpZmljYXRpb24gdG8g
cmVzZXQgdGhlIG1lbW9yeSBwcmVzc3VyZSBmbGFnLgotICAgICAgICBzdGF0aWMgZGlzcGF0Y2hf
c291cmNlX3QgbWVtb3J5U3RhdHVzRXZlbnRTb3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRl
KERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9SWVBSRVNTVVJFLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJU1BBVENIX01FTU9SWVBS
RVNTVVJFX1dBUk4gfCBESVNQQVRDSF9NRU1PUllQUkVTU1VSRV9OT1JNQUwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVF
X1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKLSAgICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVu
dF9oYW5kbGVyKG1lbW9yeVN0YXR1c0V2ZW50U291cmNlLCBeewotICAgICAgICAgICAgdW5zaWdu
ZWQgbG9uZyBjdXJyZW50U3RhdHVzID0gZGlzcGF0Y2hfc291cmNlX2dldF9kYXRhKG1lbW9yeVN0
YXR1c0V2ZW50U291cmNlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdHVzID09IERJU1BB
VENIX01FTU9SWVBSRVNTVVJFX05PUk1BTCkKLSAgICAgICAgICAgICAgICBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNpbmdsZXRvbigpLmNsZWFyTWVtb3J5UHJlc3N1cmUoKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGN1cnJlbnRTdGF0dXMgPT0gRElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfV0FSTikK
LSAgICAgICAgICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLnNldFJl
Y2VpdmVkTWVtb3J5UHJlc3N1cmUoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVSZWFzb25WTVN0YXR1
cyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRpc3BhdGNoX3Jlc3VtZShtZW1vcnlTdGF0dXNF
dmVudFNvdXJjZSk7Ci0gICAgfQotfQotCi0rICh2b2lkKV9yZWxlYXNlTWVtb3J5Tm93Ci17Ci0g
ICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBbV2ViVmlldyBkaXNjYXJkQWxs
Q29tcGlsZWRDb2RlXTsKLSAgICBbV2ViVmlldyBnYXJiYWdlQ29sbGVjdE5vd107Ci0gICAgW1dl
YlZpZXcgcHVyZ2VJbmFjdGl2ZUZvbnREYXRhXTsKLSAgICBbV2ViVmlldyBkcmFpbkxheWVyUG9v
bF07Ci0gICAgW1dlYkNhY2hlIGVtcHR5SW5NZW1vcnlSZXNvdXJjZXNdOwotICAgIFtXZWJWaWV3
IHJlbGVhc2VGYXN0TWFsbG9jTWVtb3J5T25DdXJyZW50VGhyZWFkXTsKLQotICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgIC8vIENsZWFyIHRo
ZSBtYWluIHRocmVhZCdzIFRDTWFsbG9jIHRocmVhZCBjYWNoZS4KLSAgICAgICAgW1dlYlZpZXcg
cmVsZWFzZUZhc3RNYWxsb2NNZW1vcnlPbkN1cnJlbnRUaHJlYWRdOwotICAgIH0pOwotfQotCiAt
ICh2b2lkKV9yZXBsYWNlQ3VycmVudEhpc3RvcnlJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0K
IHsKICAgICBGcmFtZSogZnJhbWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CkBAIC0xNzUzLDcg
KzE2ODMsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZO
ZWNlc3NhcnkoKQogKyAodm9pZCl3aWxsRW50ZXJCYWNrZ3JvdW5kV2l0aENvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKHZvaWQpKWhhbmRsZXIKIHsKICAgICBXZWJUaHJlYWRSdW4oXnsKLSAgICAg
ICAgW1dlYlZpZXcgX3JlbGVhc2VNZW1vcnlOb3ddOworICAgICAgICBXZWJDb3JlOjpyZWxlYXNl
TWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3VzOjpZZXMpOwogICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBoYW5kbGVyKTsKICAgICB9KTsKIH0K
QEAgLTIwNDMsMTYgKzE5NzMsNiBAQCBzdGF0aWMgTlNNdXRhYmxlU2V0ICprbm93blBsdWdpbk1J
TUVUeXBlcygpCiAgICAgcmV0dXJuIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCku
aXNVbmRlck1lbW9yeVByZXNzdXJlKCk7CiB9CiAKLSsgKHZvaWQpX2NsZWFyTWVtb3J5UHJlc3N1
cmUKLXsKLSAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmNsZWFyTWVtb3J5
UHJlc3N1cmUoKTsKLX0KLQotKyAoQk9PTClfc2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2Fn
ZQotewotICAgIHJldHVybiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLnNob3Vs
ZFdhaXRGb3JNZW1vcnlDbGVhck1lc3NhZ2UoKTsKLX0KLQogI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKIAogLSAodm9pZClfY2xvc2VQbHVnaW5EYXRhYmFzZXMKQEAgLTk5NTIsNyArOTg3MiwxNCBA
QCB2b2lkIFdlYkluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIodm9pZCkKICAgICAgICAgc3Rk
OjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgICAgIGF1dG8mIG1lbW9yeVByZXNz
dXJlSGFuZGxlciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAgICAgICAg
ICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFuZGxlcihbXSAoQ3JpdGlj
YWwgY3JpdGljYWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKSB7CisjaWYgUExBVEZPUk0oSU9T
KQorICAgICAgICAgICAgICAgIFdlYlRocmVhZFJ1biheeworI2VuZGlmCisKICAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpyZWxlYXNlTWVtb3J5KGNyaXRpY2FsLCBzeW5jaHJvbm91cyk7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgICAgICAgICAgICAgIH0pOworI2VuZGlmCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIG1lbW9yeVByZXNzdXJlSGFuZGxlci5pbnN0YWxsKCk7CiAgICAgICAg
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IGI3
MzljM2U0OWU1Li4yMzE3ZDE0NzE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaApAQCAtNDQxLDIyICs0NDEsMTEgQEAgQ291bGQgYmUgd29ydGggYWRkaW5n
IHRvIHRoZSBBUEkuCiAKIC0gKE5TVUludGVnZXIpX3JlbmRlclRyZWVTaXplOwogCi0vKiEKLSAq
IEBtZXRob2QgX2hhbmRsZU1lbW9yeVdhcm5pbmcKLSAqIEBkaXNjdXNzaW9uIFRyeSB0byByZWxl
YXNlIG1lbW9yeSBzaW5jZSB3ZSBnb3QgYSBtZW1vcnkgd2FybmluZyBmcm9tIHRoZSBzeXN0ZW0u
IFRoaXMgbWV0aG9kIGlzCi0gKiBhbHNvIHVzZWQgYnkgb3RoZXIgaW50ZXJuYWwgY2xpZW50cy4g
U2VlIDxyZGFyOi8vOTU4MjUwMD4uCi0gKi8KLSsgKHZvaWQpX2hhbmRsZU1lbW9yeVdhcm5pbmc7
Ci0KIC0gKHZvaWQpX3NldFJlc291cmNlTG9hZFNjaGVkdWxlclN1c3BlbmRlZDooQk9PTClzdXNw
ZW5kOwogKyAodm9pZClfc2V0VGlsZUNhY2hlTGF5ZXJQb29sQ2FwYWNpdHk6KHVuc2lnbmVkKWNh
cGFjaXR5OwogCiArICh2b2lkKV9zZXRBbGxvd0Nvb2tpZXM6KEJPT0wpYWxsb3c7CiArIChCT09M
KV9hbGxvd0Nvb2tpZXM7Ci0rIChCT09MKV9pc1VuZGVyTWVtb3J5UHJlc3N1cmU7Ci0rICh2b2lk
KV9jbGVhck1lbW9yeVByZXNzdXJlOwotKyAoQk9PTClfc2hvdWxkV2FpdEZvck1lbW9yeUNsZWFy
TWVzc2FnZTsKLSsgKHZvaWQpX3JlbGVhc2VNZW1vcnlOb3c7CiAKIC0gKHZvaWQpX3JlcGxhY2VD
dXJyZW50SGlzdG9yeUl0ZW06KFdlYkhpc3RvcnlJdGVtICopaXRlbTsKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302255</attachid>
            <date>2017-02-21 07:06:09 -0800</date>
            <delta_ts>2017-02-21 08:10:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168653-2.diff</filename>
            <type>text/plain</type>
            <size>17724</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMTU2MzI5NjM4YS4uZDYwODkxMDQwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wMi0yMSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gV2ViS2l0MSBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgcHJlc3N1
cmUgaGFuZGxlciBjb2RlLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY4NjUzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBp
T1MgV2ViS2l0MSBzcGVjaWZpYyBtZW1iZXJzIGFuZCBjb2RlIGZyb20gTWVtb3J5UHJlc3N1cmVI
YW5kbGVyIGluIGZhdm9yCisgICAgICAgIG9mIHVzaW5nIHRoZSBzYW1lIGNvZGUgdGhhdCBpT1Mg
V2ViS2l0MiBhbmQgbWFjT1MgV2ViS2l0IHVzZXMuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL01l
bW9yeVJlbGVhc2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1l
bW9yeSk6IEFkZCB0d28gY2xlYW51cCBjYWxscyB0aGF0IHdlcmUgb25seSBpbiB0aGUgaU9TIFdl
YlZpZXcgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bV9yZWxlYXNlTWVtb3J5
QmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJl
SGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6Omluc3RhbGxNZW1vcnlSZWxlYXNlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRSZWNlaXZlZE1lbW9yeVByZXNzdXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Y2xlYXJN
ZW1vcnlQcmVzc3VyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNob3VsZFdhaXRGb3JNZW1vcnlDbGVhck1lc3NhZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVz
c3VyZUlmTmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNy0wMi0yMCAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhbCBhdWRpby1vbmx5IHN0cmVhbSB3aWxsIG5v
dCB0cmlnZ2VyIHBsYXliYWNrIHRvIGJlZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCmluZGV4IDQ0ZWNjZWUyYWMzLi40OTViODExNjEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0K
QEAgLTMyLDYgKzMyLDEyIEBACiAjaW1wb3J0ICJMYXllclBvb2wuaCIKICNpbXBvcnQgPG5vdGlm
eS5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiTGVnYWN5VGlsZUNhY2hlLmgiCisj
aW1wb3J0ICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCIKKyNlbmRpZgorCisKIGV4
dGVybiAiQyIgdm9pZCBfc3FsaXRlM19wdXJnZUVsaWdpYmxlUGFnZXJDYWNoZU1lbW9yeSh2b2lk
KTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNiArNTMsMTEgQEAgdm9pZCBwbGF0Zm9y
bVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiAgICAgZm9yIChhdXRvJiBwb29sIDogTGF5ZXJQb29s
OjphbGxMYXllclBvb2xzKCkpCiAgICAgICAgIHBvb2wtPmRyYWluKCk7CiAKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgTGVnYWN5VGlsZUNhY2hlOjpkcmFpbkxheWVyUG9vbCgpOworICAgIHRpbGVD
b250cm9sbGVyTWVtb3J5SGFuZGxlcigpLnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCgwKTsK
KyNlbmRpZgorCiAjaWYgVVNFKElPU1VSRkFDRSkKICAgICBJT1N1cmZhY2VQb29sOjpzaGFyZWRQ
b29sKCkuZGlzY2FyZEFsbFN1cmZhY2VzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggMDI4YWM4YzI2NGEuLjkzY2Q0
ZDgyNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaApAQCAtMzYsMjUgKzM2LDEyIEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jZW5kaWYK
LQogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShJT1MpCi1lbnVtIE1lbW9yeVBy
ZXNzdXJlUmVhc29uIHsKLSAgICBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgPSAwIDw8IDAsCi0g
ICAgTWVtb3J5UHJlc3N1cmVSZWFzb25WTVByZXNzdXJlID0gMSA8PCAwLAotICAgIE1lbW9yeVBy
ZXNzdXJlUmVhc29uVk1TdGF0dXMgPSAxIDw8IDEsCi19OwotI2VuZGlmCi0KIGVudW0gY2xhc3Mg
TWVtb3J5VXNhZ2VQb2xpY3kgewogICAgIFVucmVzdHJpY3RlZCwgLy8gQWxsb2NhdGUgYXMgbXVj
aCBhcyB5b3Ugd2FudAogICAgIENvbnNlcnZhdGl2ZSwgLy8gTWF5YmUgeW91IGRvbid0IGNhY2hl
IGV2ZXJ5IHNpbmdsZSB0aGluZwpAQCAtOTUsMTQgKzgyLDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCBiKSB7IG1fdW5kZXJNZW1vcnlQcmVz
c3VyZSA9IGI7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHNo
YXJlIG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnN0YWxsTWVtb3J5UmVsZWFzZUJsb2NrKHZvaWQgKF5yZWxlYXNlTWVtb3J5QmxvY2spKCks
IGJvb2wgY2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSA9IHRydWUpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UmVjZWl2ZWRNZW1vcnlQcmVzc3VyZShNZW1vcnlQcmVzc3VyZVJlYXNv
bik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck1lbW9yeVByZXNzdXJlKCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCk7Ci0g
ICAgdm9pZCByZXNwb25kVG9NZW1vcnlQcmVzc3VyZUlmTmVlZGVkKCk7Ci0jZWxpZiBPUyhMSU5V
WCkKKyNpZiBPUyhMSU5VWCkKICAgICB2b2lkIHNldE1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRs
ZShpbnQgZmQpOwogI2VuZGlmCiAKQEAgLTIwMiwxNCArMTgyLDcgQEAgcHJpdmF0ZToKICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9tZW1vcnlLaWxsQ2FsbGJhY2s7CiAgICAgV1RGOjpGdW5j
dGlvbjxib29sKCk+IG1fcHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2s7CiAK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IENhbiB3ZSBzaGFyZSBtb3JlIG9mIHRo
aXMgd2l0aCBPcGVuU291cmNlPwotICAgIHVpbnQzMl90IG1fbWVtb3J5UHJlc3N1cmVSZWFzb24g
eyBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgfTsKLSAgICBib29sIG1fY2xlYXJQcmVzc3VyZU9u
TWVtb3J5UmVsZWFzZSB7IHRydWUgfTsKLSAgICB2b2lkIChebV9yZWxlYXNlTWVtb3J5QmxvY2sp
KCkgeyBudWxscHRyIH07Ci0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlciB7IG51
bGxwdHIgfTsKLSAgICBMb2NrIG1fb2JzZXJ2ZXJNdXRleDsKLSNlbGlmIE9TKExJTlVYKQorI2lm
IE9TKExJTlVYKQogICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2V2ZW50RkQ7CiAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IG1fcHJlc3N1cmVMZXZlbEZEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dEZEUG9sbGVyPiBtX2V2ZW50RkRQb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IGJm
ZmRkMzJhYmNlLi5kOGRkNjc3YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTE5Nyw3
MyArMTk3LDQgQEAgc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxv
Z2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGEKICAgICByZXR1cm4gTWVtb3J5VXNh
Z2Uge3N0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLmludGVybmFsKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90Pih2bUluZm8ucGh5c19mb290cHJpbnQpfTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKLXN0
YXRpYyB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNzdXJlQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2
ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IC8qYWN0aXZpdHkqLywgdm9pZCogLypp
bmZvKi8pCi17Ci0gICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5yZXNwb25k
VG9NZW1vcnlQcmVzc3VyZUlmTmVlZGVkKCk7Ci0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJJbnZhbGlk
YXRlKG9ic2VydmVyKTsKLSAgICBDRlJlbGVhc2Uob2JzZXJ2ZXIpOwotfQotCi12b2lkIE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbE1lbW9yeVJlbGVhc2VCbG9jayh2b2lkIChecmVsZWFz
ZU1lbW9yeUJsb2NrKSgpLCBib29sIGNsZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UpCi17Ci0g
ICAgaWYgKG1faW5zdGFsbGVkKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZWxlYXNlTWVtb3J5
QmxvY2sgPSBCbG9ja19jb3B5KHJlbGVhc2VNZW1vcnlCbG9jayk7Ci0gICAgbV9jbGVhclByZXNz
dXJlT25NZW1vcnlSZWxlYXNlID0gY2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZTsKLSAgICBt
X2luc3RhbGxlZCA9IHRydWU7Ci19Ci0KLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRS
ZWNlaXZlZE1lbW9yeVByZXNzdXJlKE1lbW9yeVByZXNzdXJlUmVhc29uIHJlYXNvbikKLXsKLSAg
ICBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSB0cnVlOwotCi0gICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwotICAgICAgICBpZiAoIW1fb2JzZXJ2ZXIpIHsK
LSAgICAgICAgICAgIG1fb2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxMLCBr
Q0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBOTyAvKiBkb24ndCByZXBl
YXQgKi8sCi0gICAgICAgICAgICAgICAgMCwgV2ViQ29yZTo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmVDYWxsYmFjaywgTlVMTCk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihXZWJU
aHJlYWRSdW5Mb29wKCksIG1fb2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAg
ICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKLSAgICAgICAgfQot
ICAgICAgICBtX21lbW9yeVByZXNzdXJlUmVhc29uIHw9IHJlYXNvbjsKLSAgICB9Ci19Ci0KLXZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjbGVhck1lbW9yeVByZXNzdXJlKCkKLXsKLSAgICBt
X3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBmYWxzZTsKLQotICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKLSAgICAgICAgbV9tZW1vcnlQcmVzc3VyZVJlYXNv
biA9IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZTsKLSAgICB9Ci19Ci0KLWJvb2wgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCkKLXsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwotICAgIHJldHVybiBtX21lbW9yeVBy
ZXNzdXJlUmVhc29uICYgTWVtb3J5UHJlc3N1cmVSZWFzb25WTVN0YXR1czsKLX0KLQotdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlSWZOZWVkZWQoKQot
ewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0KLSAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7Ci0gICAgICAgIG1fb2Jz
ZXJ2ZXIgPSAwOwotICAgIH0KLQotICAgIGlmIChpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewot
ICAgICAgICBBU1NFUlQobV9yZWxlYXNlTWVtb3J5QmxvY2spOwotICAgICAgICBMT0coTWVtb3J5
UHJlc3N1cmUsICJIYW5kbGUgbWVtb3J5IHByZXNzdXJlIGF0ICVzIiwgX19QUkVUVFlfRlVOQ1RJ
T05fXyk7Ci0gICAgICAgIG1fcmVsZWFzZU1lbW9yeUJsb2NrKCk7Ci0gICAgICAgIGlmIChtX2Ns
ZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UpCi0gICAgICAgICAgICBjbGVhck1lbW9yeVByZXNz
dXJlKCk7Ci0gICAgfQotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCmluZGV4IGFmOTY3MWE5NTYyLi40YzNlZmU1NDg3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAyLTIxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXZWJLaXQxIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9y
eSBwcmVzc3VyZSBoYW5kbGVyIGNvZGUuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
Njg2NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5tbToKKyAgICAgICAgKFdlYktpdEluaXRpYWxpemUpOiBE
b24ndCB1bmNvbmRpdGlvbmFsbHkgaW5zdGFsbCBhIG1lbW9yeSB3YXJuaW5nIGhhbmRsZXIganVz
dAorICAgICAgICBiZWNhdXNlIHRoZSBmcmFtZXdvcmsgaXMgbG9hZGVkLgorCiAyMDE3LTAyLTIw
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExpc3Qgb2Yg
V2ViQ29yZSBzeW1ib2xzIHRvIHJlLWV4cG9ydCBmcm9tIFdlYktpdExlZ2FjeSBzaG91bGQgYmUg
YnVpbHQgYXV0b21hdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9y
dC5tbQppbmRleCA2ZmM2MjI0MTZhNS4uMWYyNTY3NWIyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC04Nyw3ICs4Nyw2IEBAIHZvaWQgV2ViS2l0SW5p
dGlhbGl6ZSh2b2lkKQogICAgIC8vIFdlJ2QgcmF0aGVyIGVhdCB0aGlzIGNvc3QgYXQgc3RhcnR1
cCB0aGFuIHNsb3cgZG93biBzaXR1YXRpb25zIHRoYXQgbmVlZCB0byBiZSByZXNwb25zaXZlLgog
ICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjc3NjMwMT4uCiAgICAgTG9hZFdlYkxvY2FsaXpl
ZFN0cmluZ3MoKTsKLSAgICBbV2ViVmlldyByZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnNd
OwogICAgIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVxdWVz
dHMgYXJlIG1hZGUgaW4gdGhlIHByb2Nlc3MsIDxyZGFyOi8vcHJvYmxlbS85NjkxODcxPgogICAg
IFdlYkNvcmU6OmluaXRpYWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggYjI1MDg3MGQ5ZmEuLmFhYjFhY2FlMzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTctMDItMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdDEgc2hvdWxkIHVzZSBzaGFyZWQgbWVt
b3J5IHByZXNzdXJlIGhhbmRsZXIgY29kZS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE2ODY1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWdpc3RlciBhIFdlYlRocmVhZC1hd2FyZSBtZW1vcnkgY2FsbGJhY2sgd2l0aCB0aGUgc2hh
cmVkIE1lbW9yeVByZXNzdXJlSGFuZGxlcgorICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgb2xk
IGlPUyBXZWJLaXQxIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBTb21lIG9mIGl0IHdhcyBldmVu
CisgICAgICAgIGRlYWQgY29kZSBzaW5jZSBNb2JpbGVTYWZhcmkgaGFzIGJlZW4gdXNpbmcgV2Vi
S2l0MiBmb3IgcXVpdGUgYSB3aGlsZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKCtbV2ViVmlldyB3aWxsRW50
ZXJCYWNrZ3JvdW5kV2l0aENvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoV2ViSW5zdGFs
bE1lbW9yeVByZXNzdXJlSGFuZGxlcik6CisgICAgICAgICgrW1dlYlZpZXcgX2hhbmRsZU1lbW9y
eVdhcm5pbmddKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyByZWdpc3RlckZvck1lbW9y
eU5vdGlmaWNhdGlvbnNdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyBfcmVsZWFzZU1l
bW9yeU5vd10pOiBEZWxldGVkLgorICAgICAgICAoK1tXZWJWaWV3IHJlbGVhc2VGYXN0TWFsbG9j
TWVtb3J5T25DdXJyZW50VGhyZWFkXSk6IERlbGV0ZWQuCisgICAgICAgICgrW1dlYlZpZXcgZ2Fy
YmFnZUNvbGxlY3ROb3ddKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyBwdXJnZUluYWN0
aXZlRm9udERhdGFdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyBkcmFpbkxheWVyUG9v
bF0pOiBEZWxldGVkLgorICAgICAgICAoK1tXZWJWaWV3IGRpc2NhcmRBbGxDb21waWxlZENvZGVd
KTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyBfY2xlYXJNZW1vcnlQcmVzc3VyZV0pOiBE
ZWxldGVkLgorICAgICAgICAoK1tXZWJWaWV3IF9zaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNz
YWdlXSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorCiAy
MDE3LTAyLTIwICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBFeGNsdWRlIHZhcmlvdXMgbWFjLXNwZWNpZmljIGhlYWRlciBmaWxlcyBmcm9tIGlPUyBidWls
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcuaAppbmRleCBlNTY2MzFjMzM1Ny4uZTA4OWI2
Y2Q4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCkBAIC03NDYsMTIgKzc0Niw2
IEBAIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIGZvciBlYWNoLgogCiBAaW50ZXJmYWNlIFdlYlZp
ZXcgKFdlYlZpZXdJT1MpCiArICh2b2lkKWVuYWJsZVdlYlRocmVhZDsKLSsgKHZvaWQpZ2FyYmFn
ZUNvbGxlY3ROb3c7Ci0rICh2b2lkKXB1cmdlSW5hY3RpdmVGb250RGF0YTsKLSsgKHZvaWQpZHJh
aW5MYXllclBvb2w7Ci0rICh2b2lkKWRpc2NhcmRBbGxDb21waWxlZENvZGU7Ci0rICh2b2lkKXJl
Z2lzdGVyRm9yTWVtb3J5Tm90aWZpY2F0aW9uczsKLSsgKHZvaWQpcmVsZWFzZUZhc3RNYWxsb2NN
ZW1vcnlPbkN1cnJlbnRUaHJlYWQ7CiArIChCT09MKWlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhl
bXB0Oih1bmljaGFyKWNoYXJhY3RlciBpc1ByZXZpb3VzQ2hhcmFjdGVyOihCT09MKWI7CiAKIC8q
IQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGM0NjY3YmYwMzdkLi4xZTAz
MzA1NDFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTY3Myw3NiAr
MTY3Myw2IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5l
Y2Vzc2FyeSgpCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKHZvaWQpX2hhbmRsZU1lbW9yeVdh
cm5pbmcKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFdlYktpdDo6
TWVtb3J5TWVhc3VyZSB0b3RhbE1lbW9yeSgiTWVtb3J5IHdhcm5pbmc6IE92ZXJhbGwgbWVtb3J5
IGNoYW5nZSBmcm9tIFtXZWJWaWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5nXS4iKTsKLQotICAgIC8v
IEFsd2F5cyBwZWZvcm0gdGhlIGZvbGxvd2luZy4KLSAgICBbV2ViVmlldyBwdXJnZUluYWN0aXZl
Rm9udERhdGFdOwotCi0gICAgLy8gT25seSBwZXJmb3JtIHRoZSByZW1haW5pbmcgaWYgYSBub24t
c2ltcGxlIGRvY3VtZW50IHdhcyBjcmVhdGVkLgotICAgIGlmICghZGlkT25lVGltZUluaXRpYWxp
emF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRs
ZXIoKS50cmltVW5wYXJlbnRlZFRpbGVzVG9UYXJnZXQoMCk7Ci0KLSAgICBbV2ViU3RvcmFnZU1h
bmFnZXIgY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzXTsKLSAgICBTdG9yYWdlVGhyZWFk
OjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKLQotICAgIFtXZWJW
aWV3IF9yZWxlYXNlTWVtb3J5Tm93XTsKLX0KLQotKyAodm9pZClyZWdpc3RlckZvck1lbW9yeU5v
dGlmaWNhdGlvbnMKLXsKLSAgICBCT09MIHNob3VsZEF1dG9DbGVhclByZXNzdXJlT25NZW1vcnlS
ZWxlYXNlID0gIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpOwotCi0g
ICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pbnN0YWxsTWVtb3J5UmVsZWFz
ZUJsb2NrKF57Ci0gICAgICAgIFtXZWJWaWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5nXTsKLSAgICB9
LCBzaG91bGRBdXRvQ2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSk7Ci0KLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfc291cmNlX3QgbWVtb3J5Tm90aWZpY2F0aW9uRXZlbnRTb3VyY2UgPSBkaXNwYXRj
aF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9SWVBSRVNTVVJFLCAwLCBE
SVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vf
c2V0X2V2ZW50X2hhbmRsZXIobWVtb3J5Tm90aWZpY2F0aW9uRXZlbnRTb3VyY2UsIF57Ci0gICAg
ICAgIC8vIFNldCBtZW1vcnkgcHJlc3N1cmUgZmxhZyBhbmQgc2NoZWR1bGUgcmVsZWFzaW5nIG1l
bW9yeSBpbiB3ZWIgdGhyZWFkIHJ1bmxvb3AgZXhpdC4KLSAgICAgICAgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpzaW5nbGV0b24oKS5zZXRSZWNlaXZlZE1lbW9yeVByZXNzdXJlKFdlYkNvcmU6Ok1l
bW9yeVByZXNzdXJlUmVhc29uVk1QcmVzc3VyZSk7Ci0gICAgfSk7Ci0KLSAgICBkaXNwYXRjaF9y
ZXN1bWUobWVtb3J5Tm90aWZpY2F0aW9uRXZlbnRTb3VyY2UpOwotCi0gICAgaWYgKCFzaG91bGRB
dXRvQ2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSkgewotICAgICAgICAvLyBMaXN0ZW4gdG8g
bWVtb3J5IHN0YXR1cyBub3RpZmljYXRpb24gdG8gcmVzZXQgdGhlIG1lbW9yeSBwcmVzc3VyZSBm
bGFnLgotICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfc291cmNlX3QgbWVtb3J5U3RhdHVzRXZlbnRT
b3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9S
WVBSRVNTVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERJU1BBVENIX01FTU9SWVBSRVNTVVJFX1dBUk4gfCBESVNQQVRDSF9NRU1P
UllQUkVTU1VSRV9OT1JNQUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKLSAg
ICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1lbW9yeVN0YXR1c0V2ZW50
U291cmNlLCBeewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjdXJyZW50U3RhdHVzID0gZGlz
cGF0Y2hfc291cmNlX2dldF9kYXRhKG1lbW9yeVN0YXR1c0V2ZW50U291cmNlKTsKLSAgICAgICAg
ICAgIGlmIChjdXJyZW50U3RhdHVzID09IERJU1BBVENIX01FTU9SWVBSRVNTVVJFX05PUk1BTCkK
LSAgICAgICAgICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmNsZWFy
TWVtb3J5UHJlc3N1cmUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRTdGF0dXMgPT0g
RElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfV0FSTikKLSAgICAgICAgICAgICAgICBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLnNldFJlY2VpdmVkTWVtb3J5UHJlc3N1cmUoV2ViQ29y
ZTo6TWVtb3J5UHJlc3N1cmVSZWFzb25WTVN0YXR1cyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAg
IGRpc3BhdGNoX3Jlc3VtZShtZW1vcnlTdGF0dXNFdmVudFNvdXJjZSk7Ci0gICAgfQotfQotCi0r
ICh2b2lkKV9yZWxlYXNlTWVtb3J5Tm93Ci17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVu
dCgpKTsKLSAgICBbV2ViVmlldyBkaXNjYXJkQWxsQ29tcGlsZWRDb2RlXTsKLSAgICBbV2ViVmll
dyBnYXJiYWdlQ29sbGVjdE5vd107Ci0gICAgW1dlYlZpZXcgcHVyZ2VJbmFjdGl2ZUZvbnREYXRh
XTsKLSAgICBbV2ViVmlldyBkcmFpbkxheWVyUG9vbF07Ci0gICAgW1dlYkNhY2hlIGVtcHR5SW5N
ZW1vcnlSZXNvdXJjZXNdOwotICAgIFtXZWJWaWV3IHJlbGVhc2VGYXN0TWFsbG9jTWVtb3J5T25D
dXJyZW50VGhyZWFkXTsKLQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57Ci0gICAgICAgIC8vIENsZWFyIHRoZSBtYWluIHRocmVhZCdzIFRDTWFsbG9jIHRo
cmVhZCBjYWNoZS4KLSAgICAgICAgW1dlYlZpZXcgcmVsZWFzZUZhc3RNYWxsb2NNZW1vcnlPbkN1
cnJlbnRUaHJlYWRdOwotICAgIH0pOwotfQotCiAtICh2b2lkKV9yZXBsYWNlQ3VycmVudEhpc3Rv
cnlJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW0KIHsKICAgICBGcmFtZSogZnJhbWUgPSBbc2Vs
ZiBfbWFpbkNvcmVGcmFtZV07CkBAIC0xNzUzLDQ1ICsxNjgzLDExIEBAIHN0YXRpYyB2b2lkIFdl
YktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiArICh2b2lkKXdpbGxF
bnRlckJhY2tncm91bmRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpaGFuZGxl
cgogewogICAgIFdlYlRocmVhZFJ1biheewotICAgICAgICBbV2ViVmlldyBfcmVsZWFzZU1lbW9y
eU5vd107CisgICAgICAgIFdlYkNvcmU6OnJlbGVhc2VNZW1vcnkoQ3JpdGljYWw6OlllcywgU3lu
Y2hyb25vdXM6Olllcyk7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIGhhbmRsZXIpOwogICAgIH0pOwogfQogCi0rICh2b2lkKXJlbGVhc2VGYXN0TWFs
bG9jTWVtb3J5T25DdXJyZW50VGhyZWFkCi17Ci0gICAgV2ViS2l0OjpNZW1vcnlNZWFzdXJlIG1l
YXN1cmVyKCJNZW1vcnkgd2FybmluZzogUmVsZWFzaW5nIGZhc3QgbWFsbG9jIG1lbW9yeSB0byBz
eXN0ZW0uIik7Ci0gICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKLX0KLQot
KyAodm9pZClnYXJiYWdlQ29sbGVjdE5vdwotewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJl
bnQoKSk7Ci0gICAgV2ViS2l0OjpNZW1vcnlNZWFzdXJlIG1lYXN1cmVyKCJNZW1vcnkgd2Fybmlu
ZzogQ2FsbGluZyBKYXZhU2NyaXB0IEdDLiIpOwotICAgIFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6
c2luZ2xldG9uKCkuZ2FyYmFnZUNvbGxlY3ROb3coKTsKLX0KLQotKyAodm9pZClwdXJnZUluYWN0
aXZlRm9udERhdGEKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFdl
YktpdDo6TWVtb3J5TWVhc3VyZSBtZWFzdXJlcigiTWVtb3J5IHdhcm5pbmc6IFB1cmdpbmcgaW5h
Y3RpdmUgZm9udCBkYXRhLiIpOwotICAgIEZvbnRDYWNoZTo6c2luZ2xldG9uKCkucHVyZ2VJbmFj
dGl2ZUZvbnREYXRhKCk7Ci19Ci0KLSsgKHZvaWQpZHJhaW5MYXllclBvb2wKLXsKLSAgICBBU1NF
UlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFdlYktpdDo6TWVtb3J5TWVhc3VyZSBtZWFz
dXJlcigiTWVtb3J5IHdhcm5pbmc6IERyYWluaW5nIGxheWVyIHBvb2wuIik7Ci0gICAgV2ViQ29y
ZTo6TGVnYWN5VGlsZUNhY2hlOjpkcmFpbkxheWVyUG9vbCgpOwotfQotCi0rICh2b2lkKWRpc2Nh
cmRBbGxDb21waWxlZENvZGUKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwot
ICAgIFdlYktpdDo6TWVtb3J5TWVhc3VyZSBtZWFzdXJlcigiTWVtb3J5IHdhcm5pbmc6IERpc2Nh
cmRpbmcgSklUJ2VkIGNvZGUuIik7Ci0gICAgV2ViQ29yZTo6R0NDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5kZWxldGVBbGxDb2RlKFByZXZlbnRDb2xsZWN0aW9uQW5kRGVsZXRlQWxsQ29kZSk7Ci19
Ci0KICsgKEJPT0wpaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQ6KHVuaWNoYXIpY2hhcmFj
dGVyIGlzUHJldmlvdXNDaGFyYWN0ZXI6KEJPT0wpYgogewogICAgIHJldHVybiBXZWJDb3JlOjpp
c0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4ZW1wdChjaGFyYWN0ZXIsIGIpOwpAQCAtMjA0MywxNiAr
MTkzOSw2IEBAIHN0YXRpYyBOU011dGFibGVTZXQgKmtub3duUGx1Z2luTUlNRVR5cGVzKCkKICAg
ICByZXR1cm4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVtb3J5
UHJlc3N1cmUoKTsKIH0KIAotKyAodm9pZClfY2xlYXJNZW1vcnlQcmVzc3VyZQotewotICAgIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuY2xlYXJNZW1vcnlQcmVzc3VyZSgpOwot
fQotCi0rIChCT09MKV9zaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlCi17Ci0gICAgcmV0
dXJuIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuc2hvdWxkV2FpdEZvck1lbW9y
eUNsZWFyTWVzc2FnZSgpOwotfQotCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAtICh2b2lk
KV9jbG9zZVBsdWdpbkRhdGFiYXNlcwpAQCAtOTk1Miw3ICs5ODM4LDE0IEBAIHZvaWQgV2ViSW5z
dGFsbE1lbW9yeVByZXNzdXJlSGFuZGxlcih2b2lkKQogICAgICAgICBzdGQ6OmNhbGxfb25jZShv
bmNlRmxhZywgW10gewogICAgICAgICAgICAgYXV0byYgbWVtb3J5UHJlc3N1cmVIYW5kbGVyID0g
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKTsKICAgICAgICAgICAgIG1lbW9yeVBy
ZXNzdXJlSGFuZGxlci5zZXRMb3dNZW1vcnlIYW5kbGVyKFtdIChDcml0aWNhbCBjcml0aWNhbCwg
U3luY2hyb25vdXMgc3luY2hyb25vdXMpIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgICAgICAg
ICAgICAgV2ViVGhyZWFkUnVuKF57CisjZW5kaWYKKwogICAgICAgICAgICAgICAgIFdlYkNvcmU6
OnJlbGVhc2VNZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgICAgICAgICAgICAgfSk7CisjZW5kaWYKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgbWVtb3J5UHJlc3N1cmVIYW5kbGVyLmluc3RhbGwoKTsKICAgICAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYjczOWMzZTQ5ZTUuLjIz
MTdkMTQ3MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CkBAIC00NDEsMjIgKzQ0MSwxMSBAQCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4K
IAogLSAoTlNVSW50ZWdlcilfcmVuZGVyVHJlZVNpemU7CiAKLS8qIQotICogQG1ldGhvZCBfaGFu
ZGxlTWVtb3J5V2FybmluZwotICogQGRpc2N1c3Npb24gVHJ5IHRvIHJlbGVhc2UgbWVtb3J5IHNp
bmNlIHdlIGdvdCBhIG1lbW9yeSB3YXJuaW5nIGZyb20gdGhlIHN5c3RlbS4gVGhpcyBtZXRob2Qg
aXMKLSAqIGFsc28gdXNlZCBieSBvdGhlciBpbnRlcm5hbCBjbGllbnRzLiBTZWUgPHJkYXI6Ly85
NTgyNTAwPi4KLSAqLwotKyAodm9pZClfaGFuZGxlTWVtb3J5V2FybmluZzsKLQogLSAodm9pZClf
c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGVyU3VzcGVuZGVkOihCT09MKXN1c3BlbmQ7CiArICh2b2lk
KV9zZXRUaWxlQ2FjaGVMYXllclBvb2xDYXBhY2l0eToodW5zaWduZWQpY2FwYWNpdHk7CiAKICsg
KHZvaWQpX3NldEFsbG93Q29va2llczooQk9PTClhbGxvdzsKICsgKEJPT0wpX2FsbG93Q29va2ll
czsKLSsgKEJPT0wpX2lzVW5kZXJNZW1vcnlQcmVzc3VyZTsKLSsgKHZvaWQpX2NsZWFyTWVtb3J5
UHJlc3N1cmU7Ci0rIChCT09MKV9zaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlOwotKyAo
dm9pZClfcmVsZWFzZU1lbW9yeU5vdzsKIAogLSAodm9pZClfcmVwbGFjZUN1cnJlbnRIaXN0b3J5
SXRlbTooV2ViSGlzdG9yeUl0ZW0gKilpdGVtOwogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
</data>
<flag name="review"
          id="323973"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302259</attachid>
            <date>2017-02-21 08:10:35 -0800</date>
            <delta_ts>2017-02-21 13:06:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-168653.diff</filename>
            <type>text/plain</type>
            <size>17302</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMTU2MzI5NjM4YS4uYTViMDMzYzk5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wMi0yMSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gV2ViS2l0MSBzaG91bGQgdXNlIHNoYXJlZCBtZW1vcnkgcHJlc3N1
cmUgaGFuZGxlciBjb2RlLgorICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTY4NjUzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFJlbW92ZSBp
T1MgV2ViS2l0MSBzcGVjaWZpYyBtZW1iZXJzIGFuZCBjb2RlIGZyb20gTWVtb3J5UHJlc3N1cmVI
YW5kbGVyIGluIGZhdm9yCisgICAgICAgIG9mIHVzaW5nIHRoZSBzYW1lIGNvZGUgdGhhdCBpT1Mg
V2ViS2l0MiBhbmQgbWFjT1MgV2ViS2l0IHVzZXMuCisKKyAgICAgICAgKiBwYWdlL2NvY29hL01l
bW9yeVJlbGVhc2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1l
bW9yeSk6IEFkZCB0d28gY2xlYW51cCBjYWxscyB0aGF0IHdlcmUgb25seSBpbiB0aGUgaU9TIFdl
YlZpZXcgY29kZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6bV9yZWxlYXNlTWVtb3J5
QmxvY2spOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJl
SGFuZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmVDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6Omluc3RhbGxNZW1vcnlSZWxlYXNlQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRSZWNlaXZlZE1lbW9yeVByZXNzdXJlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6Y2xlYXJN
ZW1vcnlQcmVzc3VyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnNob3VsZFdhaXRGb3JNZW1vcnlDbGVhck1lc3NhZ2UpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVz
c3VyZUlmTmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNy0wMi0yMCAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBMb2NhbCBhdWRpby1vbmx5IHN0cmVhbSB3aWxsIG5v
dCB0cmlnZ2VyIHBsYXliYWNrIHRvIGJlZ2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NvY29hL01lbW9yeVJlbGVhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCmluZGV4IDQ0ZWNjZWUyYWMzLi40OTViODExNjEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0K
QEAgLTMyLDYgKzMyLDEyIEBACiAjaW1wb3J0ICJMYXllclBvb2wuaCIKICNpbXBvcnQgPG5vdGlm
eS5oPgogCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiTGVnYWN5VGlsZUNhY2hlLmgiCisj
aW1wb3J0ICJUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuaCIKKyNlbmRpZgorCisKIGV4
dGVybiAiQyIgdm9pZCBfc3FsaXRlM19wdXJnZUVsaWdpYmxlUGFnZXJDYWNoZU1lbW9yeSh2b2lk
KTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNiArNTMsMTEgQEAgdm9pZCBwbGF0Zm9y
bVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiAgICAgZm9yIChhdXRvJiBwb29sIDogTGF5ZXJQb29s
OjphbGxMYXllclBvb2xzKCkpCiAgICAgICAgIHBvb2wtPmRyYWluKCk7CiAKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgTGVnYWN5VGlsZUNhY2hlOjpkcmFpbkxheWVyUG9vbCgpOworICAgIHRpbGVD
b250cm9sbGVyTWVtb3J5SGFuZGxlcigpLnRyaW1VbnBhcmVudGVkVGlsZXNUb1RhcmdldCgwKTsK
KyNlbmRpZgorCiAjaWYgVVNFKElPU1VSRkFDRSkKICAgICBJT1N1cmZhY2VQb29sOjpzaGFyZWRQ
b29sKCkuZGlzY2FyZEFsbFN1cmZhY2VzKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggMDI4YWM4YzI2NGEuLjkzY2Q0
ZDgyNzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaApAQCAtMzYsMjUgKzM2LDEyIEBACiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAotI2lmIFBMQVRGT1JNKElPUykKLSNpbmNsdWRlIDx3
dGYvTG9jay5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmdQcmltaXRpdmVzLmg+Ci0jZW5kaWYK
LQogI2lmIFVTRShHTElCKQogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNpZiBQTEFURk9STShJT1MpCi1lbnVtIE1lbW9yeVBy
ZXNzdXJlUmVhc29uIHsKLSAgICBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgPSAwIDw8IDAsCi0g
ICAgTWVtb3J5UHJlc3N1cmVSZWFzb25WTVByZXNzdXJlID0gMSA8PCAwLAotICAgIE1lbW9yeVBy
ZXNzdXJlUmVhc29uVk1TdGF0dXMgPSAxIDw8IDEsCi19OwotI2VuZGlmCi0KIGVudW0gY2xhc3Mg
TWVtb3J5VXNhZ2VQb2xpY3kgewogICAgIFVucmVzdHJpY3RlZCwgLy8gQWxsb2NhdGUgYXMgbXVj
aCBhcyB5b3Ugd2FudAogICAgIENvbnNlcnZhdGl2ZSwgLy8gTWF5YmUgeW91IGRvbid0IGNhY2hl
IGV2ZXJ5IHNpbmdsZSB0aGluZwpAQCAtOTUsMTQgKzgyLDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB2b2lkIHNldFVuZGVyTWVtb3J5UHJlc3N1cmUoYm9vbCBiKSB7IG1fdW5kZXJNZW1vcnlQcmVz
c3VyZSA9IGI7IH0KIAotI2lmIFBMQVRGT1JNKElPUykKLSAgICAvLyBGSVhNRTogQ2FuIHdlIHNo
YXJlIG1vcmUgb2YgdGhpcyB3aXRoIE9wZW5Tb3VyY2U/Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBpbnN0YWxsTWVtb3J5UmVsZWFzZUJsb2NrKHZvaWQgKF5yZWxlYXNlTWVtb3J5QmxvY2spKCks
IGJvb2wgY2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSA9IHRydWUpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UmVjZWl2ZWRNZW1vcnlQcmVzc3VyZShNZW1vcnlQcmVzc3VyZVJlYXNv
bik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhck1lbW9yeVByZXNzdXJlKCk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCk7Ci0g
ICAgdm9pZCByZXNwb25kVG9NZW1vcnlQcmVzc3VyZUlmTmVlZGVkKCk7Ci0jZWxpZiBPUyhMSU5V
WCkKKyNpZiBPUyhMSU5VWCkKICAgICB2b2lkIHNldE1lbW9yeVByZXNzdXJlTW9uaXRvckhhbmRs
ZShpbnQgZmQpOwogI2VuZGlmCiAKQEAgLTIwMiwxNCArMTgyLDcgQEAgcHJpdmF0ZToKICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4gbV9tZW1vcnlLaWxsQ2FsbGJhY2s7CiAgICAgV1RGOjpGdW5j
dGlvbjxib29sKCk+IG1fcHJvY2Vzc0lzRWxpZ2libGVGb3JNZW1vcnlLaWxsQ2FsbGJhY2s7CiAK
LSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8gRklYTUU6IENhbiB3ZSBzaGFyZSBtb3JlIG9mIHRo
aXMgd2l0aCBPcGVuU291cmNlPwotICAgIHVpbnQzMl90IG1fbWVtb3J5UHJlc3N1cmVSZWFzb24g
eyBNZW1vcnlQcmVzc3VyZVJlYXNvbk5vbmUgfTsKLSAgICBib29sIG1fY2xlYXJQcmVzc3VyZU9u
TWVtb3J5UmVsZWFzZSB7IHRydWUgfTsKLSAgICB2b2lkIChebV9yZWxlYXNlTWVtb3J5QmxvY2sp
KCkgeyBudWxscHRyIH07Ci0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYgbV9vYnNlcnZlciB7IG51
bGxwdHIgfTsKLSAgICBMb2NrIG1fb2JzZXJ2ZXJNdXRleDsKLSNlbGlmIE9TKExJTlVYKQorI2lm
IE9TKExJTlVYKQogICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBtX2V2ZW50RkQ7CiAgICAgc3RkOjpv
cHRpb25hbDxpbnQ+IG1fcHJlc3N1cmVMZXZlbEZEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFdmVu
dEZEUG9sbGVyPiBtX2V2ZW50RkRQb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IGJm
ZmRkMzJhYmNlLi5kOGRkNjc3YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0KQEAgLTE5Nyw3
MyArMTk3LDQgQEAgc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxv
Z2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGEKICAgICByZXR1cm4gTWVtb3J5VXNh
Z2Uge3N0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLmludGVybmFsKSwgc3RhdGljX2Nhc3Q8c2l6
ZV90Pih2bUluZm8ucGh5c19mb290cHJpbnQpfTsKIH0KIAotI2lmIFBMQVRGT1JNKElPUykKLXN0
YXRpYyB2b2lkIHJlc3BvbmRUb01lbW9yeVByZXNzdXJlQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2
ZXJSZWYgb2JzZXJ2ZXIsIENGUnVuTG9vcEFjdGl2aXR5IC8qYWN0aXZpdHkqLywgdm9pZCogLypp
bmZvKi8pCi17Ci0gICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5yZXNwb25k
VG9NZW1vcnlQcmVzc3VyZUlmTmVlZGVkKCk7Ci0gICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJJbnZhbGlk
YXRlKG9ic2VydmVyKTsKLSAgICBDRlJlbGVhc2Uob2JzZXJ2ZXIpOwotfQotCi12b2lkIE1lbW9y
eVByZXNzdXJlSGFuZGxlcjo6aW5zdGFsbE1lbW9yeVJlbGVhc2VCbG9jayh2b2lkIChecmVsZWFz
ZU1lbW9yeUJsb2NrKSgpLCBib29sIGNsZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UpCi17Ci0g
ICAgaWYgKG1faW5zdGFsbGVkKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZWxlYXNlTWVtb3J5
QmxvY2sgPSBCbG9ja19jb3B5KHJlbGVhc2VNZW1vcnlCbG9jayk7Ci0gICAgbV9jbGVhclByZXNz
dXJlT25NZW1vcnlSZWxlYXNlID0gY2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZTsKLSAgICBt
X2luc3RhbGxlZCA9IHRydWU7Ci19Ci0KLXZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRS
ZWNlaXZlZE1lbW9yeVByZXNzdXJlKE1lbW9yeVByZXNzdXJlUmVhc29uIHJlYXNvbikKLXsKLSAg
ICBtX3VuZGVyTWVtb3J5UHJlc3N1cmUgPSB0cnVlOwotCi0gICAgewotICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwotICAgICAgICBpZiAoIW1fb2JzZXJ2ZXIpIHsK
LSAgICAgICAgICAgIG1fb2JzZXJ2ZXIgPSBDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZShOVUxMLCBr
Q0ZSdW5Mb29wQmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCBOTyAvKiBkb24ndCByZXBl
YXQgKi8sCi0gICAgICAgICAgICAgICAgMCwgV2ViQ29yZTo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmVDYWxsYmFjaywgTlVMTCk7Ci0gICAgICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihXZWJU
aHJlYWRSdW5Mb29wKCksIG1fb2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Ci0gICAg
ICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoV2ViVGhyZWFkUnVuTG9vcCgpKTsKLSAgICAgICAgfQot
ICAgICAgICBtX21lbW9yeVByZXNzdXJlUmVhc29uIHw9IHJlYXNvbjsKLSAgICB9Ci19Ci0KLXZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpjbGVhck1lbW9yeVByZXNzdXJlKCkKLXsKLSAgICBt
X3VuZGVyTWVtb3J5UHJlc3N1cmUgPSBmYWxzZTsKLQotICAgIHsKLSAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9vYnNlcnZlck11dGV4KTsKLSAgICAgICAgbV9tZW1vcnlQcmVzc3VyZVJlYXNv
biA9IE1lbW9yeVByZXNzdXJlUmVhc29uTm9uZTsKLSAgICB9Ci19Ci0KLWJvb2wgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpzaG91bGRXYWl0Rm9yTWVtb3J5Q2xlYXJNZXNzYWdlKCkKLXsKLSAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX29ic2VydmVyTXV0ZXgpOwotICAgIHJldHVybiBtX21lbW9yeVBy
ZXNzdXJlUmVhc29uICYgTWVtb3J5UHJlc3N1cmVSZWFzb25WTVN0YXR1czsKLX0KLQotdm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlSWZOZWVkZWQoKQot
ewotICAgIEFTU0VSVChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSk7Ci0KLSAgICB7Ci0g
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fb2JzZXJ2ZXJNdXRleCk7Ci0gICAgICAgIG1fb2Jz
ZXJ2ZXIgPSAwOwotICAgIH0KLQotICAgIGlmIChpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSkgewot
ICAgICAgICBBU1NFUlQobV9yZWxlYXNlTWVtb3J5QmxvY2spOwotICAgICAgICBMT0coTWVtb3J5
UHJlc3N1cmUsICJIYW5kbGUgbWVtb3J5IHByZXNzdXJlIGF0ICVzIiwgX19QUkVUVFlfRlVOQ1RJ
T05fXyk7Ci0gICAgICAgIG1fcmVsZWFzZU1lbW9yeUJsb2NrKCk7Ci0gICAgICAgIGlmIChtX2Ns
ZWFyUHJlc3N1cmVPbk1lbW9yeVJlbGVhc2UpCi0gICAgICAgICAgICBjbGVhck1lbW9yeVByZXNz
dXJlKCk7Ci0gICAgfQotfQotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCmluZGV4IGFmOTY3MWE5NTYyLi4wYTQyNjcwZWJjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAyLTIxICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TXSBXZWJLaXQxIHNob3VsZCB1c2Ugc2hhcmVkIG1lbW9y
eSBwcmVzc3VyZSBoYW5kbGVyIGNvZGUuCisgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8x
Njg2NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
KiBNaXNjL1dlYlVJS2l0U3VwcG9ydC5tbToKKyAgICAgICAgKFdlYktpdEluaXRpYWxpemUpOiBE
b24ndCB1bmNvbmRpdGlvbmFsbHkgaW5zdGFsbCBhIG1lbW9yeSB3YXJuaW5nIGhhbmRsZXIganVz
dAorICAgICAgICBiZWNhdXNlIHRoZSBmcmFtZXdvcmsgaXMgbG9hZGVkLgorCiAyMDE3LTAyLTIw
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIExpc3Qgb2Yg
V2ViQ29yZSBzeW1ib2xzIHRvIHJlLWV4cG9ydCBmcm9tIFdlYktpdExlZ2FjeSBzaG91bGQgYmUg
YnVpbHQgYXV0b21hdGljYWxseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvTWlzYy9X
ZWJVSUtpdFN1cHBvcnQubW0gYi9Tb3VyY2UvV2ViS2l0L2lvcy9NaXNjL1dlYlVJS2l0U3VwcG9y
dC5tbQppbmRleCA2ZmM2MjI0MTZhNS4uMWYyNTY3NWIyN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaW9zL01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9z
L01pc2MvV2ViVUlLaXRTdXBwb3J0Lm1tCkBAIC04Nyw3ICs4Nyw2IEBAIHZvaWQgV2ViS2l0SW5p
dGlhbGl6ZSh2b2lkKQogICAgIC8vIFdlJ2QgcmF0aGVyIGVhdCB0aGlzIGNvc3QgYXQgc3RhcnR1
cCB0aGFuIHNsb3cgZG93biBzaXR1YXRpb25zIHRoYXQgbmVlZCB0byBiZSByZXNwb25zaXZlLgog
ICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNjc3NjMwMT4uCiAgICAgTG9hZFdlYkxvY2FsaXpl
ZFN0cmluZ3MoKTsKLSAgICBbV2ViVmlldyByZWdpc3RlckZvck1lbW9yeU5vdGlmaWNhdGlvbnNd
OwogICAgIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVxdWVz
dHMgYXJlIG1hZGUgaW4gdGhlIHByb2Nlc3MsIDxyZGFyOi8vcHJvYmxlbS85NjkxODcxPgogICAg
IFdlYkNvcmU6OmluaXRpYWxpemVIVFRQQ29ubmVjdGlvblNldHRpbmdzT25TdGFydHVwKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggYjI1MDg3MGQ5ZmEuLjNkOGFlNjhmZDljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMDItMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFdlYktpdDEgc2hvdWxkIHVzZSBzaGFyZWQgbWVt
b3J5IHByZXNzdXJlIGhhbmRsZXIgY29kZS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE2ODY1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAg
ICBSZWdpc3RlciBhIFdlYlRocmVhZC1hd2FyZSBtZW1vcnkgY2FsbGJhY2sgd2l0aCB0aGUgc2hh
cmVkIE1lbW9yeVByZXNzdXJlSGFuZGxlcgorICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgb2xk
IGlPUyBXZWJLaXQxIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLiBTb21lIG9mIGl0IHdhcyBldmVu
CisgICAgICAgIGRlYWQgY29kZSBzaW5jZSBNb2JpbGVTYWZhcmkgaGFzIGJlZW4gdXNpbmcgV2Vi
S2l0MiBmb3IgcXVpdGUgYSB3aGlsZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5oOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKFdlYkluc3RhbGxNZW1vcnlQ
cmVzc3VyZUhhbmRsZXIpOgorICAgICAgICAoK1tXZWJWaWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5n
XSk6IERlbGV0ZWQuCisgICAgICAgICgrW1dlYlZpZXcgcmVnaXN0ZXJGb3JNZW1vcnlOb3RpZmlj
YXRpb25zXSk6IERlbGV0ZWQuCisgICAgICAgICgrW1dlYlZpZXcgcmVsZWFzZUZhc3RNYWxsb2NN
ZW1vcnlPbkN1cnJlbnRUaHJlYWRdKTogRGVsZXRlZC4KKyAgICAgICAgKCtbV2ViVmlldyBnYXJi
YWdlQ29sbGVjdE5vd10pOiBEZWxldGVkLgorICAgICAgICAoK1tXZWJWaWV3IHB1cmdlSW5hY3Rp
dmVGb250RGF0YV0pOiBEZWxldGVkLgorICAgICAgICAoK1tXZWJWaWV3IGRyYWluTGF5ZXJQb29s
XSk6IERlbGV0ZWQuCisgICAgICAgICgrW1dlYlZpZXcgZGlzY2FyZEFsbENvbXBpbGVkQ29kZV0p
OiBEZWxldGVkLgorICAgICAgICAoK1tXZWJWaWV3IF9jbGVhck1lbW9yeVByZXNzdXJlXSk6IERl
bGV0ZWQuCisgICAgICAgICgrW1dlYlZpZXcgX3Nob3VsZFdhaXRGb3JNZW1vcnlDbGVhck1lc3Nh
Z2VdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIw
MTctMDItMjAgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEV4Y2x1ZGUgdmFyaW91cyBtYWMtc3BlY2lmaWMgaGVhZGVyIGZpbGVzIGZyb20gaU9TIGJ1aWxk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5oCmluZGV4IGU1NjYzMWMzMzU3Li5lMDg5YjZj
ZDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3LmgKQEAgLTc0NiwxMiArNzQ2LDYg
QEAgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gZm9yIGVhY2guCiAKIEBpbnRlcmZhY2UgV2ViVmll
dyAoV2ViVmlld0lPUykKICsgKHZvaWQpZW5hYmxlV2ViVGhyZWFkOwotKyAodm9pZClnYXJiYWdl
Q29sbGVjdE5vdzsKLSsgKHZvaWQpcHVyZ2VJbmFjdGl2ZUZvbnREYXRhOwotKyAodm9pZClkcmFp
bkxheWVyUG9vbDsKLSsgKHZvaWQpZGlzY2FyZEFsbENvbXBpbGVkQ29kZTsKLSsgKHZvaWQpcmVn
aXN0ZXJGb3JNZW1vcnlOb3RpZmljYXRpb25zOwotKyAodm9pZClyZWxlYXNlRmFzdE1hbGxvY01l
bW9yeU9uQ3VycmVudFRocmVhZDsKICsgKEJPT0wpaXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVt
cHQ6KHVuaWNoYXIpY2hhcmFjdGVyIGlzUHJldmlvdXNDaGFyYWN0ZXI6KEJPT0wpYjsKIAogLyoh
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzQ2NjdiZjAzN2QuLjA3MGQw
MzU1ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xNjczLDczICsx
NjczLDEwIEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5l
Y2Vzc2FyeSgpCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLSsgKHZvaWQpX2hhbmRsZU1lbW9yeVdh
cm5pbmcKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFdlYktpdDo6
TWVtb3J5TWVhc3VyZSB0b3RhbE1lbW9yeSgiTWVtb3J5IHdhcm5pbmc6IE92ZXJhbGwgbWVtb3J5
IGNoYW5nZSBmcm9tIFtXZWJWaWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5nXS4iKTsKLQotICAgIC8v
IEFsd2F5cyBwZWZvcm0gdGhlIGZvbGxvd2luZy4KLSAgICBbV2ViVmlldyBwdXJnZUluYWN0aXZl
Rm9udERhdGFdOwotCi0gICAgLy8gT25seSBwZXJmb3JtIHRoZSByZW1haW5pbmcgaWYgYSBub24t
c2ltcGxlIGRvY3VtZW50IHdhcyBjcmVhdGVkLgotICAgIGlmICghZGlkT25lVGltZUluaXRpYWxp
emF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aWxlQ29udHJvbGxlck1lbW9yeUhhbmRs
ZXIoKS50cmltVW5wYXJlbnRlZFRpbGVzVG9UYXJnZXQoMCk7Ci0KLSAgICBbV2ViU3RvcmFnZU1h
bmFnZXIgY2xvc2VJZGxlTG9jYWxTdG9yYWdlRGF0YWJhc2VzXTsKLSAgICBTdG9yYWdlVGhyZWFk
OjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKLQotICAgIFtXZWJW
aWV3IF9yZWxlYXNlTWVtb3J5Tm93XTsKLX0KLQotKyAodm9pZClyZWdpc3RlckZvck1lbW9yeU5v
dGlmaWNhdGlvbnMKLXsKLSAgICBCT09MIHNob3VsZEF1dG9DbGVhclByZXNzdXJlT25NZW1vcnlS
ZWxlYXNlID0gIVdlYkNvcmU6OklPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpOwotCi0g
ICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pbnN0YWxsTWVtb3J5UmVsZWFz
ZUJsb2NrKF57Ci0gICAgICAgIFtXZWJWaWV3IF9oYW5kbGVNZW1vcnlXYXJuaW5nXTsKLSAgICB9
LCBzaG91bGRBdXRvQ2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSk7Ci0KLSAgICBzdGF0aWMg
ZGlzcGF0Y2hfc291cmNlX3QgbWVtb3J5Tm90aWZpY2F0aW9uRXZlbnRTb3VyY2UgPSBkaXNwYXRj
aF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9SWVBSRVNTVVJFLCAwLCBE
SVNQQVRDSF9NRU1PUllQUkVTU1VSRV9XQVJOLCBkaXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJ
U1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKLSAgICBkaXNwYXRjaF9zb3VyY2Vf
c2V0X2V2ZW50X2hhbmRsZXIobWVtb3J5Tm90aWZpY2F0aW9uRXZlbnRTb3VyY2UsIF57Ci0gICAg
ICAgIC8vIFNldCBtZW1vcnkgcHJlc3N1cmUgZmxhZyBhbmQgc2NoZWR1bGUgcmVsZWFzaW5nIG1l
bW9yeSBpbiB3ZWIgdGhyZWFkIHJ1bmxvb3AgZXhpdC4KLSAgICAgICAgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpzaW5nbGV0b24oKS5zZXRSZWNlaXZlZE1lbW9yeVByZXNzdXJlKFdlYkNvcmU6Ok1l
bW9yeVByZXNzdXJlUmVhc29uVk1QcmVzc3VyZSk7Ci0gICAgfSk7Ci0KLSAgICBkaXNwYXRjaF9y
ZXN1bWUobWVtb3J5Tm90aWZpY2F0aW9uRXZlbnRTb3VyY2UpOwotCi0gICAgaWYgKCFzaG91bGRB
dXRvQ2xlYXJQcmVzc3VyZU9uTWVtb3J5UmVsZWFzZSkgewotICAgICAgICAvLyBMaXN0ZW4gdG8g
bWVtb3J5IHN0YXR1cyBub3RpZmljYXRpb24gdG8gcmVzZXQgdGhlIG1lbW9yeSBwcmVzc3VyZSBm
bGFnLgotICAgICAgICBzdGF0aWMgZGlzcGF0Y2hfc291cmNlX3QgbWVtb3J5U3RhdHVzRXZlbnRT
b3VyY2UgPSBkaXNwYXRjaF9zb3VyY2VfY3JlYXRlKERJU1BBVENIX1NPVVJDRV9UWVBFX01FTU9S
WVBSRVNTVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERJU1BBVENIX01FTU9SWVBSRVNTVVJFX1dBUk4gfCBESVNQQVRDSF9NRU1P
UllQUkVTU1VSRV9OT1JNQUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9n
ZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApKTsKLSAg
ICAgICAgZGlzcGF0Y2hfc291cmNlX3NldF9ldmVudF9oYW5kbGVyKG1lbW9yeVN0YXR1c0V2ZW50
U291cmNlLCBeewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjdXJyZW50U3RhdHVzID0gZGlz
cGF0Y2hfc291cmNlX2dldF9kYXRhKG1lbW9yeVN0YXR1c0V2ZW50U291cmNlKTsKLSAgICAgICAg
ICAgIGlmIChjdXJyZW50U3RhdHVzID09IERJU1BBVENIX01FTU9SWVBSRVNTVVJFX05PUk1BTCkK
LSAgICAgICAgICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmNsZWFy
TWVtb3J5UHJlc3N1cmUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRTdGF0dXMgPT0g
RElTUEFUQ0hfTUVNT1JZUFJFU1NVUkVfV0FSTikKLSAgICAgICAgICAgICAgICBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLnNldFJlY2VpdmVkTWVtb3J5UHJlc3N1cmUoV2ViQ29y
ZTo6TWVtb3J5UHJlc3N1cmVSZWFzb25WTVN0YXR1cyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAg
IGRpc3BhdGNoX3Jlc3VtZShtZW1vcnlTdGF0dXNFdmVudFNvdXJjZSk7Ci0gICAgfQotfQotCiAr
ICh2b2lkKV9yZWxlYXNlTWVtb3J5Tm93CiB7Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVu
dCgpKTsKLSAgICBbV2ViVmlldyBkaXNjYXJkQWxsQ29tcGlsZWRDb2RlXTsKLSAgICBbV2ViVmll
dyBnYXJiYWdlQ29sbGVjdE5vd107Ci0gICAgW1dlYlZpZXcgcHVyZ2VJbmFjdGl2ZUZvbnREYXRh
XTsKLSAgICBbV2ViVmlldyBkcmFpbkxheWVyUG9vbF07Ci0gICAgW1dlYkNhY2hlIGVtcHR5SW5N
ZW1vcnlSZXNvdXJjZXNdOwotICAgIFtXZWJWaWV3IHJlbGVhc2VGYXN0TWFsbG9jTWVtb3J5T25D
dXJyZW50VGhyZWFkXTsKLQotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57Ci0gICAgICAgIC8vIENsZWFyIHRoZSBtYWluIHRocmVhZCdzIFRDTWFsbG9jIHRo
cmVhZCBjYWNoZS4KLSAgICAgICAgW1dlYlZpZXcgcmVsZWFzZUZhc3RNYWxsb2NNZW1vcnlPbkN1
cnJlbnRUaHJlYWRdOworICAgIFdlYlRocmVhZFJ1biheeworICAgICAgICBXZWJDb3JlOjpyZWxl
YXNlTWVtb3J5KENyaXRpY2FsOjpZZXMsIFN5bmNocm9ub3VzOjpZZXMpOwogICAgIH0pOwogfQog
CkBAIC0xNzU4LDQwICsxNjk1LDYgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVw
YWRQcm92aWRlcklmTmVjZXNzYXJ5KCkKICAgICB9KTsKIH0KIAotKyAodm9pZClyZWxlYXNlRmFz
dE1hbGxvY01lbW9yeU9uQ3VycmVudFRocmVhZAotewotICAgIFdlYktpdDo6TWVtb3J5TWVhc3Vy
ZSBtZWFzdXJlcigiTWVtb3J5IHdhcm5pbmc6IFJlbGVhc2luZyBmYXN0IG1hbGxvYyBtZW1vcnkg
dG8gc3lzdGVtLiIpOwotICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7Ci19
Ci0KLSsgKHZvaWQpZ2FyYmFnZUNvbGxlY3ROb3cKLXsKLSAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkpOwotICAgIFdlYktpdDo6TWVtb3J5TWVhc3VyZSBtZWFzdXJlcigiTWVtb3J5IHdh
cm5pbmc6IENhbGxpbmcgSmF2YVNjcmlwdCBHQy4iKTsKLSAgICBXZWJDb3JlOjpHQ0NvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VDb2xsZWN0Tm93KCk7Ci19Ci0KLSsgKHZvaWQpcHVyZ2VJ
bmFjdGl2ZUZvbnREYXRhCi17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAg
ICBXZWJLaXQ6Ok1lbW9yeU1lYXN1cmUgbWVhc3VyZXIoIk1lbW9yeSB3YXJuaW5nOiBQdXJnaW5n
IGluYWN0aXZlIGZvbnQgZGF0YS4iKTsKLSAgICBGb250Q2FjaGU6OnNpbmdsZXRvbigpLnB1cmdl
SW5hY3RpdmVGb250RGF0YSgpOwotfQotCi0rICh2b2lkKWRyYWluTGF5ZXJQb29sCi17Ci0gICAg
QVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBXZWJLaXQ6Ok1lbW9yeU1lYXN1cmUg
bWVhc3VyZXIoIk1lbW9yeSB3YXJuaW5nOiBEcmFpbmluZyBsYXllciBwb29sLiIpOwotICAgIFdl
YkNvcmU6OkxlZ2FjeVRpbGVDYWNoZTo6ZHJhaW5MYXllclBvb2woKTsKLX0KLQotKyAodm9pZClk
aXNjYXJkQWxsQ29tcGlsZWRDb2RlCi17Ci0gICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgp
KTsKLSAgICBXZWJLaXQ6Ok1lbW9yeU1lYXN1cmUgbWVhc3VyZXIoIk1lbW9yeSB3YXJuaW5nOiBE
aXNjYXJkaW5nIEpJVCdlZCBjb2RlLiIpOwotICAgIFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuZGVsZXRlQWxsQ29kZShQcmV2ZW50Q29sbGVjdGlvbkFuZERlbGV0ZUFsbENvZGUp
OwotfQotCiArIChCT09MKWlzQ2hhcmFjdGVyU21hcnRSZXBsYWNlRXhlbXB0Oih1bmljaGFyKWNo
YXJhY3RlciBpc1ByZXZpb3VzQ2hhcmFjdGVyOihCT09MKWIKIHsKICAgICByZXR1cm4gV2ViQ29y
ZTo6aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHQoY2hhcmFjdGVyLCBiKTsKQEAgLTIwNDMs
MTYgKzE5NDYsNiBAQCBzdGF0aWMgTlNNdXRhYmxlU2V0ICprbm93blBsdWdpbk1JTUVUeXBlcygp
CiAgICAgcmV0dXJuIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1l
bW9yeVByZXNzdXJlKCk7CiB9CiAKLSsgKHZvaWQpX2NsZWFyTWVtb3J5UHJlc3N1cmUKLXsKLSAg
ICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmNsZWFyTWVtb3J5UHJlc3N1cmUo
KTsKLX0KLQotKyAoQk9PTClfc2hvdWxkV2FpdEZvck1lbW9yeUNsZWFyTWVzc2FnZQotewotICAg
IHJldHVybiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLnNob3VsZFdhaXRGb3JN
ZW1vcnlDbGVhck1lc3NhZ2UoKTsKLX0KLQogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKIAogLSAo
dm9pZClfY2xvc2VQbHVnaW5EYXRhYmFzZXMKQEAgLTk5NTIsNyArOTg0NSwxMyBAQCB2b2lkIFdl
Ykluc3RhbGxNZW1vcnlQcmVzc3VyZUhhbmRsZXIodm9pZCkKICAgICAgICAgc3RkOjpjYWxsX29u
Y2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgICAgIGF1dG8mIG1lbW9yeVByZXNzdXJlSGFuZGxl
ciA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCk7CiAgICAgICAgICAgICBtZW1v
cnlQcmVzc3VyZUhhbmRsZXIuc2V0TG93TWVtb3J5SGFuZGxlcihbXSAoQ3JpdGljYWwgY3JpdGlj
YWwsIFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgICAg
ICAgICAgICAgIFdlYlRocmVhZFJ1biheeworI2VuZGlmCiAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6cmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3luY2hyb25vdXMpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICAgICAgICAgICAgICB9KTsKKyNlbmRpZgogICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICBtZW1vcnlQcmVzc3VyZUhhbmRsZXIuaW5zdGFsbCgpOwogICAgICAgICB9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCBiNzM5YzNlNDllNS4u
NWRhYzRiYmQ2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRl
LmgKQEAgLTQ0MSwyMSArNDQxLDExIEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJ
LgogCiAtIChOU1VJbnRlZ2VyKV9yZW5kZXJUcmVlU2l6ZTsKIAotLyohCi0gKiBAbWV0aG9kIF9o
YW5kbGVNZW1vcnlXYXJuaW5nCi0gKiBAZGlzY3Vzc2lvbiBUcnkgdG8gcmVsZWFzZSBtZW1vcnkg
c2luY2Ugd2UgZ290IGEgbWVtb3J5IHdhcm5pbmcgZnJvbSB0aGUgc3lzdGVtLiBUaGlzIG1ldGhv
ZCBpcwotICogYWxzbyB1c2VkIGJ5IG90aGVyIGludGVybmFsIGNsaWVudHMuIFNlZSA8cmRhcjov
Lzk1ODI1MDA+LgotICovCi0rICh2b2lkKV9oYW5kbGVNZW1vcnlXYXJuaW5nOwotCiAtICh2b2lk
KV9zZXRSZXNvdXJjZUxvYWRTY2hlZHVsZXJTdXNwZW5kZWQ6KEJPT0wpc3VzcGVuZDsKICsgKHZv
aWQpX3NldFRpbGVDYWNoZUxheWVyUG9vbENhcGFjaXR5Oih1bnNpZ25lZCljYXBhY2l0eTsKIAog
KyAodm9pZClfc2V0QWxsb3dDb29raWVzOihCT09MKWFsbG93OwogKyAoQk9PTClfYWxsb3dDb29r
aWVzOwotKyAoQk9PTClfaXNVbmRlck1lbW9yeVByZXNzdXJlOwotKyAodm9pZClfY2xlYXJNZW1v
cnlQcmVzc3VyZTsKLSsgKEJPT0wpX3Nob3VsZFdhaXRGb3JNZW1vcnlDbGVhck1lc3NhZ2U7CiAr
ICh2b2lkKV9yZWxlYXNlTWVtb3J5Tm93OwogCiAtICh2b2lkKV9yZXBsYWNlQ3VycmVudEhpc3Rv
cnlJdGVtOihXZWJIaXN0b3J5SXRlbSAqKWl0ZW07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>