<?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>127398</bug_id>
          
          <creation_ts>2014-01-21 20:20:07 -0800</creation_ts>
          <short_desc>[wk2] De-.get()ify receivers of Objective-C messages</short_desc>
          <delta_ts>2014-01-21 22:14:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970542</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 20:20:07 -0800</bug_when>
    <thetext>RetainPtr does the right thing when you use it as the receiver of an Obj-C message, so we don&apos;t need .get().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970543</commentid>
    <comment_count>1</comment_count>
      <attachid>221821</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-01-21 20:21:11 -0800</bug_when>
    <thetext>Created attachment 221821
patch

This, because I frequently get review comments about code nearby mine that uses .get() and have to go drive-by clean it up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970564</commentid>
    <comment_count>2</comment_count>
      <attachid>221821</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-21 21:20:19 -0800</bug_when>
    <thetext>Comment on attachment 221821
patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970578</commentid>
    <comment_count>3</comment_count>
      <attachid>221821</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-21 22:13:59 -0800</bug_when>
    <thetext>Comment on attachment 221821
patch

Clearing flags on attachment: 221821

Committed r162505: &lt;http://trac.webkit.org/changeset/162505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970579</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-21 22:14:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221821</attachid>
            <date>2014-01-21 20:21:11 -0800</date>
            <delta_ts>2014-01-21 22:13:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>dotget.diff</filename>
            <type>text/plain</type>
            <size>78628</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0YTBhNWEwLi5iOTU3YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTQtMDEtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW3drMl0gRGUtLmdldCgpaWZ5IHJlY2VpdmVycyBvZiBPYmplY3RpdmUtQyBtZXNz
YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3
Mzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV0
YWluUHRyIGRvZXMgdGhlIHJpZ2h0IHRoaW5nIHdoZW4geW91IHVzZSBpdCBhcyB0aGUKKyAgICAg
ICAgcmVjZWl2ZXIgb2YgYW4gT2JqLUMgbWVzc2FnZSwgc28gd2UgZG9uJ3QgbmVlZCAuZ2V0KCku
CisKKyAgICAgICAgTG9uZyBhbmQgdXNlbGVzcyBmaWxlIGxpc3QgZWxpZGVkLgorCiAyMDE0LTAx
LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IDMyLWJpdCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9t
YWMvRG93bmxvYWRNYWMubW0KaW5kZXggZDJlODA0ZC4uZTBlYmQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KQEAgLTYzLDcg
KzYzLDcgQEAgdm9pZCBEb3dubG9hZDo6c3RhcnQoKQogICAgIG1fbnNVUkxEb3dubG9hZCA9IGFk
b3B0TlMoW1tOU1VSTERvd25sb2FkIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6bV9yZXF1ZXN0Lm5z
VVJMUmVxdWVzdChVcGRhdGVIVFRQQm9keSkgZGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV0pOwog
CiAgICAgLy8gRklYTUU6IEFsbG93IHRoaXMgdG8gYmUgY2hhbmdlZCBieSB0aGUgY2xpZW50Lgot
ICAgIFttX25zVVJMRG93bmxvYWQuZ2V0KCkgc2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTpOT107
CisgICAgW21fbnNVUkxEb3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKIH0K
IAogdm9pZCBEb3dubG9hZDo6c3RhcnRXaXRoSGFuZGxlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtNzksMTUgKzc5LDE1IEBAIHZv
aWQgRG93bmxvYWQ6OnN0YXJ0V2l0aEhhbmRsZShSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eTpuaWxdOwogCiAgICAgLy8gRklYTUU6
IEFsbG93IHRoaXMgdG8gYmUgY2hhbmdlZCBieSB0aGUgY2xpZW50LgotICAgIFttX25zVVJMRG93
bmxvYWQuZ2V0KCkgc2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZTpOT107CisgICAgW21fbnNVUkxE
b3dubG9hZCBzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlOk5PXTsKIH0KIAogdm9pZCBEb3dubG9h
ZDo6Y2FuY2VsKCkKIHsKLSAgICBbbV9uc1VSTERvd25sb2FkLmdldCgpIGNhbmNlbF07CisgICAg
W21fbnNVUkxEb3dubG9hZCBjYW5jZWxdOwogCi0gICAgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1l
RGF0YSA9IFttX25zVVJMRG93bmxvYWQuZ2V0KCkgcmVzdW1lRGF0YV07Ci0gICAgZGlkQ2FuY2Vs
KElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihbcmVz
dW1lRGF0YS5nZXQoKSBieXRlc10pLCBbcmVzdW1lRGF0YS5nZXQoKSBsZW5ndGhdKSk7CisgICAg
UmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YSA9IFttX25zVVJMRG93bmxvYWQgcmVzdW1lRGF0
YV07CisgICAgZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihbcmVzdW1lRGF0YSBieXRlc10pLCBbcmVzdW1lRGF0YSBsZW5ndGhdKSk7
CiB9CiAKIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgQVNTRVJUKG1fbnNV
UkxEb3dubG9hZCk7CiAgICAgQVNTRVJUKG1fZGVsZWdhdGUpOwogCi0gICAgW21fZGVsZWdhdGUu
Z2V0KCkgaW52YWxpZGF0ZV07CisgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiAgICAgbV9k
ZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgbV9uc1VSTERvd25sb2FkID0gbnVsbHB0cjsKIH0KQEAg
LTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaE9uTWFpblRocmVhZCh2b2lkIChe
YmxvY2spKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4gcmVzdW1lRGF0YSA9IFtkb3dubG9hZCByZXN1bWVEYXRhXTsKLSAgICAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
W3Jlc3VtZURhdGEuZ2V0KCkgYnl0ZXNdKSwgW3Jlc3VtZURhdGEuZ2V0KCkgbGVuZ3RoXSk7Cisg
ICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KFtyZXN1bWVEYXRhIGJ5dGVzXSksIFtyZXN1bWVEYXRhIGxlbmd0aF0p
OwogCiAgICAgICAgIF9kb3dubG9hZC0+ZGlkRmFpbChlcnJvciwgZGF0YVJlZmVyZW5jZSk7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWFjLm1tCmluZGV4IDFmZWM3ZDUuLmZmYjRkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9p
ZCBDdXN0b21Qcm90b2NvbE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2UKICAgICBSZXRhaW5QdHI8TlNFcnJvcj4gbnNFcnJvciA9IGVy
cm9yLm5zRXJyb3IoKTsKIAogICAgIGRpc3BhdGNoT25SZXNvdXJjZUxvYWRlclJ1bkxvb3AoXiB7
Ci0gICAgICAgIFtbcHJvdG9jb2wuZ2V0KCkgY2xpZW50XSBVUkxQcm90b2NvbDpwcm90b2NvbC5n
ZXQoKSBkaWRGYWlsV2l0aEVycm9yOm5zRXJyb3IuZ2V0KCldOworICAgICAgICBbW3Byb3RvY29s
IGNsaWVudF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wuZ2V0KCkgZGlkRmFpbFdpdGhFcnJvcjpuc0Vy
cm9yLmdldCgpXTsKICAgICB9KTsKIAogICAgIHJlbW92ZUN1c3RvbVByb3RvY29sKHByb3RvY29s
LmdldCgpKTsKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6
ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYQogICAg
IFJldGFpblB0cjxOU0RhdGE+IG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRX
aXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6ZSgpXSk7CiAKICAgICBkaXNwYXRj
aE9uUmVzb3VyY2VMb2FkZXJSdW5Mb29wKF4gewotICAgICAgICBbW3Byb3RvY29sLmdldCgpIGNs
aWVudF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wuZ2V0KCkgZGlkTG9hZERhdGE6bnNEYXRhLmdldCgp
XTsKKyAgICAgICAgW1twcm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sOnByb3RvY29sLmdldCgp
IGRpZExvYWREYXRhOm5zRGF0YS5nZXQoKV07CiAgICAgfSk7CiB9CiAKQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0CiAgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+
IG5zUmVzcG9uc2UgPSByZXNwb25zZS5uc1VSTFJlc3BvbnNlKCk7CiAKICAgICBkaXNwYXRjaE9u
UmVzb3VyY2VMb2FkZXJSdW5Mb29wKF4gewotICAgICAgICBbW3Byb3RvY29sLmdldCgpIGNsaWVu
dF0gVVJMUHJvdG9jb2w6cHJvdG9jb2wuZ2V0KCkgZGlkUmVjZWl2ZVJlc3BvbnNlOm5zUmVzcG9u
c2UuZ2V0KCkgY2FjaGVTdG9yYWdlUG9saWN5OnN0YXRpY19jYXN0PE5TVVJMQ2FjaGVTdG9yYWdl
UG9saWN5PihjYWNoZVN0b3JhZ2VQb2xpY3kpXTsKKyAgICAgICAgW1twcm90b2NvbCBjbGllbnRd
IFVSTFByb3RvY29sOnByb3RvY29sLmdldCgpIGRpZFJlY2VpdmVSZXNwb25zZTpuc1Jlc3BvbnNl
LmdldCgpIGNhY2hlU3RvcmFnZVBvbGljeTpzdGF0aWNfY2FzdDxOU1VSTENhY2hlU3RvcmFnZVBv
bGljeT4oY2FjaGVTdG9yYWdlUG9saWN5KV07CiAgICAgfSk7CiB9CiAKQEAgLTI1NSw3ICsyNTUs
NyBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlcjo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKQogICAgICAgICByZXR1cm47CiAKICAgICBkaXNwYXRjaE9uUmVz
b3VyY2VMb2FkZXJSdW5Mb29wKF4gewotICAgICAgICBbW3Byb3RvY29sLmdldCgpIGNsaWVudF0g
VVJMUHJvdG9jb2xEaWRGaW5pc2hMb2FkaW5nOnByb3RvY29sLmdldCgpXTsKKyAgICAgICAgW1tw
cm90b2NvbCBjbGllbnRdIFVSTFByb3RvY29sRGlkRmluaXNoTG9hZGluZzpwcm90b2NvbC5nZXQo
KV07CiAgICAgfSk7CiAKICAgICByZW1vdmVDdXN0b21Qcm90b2NvbChwcm90b2NvbC5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL0FyZ3VtZW50Q29kZXJzTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9Bcmd1bWVudENvZGVyc01hYy5tbQppbmRl
eCAwOTIxNjBlLi44OTg2OTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L0FyZ3VtZW50Q29kZXJzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvQXJn
dW1lbnRDb2RlcnNNYWMubW0KQEAgLTI0OSw3ICsyNDksNyBAQCBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+JiByZXN1bHQp
CiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBwbGFpblN0cmluZykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIE5TVUludGVnZXIgc3RyaW5nTGVuZ3RoID0gW3BsYWluU3RyaW5n
LmdldCgpIGxlbmd0aF07CisgICAgTlNVSW50ZWdlciBzdHJpbmdMZW5ndGggPSBbcGxhaW5TdHJp
bmcgbGVuZ3RoXTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nPiBy
ZXN1bHRTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6cGxhaW5TdHJpbmcuZ2V0KCldKTsKIApAQCAtMjczLDcgKzI3Myw3IEBA
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPE5TQXR0cmli
dXRlZFN0cmluZz4mIHJlc3VsdCkKIAogICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIs
IGF0dHJpYnV0ZXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBbcmVzdWx0
U3RyaW5nLmdldCgpIGFkZEF0dHJpYnV0ZXM6YXR0cmlidXRlcy5nZXQoKSByYW5nZTpOU01ha2VS
YW5nZShyYW5nZUxvY2F0aW9uLCByYW5nZUxlbmd0aCldOworICAgICAgICBbcmVzdWx0U3RyaW5n
IGFkZEF0dHJpYnV0ZXM6YXR0cmlidXRlcy5nZXQoKSByYW5nZTpOU01ha2VSYW5nZShyYW5nZUxv
Y2F0aW9uLCByYW5nZUxlbmd0aCldOwogICAgIH0KIAogICAgIHJlc3VsdCA9IGFkb3B0TlMocmVz
dWx0U3RyaW5nLmxlYWtSZWYoKSk7CkBAIC0zNDAsNyArMzQwLDcgQEAgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiYgcmVzdWx0KQog
ICAgICAgICBpZiAoIWRlY29kZShkZWNvZGVyLCB2YWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgW2RpY3Rpb25hcnkuZ2V0KCkgc2V0T2JqZWN0OnZhbHVlLmdldCgp
IGZvcktleTprZXkuZ2V0KCldOworICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dmFsdWUu
Z2V0KCkgZm9yS2V5OmtleS5nZXQoKV07CiAgICAgfQogCiAgICAgcmVzdWx0ID0gYWRvcHROUyhk
aWN0aW9uYXJ5LmxlYWtSZWYoKSk7CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8TlNBcnJheT4mIHJlc3VsdCkKICAgICAg
ICAgaWYgKCFkZWNvZGUoZGVjb2RlciwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIFthcnJheS5nZXQoKSBhZGRPYmplY3Q6dmFsdWUuZ2V0KCldOworICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0OnZhbHVlLmdldCgpXTsKICAgICB9CiAKICAgICByZXN1bHQgPSBh
ZG9wdE5TKGFycmF5LmxlYWtSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL09iakNPYmplY3RHcmFwaENvZGVycy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9t
YWMvT2JqQ09iamVjdEdyYXBoQ29kZXJzLm1tCmluZGV4IGIyNjRiNzcuLjJjZTkyMmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoQ29kZXJzLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoQ29kZXJzLm1t
CkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUobWVzc2FnZUNvZGVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgICAgICAgICAgW2FycmF5LmdldCgpIGFkZE9iamVjdDp2YWx1ZS5nZXQoKV07
CisgICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDp2YWx1ZS5nZXQoKV07CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IGFycmF5OwpAQCAtMjE3LDcgKzIx
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHZhbHVl
TWVzc2FnZUNvZGVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgICAgICAgICAgW2RpY3Rpb25hcnkuZ2V0KCkgc2V0T2JqZWN0OnZhbHVlLmdldCgpIGZvcktl
eTprZXkuZ2V0KCldOworICAgICAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp2YWx1
ZS5nZXQoKSBmb3JLZXk6a2V5LmdldCgpXTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gZGljdGlvbmFyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCAz
ZThiOTVlLi41MTI1MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xMDksNyArMTA5
LDcgQEAgc3RydWN0IEdlb2xvY2F0aW9uUmVxdWVzdERhdGEgewogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVMb2NhdGlvblN0YXJ0LmlzRW1wdHkoKSAm
JiBfcmVxdWVzdHNJbldhcm1VcC5pc0VtcHR5KCkpIHsKLSAgICAgICAgW19jb3JlTG9jYXRpb25Q
cm92aWRlci5nZXQoKSBzdG9wXTsKKyAgICAgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzdG9w
XTsKICAgICAgICAgX2xhc3RBY3RpdmVQb3NpdGlvbi5jbGVhcigpOwogICAgIH0KIH0KQEAgLTEx
OCw3ICsxMTgsNyBAQCBzdHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAtKHZvaWQpX3N0
YXJ0VXBkYXRpbmcKIHsKICAgICBfaXNXZWJDb3JlR2VvbG9jYXRpb25BY3RpdmUgPSBZRVM7Ci0g
ICAgW19jb3JlTG9jYXRpb25Qcm92aWRlci5nZXQoKSBzdGFydF07CisgICAgW19jb3JlTG9jYXRp
b25Qcm92aWRlciBzdGFydF07CiAKICAgICAvLyBJZiB3ZSBoYXZlIHRoZSBsYXN0IHBvc2l0aW9u
LCBpdCBpcyBmcm9tIHRoZSBpbml0aWFsaXphdGlvbiBvciB3YXJtIHVwLiBJdCBpcyB0aGUgbGFz
dCBrbm93bgogICAgIC8vIGdvb2QgcG9zaXRpb24gc28gd2UgY2FuIHJldHVybiBpdCBkaXJlY3Rs
eS4KQEAgLTEzNCw3ICsxMzQsNyBAQCBzdHJ1Y3QgR2VvbG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAK
IC0odm9pZClfc2V0RW5hYmxlSGlnaEFjY3VyYWN5OihCT09MKWVuYWJsZUhpZ2hBY2N1cmFjeQog
ewotICAgIFtfY29yZUxvY2F0aW9uUHJvdmlkZXIuZ2V0KCkgc2V0RW5hYmxlSGlnaEFjY3VyYWN5
OmVuYWJsZUhpZ2hBY2N1cmFjeV07CisgICAgW19jb3JlTG9jYXRpb25Qcm92aWRlciBzZXRFbmFi
bGVIaWdoQWNjdXJhY3k6ZW5hYmxlSGlnaEFjY3VyYWN5XTsKIH0KIAogI3ByYWdtYSBtYXJrIC0g
UHVibGljIEFQSSBpbXBsZW1lbnRhdGlvbi4KQEAgLTE3Miw3ICsxNzIsNyBAQCBzdHJ1Y3QgR2Vv
bG9jYXRpb25SZXF1ZXN0RGF0YSB7CiAgICAgZ2VvbG9jYXRpb25SZXF1ZXN0RGF0YS5wZXJtaXNz
aW9uUmVxdWVzdCA9IHRvSW1wbChwZXJtaXNzaW9uUmVxdWVzdCk7CiAgICAgZ2VvbG9jYXRpb25S
ZXF1ZXN0RGF0YS53aW5kb3cgPSB3aW5kb3c7CiAgICAgX3JlcXVlc3RzV2FpdGluZ0ZvckNvcmVM
b2NhdGlvblN0YXJ0LmFwcGVuZChnZW9sb2NhdGlvblJlcXVlc3REYXRhKTsKLSAgICBbX2NvcmVM
b2NhdGlvblByb3ZpZGVyLmdldCgpIHN0YXJ0XTsKKyAgICBbX2NvcmVMb2NhdGlvblByb3ZpZGVy
IHN0YXJ0XTsKIH0KIEBlbmQKIApAQCAtMjYzLDcgKzI2Myw3IEBAIHN0cnVjdCBHZW9sb2NhdGlv
blJlcXVlc3REYXRhIHsKIAogLSAodm9pZClkZW55CiB7Ci0gICAgW19wcm92aWRlci5nZXQoKSBw
ZXJtaXNzaW9uRGVuaWVkOl9wZXJtaXNzaW9uUmVxdWVzdFByb3h5LmdldCgpXTsKKyAgICBbX3By
b3ZpZGVyIHBlcm1pc3Npb25EZW5pZWQ6X3Blcm1pc3Npb25SZXF1ZXN0UHJveHkuZ2V0KCldOwog
ICAgIF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5LT5kZW55KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvaW9zL1dLSW50ZXJhY3Rpb25WaWV3Lm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcubW0KaW5kZXgg
ZWE4OGRhYi4uZjVkNmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tJbnRlcmFjdGlvblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9pb3MvV0tJbnRlcmFjdGlvblZpZXcubW0KQEAgLTMwNywxMyArMzA3LDEzIEBAIHN0YXRp
YyBGbG9hdFF1YWQgaW5mbGF0ZVF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBmbG9hdCBpbmZs
YXRlU2l6ZSkKICAgICBjb25zdCBDR0Zsb2F0IFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRp
dXMgPSAyLjA7CiAgICAgaWYgKCFfaGlnaGxpZ2h0VmlldykgewogICAgICAgICBfaGlnaGxpZ2h0
VmlldyA9IGFkb3B0TlMoW1tfVUlIaWdobGlnaHRWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm9dKTsKLSAgICAgICAgW19oaWdobGlnaHRWaWV3LmdldCgpIHNldE9wYXF1ZTpOT107
Ci0gICAgICAgIFtfaGlnaGxpZ2h0Vmlldy5nZXQoKSBzZXRDb3JuZXJSYWRpdXM6VUlXZWJWaWV3
TWluaW11bUhpZ2hsaWdodFJhZGl1c107CisgICAgICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRPcGFx
dWU6Tk9dOworICAgICAgICBbX2hpZ2hsaWdodFZpZXcgc2V0Q29ybmVyUmFkaXVzOlVJV2ViVmll
d01pbmltdW1IaWdobGlnaHRSYWRpdXNdOwogICAgIH0KICAgICBbc2VsZiBhZGRTdWJ2aWV3Ol9o
aWdobGlnaHRWaWV3LmdldCgpXTsKIAogICAgIFJldGFpblB0cjxVSUNvbG9yPiBoaWdobGlnaHRV
SUtpdENvbG9yID0gYWRvcHROUyhbW1VJQ29sb3IgYWxsb2NdIGluaXRXaXRoUmVkOihjb2xvci5y
ZWQoKSAvIDI1NS4wKSBncmVlbjooY29sb3IuZ3JlZW4oKSAvIDI1NS4wKSBibHVlOihjb2xvci5i
bHVlKCkgLyAyNTUuMCkgYWxwaGE6KGNvbG9yLmFscGhhKCkgLyAyNTUuMCldKTsKLSAgICBbX2hp
Z2hsaWdodFZpZXcuZ2V0KCkgc2V0Q29sb3I6aGlnaGxpZ2h0VUlLaXRDb2xvci5nZXQoKV07Cisg
ICAgW19oaWdobGlnaHRWaWV3IHNldENvbG9yOmhpZ2hsaWdodFVJS2l0Q29sb3IuZ2V0KCldOwog
CiAgICAgYm9vbCBhbGxIaWdobGlnaHRSZWN0c0FyZVJlY3RpbGluZWFyID0gdHJ1ZTsKICAgICBj
b25zdCBzaXplX3QgcXVhZENvdW50ID0gaGlnaGxpZ2h0ZWRRdWFkcy5zaXplKCk7CkBAIC0zMzMs
MzEgKzMzMywzMSBAQCBzdGF0aWMgRmxvYXRRdWFkIGluZmxhdGVRdWFkKGNvbnN0IEZsb2F0UXVh
ZCYgcXVhZCwgZmxvYXQgaW5mbGF0ZVNpemUpCiAgICAgLy8gRklYTUU6IFdlYktpdDEgdXNlcyB0
aGUgdmlzaWJsZVJlY3QuIFVzaW5nIHRoZSB3aG9sZSBmcmFtZSBmcm9tIHRoZSBwYWdlIHNlZW1z
IG92ZXJraWxsLgogICAgIENHUmVjdCBib3VuZGFyeVJlY3QgPSBbc2VsZiBmcmFtZV07CiAgICAg
aWYgKGFsbEhpZ2hsaWdodFJlY3RzQXJlUmVjdGlsaW5lYXIpCi0gICAgICAgIFtfaGlnaGxpZ2h0
Vmlldy5nZXQoKSBzZXRGcmFtZXM6cmVjdHMuZ2V0KCkgYm91bmRhcnlSZWN0OmJvdW5kYXJ5UmVj
dF07CisgICAgICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRGcmFtZXM6cmVjdHMuZ2V0KCkgYm91bmRh
cnlSZWN0OmJvdW5kYXJ5UmVjdF07CiAgICAgZWxzZSB7CiAgICAgICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gcXVhZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQ2FwYWNpdHk6c3RhdGljX2Nhc3Q8Y29uc3QgTlNVSW50ZWdlcj4ocXVhZENvdW50KV0pOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDb3VudDsgKytpKSB7CiAgICAgICAg
ICAgICBjb25zdCBGbG9hdFF1YWQmIHF1YWQgPSBoaWdobGlnaHRlZFF1YWRzW2ldOwogICAgICAg
ICAgICAgRmxvYXRRdWFkIGV4dGVuZGVkUXVhZCA9IGluZmxhdGVRdWFkKHF1YWQsIFVJV2ViVmll
d01pbmltdW1IaWdobGlnaHRSYWRpdXMpOwotICAgICAgICAgICAgW3F1YWRzLmdldCgpIGFkZE9i
amVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OmV4dGVuZGVkUXVhZC5wMSgpXV07Ci0gICAg
ICAgICAgICBbcXVhZHMuZ2V0KCkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHUG9pbnQ6
ZXh0ZW5kZWRRdWFkLnAyKCldXTsKLSAgICAgICAgICAgIFtxdWFkcy5nZXQoKSBhZGRPYmplY3Q6
W05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpleHRlbmRlZFF1YWQucDMoKV1dOwotICAgICAgICAg
ICAgW3F1YWRzLmdldCgpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OmV4dGVu
ZGVkUXVhZC5wNCgpXV07CisgICAgICAgICAgICBbcXVhZHMgYWRkT2JqZWN0OltOU1ZhbHVlIHZh
bHVlV2l0aENHUG9pbnQ6ZXh0ZW5kZWRRdWFkLnAxKCldXTsKKyAgICAgICAgICAgIFtxdWFkcyBh
ZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dQb2ludDpleHRlbmRlZFF1YWQucDIoKV1dOwor
ICAgICAgICAgICAgW3F1YWRzIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1BvaW50OmV4
dGVuZGVkUXVhZC5wMygpXV07CisgICAgICAgICAgICBbcXVhZHMgYWRkT2JqZWN0OltOU1ZhbHVl
IHZhbHVlV2l0aENHUG9pbnQ6ZXh0ZW5kZWRRdWFkLnA0KCldXTsKICAgICAgICAgfQotICAgICAg
ICBbX2hpZ2hsaWdodFZpZXcuZ2V0KCkgc2V0UXVhZHM6cXVhZHMuZ2V0KCkgYm91bmRhcnlSZWN0
OmJvdW5kYXJ5UmVjdF07CisgICAgICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRRdWFkczpxdWFkcy5n
ZXQoKSBib3VuZGFyeVJlY3Q6Ym91bmRhcnlSZWN0XTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGJvcmRlclJhZGlpID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5OjRdKTsKLSAgICBbYm9yZGVyUmFkaWkuZ2V0KCkgYWRkT2Jq
ZWN0OltOU1ZhbHVlIHZhbHVlV2l0aENHU2l6ZTpDR1NpemVNYWtlKHRvcExlZnRSYWRpdXMud2lk
dGgoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMsIHRvcExlZnRSYWRpdXMuaGVp
Z2h0KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzKV1dOwotICAgIFtib3JkZXJS
YWRpaS5nZXQoKSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNHU2l6ZU1ha2Uo
dG9wUmlnaHRSYWRpdXMud2lkdGgoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMs
IHRvcFJpZ2h0UmFkaXVzLmhlaWdodCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1
cyldXTsKLSAgICBbYm9yZGVyUmFkaWkuZ2V0KCkgYWRkT2JqZWN0OltOU1ZhbHVlIHZhbHVlV2l0
aENHU2l6ZTpDR1NpemVNYWtlKGJvdHRvbUxlZnRSYWRpdXMud2lkdGgoKSArIFVJV2ViVmlld01p
bmltdW1IaWdobGlnaHRSYWRpdXMsIGJvdHRvbUxlZnRSYWRpdXMuaGVpZ2h0KCkgKyBVSVdlYlZp
ZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVzKV1dOwotICAgIFtib3JkZXJSYWRpaS5nZXQoKSBhZGRP
YmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNHU2l6ZU1ha2UoYm90dG9tUmlnaHRSYWRp
dXMud2lkdGgoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMsIGJvdHRvbVJpZ2h0
UmFkaXVzLmhlaWdodCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cyldXTsKLSAg
ICBbX2hpZ2hsaWdodFZpZXcuZ2V0KCkgc2V0Q29ybmVyUmFkaWk6Ym9yZGVyUmFkaWkuZ2V0KCld
OworICAgIFtib3JkZXJSYWRpaSBhZGRPYmplY3Q6W05TVmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNH
U2l6ZU1ha2UodG9wTGVmdFJhZGl1cy53aWR0aCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdo
dFJhZGl1cywgdG9wTGVmdFJhZGl1cy5oZWlnaHQoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGln
aHRSYWRpdXMpXV07CisgICAgW2JvcmRlclJhZGlpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdp
dGhDR1NpemU6Q0dTaXplTWFrZSh0b3BSaWdodFJhZGl1cy53aWR0aCgpICsgVUlXZWJWaWV3TWlu
aW11bUhpZ2hsaWdodFJhZGl1cywgdG9wUmlnaHRSYWRpdXMuaGVpZ2h0KCkgKyBVSVdlYlZpZXdN
aW5pbXVtSGlnaGxpZ2h0UmFkaXVzKV1dOworICAgIFtib3JkZXJSYWRpaSBhZGRPYmplY3Q6W05T
VmFsdWUgdmFsdWVXaXRoQ0dTaXplOkNHU2l6ZU1ha2UoYm90dG9tTGVmdFJhZGl1cy53aWR0aCgp
ICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cywgYm90dG9tTGVmdFJhZGl1cy5oZWln
aHQoKSArIFVJV2ViVmlld01pbmltdW1IaWdobGlnaHRSYWRpdXMpXV07CisgICAgW2JvcmRlclJh
ZGlpIGFkZE9iamVjdDpbTlNWYWx1ZSB2YWx1ZVdpdGhDR1NpemU6Q0dTaXplTWFrZShib3R0b21S
aWdodFJhZGl1cy53aWR0aCgpICsgVUlXZWJWaWV3TWluaW11bUhpZ2hsaWdodFJhZGl1cywgYm90
dG9tUmlnaHRSYWRpdXMuaGVpZ2h0KCkgKyBVSVdlYlZpZXdNaW5pbXVtSGlnaGxpZ2h0UmFkaXVz
KV1dOworICAgIFtfaGlnaGxpZ2h0VmlldyBzZXRDb3JuZXJSYWRpaTpib3JkZXJSYWRpaS5nZXQo
KV07CiB9CiAKIC0gKHZvaWQpX2NhbmNlbExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyCiB7Ci0g
ICAgW19oaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKSBjYW5jZWxdOwor
ICAgIFtfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIgY2FuY2VsXTsKIH0KIAog
LSAodm9pZClfZGlkU2Nyb2xsCkBAIC00OTksNyArNDk5LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAq
YiwgVUkKIC0gKHZvaWQpX2NhbmNlbEludGVyYWN0aW9uCiB7CiAgICAgX2lzVGFwSGlnaGxpZ2h0
SURWYWxpZCA9IE5POwotICAgIFtfaGlnaGxpZ2h0Vmlldy5nZXQoKSByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKKyAgICBbX2hpZ2hsaWdodFZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiB9CiAKIC0g
KEJPT0wpaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDooQ0dQb2ludClwb2ludApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvRmluZEluZGljYXRvcldpbmRv
dy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL0ZpbmRJbmRpY2F0b3JXaW5k
b3cubW0KaW5kZXggOTM5ZTFiMC4uMjA5OTVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9tYWMvRmluZEluZGljYXRvcldpbmRvdy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9GaW5kSW5kaWNhdG9yV2luZG93Lm1tCkBAIC0xNTAsMTUg
KzE1MCwxNSBAQCB2b2lkIEZpbmRJbmRpY2F0b3JXaW5kb3c6OnNldEZpbmRJbmRpY2F0b3IoUGFz
c1JlZlB0cjxGaW5kSW5kaWNhdG9yPiBmaW5kSW5kaWNhdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tpbmc6TlNCYWNr
aW5nU3RvcmVCdWZmZXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXI6Tk9dKTsKIAotICAgIFttX2ZpbmRJbmRp
Y2F0b3JXaW5kb3cuZ2V0KCkgc2V0QmFja2dyb3VuZENvbG9yOltOU0NvbG9yIGNsZWFyQ29sb3Jd
XTsKLSAgICBbbV9maW5kSW5kaWNhdG9yV2luZG93LmdldCgpIHNldE9wYXF1ZTpOT107Ci0gICAg
W21fZmluZEluZGljYXRvcldpbmRvdy5nZXQoKSBzZXRJZ25vcmVzTW91c2VFdmVudHM6WUVTXTsK
KyAgICBbbV9maW5kSW5kaWNhdG9yV2luZG93IHNldEJhY2tncm91bmRDb2xvcjpbTlNDb2xvciBj
bGVhckNvbG9yXV07CisgICAgW21fZmluZEluZGljYXRvcldpbmRvdyBzZXRPcGFxdWU6Tk9dOwor
ICAgIFttX2ZpbmRJbmRpY2F0b3JXaW5kb3cgc2V0SWdub3Jlc01vdXNlRXZlbnRzOllFU107CiAK
ICAgICBSZXRhaW5QdHI8V0tGaW5kSW5kaWNhdG9yVmlldz4gZmluZEluZGljYXRvclZpZXcgPSBh
ZG9wdE5TKFtbV0tGaW5kSW5kaWNhdG9yVmlldyBhbGxvY10gX2luaXRXaXRoRmluZEluZGljYXRv
cjptX2ZpbmRJbmRpY2F0b3JdKTsKLSAgICBbbV9maW5kSW5kaWNhdG9yV2luZG93LmdldCgpIHNl
dENvbnRlbnRWaWV3OmZpbmRJbmRpY2F0b3JWaWV3LmdldCgpXTsKKyAgICBbbV9maW5kSW5kaWNh
dG9yV2luZG93IHNldENvbnRlbnRWaWV3OmZpbmRJbmRpY2F0b3JWaWV3LmdldCgpXTsKIAogICAg
IFtbbV93a1ZpZXcgd2luZG93XSBhZGRDaGlsZFdpbmRvdzptX2ZpbmRJbmRpY2F0b3JXaW5kb3cu
Z2V0KCkgb3JkZXJlZDpOU1dpbmRvd0Fib3ZlXTsKLSAgICBbbV9maW5kSW5kaWNhdG9yV2luZG93
LmdldCgpIHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107CisgICAgW21fZmluZEluZGljYXRvcldp
bmRvdyBzZXRSZWxlYXNlZFdoZW5DbG9zZWQ6Tk9dOwogCiAgICAgaWYgKGFuaW1hdGUpIHsKICAg
ICAgICAgLy8gU3RhcnQgdGhlIGJvdW5jZSBhbmltYXRpb24uCkBAIC0xNjcsNyArMTY3LDcgQEAg
dm9pZCBGaW5kSW5kaWNhdG9yV2luZG93OjpzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8Rmlu
ZEluZGljYXRvcj4gZmluZEluZGljYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1h
dGlvbkR1cmF0aW9uOmJvdW5jZUFuaW1hdGlvbkR1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjazomRmluZEluZGljYXRvcldpbmRvdzo6Ym91bmNlQW5p
bWF0aW9uQ2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkRpZEVuZENhbGxi
YWNrOiZGaW5kSW5kaWNhdG9yV2luZG93Ojpib3VuY2VBbmltYXRpb25EaWRFbmRdKTsKLSAgICAg
ICAgW21fYm91bmNlQW5pbWF0aW9uLmdldCgpIHN0YXJ0QW5pbWF0aW9uXTsKKyAgICAgICAgW21f
Ym91bmNlQW5pbWF0aW9uIHN0YXJ0QW5pbWF0aW9uXTsKICAgICB9CiAKICAgICBpZiAoZmFkZU91
dCkKQEAgLTE4MiwyMCArMTgyLDIwIEBAIHZvaWQgRmluZEluZGljYXRvcldpbmRvdzo6Y2xvc2VX
aW5kb3coKQogICAgIG1fc3RhcnRGYWRlT3V0VGltZXIuc3RvcCgpOwogCiAgICAgaWYgKG1fZmFk
ZU91dEFuaW1hdGlvbikgewotICAgICAgICBbbV9mYWRlT3V0QW5pbWF0aW9uLmdldCgpIHN0b3BB
bmltYXRpb25dOworICAgICAgICBbbV9mYWRlT3V0QW5pbWF0aW9uIHN0b3BBbmltYXRpb25dOwog
ICAgICAgICBtX2ZhZGVPdXRBbmltYXRpb24gPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X2JvdW5jZUFuaW1hdGlvbikgewotICAgICAgICBbbV9ib3VuY2VBbmltYXRpb24uZ2V0KCkgc3Rv
cEFuaW1hdGlvbl07CisgICAgICAgIFttX2JvdW5jZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsK
ICAgICAgICAgbV9ib3VuY2VBbmltYXRpb24gPSBudWxscHRyOwogICAgIH0KIAogICAgIGlmICht
X2JvdW5jZUFuaW1hdGlvbkNvbnRleHQpCiAgICAgICAgIFdLV2luZG93Qm91bmNlQW5pbWF0aW9u
Q29udGV4dERlc3Ryb3kobV9ib3VuY2VBbmltYXRpb25Db250ZXh0KTsKICAgICAKLSAgICBbW21f
ZmluZEluZGljYXRvcldpbmRvdy5nZXQoKSBwYXJlbnRXaW5kb3ddIHJlbW92ZUNoaWxkV2luZG93
Om1fZmluZEluZGljYXRvcldpbmRvdy5nZXQoKV07Ci0gICAgW21fZmluZEluZGljYXRvcldpbmRv
dy5nZXQoKSBjbG9zZV07CisgICAgW1ttX2ZpbmRJbmRpY2F0b3JXaW5kb3cgcGFyZW50V2luZG93
XSByZW1vdmVDaGlsZFdpbmRvdzptX2ZpbmRJbmRpY2F0b3JXaW5kb3cuZ2V0KCldOworICAgIFtt
X2ZpbmRJbmRpY2F0b3JXaW5kb3cgY2xvc2VdOwogICAgIG1fZmluZEluZGljYXRvcldpbmRvdyA9
IG51bGxwdHI7CiB9CiAKQEAgLTIwNywxNCArMjA3LDE0IEBAIHZvaWQgRmluZEluZGljYXRvcldp
bmRvdzo6c3RhcnRGYWRlT3V0VGltZXJGaXJlZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuaW1hdGlvbkR1cmF0aW9uOmZhZGVPdXRBbmltYXRpb25EdXJhdGlvbgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5pbWF0aW9uUHJvZ3Jlc3NDYWxsYmFjazomRmluZEluZGljYXRvcldpbmRvdzo6ZmFk
ZU91dEFuaW1hdGlvbkNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbkRpZEVu
ZENhbGxiYWNrOiZGaW5kSW5kaWNhdG9yV2luZG93OjpmYWRlT3V0QW5pbWF0aW9uRGlkRW5kXSk7
Ci0gICAgW21fZmFkZU91dEFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CisgICAgW21f
ZmFkZU91dEFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07CiB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAKIHZvaWQgRmluZEluZGljYXRvcldpbmRvdzo6ZmFkZU91dEFuaW1hdGlvbkNhbGxiYWNr
KGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBBU1NFUlQobV9mYWRlT3V0QW5pbWF0aW9uKTsKIAot
ICAgIFttX2ZpbmRJbmRpY2F0b3JXaW5kb3cuZ2V0KCkgc2V0QWxwaGFWYWx1ZToxLjAgLSBwcm9n
cmVzc107CisgICAgW21fZmluZEluZGljYXRvcldpbmRvdyBzZXRBbHBoYVZhbHVlOjEuMCAtIHBy
b2dyZXNzXTsKIH0KIAogdm9pZCBGaW5kSW5kaWNhdG9yV2luZG93OjpmYWRlT3V0QW5pbWF0aW9u
RGlkRW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
UHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmlu
dGluZ1ZpZXcubW0KaW5kZXggYTMxZWNhMy4uYTM4MWE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0KQEAgLTc2LDE0ICs3Niwx
NCBAQCBzdGF0aWMgQk9PTCBpc0ZvcmNpbmdQcmV2aWV3VXBkYXRlOwogCiAtICh2b2lkKV9zZXRB
dXRvZGlzcGxheTooQk9PTCluZXdTdGF0ZQogewotICAgIGlmICghbmV3U3RhdGUgJiYgW1tfd2tW
aWV3LmdldCgpIHdpbmRvd10gaXNBdXRvZGlzcGxheV0pCi0gICAgICAgIFtfd2tWaWV3LmdldCgp
IGRpc3BsYXlJZk5lZWRlZF07CisgICAgaWYgKCFuZXdTdGF0ZSAmJiBbW193a1ZpZXcgd2luZG93
XSBpc0F1dG9kaXNwbGF5XSkKKyAgICAgICAgW193a1ZpZXcgZGlzcGxheUlmTmVlZGVkXTsKICAg
ICAKLSAgICBbW193a1ZpZXcuZ2V0KCkgd2luZG93XSBzZXRBdXRvZGlzcGxheTpuZXdTdGF0ZV07
CisgICAgW1tfd2tWaWV3IHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6bmV3U3RhdGVdOwogCiAgICAg
Ly8gRm9yIHNvbWUgcmVhc29uLCBwYWludGluZyBkb2Vzbid0IGhhcHBlbiBmb3IgYSBsb25nIHRp
bWUgd2l0aG91dCB0aGlzIGNhbGwsIDxyZGFyOi8vcHJvYmxlbS84OTc1MjI5Pi4KICAgICBpZiAo
bmV3U3RhdGUpCi0gICAgICAgIFtfd2tWaWV3LmdldCgpIGRpc3BsYXlJZk5lZWRlZF07CisgICAg
ICAgIFtfd2tWaWV3IGRpc3BsYXlJZk5lZWRlZF07CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDAyYTUzNDguLjNmZmU4MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTE2MDUsMTEgKzE2MDUs
MTEgQEAgc3RhdGljIHZvaWQgZXh0cmFjdFVuZGVybGluZXMoTlNBdHRyaWJ1dGVkU3RyaW5nICpz
dHJpbmcsIFZlY3RvcjxDb21wb3NpdGlvblVuZGUKIAogICAgIGlmIChhY3R1YWxSYW5nZSkgewog
ICAgICAgICAqYWN0dWFsUmFuZ2UgPSBuc1JhbmdlOwotICAgICAgICBhY3R1YWxSYW5nZS0+bGVu
Z3RoID0gW3Jlc3VsdC5zdHJpbmcuZ2V0KCkgbGVuZ3RoXTsKKyAgICAgICAgYWN0dWFsUmFuZ2Ut
Pmxlbmd0aCA9IFtyZXN1bHQuc3RyaW5nIGxlbmd0aF07CiAgICAgfQogCi0gICAgTE9HKFRleHRJ
bnB1dCwgImF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6KCV1LCAldSkgLT4gXCIlQFwiIiwg
bnNSYW5nZS5sb2NhdGlvbiwgbnNSYW5nZS5sZW5ndGgsIFtyZXN1bHQuc3RyaW5nLmdldCgpIHN0
cmluZ10pOwotICAgIHJldHVybiBbW3Jlc3VsdC5zdHJpbmcuZ2V0KCkgcmV0YWluXSBhdXRvcmVs
ZWFzZV07CisgICAgTE9HKFRleHRJbnB1dCwgImF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6
KCV1LCAldSkgLT4gXCIlQFwiIiwgbnNSYW5nZS5sb2NhdGlvbiwgbnNSYW5nZS5sZW5ndGgsIFty
ZXN1bHQuc3RyaW5nIHN0cmluZ10pOworICAgIHJldHVybiBbW3Jlc3VsdC5zdHJpbmcgcmV0YWlu
XSBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKE5TVUludGVnZXIpY2hhcmFjdGVySW5kZXhGb3JQb2lu
dDooTlNQb2ludCl0aGVQb2ludApAQCAtMjIwMiw3ICsyMjAyLDcgQEAgc3RhdGljIE5TU3RyaW5n
ICogY29uc3QgYmFja2luZ1Byb3BlcnR5T2xkU2NhbGVGYWN0b3JLZXkgPSBAIk5TQmFja2luZ1By
b3BlcnR5T2wKICAgICB9CiAgICAgICAgIAogICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2VE
YXRhOwotICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFtfZGF0YS0+X2NvbG9yU3Bh
Y2UuZ2V0KCkgQ0dDb2xvclNwYWNlXTsKKyAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2Ug
PSBbX2RhdGEtPl9jb2xvclNwYWNlIENHQ29sb3JTcGFjZV07CiAKICAgICByZXR1cm4gY29sb3JT
cGFjZURhdGE7ICAgIAogfQpAQCAtMjU4NSw3ICsyNTg1LDcgQEAgc3RhdGljIGJvb2wgbWF0Y2hl
c0V4dGVuc2lvbk9yRXF1aXZhbGVudChOU1N0cmluZyAqZmlsZW5hbWUsIE5TU3RyaW5nICpleHRl
bnNpb24KICAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3Rl
Ym9hcmRXaXRoTmFtZTpwYXN0ZWJvYXJkTmFtZV07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiB0eXBlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzOk5TRmlsZXNQcm9taXNlUGJvYXJkVHlwZSwgbmlsXSk7CiAgICAgCi0gICAgW3R5cGVzLmdl
dCgpIGFkZE9iamVjdHNGcm9tQXJyYXk6YXJjaGl2ZUJ1ZmZlciA/IFBhc3RlYm9hcmRUeXBlczo6
Zm9ySW1hZ2VzV2l0aEFyY2hpdmUoKSA6IFBhc3RlYm9hcmRUeXBlczo6Zm9ySW1hZ2VzKCldOwor
ICAgIFt0eXBlcyBhZGRPYmplY3RzRnJvbUFycmF5OmFyY2hpdmVCdWZmZXIgPyBQYXN0ZWJvYXJk
VHlwZXM6OmZvckltYWdlc1dpdGhBcmNoaXZlKCkgOiBQYXN0ZWJvYXJkVHlwZXM6OmZvckltYWdl
cygpXTsKICAgICBbcGFzdGVib2FyZCBkZWNsYXJlVHlwZXM6dHlwZXMuZ2V0KCkgb3duZXI6c2Vs
Zl07CiAgICAgaWYgKCFtYXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFsZW50KGZpbGVuYW1lLCBleHRl
bnNpb24pKQogICAgICAgICBmaWxlbmFtZSA9IFtbZmlsZW5hbWUgc3RyaW5nQnlBcHBlbmRpbmdT
dHJpbmc6QCIuIl0gc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6ZXh0ZW5zaW9uXTsKQEAgLTI2NzYs
NyArMjY3Niw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBh
dGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBSZXBvcnQgYW4g
ZXJyb3IgaWYgd2UgZmFpbCB0byBjcmVhdGUgYSBmaWxlLgotICAgIE5TU3RyaW5nICpwYXRoID0g
W1tkcm9wRGVzdGluYXRpb24gcGF0aF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50Olt3
cmFwcGVyLmdldCgpIHByZWZlcnJlZEZpbGVuYW1lXV07CisgICAgTlNTdHJpbmcgKnBhdGggPSBb
W2Ryb3BEZXN0aW5hdGlvbiBwYXRoXSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6W3dy
YXBwZXIgcHJlZmVycmVkRmlsZW5hbWVdXTsKICAgICBwYXRoID0gcGF0aFdpdGhVbmlxdWVGaWxl
bmFtZUZvclBhdGgocGF0aCk7CiAgICAgaWYgKCFbd3JhcHBlciB3cml0ZVRvVVJMOltOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6cGF0aF0gb3B0aW9uczpOU0ZpbGVXcmFwcGVyV3JpdGluZ1dpdGhOYW1l
VXBkYXRpbmcgb3JpZ2luYWxDb250ZW50c1VSTDpuaWwgZXJyb3I6bnVsbHB0cl0pCiAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBpbWFnZSBmaWxlIHZpYSAtW05TRmlsZVdyYXBw
ZXIgd3JpdGVUb1VSTDpvcHRpb25zOm9yaWdpbmFsQ29udGVudHNVUkw6ZXJyb3I6XSIpOwpAQCAt
Mjc2NSw4ICsyNzY1LDggQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1l
Rm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICAvLyAyKSBwcmV2ZW50cyBhbnkgTlNCZWVwOyB3
ZSBkb24ndCBldmVyIHdhbnQgdG8gYmVlcCBoZXJlLgogICAgIFJldGFpblB0cjxXS1Jlc3BvbmRl
ckNoYWluU2luaz4gc2luayA9IGFkb3B0TlMoW1tXS1Jlc3BvbmRlckNoYWluU2luayBhbGxvY10g
aW5pdFdpdGhSZXNwb25kZXJDaGFpbjpzZWxmXSk7CiAgICAgW3N1cGVyIGRvQ29tbWFuZEJ5U2Vs
ZWN0b3I6c2VsZWN0b3JdOwotICAgIFtzaW5rLmdldCgpIGRldGFjaF07Ci0gICAgcmV0dXJuICFb
c2luay5nZXQoKSBkaWRSZWNlaXZlVW5oYW5kbGVkQ29tbWFuZF07CisgICAgW3NpbmsgZGV0YWNo
XTsKKyAgICByZXR1cm4gIVtzaW5rIGRpZFJlY2VpdmVVbmhhbmRsZWRDb21tYW5kXTsKIH0KIAog
LSAodm9pZClfc2V0SW50cmluc2ljQ29udGVudFNpemU6KE5TU2l6ZSlpbnRyaW5zaWNDb250ZW50
U2l6ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1Bs
dWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggNjk3OGIwYS4uMjA5ZTc4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nl
c3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMv
UGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBQbHVnaW5Q
cm9jZXNzUHJveHk6OmJlZ2luTW9kYWwoKQogICAgIEFTU0VSVCghbV9hY3RpdmF0aW9uT2JzZXJ2
ZXIpOwogICAgIAogICAgIG1fcGxhY2Vob2xkZXJXaW5kb3cgPSBhZG9wdE5TKFtbV0tQbGFjZWhv
bGRlck1vZGFsV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwg
MCwgMSwgMSkgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tp
bmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10pOwotICAgIFttX3BsYWNlaG9sZGVyV2luZG93Lmdl
dCgpIHNldFJlbGVhc2VkV2hlbkNsb3NlZDpOT107CisgICAgW21fcGxhY2Vob2xkZXJXaW5kb3cg
c2V0UmVsZWFzZWRXaGVuQ2xvc2VkOk5PXTsKICAgICAKICAgICBtX2FjdGl2YXRpb25PYnNlcnZl
ciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JO
YW1lOk5TQXBwbGljYXRpb25XaWxsQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9iamVjdDpOU0Fw
cCBxdWV1ZTpuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24g
Kil7IGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7IH1dOwpAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpiZWdpbk1vZGFsKCkKIAogICAgIFtOU0FwcCBydW5N
b2RhbEZvcldpbmRvdzptX3BsYWNlaG9sZGVyV2luZG93LmdldCgpXTsKICAgICAKLSAgICBbbV9w
bGFjZWhvbGRlcldpbmRvdy5nZXQoKSBvcmRlck91dDpuaWxdOworICAgIFttX3BsYWNlaG9sZGVy
V2luZG93IG9yZGVyT3V0Om5pbF07CiAgICAgbV9wbGFjZWhvbGRlcldpbmRvdyA9IG51bGxwdHI7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvQ29ycmVjdGlv
blBhbmVsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwu
bW0KaW5kZXggNjE1ZTE1Mi4uOGVjMzkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL21hYy9Db3JyZWN0aW9uUGFuZWwubW0KQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIENvcnJl
Y3Rpb25QYW5lbDo6aGFuZGxlQWNjZXB0ZWRSZXBsYWNlbWVudChOU1N0cmluZyogYWNjZXB0ZWRS
ZXBsYWNlbWVudCwgTgogICAgICAgICByZXR1cm47CiAKICAgICBOU1NwZWxsQ2hlY2tlciogc3Bl
bGxDaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Ci0gICAgTlNJ
bnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldy5nZXQoKSBzcGVsbENoZWNrZXJEb2N1bWVudFRh
Z107CisgICAgTlNJbnRlZ2VyIGRvY3VtZW50VGFnID0gW21fdmlldyBzcGVsbENoZWNrZXJEb2N1
bWVudFRhZ107CiAgICAgCiAgICAgc3dpdGNoIChjb3JyZWN0aW9uSW5kaWNhdG9yVHlwZSkgewog
ICAgIGNhc2UgTlNDb3JyZWN0aW9uSW5kaWNhdG9yVHlwZURlZmF1bHQ6CkBAIC0xNDEsNyArMTQx
LDcgQEAgdm9pZCBDb3JyZWN0aW9uUGFuZWw6OmhhbmRsZUFjY2VwdGVkUmVwbGFjZW1lbnQoTlNT
dHJpbmcqIGFjY2VwdGVkUmVwbGFjZW1lbnQsIE4KICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0g
ICAgW21fdmlldy5nZXQoKSBoYW5kbGVBY2NlcHRlZEFsdGVybmF0aXZlVGV4dDphY2NlcHRlZFJl
cGxhY2VtZW50XTsKKyAgICBbbV92aWV3IGhhbmRsZUFjY2VwdGVkQWx0ZXJuYXRpdmVUZXh0OmFj
Y2VwdGVkUmVwbGFjZW1lbnRdOwogICAgIG1fdmlldy5jbGVhcigpOwogICAgIGlmIChhY2NlcHRl
ZFJlcGxhY2VtZW50KQogICAgICAgICBtX3Jlc3VsdEZvckRpc21pc3NhbCA9IGFkb3B0TlMoW2Fj
Y2VwdGVkUmVwbGFjZW1lbnQgY29weV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVGV4dENoZWNrZXJNYWMubW0KaW5kZXggYzllM2Q2Yi4uMDkwMjkxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9UZXh0Q2hlY2tlck1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1RleHRDaGVja2VyTWFjLm1tCkBAIC00MTgsNyArNDE4
LDcgQEAgdm9pZCBUZXh0Q2hlY2tlcjo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KGludDY0X3QsIGNvbnN0IFN0cmluZyYgYmFkR3IKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IGNvcnJlY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBncmFtbWFyRGV0YWlsLmd1ZXNzZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgTlNTdHJpbmcgKmd1ZXNzID0gZ3JhbW1hckRldGFpbC5ndWVzc2Vz
W2ldOwotICAgICAgICBbY29ycmVjdGlvbnMuZ2V0KCkgYWRkT2JqZWN0Omd1ZXNzXTsKKyAgICAg
ICAgW2NvcnJlY3Rpb25zIGFkZE9iamVjdDpndWVzc107CiAgICAgfQogCiAgICAgTlNSYW5nZSBn
cmFtbWFyUmFuZ2UgPSBOU01ha2VSYW5nZShncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFy
RGV0YWlsLmxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KaW5kZXggOWViM2JiOC4uNWQz
MTAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3Jl
ZW5XaW5kb3dDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5tbQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRp
YyBOU1JlY3QgY29udmVydFJlY3RUb1NjcmVlbihOU1dpbmRvdyAqd2luZG93LCBOU1JlY3QgcmVj
dCkKICAgICBOU1dpbmRvdyogd2luZG93ID0gW3NlbGYgd2luZG93XTsKICAgICBOU1JlY3Qgc2Ny
ZWVuRnJhbWUgPSBbW3dpbmRvdyBzY3JlZW5dIGZyYW1lXTsKICAgICBbd2luZG93IHNldEZyYW1l
OnNjcmVlbkZyYW1lIGRpc3BsYXk6WUVTXTsKLSAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkg
c2V0RnJhbWU6c2NyZWVuRnJhbWUgZGlzcGxheTpZRVNdOworICAgIFtfYmFja2dyb3VuZFdpbmRv
dyBzZXRGcmFtZTpzY3JlZW5GcmFtZSBkaXNwbGF5OllFU107CiB9CiAKICNwcmFnbWEgbWFyayAt
CkBAIC0yMzUsMTAgKzIzNSwxMCBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0
ZUltYWdlV2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAvLyBTd2Fw
IHRoZSB3ZWJWaWV3IHBsYWNlaG9sZGVyIGludG8gcGxhY2UuCiAgICAgaWYgKCFfd2ViVmlld1Bs
YWNlaG9sZGVyKSB7CiAgICAgICAgIF93ZWJWaWV3UGxhY2Vob2xkZXIgPSBhZG9wdE5TKFtbV2Vi
Q29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W193ZWJW
aWV3IGZyYW1lXV0pOwotICAgICAgICBbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRBY3Rp
b246QHNlbGVjdG9yKGNhbmNlbE9wZXJhdGlvbjopXTsKKyAgICAgICAgW193ZWJWaWV3UGxhY2Vo
b2xkZXIgc2V0QWN0aW9uOkBzZWxlY3RvcihjYW5jZWxPcGVyYXRpb246KV07CiAgICAgfQotICAg
IFtfd2ViVmlld1BsYWNlaG9sZGVyLmdldCgpIHNldFRhcmdldDpuaWxdOwotICAgIFtfd2ViVmll
d1BsYWNlaG9sZGVyLmdldCgpIHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCld
OworICAgIFtfd2ViVmlld1BsYWNlaG9sZGVyIHNldFRhcmdldDpuaWxdOworICAgIFtfd2ViVmll
d1BsYWNlaG9sZGVyIHNldENvbnRlbnRzOihpZCl3ZWJWaWV3Q29udGVudHMuZ2V0KCldOwogICAg
IFtzZWxmIF9yZXBsYWNlVmlldzpfd2ViVmlldyB3aXRoOl93ZWJWaWV3UGxhY2Vob2xkZXIuZ2V0
KCldOwogICAgIAogICAgIC8vIFRoZW4gaW5zZXJ0IHRoZSBXZWJWaWV3IGludG8gdGhlIGZ1bGwg
c2NyZWVuIHdpbmRvdwpAQCAtMjg2LDIzICsyODYsMjMgQEAgc3RhdGljIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3BpZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2Up
CiAgICAgICAgIHdpbmRvd0JvdW5kcy5vcmlnaW4gPSBOU1plcm9Qb2ludDsKICAgICAgICAgV0tX
aW5kb3dTZXRDbGlwUmVjdChbc2VsZiB3aW5kb3ddLCB3aW5kb3dCb3VuZHMpOwogCi0gICAgICAg
IFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKLSAgICAgICAgW19mYWRlQW5p
bWF0aW9uLmdldCgpIHNldFdpbmRvdzpuaWxdOworICAgICAgICBbX2ZhZGVBbmltYXRpb24gc3Rv
cEFuaW1hdGlvbl07CisgICAgICAgIFtfZmFkZUFuaW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKICAg
ICAgICAgX2ZhZGVBbmltYXRpb24gPSBudWxscHRyOwogICAgICAgICAKLSAgICAgICAgW19iYWNr
Z3JvdW5kV2luZG93LmdldCgpIG9yZGVyT3V0OnNlbGZdOwotICAgICAgICBbX2JhY2tncm91bmRX
aW5kb3cuZ2V0KCkgc2V0RnJhbWU6TlNaZXJvUmVjdCBkaXNwbGF5OllFU107CisgICAgICAgIFtf
YmFja2dyb3VuZFdpbmRvdyBvcmRlck91dDpzZWxmXTsKKyAgICAgICAgW19iYWNrZ3JvdW5kV2lu
ZG93IHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNdOwogCi0gICAgICAgIFtfd2ViVmll
d1BsYWNlaG9sZGVyLmdldCgpIHNldEV4aXRXYXJuaW5nVmlzaWJsZTpZRVNdOwotICAgICAgICBb
X3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRUYXJnZXQ6c2VsZl07CisgICAgICAgIFtfd2Vi
Vmlld1BsYWNlaG9sZGVyIHNldEV4aXRXYXJuaW5nVmlzaWJsZTpZRVNdOworICAgICAgICBbX3dl
YlZpZXdQbGFjZWhvbGRlciBzZXRUYXJnZXQ6c2VsZl07CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gVHJhbnNpdGlvbiB0byBmdWxsc2NyZWVuIGZhaWxlZC4gQ2xlYW4gdXAuCiAgICAgICAgIF9m
dWxsU2NyZWVuU3RhdGUgPSBOb3RJbkZ1bGxTY3JlZW47CiAKLSAgICAgICAgW19zY2FsZUFuaW1h
dGlvbi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKKyAgICAgICAgW19zY2FsZUFuaW1hdGlvbiBzdG9w
QW5pbWF0aW9uXTsKIAotICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkgb3JkZXJPdXQ6
c2VsZl07Ci0gICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBzZXRGcmFtZTpOU1plcm9S
ZWN0IGRpc3BsYXk6WUVTXTsKKyAgICAgICAgW19iYWNrZ3JvdW5kV2luZG93IG9yZGVyT3V0OnNl
bGZdOworICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cgc2V0RnJhbWU6TlNaZXJvUmVjdCBkaXNw
bGF5OllFU107CiAKICAgICAgICAgW1tzZWxmIHdpbmRvd10gc2V0QXV0b2Rpc3BsYXk6WUVTXTsK
ICAgICAgICAgW193ZWJWaWV3IF9zZXRTdXBwcmVzc1Zpc2liaWxpdHlVcGRhdGVzOk5PXTsKQEAg
LTMyNCw3ICszMjQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdl
V2l0aENvcGllZERhdGEoQ0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKIC0gKHZvaWQpZXhpdEZ1bGxT
Y3JlZW4KIHsKICAgICBpZiAoX3dhdGNoZG9nVGltZXIpIHsKLSAgICAgICAgW193YXRjaGRvZ1Rp
bWVyLmdldCgpIGludmFsaWRhdGVdOworICAgICAgICBbX3dhdGNoZG9nVGltZXIgaW52YWxpZGF0
ZV07CiAgICAgICAgIF93YXRjaGRvZ1RpbWVyLmNsZWFyKCk7CiAgICAgfQogCkBAIC0zMzIsNyAr
MzMyLDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjcmVhdGVJbWFnZVdpdGhDb3Bp
ZWREYXRhKENHSW1hZ2VSZWYgc291cmNlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBfZnVs
bFNjcmVlblN0YXRlID0gV2FpdGluZ1RvRXhpdEZ1bGxTY3JlZW47CiAKLSAgICBbX3dlYlZpZXdQ
bGFjZWhvbGRlci5nZXQoKSBzZXRFeGl0V2FybmluZ1Zpc2libGU6Tk9dOworICAgIFtfd2ViVmll
d1BsYWNlaG9sZGVyIHNldEV4aXRXYXJuaW5nVmlzaWJsZTpOT107CiAKICAgICAvLyBTY3JlZW4g
dXBkYXRlcyB0byBiZSByZS1lbmFibGVkIGluIF9zdGFydEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9u
V2l0aER1cmF0aW9uOiBvciBiZWdhbkV4aXRGdWxsU2NyZWVuV2l0aEluaXRpYWxGcmFtZTpmaW5h
bEZyYW1lOgogICAgIE5TRGlzYWJsZVNjcmVlblVwZGF0ZXMoKTsKQEAgLTM0MSw3ICszNDEsNyBA
QCBzdGF0aWMgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUltYWdlV2l0aENvcGllZERhdGEo
Q0dJbWFnZVJlZiBzb3VyY2VJbWFnZSkKICAgICAvLyBTZWUgdGhlIHJlbGF0ZWQgY29tbWVudCBp
biBlbnRlckZ1bGxTY3JlZW46CiAgICAgLy8gV2Ugd2lsbCByZXN1bWUgdGhlIG5vcm1hbCBiZWhh
dmlvciBpbiBfc3RhcnRFeGl0RnVsbFNjcmVlbkFuaW1hdGlvbldpdGhEdXJhdGlvbjoKICAgICBb
X3dlYlZpZXcgX3NldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXM6WUVTXTsKLSAgICBbX3dlYlZp
ZXdQbGFjZWhvbGRlci5nZXQoKSBzZXRUYXJnZXQ6bmlsXTsKKyAgICBbX3dlYlZpZXdQbGFjZWhv
bGRlciBzZXRUYXJnZXQ6bmlsXTsKIAogICAgIFtzZWxmIF9tYW5hZ2VyXS0+c2V0QW5pbWF0aW5n
RnVsbFNjcmVlbih0cnVlKTsKICAgICBbc2VsZiBfbWFuYWdlcl0tPndpbGxFeGl0RnVsbFNjcmVl
bigpOwpAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlRmluaXNoRXhpdEZ1
bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQoV0tFcnJvclJlZiwgdm9pZCopCiAKICAgICAv
LyBTY3JlZW4gdXBkYXRlcyB0byBiZSByZS1lbmFibGVkIGluIGNvbXBsZXRlRmluaXNoRXhpdEZ1
bGxTY3JlZW5BbmltYXRpb25BZnRlclJlcGFpbnQuCiAgICAgTlNEaXNhYmxlU2NyZWVuVXBkYXRl
cygpOwotICAgIFtbX3dlYlZpZXdQbGFjZWhvbGRlci5nZXQoKSB3aW5kb3ddIHNldEF1dG9kaXNw
bGF5Ok5PXTsKKyAgICBbW193ZWJWaWV3UGxhY2Vob2xkZXIgd2luZG93XSBzZXRBdXRvZGlzcGxh
eTpOT107CiAKICAgICBOU1Jlc3BvbmRlciAqZmlyc3RSZXNwb25kZXIgPSBbW3NlbGYgd2luZG93
XSBmaXJzdFJlc3BvbmRlcl07CiAgICAgW3NlbGYgX3JlcGxhY2VWaWV3Ol93ZWJWaWV3UGxhY2Vo
b2xkZXIuZ2V0KCkgd2l0aDpfd2ViVmlld107CkBAIC0zOTAsMTIgKzM5MCwxMiBAQCBzdGF0aWMg
dm9pZCBjb21wbGV0ZUZpbmlzaEV4aXRGdWxsU2NyZWVuQW5pbWF0aW9uQWZ0ZXJSZXBhaW50KFdL
RXJyb3JSZWYsIHZvaWQqKQogICAgIFtbc2VsZiB3aW5kb3ddIG9yZGVyT3V0OnNlbGZdOwogICAg
IFtbc2VsZiB3aW5kb3ddIHNldEZyYW1lOk5TWmVyb1JlY3QgZGlzcGxheTpZRVNdOwogCi0gICAg
W19mYWRlQW5pbWF0aW9uLmdldCgpIHN0b3BBbmltYXRpb25dOwotICAgIFtfZmFkZUFuaW1hdGlv
bi5nZXQoKSBzZXRXaW5kb3c6bmlsXTsKKyAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlv
bl07CisgICAgW19mYWRlQW5pbWF0aW9uIHNldFdpbmRvdzpuaWxdOwogICAgIF9mYWRlQW5pbWF0
aW9uID0gbnVsbHB0cjsKIAotICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBvcmRlck91dDpz
ZWxmXTsKLSAgICBbX2JhY2tncm91bmRXaW5kb3cuZ2V0KCkgc2V0RnJhbWU6TlNaZXJvUmVjdCBk
aXNwbGF5OllFU107CisgICAgW19iYWNrZ3JvdW5kV2luZG93IG9yZGVyT3V0OnNlbGZdOworICAg
IFtfYmFja2dyb3VuZFdpbmRvdyBzZXRGcmFtZTpOU1plcm9SZWN0IGRpc3BsYXk6WUVTXTsKIAog
ICAgIFtbX3dlYlZpZXcgd2luZG93XSBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKIApAQCAt
NTU1LDkgKzU1NSw5IEBAIHN0YXRpYyBOU1JlY3Qgd2luZG93RnJhbWVGcm9tQXBwYXJlbnRGcmFt
ZXMoTlNSZWN0IHNjcmVlbkZyYW1lLCBOU1JlY3QgaW5pdGlhbEZyCiAgICAgCiAgICAgX3NjYWxl
QW5pbWF0aW9uID0gYWRvcHROUyhbW1dlYldpbmRvd1NjYWxlQW5pbWF0aW9uIGFsbG9jXSBpbml0
V2l0aEhpbnRlZER1cmF0aW9uOmR1cmF0aW9uIHdpbmRvdzpbc2VsZiB3aW5kb3ddIGluaXRhbEZy
YW1lOmluaXRpYWxXaW5kb3dGcmFtZSBmaW5hbEZyYW1lOnNjcmVlbkZyYW1lXSk7CiAgICAgCi0g
ICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzZXRBbmltYXRpb25CbG9ja2luZ01vZGU6TlNBbmlt
YXRpb25Ob25ibG9ja2luZ107Ci0gICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzZXRDdXJyZW50
UHJvZ3Jlc3M6MF07Ci0gICAgW19zY2FsZUFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07
CisgICAgW19zY2FsZUFuaW1hdGlvbiBzZXRBbmltYXRpb25CbG9ja2luZ01vZGU6TlNBbmltYXRp
b25Ob25ibG9ja2luZ107CisgICAgW19zY2FsZUFuaW1hdGlvbiBzZXRDdXJyZW50UHJvZ3Jlc3M6
MF07CisgICAgW19zY2FsZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07CiAKICAgICAvLyBXS1dp
bmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28gY29udmVydCBmcm9t
IHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJvdW5kcyA9IF9maW5h
bEZyYW1lOwpAQCAtNTc3LDI0ICs1NzcsMjQgQEAgc3RhdGljIE5TUmVjdCB3aW5kb3dGcmFtZUZy
b21BcHBhcmVudEZyYW1lcyhOU1JlY3Qgc2NyZWVuRnJhbWUsIE5TUmVjdCBpbml0aWFsRnIKICAg
ICBpZiAoIV9iYWNrZ3JvdW5kV2luZG93KQogICAgICAgICBfYmFja2dyb3VuZFdpbmRvdyA9IGNy
ZWF0ZUJhY2tncm91bmRGdWxsc2NyZWVuV2luZG93KHNjcmVlbkZyYW1lKTsKICAgICBlbHNlCi0g
ICAgICAgIFtfYmFja2dyb3VuZFdpbmRvdy5nZXQoKSBzZXRGcmFtZTpzY3JlZW5GcmFtZSBkaXNw
bGF5Ok5PXTsKKyAgICAgICAgW19iYWNrZ3JvdW5kV2luZG93IHNldEZyYW1lOnNjcmVlbkZyYW1l
IGRpc3BsYXk6Tk9dOwogCiAgICAgQ0dGbG9hdCBjdXJyZW50QWxwaGEgPSAwOwogICAgIGlmIChf
ZmFkZUFuaW1hdGlvbikgewotICAgICAgICBjdXJyZW50QWxwaGEgPSBbX2ZhZGVBbmltYXRpb24u
Z2V0KCkgY3VycmVudEFscGhhXTsKLSAgICAgICAgW19mYWRlQW5pbWF0aW9uLmdldCgpIHN0b3BB
bmltYXRpb25dOwotICAgICAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc2V0V2luZG93Om5pbF07
CisgICAgICAgIGN1cnJlbnRBbHBoYSA9IFtfZmFkZUFuaW1hdGlvbiBjdXJyZW50QWxwaGFdOwor
ICAgICAgICBbX2ZhZGVBbmltYXRpb24gc3RvcEFuaW1hdGlvbl07CisgICAgICAgIFtfZmFkZUFu
aW1hdGlvbiBzZXRXaW5kb3c6bmlsXTsKICAgICB9CiAKICAgICBfZmFkZUFuaW1hdGlvbiA9IGFk
b3B0TlMoW1tXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aER1cmF0aW9uOmR1
cmF0aW9uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd2luZG93Ol9iYWNrZ3JvdW5kV2luZG93LmdldCgpIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5pdGlhbEFscGhhOmN1cnJlbnRBbHBoYSAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxBbHBoYToxXSk7Ci0g
ICAgW19mYWRlQW5pbWF0aW9uLmdldCgpIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1h
dGlvbk5vbmJsb2NraW5nXTsKLSAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc2V0Q3VycmVudFBy
b2dyZXNzOjBdOwotICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07Cisg
ICAgW19mYWRlQW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5v
bmJsb2NraW5nXTsKKyAgICBbX2ZhZGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjBdOwor
ICAgIFtfZmFkZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07CiAKLSAgICBbX2JhY2tncm91bmRX
aW5kb3cuZ2V0KCkgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3
aW5kb3ddIHdpbmRvd051bWJlcl1dOworICAgIFtfYmFja2dyb3VuZFdpbmRvdyBvcmRlcldpbmRv
dzpOU1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07
CiAKICAgICBbX3dlYlZpZXcgX3NldFN1cHByZXNzVmlzaWJpbGl0eVVwZGF0ZXM6Tk9dOwogICAg
IFtbc2VsZiB3aW5kb3ddIHNldEF1dG9kaXNwbGF5OllFU107CkBAIC02MTUsMzMgKzYxNSwzMyBA
QCBzdGF0aWMgTlNSZWN0IHdpbmRvd0ZyYW1lRnJvbUFwcGFyZW50RnJhbWVzKE5TUmVjdCBzY3Jl
ZW5GcmFtZSwgTlNSZWN0IGluaXRpYWxGcgogICAgIE5TUmVjdCBzY3JlZW5GcmFtZSA9IFtbW3Nl
bGYgd2luZG93XSBzY3JlZW5dIGZyYW1lXTsKICAgICBOU1JlY3QgaW5pdGlhbFdpbmRvd0ZyYW1l
ID0gd2luZG93RnJhbWVGcm9tQXBwYXJlbnRGcmFtZXMoc2NyZWVuRnJhbWUsIF9pbml0aWFsRnJh
bWUsIF9maW5hbEZyYW1lKTsKIAotICAgIE5TUmVjdCBjdXJyZW50RnJhbWUgPSBfc2NhbGVBbmlt
YXRpb24gPyBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIGN1cnJlbnRGcmFtZV0gOiBbW3NlbGYgd2lu
ZG93XSBmcmFtZV07CisgICAgTlNSZWN0IGN1cnJlbnRGcmFtZSA9IF9zY2FsZUFuaW1hdGlvbiA/
IFtfc2NhbGVBbmltYXRpb24gY3VycmVudEZyYW1lXSA6IFtbc2VsZiB3aW5kb3ddIGZyYW1lXTsK
ICAgICBfc2NhbGVBbmltYXRpb24gPSBhZG9wdE5TKFtbV2ViV2luZG93U2NhbGVBbmltYXRpb24g
YWxsb2NdIGluaXRXaXRoSGludGVkRHVyYXRpb246ZHVyYXRpb24gd2luZG93OltzZWxmIHdpbmRv
d10gaW5pdGFsRnJhbWU6Y3VycmVudEZyYW1lIGZpbmFsRnJhbWU6aW5pdGlhbFdpbmRvd0ZyYW1l
XSk7CiAKLSAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHNldEFuaW1hdGlvbkJsb2NraW5nTW9k
ZTpOU0FuaW1hdGlvbk5vbmJsb2NraW5nXTsKLSAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHNl
dEN1cnJlbnRQcm9ncmVzczowXTsKLSAgICBbX3NjYWxlQW5pbWF0aW9uLmdldCgpIHN0YXJ0QW5p
bWF0aW9uXTsKKyAgICBbX3NjYWxlQW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpO
U0FuaW1hdGlvbk5vbmJsb2NraW5nXTsKKyAgICBbX3NjYWxlQW5pbWF0aW9uIHNldEN1cnJlbnRQ
cm9ncmVzczowXTsKKyAgICBbX3NjYWxlQW5pbWF0aW9uIHN0YXJ0QW5pbWF0aW9uXTsKIAogICAg
IGlmICghX2JhY2tncm91bmRXaW5kb3cpCiAgICAgICAgIF9iYWNrZ3JvdW5kV2luZG93ID0gY3Jl
YXRlQmFja2dyb3VuZEZ1bGxzY3JlZW5XaW5kb3coc2NyZWVuRnJhbWUpOwogICAgIGVsc2UKLSAg
ICAgICAgW19iYWNrZ3JvdW5kV2luZG93LmdldCgpIHNldEZyYW1lOnNjcmVlbkZyYW1lIGRpc3Bs
YXk6Tk9dOworICAgICAgICBbX2JhY2tncm91bmRXaW5kb3cgc2V0RnJhbWU6c2NyZWVuRnJhbWUg
ZGlzcGxheTpOT107CiAKICAgICBDR0Zsb2F0IGN1cnJlbnRBbHBoYSA9IDE7CiAgICAgaWYgKF9m
YWRlQW5pbWF0aW9uKSB7Ci0gICAgICAgIGN1cnJlbnRBbHBoYSA9IFtfZmFkZUFuaW1hdGlvbi5n
ZXQoKSBjdXJyZW50QWxwaGFdOwotICAgICAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc3RvcEFu
aW1hdGlvbl07Ci0gICAgICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzZXRXaW5kb3c6bmlsXTsK
KyAgICAgICAgY3VycmVudEFscGhhID0gW19mYWRlQW5pbWF0aW9uIGN1cnJlbnRBbHBoYV07Cisg
ICAgICAgIFtfZmFkZUFuaW1hdGlvbiBzdG9wQW5pbWF0aW9uXTsKKyAgICAgICAgW19mYWRlQW5p
bWF0aW9uIHNldFdpbmRvdzpuaWxdOwogICAgIH0KICAgICBfZmFkZUFuaW1hdGlvbiA9IGFkb3B0
TlMoW1tXZWJXaW5kb3dGYWRlQW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aER1cmF0aW9uOmR1cmF0
aW9uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd2luZG93Ol9iYWNrZ3JvdW5kV2luZG93LmdldCgpIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5pdGlhbEFscGhhOmN1cnJlbnRBbHBoYSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxBbHBoYTowXSk7Ci0gICAg
W19mYWRlQW5pbWF0aW9uLmdldCgpIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlv
bk5vbmJsb2NraW5nXTsKLSAgICBbX2ZhZGVBbmltYXRpb24uZ2V0KCkgc2V0Q3VycmVudFByb2dy
ZXNzOjBdOwotICAgIFtfZmFkZUFuaW1hdGlvbi5nZXQoKSBzdGFydEFuaW1hdGlvbl07CisgICAg
W19mYWRlQW5pbWF0aW9uIHNldEFuaW1hdGlvbkJsb2NraW5nTW9kZTpOU0FuaW1hdGlvbk5vbmJs
b2NraW5nXTsKKyAgICBbX2ZhZGVBbmltYXRpb24gc2V0Q3VycmVudFByb2dyZXNzOjBdOworICAg
IFtfZmFkZUFuaW1hdGlvbiBzdGFydEFuaW1hdGlvbl07CiAKLSAgICBbX2JhY2tncm91bmRXaW5k
b3cuZ2V0KCkgb3JkZXJXaW5kb3c6TlNXaW5kb3dCZWxvdyByZWxhdGl2ZVRvOltbc2VsZiB3aW5k
b3ddIHdpbmRvd051bWJlcl1dOworICAgIFtfYmFja2dyb3VuZFdpbmRvdyBvcmRlcldpbmRvdzpO
U1dpbmRvd0JlbG93IHJlbGF0aXZlVG86W1tzZWxmIHdpbmRvd10gd2luZG93TnVtYmVyXV07CiAK
ICAgICAvLyBXS1dpbmRvd1NldENsaXBSZWN0IHRha2VzIHdpbmRvdyBjb29yZGluYXRlcywgc28g
Y29udmVydCBmcm9tIHNjcmVlbiBjb29yZGluYXRlcyBoZXJlOgogICAgIE5TUmVjdCBmaW5hbEJv
dW5kcyA9IF9maW5hbEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9XZWJDb250ZXh0TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJD
b250ZXh0TWFjLm1tCmluZGV4IDAyN2Q0OTcuLjA2NzE3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNYWMubW0KQEAgLTIxMSw3ICsyMTEsNyBAQCBTdHJp
bmcgV2ViQ29udGV4dDo6cGxhdGZvcm1EZWZhdWx0RGlza0NhY2hlRGlyZWN0b3J5KCkgY29uc3QK
ICAgICBpZiAoIWNhY2hlUGF0aCkKICAgICAgICAgY2FjaGVQYXRoID0gQCJ+L0xpYnJhcnkvQ2Fj
aGVzL2NvbS5hcHBsZS5XZWJLaXQyLldlYlByb2Nlc3MiOwogCi0gICAgcmV0dXJuIFtjYWNoZVBh
dGguZ2V0KCkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CisgICAgcmV0dXJuIFtjYWNoZVBh
dGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF07CiB9CiAKIFN0cmluZyBXZWJDb250ZXh0Ojpw
bGF0Zm9ybURlZmF1bHRDb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5tbQpp
bmRleCA2NjRiMjhjLi40MDhlNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tCkBAIC0xMTMsNyArMTEzLDcgQEAg
V2ViQ29udGV4dE1lbnVQcm94eU1hYzo6V2ViQ29udGV4dE1lbnVQcm94eU1hYyhXS1ZpZXcqIHdl
YlZpZXcsIFdlYlBhZ2VQcm94eSogcGEKIFdlYkNvbnRleHRNZW51UHJveHlNYWM6On5XZWJDb250
ZXh0TWVudVByb3h5TWFjKCkKIHsKICAgICBpZiAobV9wb3B1cCkKLSAgICAgICAgW21fcG9wdXAu
Z2V0KCkgc2V0Q29udHJvbFZpZXc6bmlsXTsKKyAgICAgICAgW21fcG9wdXAgc2V0Q29udHJvbFZp
ZXc6bmlsXTsKIH0KIAogdm9pZCBXZWJDb250ZXh0TWVudVByb3h5TWFjOjpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpAQCAtMTg2LDE0
ICsxODYsMTQgQEAgc3RhdGljIFZlY3RvcjxSZXRhaW5QdHI8TlNNZW51SXRlbT4+IG5zTWVudUl0
ZW1WZWN0b3IoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW4KIHZvaWQgV2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6cG9wdWxhdGUoY29uc3QgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRlbURhdGE+JiBp
dGVtcykKIHsKICAgICBpZiAobV9wb3B1cCkKLSAgICAgICAgW21fcG9wdXAuZ2V0KCkgcmVtb3Zl
QWxsSXRlbXNdOworICAgICAgICBbbV9wb3B1cCByZW1vdmVBbGxJdGVtc107CiAgICAgZWxzZSB7
CiAgICAgICAgIG1fcG9wdXAgPSBhZG9wdE5TKFtbTlNQb3BVcEJ1dHRvbkNlbGwgYWxsb2NdIGlu
aXRUZXh0Q2VsbDpAIiIgcHVsbHNEb3duOk5PXSk7Ci0gICAgICAgIFttX3BvcHVwLmdldCgpIHNl
dFVzZXNJdGVtRnJvbU1lbnU6Tk9dOwotICAgICAgICBbbV9wb3B1cC5nZXQoKSBzZXRBdXRvZW5h
Ymxlc0l0ZW1zOk5PXTsKKyAgICAgICAgW21fcG9wdXAgc2V0VXNlc0l0ZW1Gcm9tTWVudTpOT107
CisgICAgICAgIFttX3BvcHVwIHNldEF1dG9lbmFibGVzSXRlbXM6Tk9dOwogICAgIH0KIAotICAg
IE5TTWVudSogbWVudSA9IFttX3BvcHVwLmdldCgpIG1lbnVdOworICAgIE5TTWVudSogbWVudSA9
IFttX3BvcHVwIG1lbnVdOwogICAgIHBvcHVsYXRlTlNNZW51KG1lbnUsIG5zTWVudUl0ZW1WZWN0
b3IoaXRlbXMpKTsKIH0KIApAQCAtMjA3LDEyICsyMDcsMTIgQEAgdm9pZCBXZWJDb250ZXh0TWVu
dVByb3h5TWFjOjpzaG93Q29udGV4dE1lbnUoY29uc3QgSW50UG9pbnQmIG1lbnVMb2NhdGlvbiwg
Y29uc3QKICAgICAKICAgICBOU1JlY3QgbWVudVJlY3QgPSBOU01ha2VSZWN0KG1lbnVMb2NhdGlv
bi54KCksIG1lbnVMb2NhdGlvbi55KCksIDAsIDApOwogICAgIAotICAgIFttX3BvcHVwLmdldCgp
IGF0dGFjaFBvcFVwV2l0aEZyYW1lOm1lbnVSZWN0IGluVmlldzptX3dlYlZpZXddOworICAgIFtt
X3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZyYW1lOm1lbnVSZWN0IGluVmlldzptX3dlYlZpZXddOwog
Ci0gICAgTlNNZW51KiBtZW51ID0gW21fcG9wdXAuZ2V0KCkgbWVudV07CisgICAgTlNNZW51KiBt
ZW51ID0gW21fcG9wdXAgbWVudV07CiAKICAgICAvLyBUaGVzZSB2YWx1ZXMgd2VyZSBib3Jyb3dl
ZCBmcm9tIEFwcEtpdCB0byBtYXRjaCB0aGVpciBwbGFjZW1lbnQgb2YgdGhlIG1lbnUuCi0gICAg
TlNSZWN0IHRpdGxlRnJhbWUgPSBbbV9wb3B1cC5nZXQoKSAgdGl0bGVSZWN0Rm9yQm91bmRzOm1l
bnVSZWN0XTsKKyAgICBOU1JlY3QgdGl0bGVGcmFtZSA9IFttX3BvcHVwICB0aXRsZVJlY3RGb3JC
b3VuZHM6bWVudVJlY3RdOwogICAgIGlmICh0aXRsZUZyYW1lLnNpemUud2lkdGggPD0gMCB8fCB0
aXRsZUZyYW1lLnNpemUuaGVpZ2h0IDw9IDApCiAgICAgICAgIHRpdGxlRnJhbWUgPSBtZW51UmVj
dDsKICAgICBmbG9hdCB2ZXJ0T2Zmc2V0ID0gcm91bmRmKChOU01heFkobWVudVJlY3QpIC0gTlNN
YXhZKHRpdGxlRnJhbWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJhbWUpKTsKQEAgLTIyNiwxMiArMjI2
LDEyIEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eU1hYzo6c2hvd0NvbnRleHRNZW51KGNvbnN0
IEludFBvaW50JiBtZW51TG9jYXRpb24sIGNvbnN0CiAKICAgICBXS1BvcHVwQ29udGV4dE1lbnUo
bWVudSwgbG9jYXRpb24pOwogCi0gICAgW21fcG9wdXAuZ2V0KCkgZGlzbWlzc1BvcFVwXTsKKyAg
ICBbbV9wb3B1cCBkaXNtaXNzUG9wVXBdOwogfQogCiB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlN
YWM6OmhpZGVDb250ZXh0TWVudSgpCiB7Ci0gICAgW21fcG9wdXAuZ2V0KCkgZGlzbWlzc1BvcFVw
XTsKKyAgICBbbV9wb3B1cCBkaXNtaXNzUG9wVXBdOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tCmluZGV4IGFiYjQ2ZjguLjA4NTNhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMzQ0LDggKzM0
NCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUluc3BlY3RvcldpbmRvdygpCiAg
ICAgbV9kb2NrQm90dG9tQnV0dG9uLmdldCgpLmhpZGRlbiA9ICFjYW5BdHRhY2goKTsKICAgICBt
X2RvY2tSaWdodEJ1dHRvbi5nZXQoKS5oaWRkZW4gPSAhY2FuQXR0YWNoKCk7CiAKLSAgICBbbV9p
bnNwZWN0b3JWaWV3LmdldCgpIHNldEZyYW1lOltjb250ZW50VmlldyBib3VuZHNdXTsKLSAgICBb
bV9pbnNwZWN0b3JWaWV3LmdldCgpIHNldEF1dG9yZXNpemluZ01hc2s6TlNWaWV3V2lkdGhTaXph
YmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZV07CisgICAgW21faW5zcGVjdG9yVmlldyBzZXRGcmFt
ZTpbY29udGVudFZpZXcgYm91bmRzXV07CisgICAgW21faW5zcGVjdG9yVmlldyBzZXRBdXRvcmVz
aXppbmdNYXNrOk5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGVdOwogICAg
IFtjb250ZW50VmlldyBhZGRTdWJ2aWV3Om1faW5zcGVjdG9yVmlldy5nZXQoKV07CiAKICAgICAv
LyBDZW50ZXIgdGhlIHdpbmRvdyBpZiB0aGUgc2F2ZWQgZnJhbWUgd2FzIGVtcHR5LgpAQCAtMzYx
LDcgKzM2MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnVwZGF0ZUluc3BlY3RvcldpbmRv
d1RpdGxlKCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgTlNTdHJpbmcgKnRpdGxlID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6V0VCX1VJX1NUUklORygiV2ViIEluc3BlY3RvciDi
gJQgJUAiLCAiV2ViIEluc3BlY3RvciB3aW5kb3cgdGl0bGUiKSwgKE5TU3RyaW5nICopbV91cmxT
dHJpbmddOwotICAgIFttX2luc3BlY3RvcldpbmRvdy5nZXQoKSBzZXRUaXRsZTp0aXRsZV07Cisg
ICAgW21faW5zcGVjdG9yV2luZG93IHNldFRpdGxlOnRpdGxlXTsKIH0KIAogV2ViUGFnZVByb3h5
KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCkKQEAgLTM5
Myw3ICszOTMsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNy
ZWF0ZUluc3BlY3RvclBhZ2UoKQogICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS1dl
Ykluc3BlY3RvcldLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsUmVjdCBjb250ZXh0
UmVmOnRvQVBJKCZwYWdlKCktPnByb2Nlc3MoKS5jb250ZXh0KCkpIHBhZ2VHcm91cFJlZjp0b0FQ
SShpbnNwZWN0b3JQYWdlR3JvdXAoKSkgcmVsYXRlZFRvUGFnZTp0b0FQSShtX3BhZ2UpXSk7CiAg
ICAgQVNTRVJUKG1faW5zcGVjdG9yVmlldyk7CiAKLSAgICBbbV9pbnNwZWN0b3JWaWV3LmdldCgp
IHNldERyYXdzQmFja2dyb3VuZDpOT107CisgICAgW21faW5zcGVjdG9yVmlldyBzZXREcmF3c0Jh
Y2tncm91bmQ6Tk9dOwogCiAgICAgbV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyID0gYWRvcHRO
UyhbW1dLV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhbGxvY10gaW5pdFdpdGhXZWJJbnNw
ZWN0b3JQcm94eTp0aGlzXSk7CiAKQEAgLTQ2NywxNCArNDY3LDE0IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtT3BlbigpCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bURpZENsb3NlKCkKIHsKICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKLSAgICAgICAgW21f
aW5zcGVjdG9yV2luZG93LmdldCgpIHNldERlbGVnYXRlOm5pbF07Ci0gICAgICAgIFttX2luc3Bl
Y3RvcldpbmRvdy5nZXQoKSBvcmRlck91dDpuaWxdOworICAgICAgICBbbV9pbnNwZWN0b3JXaW5k
b3cgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICAgICAgW21faW5zcGVjdG9yV2luZG93IG9yZGVyT3V0
Om5pbF07CiAgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKICAgICB9CiAKICAgICBtX2lu
c3BlY3RvclZpZXcgPSAwOwogCi0gICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlci5nZXQo
KSBjbG9zZV07CisgICAgW21faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBjbG9zZV07CiAgICAg
bV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyID0gMDsKIH0KIApAQCAtNDg2LDggKzQ4Niw4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtSGlkZSgpCiAgICAgfQogCiAgICAgaWYg
KG1faW5zcGVjdG9yV2luZG93KSB7Ci0gICAgICAgIFttX2luc3BlY3RvcldpbmRvdy5nZXQoKSBz
ZXREZWxlZ2F0ZTpuaWxdOwotICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cuZ2V0KCkgb3JkZXJP
dXQ6bmlsXTsKKyAgICAgICAgW21faW5zcGVjdG9yV2luZG93IHNldERlbGVnYXRlOm5pbF07Cisg
ICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBvcmRlck91dDpuaWxdOwogICAgICAgICBtX2luc3Bl
Y3RvcldpbmRvdyA9IDA7CiAgICAgfQogfQpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6Omluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnRE
aW1lbnNpb24pCiAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgICAgIGNhc2Ug
QXR0YWNobWVudFNpZGVCb3R0b206IHsKICAgICAgICAgICAgIGlmICghY3VycmVudERpbWVuc2lv
bikKLSAgICAgICAgICAgICAgICBjdXJyZW50RGltZW5zaW9uID0gTlNIZWlnaHQoW21faW5zcGVj
dG9yVmlldy5nZXQoKSBmcmFtZV0pOworICAgICAgICAgICAgICAgIGN1cnJlbnREaW1lbnNpb24g
PSBOU0hlaWdodChbbV9pbnNwZWN0b3JWaWV3IGZyYW1lXSk7CiAKICAgICAgICAgICAgIENHRmxv
YXQgcGFyZW50SGVpZ2h0ID0gTlNIZWlnaHQocGFyZW50Qm91bmRzKTsKICAgICAgICAgICAgIENH
RmxvYXQgaW5zcGVjdG9ySGVpZ2h0ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y29u
c3RyYWluZWRBdHRhY2hlZFdpbmRvd0hlaWdodChjdXJyZW50RGltZW5zaW9uLCBwYXJlbnRIZWln
aHQpOwpAQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rl
ZFZpZXdGcmFtZURpZENoYW5nZShDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb24pCiAKICAgICAgICAg
Y2FzZSBBdHRhY2htZW50U2lkZVJpZ2h0OiB7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnREaW1l
bnNpb24pCi0gICAgICAgICAgICAgICAgY3VycmVudERpbWVuc2lvbiA9IE5TV2lkdGgoW21faW5z
cGVjdG9yVmlldy5nZXQoKSBmcmFtZV0pOworICAgICAgICAgICAgICAgIGN1cnJlbnREaW1lbnNp
b24gPSBOU1dpZHRoKFttX2luc3BlY3RvclZpZXcgZnJhbWVdKTsKIAogICAgICAgICAgICAgQ0dG
bG9hdCBwYXJlbnRXaWR0aCA9IE5TV2lkdGgocGFyZW50Qm91bmRzKTsKICAgICAgICAgICAgIENH
RmxvYXQgaW5zcGVjdG9yV2lkdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpjb25z
dHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGgoY3VycmVudERpbWVuc2lvbiwgcGFyZW50V2lkdGgp
OwpAQCAtNjc2LDE0ICs2NzYsMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1B
dHRhY2goKQogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXI6bV9pbnNwZWN0b3JQcm94eU9iakNBZGFwdGVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3Rv
cihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdl
Tm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsKIAogICAgIGlmIChtX2luc3BlY3Rv
cldpbmRvdykgewotICAgICAgICBbbV9pbnNwZWN0b3JXaW5kb3cuZ2V0KCkgc2V0RGVsZWdhdGU6
bmlsXTsKLSAgICAgICAgW21faW5zcGVjdG9yV2luZG93LmdldCgpIG9yZGVyT3V0Om5pbF07Cisg
ICAgICAgIFttX2luc3BlY3RvcldpbmRvdyBzZXREZWxlZ2F0ZTpuaWxdOworICAgICAgICBbbV9p
bnNwZWN0b3JXaW5kb3cgb3JkZXJPdXQ6bmlsXTsKICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cg
PSAwOwogICAgIH0KIAotICAgIFttX2luc3BlY3RvclZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVy
dmlld107CisgICAgW21faW5zcGVjdG9yVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAotICAg
IFttX2luc3BlY3RvclZpZXcuZ2V0KCkgc2V0QXV0b3Jlc2l6aW5nTWFzazpOU1ZpZXdXaWR0aFNp
emFibGUgfCBOU1ZpZXdNYXhZTWFyZ2luXTsKKyAgICBbbV9pbnNwZWN0b3JWaWV3IHNldEF1dG9y
ZXNpemluZ01hc2s6TlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3TWF4WU1hcmdpbl07CiAKICAg
ICBDR0Zsb2F0IGN1cnJlbnREaW1lbnNpb247CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCiAgICAgV0tWaWV3ICppbnNwZWN0ZWRW
aWV3ID0gbV9wYWdlLT53a1ZpZXcoKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1faW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlci5nZXQo
KSBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRW
aWV3XTsKIAotICAgIFttX2luc3BlY3RvclZpZXcuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVydmlld107
CisgICAgW21faW5zcGVjdG9yVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHdlIHNpemUgdGhlIGluc3BlY3RlZCB2aWV3J3MgZnJhbWUgYWZ0ZXIgZGV0
YWNoaW5nIHNvIHRoYXQgaXQgdGFrZXMgdXAgdGhlIHNwYWNlIHRoYXQgdGhlCiAgICAgLy8gYXR0
YWNoZWQgaW5zcGVjdG9yIHVzZWQgdG8uIFByZXNlcnZlIHRoZSB0b3AgcG9zaXRpb24gb2YgdGhl
IGluc3BlY3RlZCB2aWV3IHNvIGJhbm5lcnMgaW4gU2FmYXJpIHN0aWxsIHdvcmsuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQpp
bmRleCBiNGVkOTllLi4yYWYwMjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0KQEAgLTQ5LDMyICs0OSwzMiBAQCBXZWJQ
b3B1cE1lbnVQcm94eU1hYzo6V2ViUG9wdXBNZW51UHJveHlNYWMoV0tWaWV3ICp3ZWJWaWV3LCBX
ZWJQb3B1cE1lbnVQcm94eTo6QwogV2ViUG9wdXBNZW51UHJveHlNYWM6On5XZWJQb3B1cE1lbnVQ
cm94eU1hYygpCiB7CiAgICAgaWYgKG1fcG9wdXApCi0gICAgICAgIFttX3BvcHVwLmdldCgpIHNl
dENvbnRyb2xWaWV3Om5pbF07CisgICAgICAgIFttX3BvcHVwIHNldENvbnRyb2xWaWV3Om5pbF07
CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnBvcHVsYXRlKGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiBpdGVtcywgTlNGb250ICpmb250LCBUZXh0RGlyZWN0aW9uIG1lbnVUZXh0
RGlyZWN0aW9uKQogewogICAgIGlmIChtX3BvcHVwKQotICAgICAgICBbbV9wb3B1cC5nZXQoKSBy
ZW1vdmVBbGxJdGVtc107CisgICAgICAgIFttX3BvcHVwIHJlbW92ZUFsbEl0ZW1zXTsKICAgICBl
bHNlIHsKICAgICAgICAgbV9wb3B1cCA9IGFkb3B0TlMoW1tOU1BvcFVwQnV0dG9uQ2VsbCBhbGxv
Y10gaW5pdFRleHRDZWxsOkAiIiBwdWxsc0Rvd246Tk9dKTsKLSAgICAgICAgW21fcG9wdXAuZ2V0
KCkgc2V0VXNlc0l0ZW1Gcm9tTWVudTpOT107Ci0gICAgICAgIFttX3BvcHVwLmdldCgpIHNldEF1
dG9lbmFibGVzSXRlbXM6Tk9dOworICAgICAgICBbbV9wb3B1cCBzZXRVc2VzSXRlbUZyb21NZW51
Ok5PXTsKKyAgICAgICAgW21fcG9wdXAgc2V0QXV0b2VuYWJsZXNJdGVtczpOT107CiAgICAgfQog
CiAgICAgaW50IHNpemUgPSBpdGVtcy5zaXplKCk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IHNpemU7IGkrKykgewogICAgICAgICBpZiAoaXRlbXNbaV0ubV90eXBlID09IFdlYlBvcHVwSXRl
bTo6U2VwYXJhdG9yKQotICAgICAgICAgICAgW1ttX3BvcHVwLmdldCgpIG1lbnVdIGFkZEl0ZW06
W05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV1dOworICAgICAgICAgICAgW1ttX3BvcHVwIG1lbnVd
IGFkZEl0ZW06W05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV1dOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIFttX3BvcHVwLmdldCgpIGFkZEl0ZW1XaXRoVGl0bGU6QCIiXTsKLSAgICAgICAg
ICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gW21fcG9wdXAuZ2V0KCkgbGFzdEl0ZW1dOworICAg
ICAgICAgICAgW21fcG9wdXAgYWRkSXRlbVdpdGhUaXRsZTpAIiJdOworICAgICAgICAgICAgTlNN
ZW51SXRlbSAqbWVudUl0ZW0gPSBbbV9wb3B1cCBsYXN0SXRlbV07CiAKICAgICAgICAgICAgIFJl
dGFpblB0cjxOU011dGFibGVQYXJhZ3JhcGhTdHlsZT4gcGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5T
KFtbTlNQYXJhZ3JhcGhTdHlsZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XSk7
CiAgICAgICAgICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGluZ0RpcmVjdGlvbiA9IGl0ZW1z
W2ldLm1fdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdo
dCA6IE5TV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OwotICAgICAgICAgICAgW3BhcmFncmFw
aFN0eWxlLmdldCgpIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwot
ICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlLmdldCgpIHNldEFsaWdubWVudDptZW51VGV4dERp
cmVjdGlvbiA9PSBMVFIgPyBOU0xlZnRUZXh0QWxpZ25tZW50IDogTlNSaWdodFRleHRBbGlnbm1l
bnRdOworICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEJhc2VXcml0aW5nRGlyZWN0aW9u
OndyaXRpbmdEaXJlY3Rpb25dOworICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdu
bWVudDptZW51VGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU0xlZnRUZXh0QWxpZ25tZW50IDogTlNS
aWdodFRleHRBbGlnbm1lbnRdOwogICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdHlsZS5n
ZXQoKSwgTlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICAgICAgZm9u
dCwgTlNGb250QXR0cmlidXRlTmFtZSwKQEAgLTgyLDE0ICs4MiwxNCBAQCB2b2lkIFdlYlBvcHVw
TWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMs
IE5TRm9udCAqZgogICAgICAgICAgICAgaWYgKGl0ZW1zW2ldLm1faGFzVGV4dERpcmVjdGlvbk92
ZXJyaWRlKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiB3cml0aW5nRGly
ZWN0aW9uVmFsdWUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50ZWdlcjp3
cml0aW5nRGlyZWN0aW9uICsgTlNUZXh0V3JpdGluZ0RpcmVjdGlvbk92ZXJyaWRlXSk7CiAgICAg
ICAgICAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+IHdyaXRpbmdEaXJlY3Rpb25BcnJheSA9IGFk
b3B0TlMoW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6d3JpdGluZ0RpcmVjdGlvblZh
bHVlLmdldCgpLCBuaWxdKTsKLSAgICAgICAgICAgICAgICBbYXR0cmlidXRlcy5nZXQoKSBzZXRP
YmplY3Q6d3JpdGluZ0RpcmVjdGlvbkFycmF5LmdldCgpIGZvcktleTpOU1dyaXRpbmdEaXJlY3Rp
b25BdHRyaWJ1dGVOYW1lXTsKKyAgICAgICAgICAgICAgICBbYXR0cmlidXRlcyBzZXRPYmplY3Q6
d3JpdGluZ0RpcmVjdGlvbkFycmF5LmdldCgpIGZvcktleTpOU1dyaXRpbmdEaXJlY3Rpb25BdHRy
aWJ1dGVOYW1lXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJldGFpblB0cjxOU0F0dHJp
YnV0ZWRTdHJpbmc+IHN0cmluZyA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90ZXh0
KSBhdHRyaWJ1dGVzOmF0dHJpYnV0ZXMuZ2V0KCldKTsKIAogICAgICAgICAgICAgW21lbnVJdGVt
IHNldEF0dHJpYnV0ZWRUaXRsZTpzdHJpbmcuZ2V0KCldOwogICAgICAgICAgICAgLy8gV2Ugc2V0
IHRoZSB0aXRsZSBhcyB3ZWxsIGFzIHRoZSBhdHRyaWJ1dGVkIHRpdGxlIGhlcmUuIFRoZSBhdHRy
aWJ1dGVkIHRpdGxlIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSBtZW51LAogICAgICAgICAgICAg
Ly8gYnV0IHR5cGVhaGVhZCB3aWxsIHVzZSB0aGUgbm9uLWF0dHJpYnV0ZWQgc3RyaW5nIHRoYXQg
ZG9lc24ndCBjb250YWluIGFueSBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UuCi0gICAg
ICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6W1tzdHJpbmcuZ2V0KCkgc3RyaW5nXSBzdHJpbmdC
eVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3RlclNldCB3aGl0ZXNwYWNlQ2hhcmFj
dGVyU2V0XV1dOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFRpdGxlOltbc3RyaW5nIHN0cmlu
Z10gc3RyaW5nQnlUcmltbWluZ0NoYXJhY3RlcnNJblNldDpbTlNDaGFyYWN0ZXJTZXQgd2hpdGVz
cGFjZUNoYXJhY3RlclNldF1dXTsKICAgICAgICAgICAgIFttZW51SXRlbSBzZXRFbmFibGVkOml0
ZW1zW2ldLm1faXNFbmFibGVkXTsKICAgICAgICAgICAgIFttZW51SXRlbSBzZXRUb29sVGlwOm5z
U3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaXRlbXNbaV0ubV90b29sVGlwKV07CiAgICAgICAgIH0K
QEAgLTEwNywxMSArMTA3LDExIEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1
cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiB0ZXh0CiAKICAgICBwb3B1
bGF0ZShpdGVtcywgZm9udCwgdGV4dERpcmVjdGlvbik7CiAKLSAgICBbbV9wb3B1cC5nZXQoKSBh
dHRhY2hQb3BVcFdpdGhGcmFtZTpyZWN0IGluVmlldzptX3dlYlZpZXddOwotICAgIFttX3BvcHVw
LmdldCgpIHNlbGVjdEl0ZW1BdEluZGV4OnNlbGVjdGVkSW5kZXhdOwotICAgIFttX3BvcHVwLmdl
dCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIg
PyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbbV9wb3B1cCBhdHRhY2hQb3BV
cFdpdGhGcmFtZTpyZWN0IGluVmlldzptX3dlYlZpZXddOworICAgIFttX3BvcHVwIHNlbGVjdEl0
ZW1BdEluZGV4OnNlbGVjdGVkSW5kZXhdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJp
Z2h0VG9MZWZ0XTsKIAotICAgIE5TTWVudSAqbWVudSA9IFttX3BvcHVwLmdldCgpIG1lbnVdOwor
ICAgIE5TTWVudSAqbWVudSA9IFttX3BvcHVwIG1lbnVdOwogCiAgICAgLy8gVGhlc2UgdmFsdWVz
IHdlcmUgYm9ycm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50IG9mIHRo
ZSBtZW51LgogICAgIGNvbnN0IGludCBwb3BPdmVySG9yaXpvbnRhbEFkanVzdCA9IC0xMDsKQEAg
LTEyMiw3ICsxMjIsNyBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpzaG93UG9wdXBNZW51
KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24gdGV4dAogICAgIC8vIE1lbnVzIHRo
YXQgcG9wLXVuZGVyIGFyZSBvZmZzZXQgdW5kZXJuZWF0aCBpdC4KICAgICBOU1BvaW50IGxvY2F0
aW9uOwogICAgIGlmIChkYXRhLnNob3VsZFBvcE92ZXIpIHsKLSAgICAgICAgTlNSZWN0IHRpdGxl
RnJhbWUgPSBbbV9wb3B1cC5nZXQoKSAgdGl0bGVSZWN0Rm9yQm91bmRzOnJlY3RdOworICAgICAg
ICBOU1JlY3QgdGl0bGVGcmFtZSA9IFttX3BvcHVwICB0aXRsZVJlY3RGb3JCb3VuZHM6cmVjdF07
CiAgICAgICAgIGlmICh0aXRsZUZyYW1lLnNpemUud2lkdGggPD0gMCB8fCB0aXRsZUZyYW1lLnNp
emUuaGVpZ2h0IDw9IDApCiAgICAgICAgICAgICB0aXRsZUZyYW1lID0gcmVjdDsKICAgICAgICAg
ZmxvYXQgdmVydE9mZnNldCA9IHJvdW5kZigoTlNNYXhZKHJlY3QpIC0gTlNNYXhZKHRpdGxlRnJh
bWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJhbWUpKTsKQEAgLTEzMiwxNyArMTMyLDE3IEBAIHZvaWQg
V2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwg
VGV4dERpcmVjdGlvbiB0ZXh0CiAKICAgICBSZXRhaW5QdHI8TlNWaWV3PiBkdW1teVZpZXcgPSBh
ZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3RdKTsKICAgICBbbV93ZWJW
aWV3IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgpXTsKLSAgICBsb2NhdGlvbiA9IFtkdW1teVZp
ZXcuZ2V0KCkgY29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CisgICAg
bG9jYXRpb24gPSBbZHVtbXlWaWV3IGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzptX3dl
YlZpZXddOwogCiAgICAgV0tQb3B1cE1lbnUobWVudSwgbG9jYXRpb24sIHJvdW5kZihOU1dpZHRo
KHJlY3QpKSwgZHVtbXlWaWV3LmdldCgpLCBzZWxlY3RlZEluZGV4LCBmb250KTsKIAotICAgIFtt
X3BvcHVwLmdldCgpIGRpc21pc3NQb3BVcF07Ci0gICAgW2R1bW15Vmlldy5nZXQoKSByZW1vdmVG
cm9tU3VwZXJ2aWV3XTsKKyAgICBbbV9wb3B1cCBkaXNtaXNzUG9wVXBdOworICAgIFtkdW1teVZp
ZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgCiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUo
dGhpcywgW21fcG9wdXAuZ2V0KCkgaW5kZXhPZlNlbGVjdGVkSXRlbV0pOworICAgIG1fY2xpZW50
LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgW21fcG9wdXAgaW5kZXhPZlNlbGVjdGVk
SXRlbV0pOwogICAgIAogICAgIC8vIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTc5MDQ+IFRoaXMgY29kZSBpcyBhZG9wdGVkIGZyb20gRXZlbnRIYW5kbGVyOjpzZW5k
RmFrZUV2ZW50c0FmdGVyV2lkZ2V0VHJhY2tpbmcoKS4KICAgICBpZiAoIW1fY2xpZW50LT5jdXJy
ZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpKQpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQg
V2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwg
VGV4dERpcmVjdGlvbiB0ZXh0CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OmhpZGVQb3B1
cE1lbnUoKQogewotICAgIFttX3BvcHVwLmdldCgpIGRpc21pc3NQb3BVcF07CisgICAgW21fcG9w
dXAgZGlzbWlzc1BvcFVwXTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3Mv
V2ViQ29udGVudFByb2Nlc3NNYWluLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRy
eVBvaW50L21hYy9MZWdhY3lQcm9jZXNzL1dlYkNvbnRlbnRQcm9jZXNzTWFpbi5tbQppbmRleCBk
MjRhNDI3Li4yNzEzZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Vu
dHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvV2ViQ29udGVudFByb2Nlc3NNYWluLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRW50cnlQb2ludC9tYWMvTGVnYWN5UHJvY2Vzcy9X
ZWJDb250ZW50UHJvY2Vzc01haW4ubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFJldGFpblB0cjxOU1VSTD4gY2xpZW50RXhlY3V0YWJsZVVSTCA9IGFkb3B0TlMoW1tOU1VS
TCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNs
aWVudEV4ZWN1dGFibGUpXSk7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2xpZW50QnVu
ZGxlVVJMID0gYWRvcHRDRihXS0NvcHlCdW5kbGVVUkxGb3JFeGVjdXRhYmxlVVJMKChDRlVSTFJl
ZiljbGllbnRFeGVjdXRhYmxlVVJMLmdldCgpKSk7CiAgICAgICAgIFJldGFpblB0cjxOU0J1bmRs
ZT4gY2xpZW50QnVuZGxlID0gYWRvcHROUyhbW05TQnVuZGxlIGFsbG9jXSBpbml0V2l0aFVSTDoo
TlNVUkwgKiljbGllbnRCdW5kbGVVUkwuZ2V0KCldKTsKLSAgICAgICAgY2xpZW50SWRlbnRpZmll
ciA9IFtjbGllbnRCdW5kbGUuZ2V0KCkgYnVuZGxlSWRlbnRpZmllcl07CisgICAgICAgIGNsaWVu
dElkZW50aWZpZXIgPSBbY2xpZW50QnVuZGxlIGJ1bmRsZUlkZW50aWZpZXJdOwogICAgICAgICBp
ZiAoY2xpZW50SWRlbnRpZmllci5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9tYWMvUGx1Z2luUHJveHlNYWMubW0KaW5k
ZXggMTcyMGE1Yi4uNmZjYTJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL21hYy9QbHVnaW5Qcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL1BsdWdpblByb3h5TWFjLm1tCkBA
IC01Miw3ICs1Miw3IEBAIFBsYXRmb3JtTGF5ZXIqIFBsdWdpblByb3h5OjpwbHVnaW5MYXllcigp
CiAgICAgICAgIC8vIENyZWF0ZSBhIGxheWVyIHdpdGggZmxpcHBlZCBnZW9tZXRyeSBhbmQgYWRk
IHRoZSByZWFsIHBsdWctaW4gbGF5ZXIgYXMgYSBzdWJsYXllcgogICAgICAgICAvLyBzbyB0aGUg
Y29vcmRpbmF0ZSBzeXN0ZW0gd2lsbCBtYXRjaCB0aGUgZXZlbnQgY29vcmRpbmF0ZSBzeXN0ZW0u
CiAgICAgICAgIG1fcGx1Z2luTGF5ZXIgPSBhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0p
OwotICAgICAgICBbbV9wbHVnaW5MYXllci5nZXQoKSBzZXRHZW9tZXRyeUZsaXBwZWQ6WUVTXTsK
KyAgICAgICAgW21fcGx1Z2luTGF5ZXIgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CiAKICAgICAg
ICAgaWYgKG1faXNSZXN0YXJ0ZWRQcm9jZXNzKSB7CiAgICAgICAgICAgICBDQUJhc2ljQW5pbWF0
aW9uICpmYWRlSW5BbmltYXRpb24gPSBbQ0FCYXNpY0FuaW1hdGlvbiBhbmltYXRpb25XaXRoS2V5
UGF0aDpAIm9wYWNpdHkiXTsKQEAgLTYwLDcgKzYwLDcgQEAgUGxhdGZvcm1MYXllciogUGx1Z2lu
UHJveHk6OnBsdWdpbkxheWVyKCkKICAgICAgICAgICAgIGZhZGVJbkFuaW1hdGlvbi50b1ZhbHVl
ID0gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDoxXTsKICAgICAgICAgICAgIGZhZGVJbkFuaW1h
dGlvbi5kdXJhdGlvbiA9IGZhZGVJbkR1cmF0aW9uOwogICAgICAgICAgICAgZmFkZUluQW5pbWF0
aW9uLnJlbW92ZWRPbkNvbXBsZXRpb24gPSBOTzsKLSAgICAgICAgICAgIFttX3BsdWdpbkxheWVy
LmdldCgpIGFkZEFuaW1hdGlvbjpmYWRlSW5BbmltYXRpb24gZm9yS2V5OkAicmVzdGFydGVkLXBs
dWdpbi1mYWRlLWluIl07CisgICAgICAgICAgICBbbV9wbHVnaW5MYXllciBhZGRBbmltYXRpb246
ZmFkZUluQW5pbWF0aW9uIGZvcktleTpAInJlc3RhcnRlZC1wbHVnaW4tZmFkZS1pbiJdOwogICAg
ICAgICB9CiAKICAgICAgICAgbWFrZVJlbmRlckxheWVyKG1fcGx1Z2luTGF5ZXIuZ2V0KCksIG1f
cmVtb3RlTGF5ZXJDbGllbnRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGM3MjRlZGUuLmVjOGU1MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBA
IC01MjQsOCArNTI0LDggQEAgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUqIGZyYW1lKQog
ICAgIG1fYWNjZXNzaWJpbGl0eU9iamVjdC5nZXQoKS5wZGZMYXllckNvbnRyb2xsZXIgPSBtX3Bk
ZkxheWVyQ29udHJvbGxlci5nZXQoKTsKICAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3QuZ2V0KCku
cGFyZW50ID0gd2ViRnJhbWUoKS0+cGFnZSgpLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7
CiAKLSAgICBbbV9jb250YWluZXJMYXllci5nZXQoKSBhZGRTdWJsYXllcjptX2NvbnRlbnRMYXll
ci5nZXQoKV07Ci0gICAgW21fY29udGFpbmVyTGF5ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bV9zY3Jv
bGxDb3JuZXJMYXllci5nZXQoKV07CisgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6
bV9jb250ZW50TGF5ZXIuZ2V0KCldOworICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVy
Om1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCldOwogfQogCiBQREZQbHVnaW46On5QREZQbHVnaW4o
KQpAQCAtNjEzLDE3ICs2MTMsMTcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZVNjcm9sbGJhcnMo
KQogICAgIAogICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpIHsKICAgICAgICAgbV92
ZXJ0aWNhbFNjcm9sbGJhckxheWVyLmdldCgpLmZyYW1lID0gdmVydGljYWxTY3JvbGxiYXIoKS0+
ZnJhbWVSZWN0KCk7Ci0gICAgICAgIFttX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCkgc2V0
TmVlZHNEaXNwbGF5XTsKKyAgICAgICAgW21fdmVydGljYWxTY3JvbGxiYXJMYXllciBzZXROZWVk
c0Rpc3BsYXldOwogICAgIH0KICAgICAKICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5
ZXIpIHsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCkuZnJhbWUgPSBo
b3Jpem9udGFsU2Nyb2xsYmFyKCktPmZyYW1lUmVjdCgpOwotICAgICAgICBbbV9ob3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKKyAgICAgICAgW21faG9yaXpv
bnRhbFNjcm9sbGJhckxheWVyIHNldE5lZWRzRGlzcGxheV07CiAgICAgfQogICAgIAogICAgIGlm
IChtX3Njcm9sbENvcm5lckxheWVyKSB7CiAgICAgICAgIG1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0
KCkuZnJhbWUgPSBzY3JvbGxDb3JuZXJSZWN0KCk7Ci0gICAgICAgIFttX3Njcm9sbENvcm5lckxh
eWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07CisgICAgICAgIFttX3Njcm9sbENvcm5lckxheWVy
IHNldE5lZWRzRGlzcGxheV07CiAgICAgfQogfQogCkBAIC02NDIsMTAgKzY0MiwxMCBAQCBQYXNz
UmVmUHRyPFNjcm9sbGJhcj4gUERGUGx1Z2luOjpjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpbwogICAgIFJlZlB0cjxTY3JvbGxiYXI+IHdpZGdldCA9IFNjcm9s
bGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMsIG9yaWVudGF0aW9uLCBSZWd1bGFyU2Ny
b2xsYmFyKTsKICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewog
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllciA9IGFkb3B0TlMoW1tXS1BERlBsdWdp
blNjcm9sbGJhckxheWVyIGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSk7Ci0gICAgICAg
IFttX2NvbnRhaW5lckxheWVyLmdldCgpIGFkZFN1YmxheWVyOm1faG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyLmdldCgpXTsKKyAgICAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9o
b3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCldOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1f
dmVydGljYWxTY3JvbGxiYXJMYXllciA9IGFkb3B0TlMoW1tXS1BERlBsdWdpblNjcm9sbGJhckxh
eWVyIGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSk7Ci0gICAgICAgIFttX2NvbnRhaW5l
ckxheWVyLmdldCgpIGFkZFN1YmxheWVyOm1fdmVydGljYWxTY3JvbGxiYXJMYXllci5nZXQoKV07
CisgICAgICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fdmVydGljYWxTY3JvbGxi
YXJMYXllci5nZXQoKV07CiAgICAgfQogICAgIGRpZEFkZFNjcm9sbGJhcih3aWRnZXQuZ2V0KCks
IG9yaWVudGF0aW9uKTsKICAgICBwbHVnaW5WaWV3KCktPmZyYW1lKCktPnZpZXcoKS0+YWRkQ2hp
bGQod2lkZ2V0LmdldCgpKTsKQEAgLTY2NCwxMCArNjY0LDEwIEBAIHZvaWQgUERGUGx1Z2luOjpk
ZXN0cm95U2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKQogICAgIHNj
cm9sbGJhciA9IDA7CiAKICAgICBpZiAob3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikgewotICAgICAgICBbbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuZ2V0KCkgcmVtb3ZlRnJv
bVN1cGVybGF5ZXJdOworICAgICAgICBbbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllciA9IDA7
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21fdmVydGljYWxTY3JvbGxiYXJMYXllci5nZXQoKSBy
ZW1vdmVGcm9tU3VwZXJsYXllcl07CisgICAgICAgIFttX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIg
cmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIg
PSAwOwogICAgIH0KIH0KQEAgLTg5NiwyMCArODk2LDIwIEBAIHZvaWQgUERGUGx1Z2luOjpwZGZE
b2N1bWVudERpZExvYWQoKQogCiAgICAgdXBkYXRlUGFnZUFuZERldmljZVNjYWxlRmFjdG9ycygp
OwogCi0gICAgW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIHNldEZyYW1lU2l6ZTpzaXplKCld
OworICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNpemU6c2l6ZSgpXTsKICAgICBt
X3BkZkxheWVyQ29udHJvbGxlci5nZXQoKS5kb2N1bWVudCA9IGRvY3VtZW50LmdldCgpOwogCiAg
ICAgaWYgKGhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSkKLSAgICAgICAgcGx1Z2luVmlldygpLT5z
ZXRQYWdlU2NhbGVGYWN0b3IoW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIGNvbnRlbnRTY2Fs
ZUZhY3Rvcl0sIEludFBvaW50KCkpOworICAgICAgICBwbHVnaW5WaWV3KCktPnNldFBhZ2VTY2Fs
ZUZhY3RvcihbbV9wZGZMYXllckNvbnRyb2xsZXIgY29udGVudFNjYWxlRmFjdG9yXSwgSW50UG9p
bnQoKSk7CiAKLSAgICBub3RpZnlTY3JvbGxQb3NpdGlvbkNoYW5nZWQoSW50UG9pbnQoW21fcGRm
TGF5ZXJDb250cm9sbGVyLmdldCgpIHNjcm9sbFBvc2l0aW9uXSkpOworICAgIG5vdGlmeVNjcm9s
bFBvc2l0aW9uQ2hhbmdlZChJbnRQb2ludChbbV9wZGZMYXllckNvbnRyb2xsZXIgc2Nyb2xsUG9z
aXRpb25dKSk7CiAKICAgICBjYWxjdWxhdGVTaXplcygpOwogICAgIHVwZGF0ZVNjcm9sbGJhcnMo
KTsKIAogICAgIHJ1blNjcmlwdHNJblBERkRvY3VtZW50KCk7CiAKLSAgICBpZiAoW2RvY3VtZW50
LmdldCgpIGlzTG9ja2VkXSkKKyAgICBpZiAoW2RvY3VtZW50IGlzTG9ja2VkXSkKICAgICAgICAg
Y3JlYXRlUGFzc3dvcmRFbnRyeUZvcm0oKTsKIH0KIApAQCAtOTc4LDcgKzk3OCw3IEBAIHZvaWQg
UERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wpCiB2b2lkIFBERlBsdWdpbjo6cnVu
U2NyaXB0c0luUERGRG9jdW1lbnQoKQogewogICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+PiBzY3JpcHRzOwotICAgIGdldEFsbFNjcmlwdHNJblBERkRvY3VtZW50KFttX3BkZkRvY3Vt
ZW50LmdldCgpIGRvY3VtZW50UmVmXSwgc2NyaXB0cyk7CisgICAgZ2V0QWxsU2NyaXB0c0luUERG
RG9jdW1lbnQoW21fcGRmRG9jdW1lbnQgZG9jdW1lbnRSZWZdLCBzY3JpcHRzKTsKIAogICAgIHNp
emVfdCBzY3JpcHRDb3VudCA9IHNjcmlwdHMuc2l6ZSgpOwogICAgIGlmICghc2NyaXB0Q291bnQp
CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFBERlBsdWdpbjo6dXBkYXRlUGFnZUFuZERldmlj
ZVNjYWxlRmFjdG9ycygpCiAgICAgaWYgKCFoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkpCiAgICAg
ICAgIG5ld1NjYWxlRmFjdG9yICo9IHdlYkZyYW1lKCktPnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9y
KCk7CiAKLSAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgc2V0RGV2aWNlU2NhbGVGYWN0
b3I6bmV3U2NhbGVGYWN0b3JdOworICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXREZXZpY2VT
Y2FsZUZhY3RvcjpuZXdTY2FsZUZhY3Rvcl07CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpjb250ZW50
c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkKQEAgLTEwMzAsOSArMTAzMCw5IEBAIHZvaWQgUERG
UGx1Z2luOjpjb250ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkKIAogdm9pZCBQREZQbHVn
aW46OmNvbXB1dGVQYWdlQm94ZXMoKQogewotICAgIHNpemVfdCBwYWdlQ291bnQgPSBDR1BERkRv
Y3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhbbV9wZGZEb2N1bWVudC5nZXQoKSBkb2N1bWVudFJlZl0p
OworICAgIHNpemVfdCBwYWdlQ291bnQgPSBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhb
bV9wZGZEb2N1bWVudCBkb2N1bWVudFJlZl0pOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cGFnZUNvdW50OyArK2kpIHsKLSAgICAgICAgQ0dQREZQYWdlUmVmIHBkZlBhZ2UgPSBDR1BERkRv
Y3VtZW50R2V0UGFnZShbbV9wZGZEb2N1bWVudC5nZXQoKSBkb2N1bWVudFJlZl0sIGkgKyAxKTsK
KyAgICAgICAgQ0dQREZQYWdlUmVmIHBkZlBhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShbbV9w
ZGZEb2N1bWVudCBkb2N1bWVudFJlZl0sIGkgKyAxKTsKICAgICAgICAgQVNTRVJUKHBkZlBhZ2Up
OwogCiAgICAgICAgIENHUmVjdCBib3ggPSBDR1BERlBhZ2VHZXRCb3hSZWN0KHBkZlBhZ2UsIGtD
R1BERkNyb3BCb3gpOwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBQREZQbHVnaW46OmNhbGN1
bGF0ZVNpemVzKCkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY29tZSBzdHJhaWdodCBmcm9t
IFBERktpdC4KICAgICBjb21wdXRlUGFnZUJveGVzKCk7CiAKLSAgICBzZXRQREZEb2N1bWVudFNp
emUoSW50U2l6ZShbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgY29udGVudFNpemVSZXNwZWN0
aW5nWm9vbV0pKTsKKyAgICBzZXRQREZEb2N1bWVudFNpemUoSW50U2l6ZShbbV9wZGZMYXllckNv
bnRyb2xsZXIgY29udGVudFNpemVSZXNwZWN0aW5nWm9vbV0pKTsKIH0KIAogYm9vbCBQREZQbHVn
aW46OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTEwODAsOCAr
MTA4MCw4IEBAIHZvaWQgUERGUGx1Z2luOjpkZXN0cm95KCkKICAgICBkZXN0cm95U2Nyb2xsYmFy
KEhvcml6b250YWxTY3JvbGxiYXIpOwogICAgIGRlc3Ryb3lTY3JvbGxiYXIoVmVydGljYWxTY3Jv
bGxiYXIpOwogICAgIAotICAgIFttX3Njcm9sbENvcm5lckxheWVyLmdldCgpIHJlbW92ZUZyb21T
dXBlcmxheWVyXTsKLSAgICBbbV9jb250ZW50TGF5ZXIuZ2V0KCkgcmVtb3ZlRnJvbVN1cGVybGF5
ZXJdOworICAgIFttX3Njcm9sbENvcm5lckxheWVyIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAg
ICBbbV9jb250ZW50TGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogfQogCiB2b2lkIFBERlBs
dWdpbjo6dXBkYXRlQ29udHJvbFRpbnRzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
KQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IFBERlBs
dWdpbjo6c25hcHNob3QoKQogICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShjb250ZW50c1Nj
YWxlRmFjdG9yLCAtY29udGVudHNTY2FsZUZhY3RvcikpOwogICAgIGNvbnRleHQtPnRyYW5zbGF0
ZSgwLCAtc2l6ZSgpLmhlaWdodCgpKTsKIAotICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQo
KSBzbmFwc2hvdEluQ29udGV4dDpjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKV07CisgICAgW21f
cGRmTGF5ZXJDb250cm9sbGVyIHNuYXBzaG90SW5Db250ZXh0OmNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpXTsKIAogICAgIHJldHVybiBiaXRtYXAucmVsZWFzZSgpOwogfQpAQCAtMTE5MSwxMiAr
MTE5MSwxMiBAQCBJbnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogCiB2
b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6
ZSwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmll
d1RyYW5zZm9ybSkKIHsKLSAgICBpZiAoc2l6ZSgpID09IHBsdWdpblNpemUgJiYgcGx1Z2luVmll
dygpLT5wYWdlU2NhbGVGYWN0b3IoKSA9PSBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgY29u
dGVudFNjYWxlRmFjdG9yXSkKKyAgICBpZiAoc2l6ZSgpID09IHBsdWdpblNpemUgJiYgcGx1Z2lu
VmlldygpLT5wYWdlU2NhbGVGYWN0b3IoKSA9PSBbbV9wZGZMYXllckNvbnRyb2xsZXIgY29udGVu
dFNjYWxlRmFjdG9yXSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zaXplID0gcGx1Z2luU2l6
ZTsKICAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSBwbHVnaW5Ub1Jvb3RWaWV3VHJh
bnNmb3JtLmludmVyc2UoKTsKLSAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgc2V0RnJh
bWVTaXplOnBsdWdpblNpemVdOworICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRGcmFtZVNp
emU6cGx1Z2luU2l6ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07CiAgICAgW0NBVHJh
bnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKQEAgLTEyMDQsMTEgKzEyMDQsMTEgQEAg
dm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsIGNvbnN0IEludFJlY3QmLCBjb24KICAgICB0cmFuc2Zvcm0gPSBDQVRyYW5zZm9ybTNEVHJh
bnNsYXRlKHRyYW5zZm9ybSwgMCwgLXBsdWdpblNpemUuaGVpZ2h0KCksIDApOwogICAgIAogICAg
IGlmIChoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkpIHsKLSAgICAgICAgQ0dGbG9hdCBtYWduaWZp
Y2F0aW9uID0gcGx1Z2luVmlldygpLT5wYWdlU2NhbGVGYWN0b3IoKSAtIFttX3BkZkxheWVyQ29u
dHJvbGxlci5nZXQoKSBjb250ZW50U2NhbGVGYWN0b3JdOworICAgICAgICBDR0Zsb2F0IG1hZ25p
ZmljYXRpb24gPSBwbHVnaW5WaWV3KCktPnBhZ2VTY2FsZUZhY3RvcigpIC0gW21fcGRmTGF5ZXJD
b250cm9sbGVyIGNvbnRlbnRTY2FsZUZhY3Rvcl07CiAKICAgICAgICAgLy8gRklYTUU6IEluc3Rl
YWQgb2YgbV9sYXN0TW91c2VQb3NpdGlvbkluUGx1Z2luQ29vcmRpbmF0ZXMsIHdlIHNob3VsZCB1
c2UgdGhlIHpvb20gb3JpZ2luIGZyb20gUGx1Z2luVmlldzo6c2V0UGFnZVNjYWxlRmFjdG9yLgog
ICAgICAgICBpZiAobWFnbmlmaWNhdGlvbikKLSAgICAgICAgICAgIFttX3BkZkxheWVyQ29udHJv
bGxlci5nZXQoKSBtYWduaWZ5V2l0aE1hZ25pZmljYXRpb246bWFnbmlmaWNhdGlvbiBhdFBvaW50
OmNvbnZlcnRGcm9tUGx1Z2luVG9QREZWaWV3KG1fbGFzdE1vdXNlUG9zaXRpb25JblBsdWdpbkNv
b3JkaW5hdGVzKSBpbW1lZGlhdGVseTpOT107CisgICAgICAgICAgICBbbV9wZGZMYXllckNvbnRy
b2xsZXIgbWFnbmlmeVdpdGhNYWduaWZpY2F0aW9uOm1hZ25pZmljYXRpb24gYXRQb2ludDpjb252
ZXJ0RnJvbVBsdWdpblRvUERGVmlldyhtX2xhc3RNb3VzZVBvc2l0aW9uSW5QbHVnaW5Db29yZGlu
YXRlcykgaW1tZWRpYXRlbHk6Tk9dOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIElmIHdlIGRv
bid0IGhhbmRsZSBwYWdlIHNjYWxlIG91cnNlbHZlcywgd2UgbmVlZCB0byByZXNwZWN0IG91ciBw
YXJlbnQgcGFnZSdzCiAgICAgICAgIC8vIHNjYWxlLCB3aGljaCBtYXkgaGF2ZSBjaGFuZ2VkLgpA
QCAtMTIyMSw3ICsxMjIxLDcgQEAgdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb24KICAgICBpZiAobV9h
Y3RpdmVBbm5vdGF0aW9uKQogICAgICAgICBtX2FjdGl2ZUFubm90YXRpb24tPnVwZGF0ZUdlb21l
dHJ5KCk7CiAKLSAgICBbbV9jb250ZW50TGF5ZXIuZ2V0KCkgc2V0U3VibGF5ZXJUcmFuc2Zvcm06
dHJhbnNmb3JtXTsKKyAgICBbbV9jb250ZW50TGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06dHJh
bnNmb3JtXTsKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogfQogCkBAIC0xMzE5LDcgKzEz
MTksNyBAQCB2b2lkIFBERlBsdWdpbjo6dXBkYXRlQ3Vyc29yKGNvbnN0IFdlYk1vdXNlRXZlbnQm
IGV2ZW50LCBVcGRhdGVDdXJzb3JNb2RlIG1vZGUpCiB7CiAgICAgSGl0VGVzdFJlc3VsdCBoaXRU
ZXN0UmVzdWx0ID0gTm9uZTsKIAotICAgIFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uVW5kZXJNb3Vz
ZSA9IFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2lu
dDpjb252ZXJ0RnJvbVBsdWdpblRvUERGVmlldyhldmVudC5wb3NpdGlvbigpKV07CisgICAgUERG
U2VsZWN0aW9uICpzZWxlY3Rpb25VbmRlck1vdXNlID0gW21fcGRmTGF5ZXJDb250cm9sbGVyIGdl
dFNlbGVjdGlvbkZvcldvcmRBdFBvaW50OmNvbnZlcnRGcm9tUGx1Z2luVG9QREZWaWV3KGV2ZW50
LnBvc2l0aW9uKCkpXTsKICAgICBpZiAoc2VsZWN0aW9uVW5kZXJNb3VzZSAmJiBbW3NlbGVjdGlv
blVuZGVyTW91c2Ugc3RyaW5nXSBsZW5ndGhdKQogICAgICAgICBoaXRUZXN0UmVzdWx0ID0gVGV4
dDsKIApAQCAtMTM4NiwxMyArMTM4NiwxMyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxlTW91c2VF
dmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKIAogICAgICAgICBzd2l0Y2ggKGV2ZW50
LmJ1dHRvbigpKSB7CiAgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TGVmdEJ1dHRvbjoKLSAg
ICAgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBtb3VzZURyYWdnZWQ6bnNFdmVu
dF07CisgICAgICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgbW91c2VEcmFnZ2VkOm5zRXZl
bnRdOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgV2ViTW91c2VFdmVu
dDo6UmlnaHRCdXR0b246CiAgICAgICAgIGNhc2UgV2ViTW91c2VFdmVudDo6TWlkZGxlQnV0dG9u
OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6
Ok5vQnV0dG9uOgotICAgICAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIG1vdXNl
TW92ZWQ6bnNFdmVudF07CisgICAgICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgbW91c2VN
b3ZlZDpuc0V2ZW50XTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
Y2FzZSBXZWJFdmVudDo6TW91c2VEb3duOgpAQCAtMTQwMSwxMCArMTQwMSwxMCBAQCBib29sIFBE
RlBsdWdpbjo6aGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAg
ICAgICAgICAgIGlmICh0YXJnZXRTY3JvbGxiYXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRh
cmdldFNjcm9sbGJhci0+bW91c2VEb3duKHBsYXRmb3JtRXZlbnQpOwogCi0gICAgICAgICAgICBb
bV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgbW91c2VEb3duOm5zRXZlbnRdOworICAgICAgICAg
ICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIG1vdXNlRG93bjpuc0V2ZW50XTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uOgot
ICAgICAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIHJpZ2h0TW91c2VEb3duOm5z
RXZlbnRdOworICAgICAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHJpZ2h0TW91c2VEb3du
Om5zRXZlbnRdOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgV2ViTW91
c2VFdmVudDo6TWlkZGxlQnV0dG9uOgogICAgICAgICBjYXNlIFdlYk1vdXNlRXZlbnQ6Ok5vQnV0
dG9uOgpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZU1vdXNlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYgZXZlbnQpCiAgICAgICAgICAgICBpZiAodGFyZ2V0U2Ny
b2xsYmFyKQogICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRTY3JvbGxiYXItPm1vdXNlVXAo
cGxhdGZvcm1FdmVudCk7CiAKLSAgICAgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQo
KSBtb3VzZVVwOm5zRXZlbnRdOworICAgICAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIG1v
dXNlVXA6bnNFdmVudF07CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBX
ZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbjoKICAgICAgICAgY2FzZSBXZWJNb3VzZUV2ZW50OjpN
aWRkbGVCdXR0b246CkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBib29sIFBERlBsdWdpbjo6aGFuZGxl
Q29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50JiBldmVudCkKICAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CiAgICAgSW50
UG9pbnQgcG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9TY3JlZW4oSW50UmVjdChmcmFtZVZp
ZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSksIEludFNpemUoKSkpLmxvY2F0
aW9uKCk7CiAgICAgCi0gICAgaWYgKE5TTWVudSAqbnNNZW51ID0gW21fcGRmTGF5ZXJDb250cm9s
bGVyLmdldCgpIG1lbnVGb3JFdmVudDpuc0V2ZW50Rm9yV2ViTW91c2VFdmVudChldmVudCldKSB7
CisgICAgaWYgKE5TTWVudSAqbnNNZW51ID0gW21fcGRmTGF5ZXJDb250cm9sbGVyIG1lbnVGb3JF
dmVudDpuc0V2ZW50Rm9yV2ViTW91c2VFdmVudChldmVudCldKSB7CiAgICAgICAgIFdLUG9wdXBD
b250ZXh0TWVudShuc01lbnUsIHBvaW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMTQ3Nyw3ICsxNDc3LDcgQEAgYm9vbCBQREZQbHVnaW46OmhhbmRsZUtleWJvYXJkRXZlbnQo
Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgCiAgICAgc3dpdGNoIChldmVudC50
eXBlKCkpIHsKICAgICBjYXNlIFdlYkV2ZW50OjpLZXlEb3duOgotICAgICAgICByZXR1cm4gW21f
cGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIGtleURvd246ZmFrZUV2ZW50XTsKKyAgICAgICAgcmV0
dXJuIFttX3BkZkxheWVyQ29udHJvbGxlciBrZXlEb3duOmZha2VFdmVudF07CiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE1MTYsNyArMTUxNiw3IEBAIHZv
aWQgUERGUGx1Z2luOjpzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9pbnQmIG9mZnNldCkKICAg
ICBtX3Njcm9sbE9mZnNldCA9IEludFNpemUob2Zmc2V0LngoKSwgb2Zmc2V0LnkoKSk7CiAKICAg
ICBbQ0FUcmFuc2FjdGlvbiBiZWdpbl07Ci0gICAgW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgp
IHNldFNjcm9sbFBvc2l0aW9uOm9mZnNldF07CisgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNl
dFNjcm9sbFBvc2l0aW9uOm9mZnNldF07CiAKICAgICBpZiAobV9hY3RpdmVBbm5vdGF0aW9uKQog
ICAgICAgICBtX2FjdGl2ZUFubm90YXRpb24tPnVwZGF0ZUdlb21ldHJ5KCk7CkBAIC0xNTI3LDE0
ICsxNTI3LDE0IEBAIHZvaWQgUERGUGx1Z2luOjpzZXRTY3JvbGxPZmZzZXQoY29uc3QgSW50UG9p
bnQmIG9mZnNldCkKIHZvaWQgUERGUGx1Z2luOjppbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoc2Nyb2xs
YmFyID09IGhvcml6b250YWxTY3JvbGxiYXIoKSkKLSAgICAgICAgW21faG9yaXpvbnRhbFNjcm9s
bGJhckxheWVyLmdldCgpIHNldE5lZWRzRGlzcGxheV07CisgICAgICAgIFttX2hvcml6b250YWxT
Y3JvbGxiYXJMYXllciBzZXROZWVkc0Rpc3BsYXldOwogICAgIGVsc2UgaWYgKHNjcm9sbGJhciA9
PSB2ZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICBbbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVy
LmdldCgpIHNldE5lZWRzRGlzcGxheV07CisgICAgICAgIFttX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5
ZXIgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAogdm9pZCBQREZQbHVnaW46OmludmFsaWRhdGVTY3Jv
bGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgW21fc2Nyb2xsQ29ybmVy
TGF5ZXIuZ2V0KCkgc2V0TmVlZHNEaXNwbGF5XTsKKyAgICBbbV9zY3JvbGxDb3JuZXJMYXllciBz
ZXROZWVkc0Rpc3BsYXldOwogfQogCiBib29sIFBERlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVnaW4o
KQpAQCAtMTcwMiw3ICsxNzAyLDcgQEAgdW5zaWduZWQgUERGUGx1Z2luOjpjb3VudEZpbmRNYXRj
aGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucwogCiAgICAgaW50
IG5zT3B0aW9ucyA9IChvcHRpb25zICYgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpID8gTlND
YXNlSW5zZW5zaXRpdmVTZWFyY2ggOiAwOwogCi0gICAgcmV0dXJuIFtbcGRmRG9jdW1lbnQoKS5n
ZXQoKSBmaW5kU3RyaW5nOnRhcmdldCB3aXRoT3B0aW9uczpuc09wdGlvbnNdIGNvdW50XTsKKyAg
ICByZXR1cm4gW1twZGZEb2N1bWVudCgpIGZpbmRTdHJpbmc6dGFyZ2V0IHdpdGhPcHRpb25zOm5z
T3B0aW9uc10gY291bnRdOwogfQogCiBQREZTZWxlY3Rpb24gKlBERlBsdWdpbjo6bmV4dE1hdGNo
Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBCT09MIHNlYXJjaEZvcndhcmQsIEJPT0wg
Y2FzZVNlbnNpdGl2ZSwgQk9PTCB3cmFwU2VhcmNoLCBQREZTZWxlY3Rpb24gKmluaXRpYWxTZWxl
Y3Rpb24sIEJPT0wgc3RhcnRJblNlbGVjdGlvbikKQEAgLTE3NjQsMjIgKzE3NjQsMjIgQEAgYm9v
bCBQREZQbHVnaW46OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZp
bmRPcHRpb25zIG9wdGlvbnMsIHUKICAgICB9CiAKICAgICBpZiAodGFyZ2V0LmlzRW1wdHkoKSkg
ewotICAgICAgICBQREZTZWxlY3Rpb24qIHNlYXJjaFNlbGVjdGlvbiA9IFttX3BkZkxheWVyQ29u
dHJvbGxlci5nZXQoKSBzZWFyY2hTZWxlY3Rpb25dOwotICAgICAgICBbbV9wZGZMYXllckNvbnRy
b2xsZXIuZ2V0KCkgZmluZFN0cmluZzp0YXJnZXQgY2FzZVNlbnNpdGl2ZTpjYXNlU2Vuc2l0aXZl
IGhpZ2hsaWdodE1hdGNoZXM6WUVTXTsKLSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyLmdl
dCgpIHNldFNlYXJjaFNlbGVjdGlvbjpzZWFyY2hTZWxlY3Rpb25dOworICAgICAgICBQREZTZWxl
Y3Rpb24qIHNlYXJjaFNlbGVjdGlvbiA9IFttX3BkZkxheWVyQ29udHJvbGxlciBzZWFyY2hTZWxl
Y3Rpb25dOworICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgZmluZFN0cmluZzp0YXJnZXQg
Y2FzZVNlbnNpdGl2ZTpjYXNlU2Vuc2l0aXZlIGhpZ2hsaWdodE1hdGNoZXM6WUVTXTsKKyAgICAg
ICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldFNlYXJjaFNlbGVjdGlvbjpzZWFyY2hTZWxlY3Rp
b25dOwogICAgICAgICBtX2xhc3RGb3VuZFN0cmluZyA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobV9sYXN0Rm91bmRTdHJpbmcgPT0gdGFy
Z2V0KSB7Ci0gICAgICAgIFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uID0gbmV4dE1hdGNoRm9yU3Ry
aW5nKHRhcmdldCwgc2VhcmNoRm9yd2FyZCwgY2FzZVNlbnNpdGl2ZSwgd3JhcFNlYXJjaCwgW21f
cGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIHNlYXJjaFNlbGVjdGlvbl0sIE5PKTsKKyAgICAgICAg
UERGU2VsZWN0aW9uICpzZWxlY3Rpb24gPSBuZXh0TWF0Y2hGb3JTdHJpbmcodGFyZ2V0LCBzZWFy
Y2hGb3J3YXJkLCBjYXNlU2Vuc2l0aXZlLCB3cmFwU2VhcmNoLCBbbV9wZGZMYXllckNvbnRyb2xs
ZXIgc2VhcmNoU2VsZWN0aW9uXSwgTk8pOwogICAgICAgICBpZiAoIXNlbGVjdGlvbikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0
KCkgc2V0U2VhcmNoU2VsZWN0aW9uOnNlbGVjdGlvbl07Ci0gICAgICAgIFttX3BkZkxheWVyQ29u
dHJvbGxlci5nZXQoKSBnb3RvU2VsZWN0aW9uOnNlbGVjdGlvbl07CisgICAgICAgIFttX3BkZkxh
eWVyQ29udHJvbGxlciBzZXRTZWFyY2hTZWxlY3Rpb246c2VsZWN0aW9uXTsKKyAgICAgICAgW21f
cGRmTGF5ZXJDb250cm9sbGVyIGdvdG9TZWxlY3Rpb246c2VsZWN0aW9uXTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgZmluZFN0cmluZzp0YXJnZXQg
Y2FzZVNlbnNpdGl2ZTpjYXNlU2Vuc2l0aXZlIGhpZ2hsaWdodE1hdGNoZXM6WUVTXTsKKyAgICAg
ICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIGZpbmRTdHJpbmc6dGFyZ2V0IGNhc2VTZW5zaXRpdmU6
Y2FzZVNlbnNpdGl2ZSBoaWdobGlnaHRNYXRjaGVzOllFU107CiAgICAgICAgIG1fbGFzdEZvdW5k
U3RyaW5nID0gdGFyZ2V0OwogICAgIH0KIApAQCAtMTc4OCwyMiArMTc4OCwyMiBAQCBib29sIFBE
RlBsdWdpbjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9w
dGlvbnMgb3B0aW9ucywgdQogCiBib29sIFBERlBsdWdpbjo6cGVyZm9ybURpY3Rpb25hcnlMb29r
dXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvaW50KQogewotICAgIFBE
RlNlbGVjdGlvbiogbG9va3VwU2VsZWN0aW9uID0gW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgp
IGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50OmNvbnZlcnRGcm9tUGx1Z2luVG9QREZWaWV3KHJv
dW5kZWRJbnRQb2ludChwb2ludCkpXTsKKyAgICBQREZTZWxlY3Rpb24qIGxvb2t1cFNlbGVjdGlv
biA9IFttX3BkZkxheWVyQ29udHJvbGxlciBnZXRTZWxlY3Rpb25Gb3JXb3JkQXRQb2ludDpjb252
ZXJ0RnJvbVBsdWdpblRvUERGVmlldyhyb3VuZGVkSW50UG9pbnQocG9pbnQpKV07CiAKICAgICBp
ZiAoW1tsb29rdXBTZWxlY3Rpb24gc3RyaW5nXSBsZW5ndGhdKQotICAgICAgICBbbV9wZGZMYXll
ckNvbnRyb2xsZXIuZ2V0KCkgc2VhcmNoSW5EaWN0aW9uYXJ5V2l0aFNlbGVjdGlvbjpsb29rdXBT
ZWxlY3Rpb25dOworICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2VhcmNoSW5EaWN0aW9u
YXJ5V2l0aFNlbGVjdGlvbjpsb29rdXBTZWxlY3Rpb25dOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHZvaWQgUERGUGx1Z2luOjpmb2N1c05leHRBbm5vdGF0aW9uKCkKIHsKLSAgICBbbV9wZGZM
YXllckNvbnRyb2xsZXIuZ2V0KCkgYWN0aXZhdGVOZXh0QW5ub3RhdGlvbjpmYWxzZV07CisgICAg
W21fcGRmTGF5ZXJDb250cm9sbGVyIGFjdGl2YXRlTmV4dEFubm90YXRpb246ZmFsc2VdOwogfQog
CiB2b2lkIFBERlBsdWdpbjo6Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKQogewotICAgIFttX3Bk
ZkxheWVyQ29udHJvbGxlci5nZXQoKSBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOnRydWVdOworICAg
IFttX3BkZkxheWVyQ29udHJvbGxlciBhY3RpdmF0ZU5leHRBbm5vdGF0aW9uOnRydWVdOwogfQog
CiB2b2lkIFBERlBsdWdpbjo6bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChQREZTZWxlY3Rpb24gKikK
QEAgLTE4MTMsNyArMTgxMyw3IEBAIHZvaWQgUERGUGx1Z2luOjpub3RpZnlTZWxlY3Rpb25DaGFu
Z2VkKFBERlNlbGVjdGlvbiAqKQogCiBTdHJpbmcgUERGUGx1Z2luOjpnZXRTZWxlY3Rpb25TdHJp
bmcoKSBjb25zdAogewotICAgIHJldHVybiBbW21fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpIGN1
cnJlbnRTZWxlY3Rpb25dIHN0cmluZ107CisgICAgcmV0dXJuIFtbbV9wZGZMYXllckNvbnRyb2xs
ZXIgY3VycmVudFNlbGVjdGlvbl0gc3RyaW5nXTsKIH0KIAogdm9pZCBQREZQbHVnaW46OnBlcmZv
cm1XZWJTZWFyY2goTlNTdHJpbmcgKnN0cmluZykKQEAgLTE4MjgsMTQgKzE4MjgsMTQgQEAgdm9p
ZCBQREZQbHVnaW46OnBlcmZvcm1TcG90bGlnaHRTZWFyY2goTlNTdHJpbmcgKnN0cmluZykKIAog
Ym9vbCBQREZQbHVnaW46OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYgZXZl
bnQpCiB7Ci0gICAgUERGRGlzcGxheU1vZGUgZGlzcGxheU1vZGUgPSBbbV9wZGZMYXllckNvbnRy
b2xsZXIuZ2V0KCkgZGlzcGxheU1vZGVdOworICAgIFBERkRpc3BsYXlNb2RlIGRpc3BsYXlNb2Rl
ID0gW21fcGRmTGF5ZXJDb250cm9sbGVyIGRpc3BsYXlNb2RlXTsKIAogICAgIGlmIChkaXNwbGF5
TW9kZSA9PSBrUERGRGlzcGxheVNpbmdsZVBhZ2VDb250aW51b3VzIHx8IGRpc3BsYXlNb2RlID09
IGtQREZEaXNwbGF5VHdvVXBDb250aW51b3VzKQogICAgICAgICByZXR1cm4gU2Nyb2xsYWJsZUFy
ZWE6OmhhbmRsZVdoZWVsRXZlbnQocGxhdGZvcm0oZXZlbnQpKTsKIAotICAgIE5TVUludGVnZXIg
Y3VycmVudFBhZ2VJbmRleCA9IFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBjdXJyZW50UGFn
ZUluZGV4XTsKKyAgICBOU1VJbnRlZ2VyIGN1cnJlbnRQYWdlSW5kZXggPSBbbV9wZGZMYXllckNv
bnRyb2xsZXIgY3VycmVudFBhZ2VJbmRleF07CiAgICAgYm9vbCBpbkZpcnN0UGFnZSA9IGN1cnJl
bnRQYWdlSW5kZXggPT0gMDsKLSAgICBib29sIGluTGFzdFBhZ2UgPSBbbV9wZGZMYXllckNvbnRy
b2xsZXIuZ2V0KCkgbGFzdFBhZ2VJbmRleF0gPT0gY3VycmVudFBhZ2VJbmRleDsKKyAgICBib29s
IGluTGFzdFBhZ2UgPSBbbV9wZGZMYXllckNvbnRyb2xsZXIgbGFzdFBhZ2VJbmRleF0gPT0gY3Vy
cmVudFBhZ2VJbmRleDsKIAogICAgIGJvb2wgYXRTY3JvbGxUb3AgPSBzY3JvbGxQb3NpdGlvbigp
LnkoKSA9PSAwOwogICAgIGJvb2wgYXRTY3JvbGxCb3R0b20gPSBzY3JvbGxQb3NpdGlvbigpLnko
KSA9PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKS55KCk7CkBAIC0xODUwLDEyICsxODUwLDEyIEBA
IGJvb2wgUERGUGx1Z2luOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2
ZW50KQogCiAgICAgaWYgKGF0U2Nyb2xsQm90dG9tICYmICFpbkxhc3RQYWdlICYmIGV2ZW50LmRl
bHRhKCkuaGVpZ2h0KCkgPCAwKSB7CiAgICAgICAgIGlmIChldmVudC5kZWx0YSgpLmhlaWdodCgp
IDw9IC1zY3JvbGxNYWduaXR1ZGVUaHJlc2hvbGRGb3JQYWdlRmxpcCAmJiAhaW5Nb21lbnR1bVNj
cm9sbCkKLSAgICAgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKSBnb3RvTmV4dFBh
Z2VdOworICAgICAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIGdvdG9OZXh0UGFnZV07CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAoYXRTY3JvbGxUb3AgJiYgIWluRmly
c3RQYWdlICYmIGV2ZW50LmRlbHRhKCkuaGVpZ2h0KCkgPiAwKSB7CiAgICAgICAgIGlmIChldmVu
dC5kZWx0YSgpLmhlaWdodCgpID49IHNjcm9sbE1hZ25pdHVkZVRocmVzaG9sZEZvclBhZ2VGbGlw
ICYmICFpbk1vbWVudHVtU2Nyb2xsKSB7CiAgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBiZWdp
bl07Ci0gICAgICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkgZ290b1ByZXZpb3Vz
UGFnZV07CisgICAgICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgZ290b1ByZXZpb3VzUGFn
ZV07CiAgICAgICAgICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24obWF4aW11bVNj
cm9sbFBvc2l0aW9uKCkpOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKICAg
ICAgICAgfQpAQCAtMTg3Myw3ICsxODczLDcgQEAgTlNEYXRhICpQREZQbHVnaW46OmxpdmVEYXRh
KCkgY29uc3QKICAgICAvLyBTYXZlIGRhdGEgc3RyYWlnaHQgZnJvbSB0aGUgcmVzb3VyY2UgaW5z
dGVhZCBvZiBQREZLaXQgaWYgdGhlIGRvY3VtZW50IGlzCiAgICAgLy8gdW50b3VjaGVkIGJ5IHRo
ZSB1c2VyLCBzbyB0aGF0IFBERnMgd2hpY2ggUERGS2l0IGNhbid0IGRpc3BsYXkgd2lsbCBzdGls
bCBiZSBkb3dubG9hZGFibGUuCiAgICAgaWYgKG1fcGRmRG9jdW1lbnRXYXNNdXRhdGVkKQotICAg
ICAgICByZXR1cm4gW21fcGRmRG9jdW1lbnQuZ2V0KCkgZGF0YVJlcHJlc2VudGF0aW9uXTsKKyAg
ICAgICAgcmV0dXJuIFttX3BkZkRvY3VtZW50IGRhdGFSZXByZXNlbnRhdGlvbl07CiAgICAgZWxz
ZQogICAgICAgICByZXR1cm4gcmF3RGF0YSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KaW5kZXggYTVmYzZhNy4uNTk3YTMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gY29udmVydEltYWdlVG9CaXRtYXAoTlNJbWFnZSAqaW1hZ2UsIGNvbnN0IEluCiAKIHZvaWQg
V2ViRHJhZ0NsaWVudDo6c3RhcnREcmFnKFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZSwgY29uc3Qg
SW50UG9pbnQmIHBvaW50LCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCYsIEZyYW1lJiBmcmFt
ZSwgYm9vbCBsaW5rRHJhZykKIHsKLSAgICBJbnRTaXplIGJpdG1hcFNpemUoW2ltYWdlLmdldCgp
IHNpemVdKTsKKyAgICBJbnRTaXplIGJpdG1hcFNpemUoW2ltYWdlIHNpemVdKTsKICAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBjb252ZXJ0SW1hZ2VUb0JpdG1hcChpbWFnZS5n
ZXQoKSwgYml0bWFwU2l6ZSk7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwog
ICAgIGlmICghYml0bWFwIHx8ICFiaXRtYXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QYWdlQmFubmVyTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QYWdlQmFubmVyTWFj
Lm1tCmluZGV4IDY5OGExZjIuLjIwYWY1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUGFnZUJhbm5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BhZ2VCYW5uZXJNYWMubW0KQEAgLTEyMyw3ICsxMjMs
NyBAQCB2b2lkIFBhZ2VCYW5uZXI6OnNob3dJZkhpZGRlbigpCiB2b2lkIFBhZ2VCYW5uZXI6OmRp
ZENoYW5nZURldmljZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQogewogICAgIG1fbGF5
ZXIuZ2V0KCkuY29udGVudHNTY2FsZSA9IHNjYWxlRmFjdG9yOwotICAgIFttX2xheWVyLmdldCgp
IHNldE5lZWRzRGlzcGxheV07CisgICAgW21fbGF5ZXIgc2V0TmVlZHNEaXNwbGF5XTsKIH0KIAog
Ym9vbCBQYWdlQmFubmVyOjptb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlRXZl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQppbmRleCBkOWU4
NTI1Li5jNzJmMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpzdXNwZW5kUGFpbnRpbmcoKQogICAgIEFTU0VSVCghbV9pc1BhaW50aW5nU3VzcGVuZGVkKTsK
ICAgICBtX2lzUGFpbnRpbmdTdXNwZW5kZWQgPSB0cnVlOwogCi0gICAgW21fcm9vdExheWVyLmdl
dCgpIHNldFZhbHVlOihpZClrQ0ZCb29sZWFuVHJ1ZSBmb3JLZXk6QCJOU0NBVmlld1JlbmRlclBh
dXNlZCJdOworICAgIFttX3Jvb3RMYXllciBzZXRWYWx1ZTooaWQpa0NGQm9vbGVhblRydWUgZm9y
S2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRQ
YXVzZU5vdGlmaWNhdGlvbiIgb2JqZWN0Om5pbCB1c2VySW5mbzpbTlNEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoT2JqZWN0Om1fcm9vdExheWVyLmdldCgpIGZvcktleTpAImxheWVyIl1dOwogfQog
CkBAIC00MTUsNyArNDE1LDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
cmVzdW1lUGFpbnRpbmcoKQogICAgIH0KICAgICBtX2lzUGFpbnRpbmdTdXNwZW5kZWQgPSBmYWxz
ZTsKIAotICAgIFttX3Jvb3RMYXllci5nZXQoKSBzZXRWYWx1ZTooaWQpa0NGQm9vbGVhbkZhbHNl
IGZvcktleTpAIk5TQ0FWaWV3UmVuZGVyUGF1c2VkIl07CisgICAgW21fcm9vdExheWVyIHNldFZh
bHVlOihpZClrQ0ZCb29sZWFuRmFsc2UgZm9yS2V5OkAiTlNDQVZpZXdSZW5kZXJQYXVzZWQiXTsK
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRp
b25OYW1lOkAiTlNDQVZpZXdSZW5kZXJEaWRSZXN1bWVOb3RpZmljYXRpb24iIG9iamVjdDpuaWwg
dXNlckluZm86W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDptX3Jvb3RMYXllci5n
ZXQoKSBmb3JLZXk6QCJsYXllciJdXTsKIH0KIApAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKENBTGF5
ZXIgKmxheWVyKQogICAgICAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldFJvb3RMYXllciht
X2hhc1Jvb3RDb21wb3NpdGluZ0xheWVyID8gbV9yb290TGF5ZXIuZ2V0KCkgOiAwKTsKIAogICAg
IGZvciAoUGFnZU92ZXJsYXlMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3BhZ2VPdmVybGF5TGF5
ZXJzLmJlZ2luKCksIGVuZCA9IG1fcGFnZU92ZXJsYXlMYXllcnMuZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgW21fcm9vdExheWVyLmdldCgpIGFkZFN1YmxheWVyOml0LT52YWx1ZS0+
cGxhdGZvcm1MYXllcigpXTsKKyAgICAgICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVyOml0LT52
YWx1ZS0+cGxhdGZvcm1MYXllcigpXTsKIAogICAgIGlmIChUaWxlZEJhY2tpbmcqIHRpbGVkQmFj
a2luZyA9IG1haW5GcmFtZVRpbGVkQmFja2luZygpKQogICAgICAgICB0aWxlZEJhY2tpbmctPnNl
dEFnZ3Jlc3NpdmVseVJldGFpbnNUaWxlcyhtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdz
KCkuYWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKCkpOwpAQCAtNTk2LDcgKzU5Niw3IEBA
IHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5
ZXIoUGFnZU92ZXJsYXkqIHBhZ2VPdmVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAg
IFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBbbV9yb290TGF5
ZXIuZ2V0KCkgYWRkU3VibGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKV07CisgICAgW21fcm9v
dExheWVyIGFkZFN1YmxheWVyOmxheWVyLT5wbGF0Zm9ybUxheWVyKCldOwogCiAgICAgW0NBVHJh
bnNhY3Rpb24gY29tbWl0XTsKIApAQCAtNjMxLDggKzYzMSw4IEBAIHZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25zdCBHcmFwaGlj
c0xheWVyCiAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgIFtDQVRyYW5zYWN0aW9uIHNl
dERpc2FibGVBY3Rpb25zOllFU107CiAKLSAgICBbbV9yb290TGF5ZXIuZ2V0KCkgaW5zZXJ0U3Vi
bGF5ZXI6bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSBhYm92ZTpvbGRQbGF0Zm9ybUxheWVyLmdldCgp
XTsKLSAgICBbb2xkUGxhdGZvcm1MYXllci5nZXQoKSByZW1vdmVGcm9tU3VwZXJsYXllcl07Cisg
ICAgW21fcm9vdExheWVyIGluc2VydFN1YmxheWVyOmxheWVyLT5wbGF0Zm9ybUxheWVyKCkgYWJv
dmU6b2xkUGxhdGZvcm1MYXllci5nZXQoKV07CisgICAgW29sZFBsYXRmb3JtTGF5ZXIgcmVtb3Zl
RnJvbVN1cGVybGF5ZXJdOwogCiAgICAgW0NBVHJhbnNhY3Rpb24gY29tbWl0XTsKIApAQCAtNjU1
LDEyICs2NTUsMTIgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRl
RGVidWdJbmZvTGF5ZXIoYm9vbCBzaG93TGF5ZXIpCiAKICAgICAgICAgaWYgKG1fZGVidWdJbmZv
TGF5ZXIpIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBbbV9kZWJ1Z0luZm9MYXllci5n
ZXQoKSBzZXROYW1lOkAiRGVidWcgSW5mbyJdOworICAgICAgICAgICAgW21fZGVidWdJbmZvTGF5
ZXIgc2V0TmFtZTpAIkRlYnVnIEluZm8iXTsKICNlbmRpZgotICAgICAgICAgICAgW21fcm9vdExh
eWVyLmdldCgpIGFkZFN1YmxheWVyOm1fZGVidWdJbmZvTGF5ZXIuZ2V0KCldOworICAgICAgICAg
ICAgW21fcm9vdExheWVyIGFkZFN1YmxheWVyOm1fZGVidWdJbmZvTGF5ZXIuZ2V0KCldOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2RlYnVnSW5mb0xheWVyKSB7Ci0gICAgICAgIFttX2Rl
YnVnSW5mb0xheWVyLmdldCgpIHJlbW92ZUZyb21TdXBlcmxheWVyXTsKKyAgICAgICAgW21fZGVi
dWdJbmZvTGF5ZXIgcmVtb3ZlRnJvbVN1cGVybGF5ZXJdOwogICAgICAgICBtX2RlYnVnSW5mb0xh
eWVyID0gbnVsbHB0cjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggNTcwYWE5Ny4uMGI1NGEwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQpAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgV2ViUGFnZTo6cGVyZm9ybURpY3Rpb25hcnlM
b29rdXBGb3JSYW5nZShGcmFtZSogZnJhbWUsIFJhbmdlKiByYW5nZSwgTlNEaWN0CiAgICAgICAg
ICAgICBbc2NhbGVkQXR0cmlidXRlcyBzZXRPYmplY3Q6Zm9udCBmb3JLZXk6TlNGb250QXR0cmli
dXRlTmFtZV07CiAgICAgICAgIH0KIAotICAgICAgICBbc2NhbGVkTlNBdHRyaWJ1dGVkU3RyaW5n
LmdldCgpIGFkZEF0dHJpYnV0ZXM6c2NhbGVkQXR0cmlidXRlcy5nZXQoKSByYW5nZTpyYW5nZV07
CisgICAgICAgIFtzY2FsZWROU0F0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlczpzY2FsZWRB
dHRyaWJ1dGVzLmdldCgpIHJhbmdlOnJhbmdlXTsKICAgICB9XTsKIAogICAgIEF0dHJpYnV0ZWRT
dHJpbmcgYXR0cmlidXRlZFN0cmluZzsKQEAgLTczMiw3ICs3MzIsNyBAQCBib29sIFdlYlBhZ2U6
OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogc3Rh
dGljIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBhZ2UqIHdl
YlBhZ2UsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1
ZXN0PiByZXF1ZXN0ID0gYWRvcHROUyhbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRX
aXRoVVJMOnVybF0pOwotICAgIFtyZXF1ZXN0LmdldCgpIHNldFZhbHVlOihOU1N0cmluZyAqKXdl
YlBhZ2UtPnVzZXJBZ2VudCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKKyAg
ICBbcmVxdWVzdCBzZXRWYWx1ZTooTlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdlbnQoKSBmb3JI
VFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAKICAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LmxvYWRlcigpLm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1T
ZXNzaW9uKCkpCiAgICAgICAgIHJldHVybiBXS0NhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9y
YWdlU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CkBAIC04MzksOCArODM5LDggQEAgdm9pZCBXZWJQ
YWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ1BERkRvY3VtZW50KHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW4KICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQo
KS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFt
ZS0+Y29yZUZyYW1lKCkgOiAwOwogICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1l
bnQgPSBjb3JlRnJhbWUgPyBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSA6
IDA7Ci0gICAgaWYgKFtwZGZEb2N1bWVudC5nZXQoKSBhbGxvd3NQcmludGluZ10pIHsKLSAgICAg
ICAgTlNVSW50ZWdlciBwYWdlQ291bnQgPSBbcGRmRG9jdW1lbnQuZ2V0KCkgcGFnZUNvdW50XTsK
KyAgICBpZiAoW3BkZkRvY3VtZW50IGFsbG93c1ByaW50aW5nXSkgeworICAgICAgICBOU1VJbnRl
Z2VyIHBhZ2VDb3VudCA9IFtwZGZEb2N1bWVudCBwYWdlQ291bnRdOwogICAgICAgICBJbnRSZWN0
IHBhZ2VSZWN0KDAsIDAsIGNlaWxmKHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoKSwgY2Vp
bGYocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0KSk7CiAgICAgICAgIGZvciAoTlNVSW50
ZWdlciBpID0gMTsgaSA8PSBwYWdlQ291bnQ7ICsraSkgewogICAgICAgICAgICAgcmVzdWx0UGFn
ZVJlY3RzLmFwcGVuZChwYWdlUmVjdCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>