<?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>135111</bug_id>
          
          <creation_ts>2014-07-20 20:45:55 -0700</creation_ts>
          <short_desc>[ftlopt] Phantoms in SSA form should be aggressively hoisted</short_desc>
          <delta_ts>2014-07-23 16:07:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>135110</blocked>
    
    <blocked>128584</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023605</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-20 20:45:55 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023608</commentid>
    <comment_count>1</comment_count>
      <attachid>235202</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-20 20:57:00 -0700</bug_when>
    <thetext>Created attachment 235202
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024370</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-07-23 16:07:46 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/171495</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235202</attachid>
            <date>2014-07-20 20:57:00 -0700</date>
            <delta_ts>2014-07-22 12:57:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>46907</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxMjg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDE0LTA3LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
W2Z0bG9wdF0gUGhhbnRvbXMgaW4gU1NBIGZvcm0gc2hvdWxkIGJlIGFnZ3Jlc3NpdmVseSBob2lz
dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzUx
MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEluIENQUyBmb3JtLCBQaGFudG9tIG1lYW5zIHRocmVlIHRoaW5nczogKDEpIHRoYXQgdGhl
IGNoaWxkcmVuIHNob3VsZCBiZSBrZXB0IGFsaXZlIHNvIGxvbmcKKyAgICAgICAgYXMgdGhleSBh
cmUgcmVsZXZhbnQgdG8gT1NSIChkdWUgdG8gYSBNb3ZIaW50KSwgKDIpIHRoYXQgdGhlIGNoaWxk
cmVuIGFyZSBsaXZlLWluLWJ5dGVjb2RlCisgICAgICAgIGF0IHRoZSBwb2ludCBvZiB0aGUgUGhh
bnRvbSwgYW5kICgzKSB0aGF0IHNvbWUgY2hlY2tzIHNob3VsZCBiZSBwZXJmb3JtZWQuIEluIFNT
QSwgdGhlCisgICAgICAgIHNlY29uZCBtZWFuaW5nIGlzIG5vdCB1c2VkIGJ1dCB0aGUgb3RoZXIg
dHdvIHN0YXkuCisgICAgICAgIAorICAgICAgICBUaGUgZmFjdCB0aGF0IGEgUGhhbnRvbSB0aGF0
IGlzIHVzZWQgdG8ga2VlcCBhIG5vZGUgYWxpdmUgY291bGQgYmUgYW55d2hlcmUgaW4gdGhlIGdy
YXBoLAorICAgICAgICBldmVuIGluIGEgdG90YWxseSBkaWZmZXJlbnQgYmFzaWMgYmxvY2ssIGNv
bXBsaWNhdGVzIHNvbWUgU1NBIHRyYW5zZm9ybWF0aW9ucy4gSXQncyBub3QKKyAgICAgICAgcG9z
c2libGUgdG8ganVzdCBqZXR0aXNvbiBzb21lIHN1Y2Nlc3Nvciwgc2luY2UgdGhhIHN1Y2Nlc3Nv
ciBjb3VsZCBoYXZlIGEgUGhhbnRvbSB0aGF0IHdlCisgICAgICAgIGNhcmUgYWJvdXQuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGNoYW5nZSByYXRpb25hbGl6ZXMgaG93IFBoYW50b21zIHdvcmsg
c28gdGhhdDoKKyAgICAgICAgCisgICAgICAgIDEpIFBoYW50b21zIGtlZXAgY2hpbGRyZW4gYWxp
dmUgc28gbG9uZyBhcyB0aG9zZSBjaGlsZHJlbiBhcmUgcmVsZXZhbnQgdG8gT1NSLiBUaGlzIGlz
IHRydWUKKyAgICAgICAgICAgaW4gYm90aCBDUFMgYW5kIFNTQS4gVGhpcyB3YXMgdHJ1ZSBiZWZv
cmUgYW5kIGl0J3MgdHJ1ZSBub3cuCisgICAgICAgIAorICAgICAgICAyKSBQaGFudG9tcyBhcmUg
dXNlZCBmb3IgbGl2ZS1pbi1ieXRlY29kZSBvbmx5IGluIENQUy4gVGhpcyB3YXMgdHJ1ZSBiZWZv
cmUgYW5kIGl0J3MgdHJ1ZQorICAgICAgICAgICBub3csIGV4Y2VwdCB0aGF0IG5vdyB3ZSBhbHNv
IGRvbid0IGJvdGhlciBwcmVzZXJ2aW5nIHRoZSBsaXZlLWluLWJ5dGVjb2RlIGluZm9ybWF0aW9u
CisgICAgICAgICAgIHRoYXQgUGhhbnRvbXMgY29udmV5LCB3aGVuIHdlIGFyZSBpbiBTU0EuCisg
ICAgICAgIAorICAgICAgICAzKSBQaGFudG9tcyBtYXkgaW5jaWRlbnRhbGx5IGhhdmUgY2hlY2tz
LCBidXQgaW4gY2FzZXMgd2hlcmUgd2Ugb25seSB3YW50IGNoZWNrcywgd2Ugbm93CisgICAgICAg
ICAgIHVzZSBDaGVjayBpbnN0ZWFkIG9mIFBoYW50b20uIE5vdGFibHksIERDRSBwaGFzZSBoYXMg
ZGVhZCBub2RlcyBkZWNheSB0byBDaGVjaywgbm90CisgICAgICAgICAgIFBoYW50b20uCisgICAg
ICAgIAorICAgICAgICBUaGUgYmlnZ2VzdCBwYXJ0IG9mIHRoaXMgY2hhbmdlIGlzIHRoYXQgaW4g
U1NBLCB3ZSBjYW5vbmljYWxpemUgUGhhbnRvbXM6CisgICAgICAgIAorICAgICAgICAtIEFsbCBQ
aGFudG9tcyBhcmUgcmVwbGFjZWQgd2l0aCBDaGVjayBub2RlcyB0aGF0IGluY2x1ZGUgb25seSB0
aG9zZSBlZGdlcyB0aGF0IGhhdmUKKyAgICAgICAgICBjaGVja3MuCisgICAgICAgIAorICAgICAg
ICAtIE5vZGVzIHRoYXQgd2VyZSB0aGUgY2hpbGRyZW4gb2YgYW55IFBoYW50b21zIGhhdmUgYSBQ
aGFudG9tIHJpZ2h0IGFmdGVyIHRoZW0uCisgICAgICAgIAorICAgICAgICBGb3IgZXhhbXBsZSwg
dGhlIGZvbGxvd2luZyBjb2RlOgorICAgICAgICAKKyAgICAgICAgICAgIDU6IEFyaXRoQWRkKEAx
LCBAMikKKyAgICAgICAgICAgIDY6IEFyaXRoU3ViKEA1LCBAMykKKyAgICAgICAgICAgIDc6IFBo
YW50b20oSW50MzI6QDUpCisgICAgICAgIAorICAgICAgICB3b3VsZCBiZSB0dXJuZWQgaW50byB0
aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgICAgIDU6IEFyaXRoQWRkKEAxLCBAMikK
KyAgICAgICAgICAgIDg6IFBoYW50b20oQDUpIC8vIEA1IHdhcyB0aGUgY2hpbGQgb2YgYSBQaGFu
dG9tLCBzbyB3ZSBjcmVhdGUgYSBuZXcgUGhhbnRvbSByaWdodCBhZnRlcgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gQDUuIFRoaXMgaXMgdGhlIG9ubHkgUGhhbnRvbSB3ZSB3aWxsIGhh
dmUgZm9yIEA1LgorICAgICAgICAgICAgNjogQXJpdGhTdWIoQDUsIEAzKQorICAgICAgICAgICAg
NzogQ2hlY2soSW50MzI6QDUpIC8vIFdlIHJlcGxhY2UgdGhlIFBoYW50b20gd2l0aCBhIENoZWNr
OyBpbiB0aGlzIGNhc2Ugc2luY2UgSW50MzI6IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYSBjaGVja2luZyBlZGdlLCB3ZSBsZWF2ZSBpdC4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgaXMgYSBzbGlnaHQgc3BlZWQtdXAgYWNyb3NzIHRoZSBib2FyZCwgcHJlc3VtYWJseSBi
ZWNhdXNlIHdlIG5vdyBkbyBhIGJldHRlciBqb2Igb2YKKyAgICAgICAgcmVkdWNpbmcgdGhlIHNp
emUgb2YgdGhlIGdyYXBoIGR1cmluZyBjb21waWxhdGlvbi4gSXQgY291bGQgYWxzbyBiZSBhIGZs
dWtlLCB0aG91Z2guIFRoZQorICAgICAgICBtYWluIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byB1bmxv
Y2sgc29tZSBvdGhlciB3b3JrIChsaWtlIENGRyBzaW1wbGlmaWNhdGlvbiBpbiBTU0EpLiBJdCB3
aWxsCisgICAgICAgIGJlY29tZSBhIHJlcXVpcmVtZW50IHRvIHJ1biBwaGFudG9tIGNhbm9uaWNh
bGl6YXRpb24gcHJpb3IgdG8gc29tZSBTU0EgcGhhc2VzLiBOb25lIG9mIHRoZQorICAgICAgICBj
dXJyZW50IHBoYXNlcyBuZWVkIGl0LCBidXQgZnV0dXJlIHBoYXNlcyBwcm9iYWJseSB3aWxsLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGlu
Z1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OkRD
RVBoYXNlOjpmaW5kVHlwZUNoZWNrUm9vdCk6CisgICAgICAgIChKU0M6OkRGRzo6RENFUGhhc2U6
OmNvdW50RWRnZSk6CisgICAgICAgIChKU0M6OkRGRzo6RENFUGhhc2U6OmZpeHVwQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkRDRVBoYXNlOjplbGltaW5hdGVJcnJlbGV2YW50UGhhbnRvbUNo
aWxkcmVuKToKKyAgICAgICAgKiBkZmcvREZHRWRnZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
RWRnZTo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0VkZ2UuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpFZGdlOjppc1Byb3ZlZCk6CisgICAgICAgIChKU0M6OkRGRzo6RWRnZTo6bmVlZHNDaGVjayk6
IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR05vZGVGbGFncy5oOgorICAgICAgICAqIGRmZy9E
RkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkRGRzo6UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZTo6UGhhbnRvbUNhbm9uaWNhbGl6YXRp
b25QaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6UGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFz
ZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRp
b24pOgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmg6IEFk
ZGVkLgorICAgICAgICAqIGRmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpQaGFudG9tUmVtb3ZhbFBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmg6CisgICAgICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJblRocmVhZEltcGwpOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06
Omxvd0pTVmFsdWUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxh
dGVPYmplY3RPck90aGVyKToKKwogMjAxNC0wNy0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgogCiAgICAgICAgIFtmdGxvcHRdIERGRyBGbHVzaChTZXRMb2NhbCkgc3RvcmUgZWxp
bWluYXRpb24gaXMgb3ZlcnplYWxvdXMgZm9yIGNhcHR1cmVkIHZhcmlhYmxlcyBpbiB0aGUgcHJl
c2VuY2Ugb2Ygbm9kZXMgdGhhdCBoYXZlIG5vIGVmZmVjdHMgYnV0IG1heSB0aHJvdyAobWVyZ2Ug
dHJ1bmsgcjE3MTE5MCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDE3MTI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgZGZnL0RGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwCiAgICAgZGZnL0RGR09T
UkV4aXRQcmVwYXJhdGlvbi5jcHAKICAgICBkZmcvREZHT3BlcmF0aW9ucy5jcHAKKyAgICBkZmcv
REZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZHUGhhbnRvbVJl
bW92YWxQaGFzZS5jcHAKICAgICBkZmcvREZHUGhhc2UuY3BwCiAgICAgZGZnL0RGR1BsYW4uY3Bw
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE3
MTI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQzMyw2ICs0MzMsNyBAQAog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHT1NSRXhpdEp1bXBQbGFj
ZWhvbGRlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxkZmdcREZHT1NSRXhp
dFByZXBhcmF0aW9uLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQ
aGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGRmZ1xERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFzZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxkZmdcREZHUGxhbi5jcHAiIC8+CkBAIC0xMDEzLDYgKzEwMTQsNyBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdPU1JFeGl0UHJlcGFyYXRpb24u
aCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdQaGFudG9tQ2Fub25pY2Fs
aXphdGlvblBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUGhh
bnRvbVJlbW92YWxQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERG
R1BoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHUGxhbi5oIiAv
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE3MTI4MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjEsNiArMzYxLDggQEAKIAkJMEY3QUI4MkYxOTU4
REExQzAwQzY4ODFGIC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QUI4MkQxOTU4REExQzAwQzY4ODFGIC8qIFRvVGhpc1N0
YXR1cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTFGMTQxNzJDMkYwMDE3
OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3
RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY3QjM2NjExOTdDNTI1QzAwRUQxRERDIC8qIERG
R1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjM2NUYxOTdDNTI1QzAwRUQxRERDIC8qIERGR1Bo
YW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwICovOyB9OworCQkwRjdCMzY2MjE5N0M1MjVD
MDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QjM2NjAxOTdDNTI1QzAwRUQx
RERDIC8qIERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjgwMjNFQTE2MTM4MzJCMDBBMEJB
NDUgLyogQnlWYWxJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjgwMjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY4MzM1QjcxNjM5QzFF
NjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovOyB9OwogCQkwRjgzMzVCODE2MzlDMUVBMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4MzM1QjUxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMjU0Miw2ICsyNTQ0LDggQEAKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjdBQjgyQzE5NThEQTFDMDBDNjg4MUYgLyogVG9UaGlzU3RhdHVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRvVGhpc1N0YXR1cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGN0FCODJEMTk1OERBMUMwMEM2ODgxRiAvKiBUb1RoaXNTdGF0
dXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVG9UaGlzU3RhdHVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGN0IzNjVGMTk3QzUyNUMwMEVEMUREQyAvKiBE
RkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwOyBwYXRo
ID0gZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjdCMzY2MDE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNh
bm9uaWNhbGl6YXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHUGhhbnRvbUNh
bm9uaWNhbGl6YXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjgw
MjNFOTE2MTM4MzIzMDBBMEJBNDUgLyogQnlWYWxJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJ5VmFsSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4MzM1QjUxNjM5QzFFMzAwMTQ0
M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTE5MCw2ICs1MTk0LDggQEAKIAkJCQkwRkVGQzlBODE2ODFBM0IwMDA1NjdGNTMg
LyogREZHT1NSRXhpdEp1bXBQbGFjZWhvbGRlci5oICovLAogCQkJCTBGMjM1QkU5MTcxNzhFNzMw
MDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwICovLAogCQkJCTBGMjM1QkVBMTcx
NzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCAqLywKKwkJCQkwRjdCMzY1
RjE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5jcHAg
Ki8sCisJCQkJMEY3QjM2NjAxOTdDNTI1QzAwRUQxRERDIC8qIERGR1BoYW50b21DYW5vbmljYWxp
emF0aW9uUGhhc2UuaCAqLywKIAkJCQkwRkJGREQwMjE5NkM5MkJGMDA3QTVCRkEgLyogREZHUGhh
bnRvbVJlbW92YWxQaGFzZS5jcHAgKi8sCiAJCQkJMEZCRkREMDMxOTZDOTJCRjAwN0E1QkZBIC8q
IERGR1BoYW50b21SZW1vdmFsUGhhc2UuaCAqLywKIAkJCQkwRkZGQzk0RjE0RUY5MDk1MDBDNzI1
MzIgLyogREZHUGhhc2UuY3BwICovLApAQCAtNjQxNSw2ICs2NDIxLDcgQEAKIAkJCQkwRjJCNjZG
MjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZGNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjdCMzY2MjE5N0M1MjVDMDBFRDFEREMgLyogREZHUGhh
bnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1QTEyNzQx
OTJEOUZERjAwODc2NEEzIC8qIERGR0RvZXNHQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2
RjUxN0I2QjVBQjAwQTdBRTNGIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGNjE3QjZCNUFCMDBBN0FFM0YgLyogSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKQEAgLTc5Mjgs
NiArNzkzNSw3IEBACiAJCQkJQTUwM0ZBMUQxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDI4MDg3NTEwN0VD
MTNFMDAxM0U3QjIgLyogSlNMb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0QwQkJDMTk0
QTQxNDMwMEZDOUNGOSAvKiBDb25zdGFudFN0cnVjdHVyZUNoZWNrLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGN0IzNjYxMTk3QzUyNUMwMEVEMUREQyAvKiBERkdQaGFudG9tQ2Fub25pY2FsaXph
dGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZC
QyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3MDA4NzQxMTdDQkU4
RUIwMEMzRTY0MyAvKiBKU01hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzRERUY5NTE4MkQ5
OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE3MTI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg0OCwxMiArMTg0OCwyNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKICAgICBjYXNlIFBoYW50b206CiAgICAgY2Fz
ZSBIYXJkUGhhbnRvbToKLSAgICBjYXNlIENoZWNrOgogICAgIGNhc2UgQ291bnRFeGVjdXRpb246
CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1
cm46CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBDaGVjazogeworICAgICAgICAvLyBTaW1w
bGlmeSBvdXQgY2hlY2tzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZG8gY2hlY2tpbmcuCisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKKyAg
ICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOworICAgICAgICAg
ICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGVk
Z2UuaXNQcm92ZWQoKSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkgeworICAgICAgICAgICAg
ICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAg
ICAgY2FzZSBTdG9yZUJhcnJpZXI6IHsKICAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBT
cGVjQ2VsbCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3MTI4
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKIAor
ICAgICAgICAgICAgYm9vbCBhbHJlYWR5SGFuZGxlZCA9IGZhbHNlOwogICAgICAgICAgICAgYm9v
bCBlbGltaW5hdGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
c3dpdGNoIChub2RlLT5vcCgpKSB7CkBAIC0xNjYsNyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShiYXNl
KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1
dGUoaW5kZXhJbkJsb2NrKTsgLy8gUHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0
IHRoZSBzdGF0ZSBiZWZvcmUuCi0gICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRydWU7IC8v
IERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8g
dGhpcy4KKyAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFs
bG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGF0YS52YXJpYW50cy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBHZXRCeUlk
VmFyaWFudCYgdmFyaWFudCA9IGRhdGEudmFyaWFudHNbaV07CkBAIC0xNzQsNiArMTc1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQuc3RydWN0dXJlU2V0KCku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0g
PSBkYXRhLnZhcmlhbnRzLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudmFy
aWFudHMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgCkBAIC0xODIsNiArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBlbWl0R2V0QnlPZmZzZXQoCiAgICAgICAgICAgICAgICAgICAgIGluZGV4
SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBkYXRhLnZhcmlhbnRzWzBdLCBkYXRhLmlkZW50aWZp
ZXJOdW1iZXIpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIApAQCAtMTkzLDcgKzE5
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSBiYXNlVmFsdWUg
PSBtX3N0YXRlLmZvck5vZGUoYmFzZSk7CiAKICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVy
LmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gUHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIg
d2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCi0gICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9IHRy
dWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGlu
Z3MgdG8gdGhpcy4KKyAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERv
bid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhp
cy4KICAgICAgICAgICAgICAgICAKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBkYXRhLnZhcmlhbnRzLnNpemUoKTsgKytpKSB7CkBAIC0yMDMsNiArMjA2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQub2xkU3RydWN0dXJlKCku
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0g
PSBkYXRhLnZhcmlhbnRzLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEudmFy
aWFudHMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAKQEAgLTIxMSw2ICsyMTUsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCA9IFB1dEJ5SWRWYXJpYW50OjpyZXBsYWNl
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIH0KIApAQCAtMjE5LDYgKzIyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zmc2V0KAogICAgICAgICAgICAgICAg
ICAgICBpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgZGF0YS52YXJpYW50c1swXSwgZGF0
YS5pZGVudGlmaWVyTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMzEsNyAr
MjM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlIGJhc2VWYWx1
ZSA9IG1fc3RhdGUuZm9yTm9kZShjaGlsZCk7CiAKICAgICAgICAgICAgICAgICBtX2ludGVycHJl
dGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gUHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0
ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCi0gICAgICAgICAgICAgICAgZWxpbWluYXRlZCA9
IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0
aGluZ3MgdG8gdGhpcy4KKyAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8v
IERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8g
dGhpcy4KIAogICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3Ao
KSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKQogICAgICAgICAgICAgICAg
ICAgICB8fCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgKGJhc2VW
YWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwpKSkKQEAgLTI1Myw2ICsyNTksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMo
KSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9mZnNldChpbmRleEluQmxv
Y2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTI2Myw2ICsyNzAsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gc3RhdHVzLnZhcmlh
bnRzKCk7CiAgICAgICAgICAgICAgICAgZGF0YS0+aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZp
ZXJOdW1iZXI7CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTXVsdGlHZXRCeU9mZnNl
dChkYXRhKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTI3OSw3ICsyODcs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZVZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKGNoaWxkKTsKIAogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIu
ZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3
ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KLSAgICAgICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1
ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5n
cyB0byB0aGlzLgorICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9u
J3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlz
LgogCiAgICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpIHx8
IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2JiZXJlZCgpKQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTI5NCw2ICszMDIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBp
ZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzLm51bVZhcmlhbnRzKCkp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA+IDEgJiYgIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBzdGF0dXMubnVtVmFyaWFudHMoKTsgaS0tOykKICAgICAgICAgICAgICAgICAgICAgYWRkQ2hl
Y2tzKG9yaWdpbiwgaW5kZXhJbkJsb2NrLCBzdGF0dXNbaV0uY29uc3RhbnRDaGVja3MoKSk7CiAg
ICAgICAgICAgICAgICAgCkBAIC0zMDIsOCArMzE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEFTU0VSVChpc0ZUTChtX2dyYXBoLm1f
cGxhbi5tb2RlKSk7CiAKICAgICAgICAgICAgICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0
YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0YS5hZGQoKTsKICAgICAgICAgICAgICAg
ICBkYXRhLT52YXJpYW50cyA9IHN0YXR1cy52YXJpYW50cygpOwpAQCAtMzE3LDYgKzMzMSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CisgICAgICAgICAgICAg
ICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCkBAIC0zNDcsMTYgKzM2MiwzNCBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBDaGVjazogeworICAgICAgICAgICAgICAgIGFs
cmVhZHlIYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1
dGUoaW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIEVkZ2Ug
ZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOworICAgICAgICAgICAgICAgICAgICBpZiAo
IWVkZ2UpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGVkZ2UuaXNQcm92ZWQoKSB8fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4ucmVtb3ZlRWRnZShpLS0pOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChlbGltaW5hdGVkKSB7CiAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoYWxyZWFkeUhhbmRsZWQpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxv
Y2spOwogICAgICAgICAgICAgaWYgKCFtX3N0YXRlLmlzVmFsaWQoKSkgewogICAgICAgICAgICAg
ICAgIC8vIElmIHdlIGludmFsaWRhdGVkIHRoZW4gd2Ugc2hvdWxkbid0IGF0dGVtcHQgdG8gY29u
c3RhbnQtZm9sZC4gSGVyZSdzIGFuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RDRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RDRVBoYXNlLmNwcAkocmV2aXNpb24gMTcxMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEyICs0OSwyMiBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyB8fCBt
X2dyYXBoLm1fZm9ybSA9PSBTU0EpOwogICAgICAgICAKICAgICAgICAgLy8gRmlyc3QgcmVzZXQg
dGhlIGNvdW50cyB0byAwIGZvciBhbGwgbm9kZXMuCisgICAgICAgIC8vCisgICAgICAgIC8vIEFs
c28gdGFrZSB0aGlzIG9wcG9ydHVuaXR5IHRvIHByZXRlbmQgdGhhdCBDaGVjayBub2RlcyBhcmUg
bm90IE5vZGVNdXN0R2VuZXJhdGUuIENoZWNrCisgICAgICAgIC8vIG5vZGVzIGFyZSBNdXN0R2Vu
ZXJhdGUgYmVjYXVzZSB0aGV5IGFyZSBleGVjdXRlZCBmb3IgZWZmZWN0LCBidXQgdGhleSBmb2xs
b3cgdGhlIHNhbWUKKyAgICAgICAgLy8gRENFIHJ1bGVzIGFzIG5vZGVzIHRoYXQgYXJlbid0IE11
c3RHZW5lcmF0ZTogdGhleSBvbmx5IGNvbnRyaWJ1dGUgdG8gdGhlIHJlZiBjb3VudCBvZgorICAg
ICAgICAvLyB0aGVpciBjaGlsZHJlbiBpZiB0aGUgZWRnZXMgcmVxdWlyZSBjaGVja3MuIE5vbi1j
aGVja2luZyBlZGdlcyBhcmUgcmVtb3ZlZC4gTm90ZSB0aGF0CisgICAgICAgIC8vIGZvciBhbnkg
Q2hlY2tzIGxlZnQgb3ZlciwgdGhpcyBwaGFzZSB3aWxsIHR1cm4gdGhlbSBiYWNrIGludG8gTm9k
ZU11c3RHZW5lcmF0ZS4KICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBi
bG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CiAgICAgICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CiAgICAg
ICAgICAgICBpZiAoIWJsb2NrKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSBibG9jay0+c2l6ZSgpOyBpbmRleEluQmxv
Y2stLTspCi0gICAgICAgICAgICAgICAgYmxvY2stPmF0KGluZGV4SW5CbG9jayktPnNldFJlZkNv
dW50KDApOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSBibG9jay0+
c2l6ZSgpOyBpbmRleEluQmxvY2stLTspIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0g
YmxvY2stPmF0KGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkg
PT0gQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RH
ZW5lcmF0ZSk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVmQ291bnQoMCk7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIHBoaUluZGV4ID0gYmxvY2stPnBoaXMu
c2l6ZSgpOyBwaGlJbmRleC0tOykKICAgICAgICAgICAgICAgICBibG9jay0+cGhpc1twaGlJbmRl
eF0tPnNldFJlZkNvdW50KDApOwogICAgICAgICB9CkBAIC0xMjEsNiArMTMxLDMwIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGNsZWFuVmFyaWFibGVzKG1fZ3JhcGgubV9hcmd1bWVudHMpOwogICAg
ICAgICB9CiAgICAgICAgIAorICAgICAgICAvLyBKdXN0IGRvIGEgYmFzaWMgSGFyZFBoYW50b20v
UGhhbnRvbS9DaGVjayBjbGVhbi11cC4KKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAg
ICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdW5z
aWduZWQgc291cmNlSW5kZXggPSAwOworICAgICAgICAgICAgdW5zaWduZWQgdGFyZ2V0SW5kZXgg
PSAwOworICAgICAgICAgICAgd2hpbGUgKHNvdXJjZUluZGV4IDwgYmxvY2stPnNpemUoKSkgewor
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoc291cmNlSW5kZXgrKyk7Cisg
ICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBDaGVjazoKKyAgICAgICAgICAgICAgICBjYXNlIEhhcmRQaGFudG9tOgorICAgICAgICAgICAg
ICAgIGNhc2UgUGhhbnRvbToKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkcmVu
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYmxvY2st
PmF0KHRhcmdldEluZGV4KyspID0gbm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJs
b2NrLT5yZXNpemUodGFyZ2V0SW5kZXgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBt
X2dyYXBoLm1fcmVmQ291bnRTdGF0ZSA9IEV4YWN0UmVmQ291bnQ7CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTEzMSw3ICsxNjUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgLy8gV2UgbWF5IGhhdmUgYW4gInVucHJvdmVkIiB1bnR5cGVkIHVzZSBmb3IgY29kZSB0aGF0
IGlzIHVucmVhY2hhYmxlLiBUaGUgQ0ZBCiAgICAgICAgIC8vIHdpbGwganVzdCBub3QgaGF2ZSBn
b3R0ZW4gYXJvdW5kIHRvIGl0LgotICAgICAgICBpZiAoZWRnZS53aWxsTm90SGF2ZUNoZWNrKCkp
CisgICAgICAgIGlmIChlZGdlLmlzUHJvdmVkKCkgfHwgZWRnZS53aWxsTm90SGF2ZUNoZWNrKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZWRnZS0+cG9zdGZpeFJlZigpKQog
ICAgICAgICAgICAgbV93b3JrbGlzdC5hcHBlbmQoZWRnZS5ub2RlKCkpOwpAQCAtMTQ3LDcgKzE4
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb3VudEVkZ2UoTm9kZSosIEVkZ2UgZWRnZSkKICAg
ICB7CiAgICAgICAgIC8vIERvbid0IGNvdW50IGVkZ2VzIHRoYXQgYXJlIGFscmVhZHkgY291bnRl
ZCBmb3IgdGhlaXIgdHlwZSBjaGVja3MuCi0gICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2so
KSkKKyAgICAgICAgaWYgKCEoZWRnZS5pc1Byb3ZlZCgpIHx8IGVkZ2Uud2lsbE5vdEhhdmVDaGVj
aygpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY291bnROb2RlKGVkZ2Uubm9kZSgp
KTsKICAgICB9CkBAIC0yMTQsMTAgKzI0OCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGNoaWxkSWR4ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZElk
eCA8IG5vZGUtPmZpcnN0Q2hpbGQoKSArIG5vZGUtPm51bUNoaWxkcmVuKCk7IGNoaWxkSWR4Kysp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG1fZ3JhcGgubV92YXJBcmdD
aGlsZHJlbltjaGlsZElkeF07CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSB8
fCBlZGdlLndpbGxOb3RIYXZlQ2hlY2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
ZWRnZSB8fCBlZGdlLmlzUHJvdmVkKCkgfHwgZWRnZS53aWxsTm90SGF2ZUNoZWNrKCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgUGhh
bnRvbSwgbm9kZS0+b3JpZ2luLCBlZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2ssIG5vZGUt
Pm9yaWdpbiwgZWRnZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
ICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CkBAIC0yMjYsOCArMjYwLDE0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKLSAgICAgICAgICAgICAgICBl
bGltaW5hdGVJcnJlbGV2YW50UGhhbnRvbUNoaWxkcmVuKG5vZGUpOworICAgICAgICAgICAgICAg
IG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChlZGdlLmlzUHJvdmVkKCkgfHwgZWRnZS53aWxsTm90SGF2ZUNoZWNr
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5yZW1vdmVFZGdlKGkt
LSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5vZGUtPnNldFJlZkNvdW50
KDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSB9CkBAIC0yMzYsMTcg
KzI3Niw2IEBAIHByaXZhdGU6CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2sp
OwogICAgIH0KICAgICAKLSAgICB2b2lkIGVsaW1pbmF0ZUlycmVsZXZhbnRQaGFudG9tQ2hpbGRy
ZW4oTm9kZSogbm9kZSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBB
ZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKLSAgICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUt
PmNoaWxkcmVuLmNoaWxkKGkpOwotICAgICAgICAgICAgaWYgKCFlZGdlKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbE5vdEhhdmVDaGVjaygpKQot
ICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKLSAgICAgICAg
fQotICAgIH0KLSAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYWJsZXNWZWN0b3JUeXBl
PgogICAgIHZvaWQgY2xlYW5WYXJpYWJsZXMoVmFyaWFibGVzVmVjdG9yVHlwZSYgdmFyaWFibGVz
KQogICAgIHsKQEAgLTI1NCw3ICsyODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTm9kZSog
bm9kZSA9IHZhcmlhYmxlc1tpXTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFBoYW50b20gJiYg
bm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFBo
YW50b20gJiYgbm9kZS0+b3AoKSAhPSBDaGVjayAmJiBub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0g
R2V0TG9jYWwpIHsKICAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+Y2hpbGQxKCkubm9kZSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuY3BwCShyZXZpc2lvbiAxNzEy
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0VkZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIHZvaWQg
RWRnZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICh1c2VLaW5kVW5j
aGVja2VkKCkgIT0gVW50eXBlZFVzZSkgewotICAgICAgICBpZiAobmVlZHNDaGVjaygpKQorICAg
ICAgICBpZiAoIWlzUHJvdmVkKCkpCiAgICAgICAgICAgICBvdXQucHJpbnQoIkNoZWNrOiIpOwog
ICAgICAgICBvdXQucHJpbnQodXNlS2luZCgpLCAiOiIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRWRnZS5oCShyZXZpc2lvbiAxNzEyODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0VkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDEwICsxMTUsNiBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gcHJvb2ZTdGF0dXMoKSA9PSBJc1Byb3Zl
ZDsKICAgICB9Ci0gICAgYm9vbCBuZWVkc0NoZWNrKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBwcm9vZlN0YXR1cygpID09IE5lZWRzQ2hlY2s7Ci0gICAgfQogICAgIAogICAgIGJvb2wg
d2lsbE5vdEhhdmVDaGVjaygpIGNvbnN0CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE3MTI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDYgQEAg
dm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgIE5vZGVUeXBlIG9w
ID0gbm9kZS0+b3AoKTsKIAogICAgIHVuc2lnbmVkIHJlZkNvdW50ID0gbm9kZS0+cmVmQ291bnQo
KTsKLSAgICBib29sIHNraXBwZWQgPSAhcmVmQ291bnQ7CiAgICAgYm9vbCBtdXN0R2VuZXJhdGUg
PSBub2RlLT5tdXN0R2VuZXJhdGUoKTsKICAgICBpZiAobXVzdEdlbmVyYXRlKQogICAgICAgICAt
LXJlZkNvdW50OwpAQCAtMTgxLDggKzE4MCw4IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QKICAgICAvLyAgICAgICAgIGFyZyMgLSBhbiBhcmd1bWVudCBudW1iZXIu
CiAgICAgLy8gICAgICAgICBpZCMgIC0gdGhlIGluZGV4IGluIHRoZSBDb2RlQmxvY2sgb2YgYW4g
aWRlbnRpZmllciB7IGlmIGNvZGVCbG9jayBpcyBwYXNzZWQgdG8gZHVtcCgpLCB0aGUgc3RyaW5n
IHJlcHJlc2VudGF0aW9uIGlzIGRpc3BsYXllZCB9LgogICAgIC8vICAgICAgICAgdmFyIyAtIHRo
ZSBpbmRleCBvZiBhIHZhciBvbiB0aGUgZ2xvYmFsIG9iamVjdCwgdXNlZCBieSBHZXRHbG9iYWxW
YXIvUHV0R2xvYmFsVmFyIG9wZXJhdGlvbnMuCi0gICAgb3V0LnByaW50ZigiJSA0ZDolczwlYyV1
OiIsIChpbnQpbm9kZS0+aW5kZXgoKSwgc2tpcHBlZCA/ICIgIHNraXBwZWQgICIgOiAiICAgICAg
ICAgICAiLCBtdXN0R2VuZXJhdGUgPyAnIScgOiAnICcsIHJlZkNvdW50KTsKLSAgICBpZiAobm9k
ZS0+aGFzUmVzdWx0KCkgJiYgIXNraXBwZWQgJiYgbm9kZS0+aGFzVmlydHVhbFJlZ2lzdGVyKCkp
CisgICAgb3V0LnByaW50ZigiJSA0ZDo8JWMldToiLCAoaW50KW5vZGUtPmluZGV4KCksIG11c3RH
ZW5lcmF0ZSA/ICchJyA6ICcgJywgcmVmQ291bnQpOworICAgIGlmIChub2RlLT5oYXNSZXN1bHQo
KSAmJiBub2RlLT5oYXNWaXJ0dWFsUmVnaXN0ZXIoKSAmJiBub2RlLT52aXJ0dWFsUmVnaXN0ZXIo
KS5pc1ZhbGlkKCkpCiAgICAgICAgIG91dC5wcmludChub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKSk7
CiAgICAgZWxzZQogICAgICAgICBvdXQucHJpbnQoIi0iKTsKQEAgLTM1MiwxMiArMzUxLDEwIEBA
IHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAKICAgICBvdXQu
cHJpbnQoIikiKTsKIAotICAgIGlmICghc2tpcHBlZCkgewotICAgICAgICBpZiAobm9kZS0+aGFz
VmFyaWFibGVBY2Nlc3NEYXRhKCp0aGlzKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKLSAgICAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1bGF0aW9u
RHVtcChub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpKSk7Ci0g
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmhhc0hlYXBQcmVkaWN0aW9uKCkpCi0gICAgICAgICAgICBv
dXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBTcGVjdWxhdGlvbkR1bXAobm9kZS0+Z2V0SGVhcFBy
ZWRpY3Rpb24oKSkpOwotICAgIH0KKyAgICBpZiAobm9kZS0+aGFzVmFyaWFibGVBY2Nlc3NEYXRh
KCp0aGlzKSAmJiBub2RlLT50cnlHZXRWYXJpYWJsZUFjY2Vzc0RhdGEoKSkKKyAgICAgICAgb3V0
LnByaW50KCIgIHByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPnRyeUdldFZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKKyAgICBlbHNlIGlmIChub2RlLT5oYXNI
ZWFwUHJlZGljdGlvbigpKQorICAgICAgICBvdXQucHJpbnQoIiAgcHJlZGljdGluZyAiLCBTcGVj
dWxhdGlvbkR1bXAobm9kZS0+Z2V0SGVhcFByZWRpY3Rpb24oKSkpOwogICAgIAogICAgIG91dC5w
cmludCgiXG4iKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZUZs
YWdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlRmxh
Z3MuaAkocmV2aXNpb24gMTcxMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlRmxhZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsOSBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKICNkZWZpbmUgTm9kZUlzRmx1c2hlZCAgICAgICAgICAgICAg
ICAgICAgMHg4MDAwIC8vIFVzZWQgYnkgR3JhcGg6OmNvbXB1dGVJc0ZsdXNoZWQoKSwgd2lsbCB0
ZWxsIHlvdSB3aGljaCBsb2NhbCBub2RlcyBhcmUgYmFja3dhcmRzLXJlYWNoYWJsZSBmcm9tIGEg
Rmx1c2guCiAKKyNkZWZpbmUgTm9kZU1pc2NGbGFnMSAgICAgICAgICAgICAgICAgICAweDEwMDAw
CisjZGVmaW5lIE5vZGVNaXNjRmxhZzIgICAgICAgICAgICAgICAgICAgMHgyMDAwMAorCiB0eXBl
ZGVmIHVpbnQzMl90IE5vZGVGbGFnczsKIAogc3RhdGljIGlubGluZSBib29sIGJ5dGVjb2RlVXNl
c0FzTnVtYmVyKE5vZGVGbGFncyBmbGFncykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE3MTI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNyArNjEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2V0QXJndW1lbnQsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oSGFyZFBoYW50b20sIE5vZGVNdXN0R2VuZXJhdGUpIC8q
IExpa2UgUGhhbnRvbSwgYnV0IHdlIG5ldmVyIHJlbW92ZSBhbnkgb2YgaXRzIGNoaWxkcmVuLiAq
LyBcCi0gICAgbWFjcm8oQ2hlY2ssIDApIC8qIFVzZWQgaWYgd2Ugd2FudCBqdXN0IGEgdHlwZSBj
aGVjayBidXQgbm90IGxpdmVuZXNzLiBEQ0UgZWl0aGVycyBraWxscyB0aGlzIG9yIGNvbnZlcnRz
IGl0IHRvIFBoYW50b20uICovXAorICAgIG1hY3JvKENoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSAv
KiBVc2VkIGlmIHdlIHdhbnQganVzdCBhIHR5cGUgY2hlY2sgYnV0IG5vdCBsaXZlbmVzcy4gTm9u
LWNoZWNraW5nIHVzZXMgd2lsbCBiZSByZW1vdmVkLiAqL1wKICAgICBtYWNybyhVcHNpbG9uLCBO
b2RlUmVsZXZhbnRUb09TUikgXAogICAgIG1hY3JvKFBoaSwgTm9kZVJlbGV2YW50VG9PU1IpIFwK
ICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRp
b25QaGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisj
aW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKKyNpbmNsdWRlICJERkdW
YXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3N0YXRpYyBjb25zdCBOb2RlRmxhZ3MgTm9k
ZU5lZWRzUGhhbnRvbSA9IE5vZGVNaXNjRmxhZzE7CitzdGF0aWMgY29uc3QgTm9kZUZsYWdzIE5v
ZGVOZWVkc0hhcmRQaGFudG9tID0gTm9kZU1pc2NGbGFnMjsKKworY2xhc3MgUGhhbnRvbUNhbm9u
aWNhbGl6YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgUGhhbnRvbUNh
bm9uaWNhbGl6YXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgs
ICJwaGFudG9tIGNhbm9uaWNhbGl6YXRpb24iKQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9v
bCBydW4oKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7Cisg
ICAgICAgIAorICAgICAgICBtX2dyYXBoLmNsZWFyRmxhZ3NPbkFsbE5vZGVzKE5vZGVOZWVkc1Bo
YW50b20gfCBOb2RlTmVlZHNIYXJkUGhhbnRvbSB8IE5vZGVSZWxldmFudFRvT1NSKTsKKyAgICAg
ICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9j
a3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBt
X2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgaWYgKCFibG9jaykKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgICAgIE5vZGUqIG5v
ZGUgPSBibG9jay0+YXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gTW92
SGludCkKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCktPm1lcmdlRmxhZ3MoTm9k
ZVJlbGV2YW50VG9PU1IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJs
b2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhibG9ja0luZGV4KTsKKyAgICAgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHNvdXJjZUlu
ZGV4ID0gMDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldEluZGV4ID0gMDsKKyAgICAgICAg
ICAgIHdoaWxlIChzb3VyY2VJbmRleCA8IGJsb2NrLT5zaXplKCkpIHsKKyAgICAgICAgICAgICAg
ICBOb2RlKiBub2RlID0gYmxvY2stPmF0KHNvdXJjZUluZGV4KyspOworICAgICAgICAgICAgICAg
IGlmIChub2RlLT5vcCgpID09IEhhcmRQaGFudG9tIHx8IG5vZGUtPm9wKCkgPT0gUGhhbnRvbSB8
fCBub2RlLT5vcCgpID09IENoZWNrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBBZGphY2VuY3lMaXN0OjpTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEVkZ2UgZWRnZSA9IG5vZGUtPmNoaWxkcmVuLmNoaWxkKGkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFlZGdlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gSGFyZFBoYW50
b20pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRnZS0+bWVyZ2VGbGFncyhOb2RlTmVl
ZHNIYXJkUGhhbnRvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGVkZ2UtPmZsYWdz
KCkgJiBOb2RlUmVsZXZhbnRUb09TUikgJiYgbm9kZS0+b3AoKSA9PSBQaGFudG9tKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBQaGFudG9tIG9uIGEgbm9kZSB0aGF0IGlzIFJl
bGV2YW50VG9PU1IgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGtlZXAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBhIFBoYW50b20gb24gdGhpcyBub2RlIGluc3RlYWQgb2YganVzdCBoYXZp
bmcgYSBDaGVjay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGdlLT5tZXJnZUZsYWdz
KE5vZGVOZWVkc1BoYW50b20pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGVkZ2Uud2lsbEhhdmVDaGVjaygpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBLZWVwIHRoZSB0eXBlIGNoZWNrLgorICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbi5y
ZW1vdmVFZGdlKGktLSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGJsb2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9IG5vZGU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBibG9jay0+cmVzaXplKHRhcmdldEluZGV4KTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgSW5zZXJ0aW9uU2V0IGluc2VydGlvblNldChtX2dy
YXBoKTsKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJs
b2NrcygpOyBibG9ja0luZGV4LS07KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9
IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IGJsb2NrLT5zaXplKCk7ICsrbm9kZUlu
ZGV4KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChub2RlSW5kZXgp
OworICAgICAgICAgICAgICAgIGlmIChub2RlLT5mbGFncygpICYgTm9kZU5lZWRzSGFyZFBoYW50
b20pIHsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggKyAxLCBTcGVjTm9uZSwgSGFyZFBoYW50b20s
IG5vZGUtPm9yaWdpbiwgbm9kZS0+ZGVmYXVsdEVkZ2UoKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChub2RlLT5mbGFncygpICYgTm9kZU5lZWRzUGhhbnRvbSkgeworICAgICAgICAgICAg
ICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGVJbmRleCArIDEsIFNwZWNOb25lLCBQaGFudG9tLCBub2RlLT5vcmlnaW4sIG5vZGUtPmRl
ZmF1bHRFZGdlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGluc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorfTsKKyAgICAKK2Jvb2wgcGVyZm9ybVBoYW50b21D
YW5vbmljYWxpemF0aW9uKEdyYXBoJiBncmFwaCkKK3sKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbigiREZHIFBoYW50b20gQ2Fub25pY2FsaXphdGlvbiBQaGFzZSIpOworICAgIHJl
dHVybiBydW5QaGFzZTxQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlPihncmFwaCk7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21DYW5vbmljYWxpemF0
aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Bo
YW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdQaGFudG9tQ2Fub25pY2FsaXphdGlvblBoYXNlX2gK
KyNkZWZpbmUgREZHUGhhbnRvbUNhbm9uaWNhbGl6YXRpb25QaGFzZV9oCisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFw
aDsKKworLy8gUmVwbGFjZXMgYWxsIHByZS1leGlzdGluZyBQaGFudG9tcyB3aXRoIENoZWNrcyBv
ciByZW1vdmVzIHRoZW0gaWYgdGhlIENoZWNrIGlzIHVubmVjZXNzYXJ5LiBJZgorLy8gdGhlIFBo
YW50b20gd2FzIG5lY2Vzc2FyeSAoaXQgdXNlcyBhIG5vZGUgdGhhdCBpcyByZWxldmFudCB0byBP
U1IpIHRoZW4gdGhlIFBoYW50b20gaXMgaG9pc3RlZAorLy8gdG8ganVzdCBiZWxvdyB0aGUgbm9k
ZS4KKy8vCisvLyBUaGlzIHBoYXNlIGlzIG9ubHkgdmFsaWQgaW4gU1NBLCBiZWNhdXNlIGl0J3Mg
b25seSBpbiBTU0EgdGhhdCBQaGFudG9tcyBhcmUgaWdub3JlZCBmb3IgdGhlCisvLyBwdXJwb3Nl
IG9mIGxpdmVuZXNzLWF0LXNvbWUtcG9pbnQgYW5kIGFyZSBvbmx5IHVzZWQgZm9yIGFic29sdXRl
IGxpdmVuZXNzLgorLy8KKy8vIFRoaXMgcGhhc2UgbWFrZXMgYSBsb3Qgb2YgdGhpbmdzIGVhc2ll
ciwgbGlrZSBDRkcgc2ltcGxpZmljYXRpb246IHlvdSBkb24ndCBoYXZlIHRvIGluc2VydCBhbnkK
Ky8vIHBoYW50b21zIHdoZW4gamV0dGlzb25pbmcgYSBDRkcgZWRnZS4KKworYm9vbCBwZXJmb3Jt
UGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oR3JhcGgmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdQaGFudG9t
Q2Fub25pY2FsaXphdGlvblBoYXNlX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGhhbnRvbVJlbW92YWxQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAkocmV2aXNpb24gMTcxMjgzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTYsMTQgKzk2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgIE5v
ZGUqIGxhc3ROb2RlID0gbnVsbHB0cjsKICAgICAgICAgICAgIHdoaWxlIChzb3VyY2VJbmRleCA8
IGJsb2NrLT5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0
KHNvdXJjZUluZGV4KyspOwotICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFBoYW50
b20pIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIFBoYW50b206IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROb2RlICYm
IChsYXN0Tm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gbm9kZS0+b3JpZ2luLmZvckV4aXQgfHwgKGxh
c3ROb2RlLT5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhc3ROb2RlID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgRWRnZSBlZGdlID0gbm9kZS0+Y2hpbGRyZW4uY2hpbGQoaSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWVkZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZS51c2VLaW5kKCkgIT0gVW50eXBl
ZFVzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hlY2soKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gS2VlcCB0aGUgdHlwZSBj
aGVjay4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLT5mbGFncygpICYgTm9kZVJl
bGV2YW50VG9PU1IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZvdW5kID0g
ZmFsc2U7CkBAIC0xMjMsOCArMTI0LDM4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGRyZW4uaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgY2FzZSBDaGVjazogeworICAgICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBFZGdlIGVkZ2UgPSBub2RlLT5jaGlsZHJlbi5jaGlsZChpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghZWRnZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlLndpbGxIYXZlQ2hl
Y2soKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlbW92ZUVkZ2UoaS0tKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZHJlbi5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBjYXNlIEhhcmRQaGFudG9tOiB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZHJlbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbGFzdE5vZGUgPSBub2Rl
OwogICAgICAgICAgICAgICAgIGJsb2NrLT5hdCh0YXJnZXRJbmRleCsrKSA9IG5vZGU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BoYW50b21SZW1vdmFsUGhh
c2UuaAkocmV2aXNpb24gMTcxMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
aGFudG9tUmVtb3ZhbFBoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDkgQEAgY2xh
c3MgR3JhcGg7CiAKIC8vIENsZWFucyB1cCB1bm5lY2Vzc2FyeSBQaGFudG9tcyBhbmQgUGhhbnRv
biBjaGlsZHJlbi4gVGhpcyByZWR1Y2VzIGxpdmUgcmFuZ2VzLCBidXQgYWxzbywgaXQKIC8vIGVs
aW1pbmF0ZXMgbWFueSBQaGFudG9tcyBlbnRpcmVseS4gVGhpcyBpbnZhbGlkYXRlcyBsaXZlbmVz
cyBhbmFseXNpcy4KKy8vCisvLyBUaGlzIHNob3VsZCB3b3JrIG92ZXIgYWxsIElSIGZvcm1zOyBo
b3dldmVyLCBpbiBTU0EgZm9ybSBpdCdzIGJldHRlciB0byBydW4KKy8vIFBoYW50b21DYW5vbmlj
YWxpemF0aW9uUGhhc2Ugc2luY2UgaXQncyBtb3JlIHBvd2VyZnVsLgogCiBib29sIHBlcmZvcm1Q
aGFudG9tUmVtb3ZhbChHcmFwaCYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAJKHJldmlzaW9uIDE3MTI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJE
RkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR09TUkF2YWlsYWJp
bGl0eUFuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25Q
aGFzZS5oIgorI2luY2x1ZGUgIkRGR1BoYW50b21DYW5vbmljYWxpemF0aW9uUGhhc2UuaCIKICNp
bmNsdWRlICJERkdQaGFudG9tUmVtb3ZhbFBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUHJlZGljdGlv
bkluamVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuaCIKQEAgLTMxMCw3ICszMTEsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29t
cGlsZUluVGhyCiAgICAgICAgICAgICByZXR1cm4gRmFpbFBhdGg7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIHBlcmZvcm1QaGFudG9tUmVtb3ZhbChkZmcpOworICAgICAgICBwZXJmb3Jt
UGhhbnRvbVJlbW92YWwoZGZnKTsgLy8gUmVkdWNlIHRoZSBncmFwaCBzaXplIGEgYml0LgogICAg
ICAgICBwZXJmb3JtQ3JpdGljYWxFZGdlQnJlYWtpbmcoZGZnKTsKICAgICAgICAgcGVyZm9ybUxv
b3BQcmVIZWFkZXJDcmVhdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ1BTUmV0aHJlYWRpbmco
ZGZnKTsKQEAgLTMyMCw2ICszMjEsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29t
cGlsZUluVGhyCiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKGRmZyk7CiAgICAgICAg
IHBlcmZvcm1DRkEoZGZnKTsKICAgICAgICAgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwor
ICAgICAgICBwZXJmb3JtUGhhbnRvbUNhbm9uaWNhbGl6YXRpb24oZGZnKTsgLy8gUmVkdWNlIHRo
ZSBncmFwaCBzaXplIGEgbG90LgogICAgICAgICBpZiAocGVyZm9ybVN0cmVuZ3RoUmVkdWN0aW9u
KGRmZykpIHsKICAgICAgICAgICAgIC8vIFN0YXRlLWF0LXRhaWwgYW5kIHN0YXRlLWF0LWhlYWQg
d2lsbCBiZSBpbnZhbGlkIGlmIHdlIGRpZCBzdHJlbmd0aCByZWR1Y3Rpb24gc2luY2UKICAgICAg
ICAgICAgIC8vIGl0IG1pZ2h0IGluY3JlYXNlIGxpdmUgcmFuZ2VzLgpAQCAtMzI3LDcgKzMyOSw3
IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgICAg
IHBlcmZvcm1DRkEoZGZnKTsKICAgICAgICAgfQogICAgICAgICBwZXJmb3JtTElDTShkZmcpOwot
ICAgICAgICBwZXJmb3JtUGhhbnRvbVJlbW92YWwoZGZnKTsKKyAgICAgICAgcGVyZm9ybVBoYW50
b21DYW5vbmljYWxpemF0aW9uKGRmZyk7CiAgICAgICAgIHBlcmZvcm1JbnRlZ2VyQ2hlY2tDb21i
aW5pbmcoZGZnKTsKICAgICAgICAgcGVyZm9ybUdsb2JhbENTRShkZmcpOwogICAgICAgICAKQEAg
LTMzNiw3ICszMzgsNyBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6Y29tcGlsZUluVGhy
CiAgICAgICAgIGRmZy5tX2ZpeHBvaW50U3RhdGUgPSBGaXhwb2ludENvbnZlcmdlZDsKICAgICAg
ICAgCiAgICAgICAgIHBlcmZvcm1TdG9yZUJhcnJpZXJFbGlzaW9uKGRmZyk7Ci0gICAgICAgIHBl
cmZvcm1QaGFudG9tUmVtb3ZhbChkZmcpOworICAgICAgICBwZXJmb3JtUGhhbnRvbUNhbm9uaWNh
bGl6YXRpb24oZGZnKTsKICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMoZGZnKTsKICAg
ICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVGVExP
U1JFeGl0TGl2ZW5lc3MoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTcxMjgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc3OSw4ICsxNzc5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgTW92SGludDoKLSAgICBjYXNlIFpvbWJp
ZUhpbnQ6Ci0gICAgY2FzZSBDaGVjazogeworICAgIGNhc2UgWm9tYmllSGludDogewogICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC00NTcxLDYgKzQ1NzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBIYXJkUGhhbnRvbToKKyAgICBjYXNl
IENoZWNrOgogICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2ppdC5ncmFwaCgpLCBu
b2RlLCBzcGVjdWxhdGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJlYWs7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDE3MTI4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NjIsOCArMTg2Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgTW92SGludDoKLSAgICBjYXNlIFpvbWJpZUhpbnQ6Ci0gICAgY2FzZSBD
aGVjazogeworICAgIGNhc2UgWm9tYmllSGludDogewogICAgICAgICBERkdfQ1JBU0gobV9qaXQu
Z3JhcGgoKSwgbm9kZSwgIlVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICBicmVhazsKICAgICB9
CkBAIC00NTU5LDYgKzQ1NTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBIYXJkUGhhbnRvbToKKyAgICBj
YXNlIENoZWNrOgogICAgICAgICBERkdfTk9ERV9ET19UT19DSElMRFJFTihtX2ppdC5ncmFwaCgp
LCBub2RlLCBzcGVjdWxhdGUpOwogICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAkocmV2aXNpb24gMTcxMjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExMb3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NSw2ICszOTUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUGhhbnRvbToKICAgICAg
ICAgY2FzZSBIYXJkUGhhbnRvbToKKyAgICAgICAgY2FzZSBDaGVjazoKICAgICAgICAgICAgIGNv
bXBpbGVQaGFudG9tKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUb1RoaXM6
CkBAIC01MjE1LDcgKzUyMTYsNyBAQCBwcml2YXRlOgogICAgIAogICAgIExWYWx1ZSBsb3dKU1Zh
bHVlKEVkZ2UgZWRnZSwgT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSBtb2RlID0gQXV0b21hdGljT3Bl
cmFuZFNwZWN1bGF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChtb2RlLCBtb2Rl
ID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBlZGdlLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1vZGUgPT0gTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgIWlzRG91YmxlKGVkZ2UudXNlS2luZCgp
KSk7CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBlZGdlLnVzZUtpbmQoKSAh
PSBJbnQ1MlJlcFVzZSk7CiAgICAgICAgIApAQCAtNTYwOCw3ICs1NjA5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1
ZShlZGdlKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENh
c2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoInNwZWN1bGF0ZU9iamVjdE9yT3RoZXIgY2VsbCBj
YXNlIikpOwogICAgICAgICBMQmFzaWNCbG9jayBwcmltaXRpdmVDYXNlID0gRlRMX05FV19CTE9D
SyhtX291dCwgKCJzcGVjdWxhdGVPYmplY3RPck90aGVyIHByaW1pdGl2ZSBjYXNlIikpOwo=
</data>
<flag name="review"
          id="259758"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>