<?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>121142</bug_id>
          
          <creation_ts>2013-09-10 22:55:12 -0700</creation_ts>
          <short_desc>VariableAccessData::flushFormat() should be the universal way of deciding how to speculate on stores to locals and how locals are formatted</short_desc>
          <delta_ts>2013-09-11 14:23:53 -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>121064</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>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>927648</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-10 22:55:12 -0700</bug_when>
    <thetext>The FTL already used it, now the DFG should, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927649</commentid>
    <comment_count>1</comment_count>
      <attachid>211283</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-10 23:12:09 -0700</bug_when>
    <thetext>Created attachment 211283
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927805</commentid>
    <comment_count>2</comment_count>
      <attachid>211283</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-09-11 08:57:01 -0700</bug_when>
    <thetext>Comment on attachment 211283
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927979</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-09-11 14:23:53 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/155564</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211283</attachid>
            <date>2013-09-10 23:12:09 -0700</date>
            <delta_ts>2013-09-11 08:57:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>38207</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU1NTAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEzLTA5LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhOjpmbHVzaEZvcm1hdCgpIHNob3VsZCBiZSB0aGUgdW5pdmVyc2Fs
IHdheSBvZiBkZWNpZGluZyBob3cgdG8gc3BlY3VsYXRlIG9uIHN0b3JlcyB0byBsb2NhbHMgYW5k
IGhvdyBsb2NhbHMgYXJlIGZvcm1hdHRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxMTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBNYWtlIGV2ZXJ5b25lIHJlbHkgb24gVmFyaWFibGVB
Y2Nlc3NEYXRhOjpmbHVzaEZvcm1hdCgpIGluc3RlYWQgb2YgdHJ5aW5nIHRvCisgICAgICAgIGNv
bXB1dGUgdGhhdCBpbmZvcm1hdGlvbiBmcm9tIHNjcmF0Y2guIFRoZSBGVEwgYWxyZWFkeSB1c2Vk
IGZsdXNoRm9ybWF0KCksIG5vdworICAgICAgICB0aGUgREZHIGRvZXMsIHRvby4KKworICAgICAg
ICAqIGRmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1l
bnRQb3NpdGlvbjo6c29tZVZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBv
c2l0aW9uOjpmbHVzaEZvcm1hdCk6CisgICAgICAgICogZGZnL0RGR0NTRVBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cFNldExvY2Fsc0luQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6Om1l
cmdlU3RhdGVBdFRhaWwpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpub3RpY2VPU1JFbnRyeSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUlubGluZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUN1cnJlbnRCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJndW1lbnRUeXBlcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYWx1ZVNvdXJj
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVlU291cmNlOjpmb3JGbHVzaEZvcm1hdCk6Cisg
ICAgICAgICogZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YUR1bXA6OmR1bXApOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVTZXRMb2NhbCk6CisKIDIwMTMtMDktMTAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBQcm9wYWdhdGUgdGhlIEludDQ4IHN0dWZmIGludG8gdGhlIHByZWRp
Y3Rpb24gcHJvcGFnYXRvci4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRQb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRQb3NpdGlvbi5oCShyZXZpc2lvbiAxNTU0OTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NiArNDgsMjAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQodmFyaWFibGUp
OwogICAgIH0KICAgICAKKyAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHNvbWVWYXJpYWJsZSgpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobV92YXJpYWJsZXMuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBtX3ZhcmlhYmxlc1swXTsKKyAgICB9CisgICAg
CisgICAgRmx1c2hGb3JtYXQgZmx1c2hGb3JtYXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYg
KFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBzb21lVmFyaWFibGUoKSkKKyAgICAgICAg
ICAgIHJldHVybiB2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKTsKKyAgICAgICAgcmV0dXJuIERlYWRG
bHVzaDsKKyAgICB9CisgICAgCiAgICAgYm9vbCBtZXJnZVNob3VsZE5ldmVyVW5ib3goYm9vbCBz
aG91bGROZXZlclVuYm94KQogICAgIHsKICAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0KG1fc2hv
dWxkTmV2ZXJVbmJveCwgbV9zaG91bGROZXZlclVuYm94IHwgc2hvdWxkTmV2ZXJVbmJveCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24g
MTU1NDk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNTUsMTkgKzExNTUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGlmIChjc2VNb2RlID09IE5vcm1hbENTRSkgewogICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8g
YmUgY29uc2VydmF0aXZlIGF0IHRoaXMgdGltZTsgaWYgdGhlIFNldExvY2FsIGhhcyBhbnkgY2hh
bmNlIG9mIHBlcmZvcm1pbmcKICAgICAgICAgICAgICAgICAvLyBhbnkgc3BlY3VsYXRpb25zIHRo
ZW4gd2UgY2Fubm90IGRvIGFueXRoaW5nLgotICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFj
Y2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBDYXB0dXJl
ZCBTZXRMb2NhbHMgbmV2ZXIgc3BlY3VsYXRlIGFuZCBoZW5jZSBuZXZlciBleGl0LgotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZUFjY2Vz
c0RhdGEtPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXlTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5mbHVzaEZv
cm1hdCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChmb3JtYXQgIT0gRGVhZEZsdXNoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZm9ybWF0ICE9IEZsdXNoZWRKU1ZhbHVlKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYg
KHJlcGxhY2VtZW50LT5jYW5FeGl0KCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAxNTU0OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTcxLDIyICsxMTcxLDI1IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlm
ICh2YXJpYWJsZS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAodmFyaWFibGUtPmZsdXNoRm9ybWF0KCkpIHsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEpT
VmFsdWU6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRE
b3VibGU6CiAgICAgICAgICAgICAgICAgZml4RG91YmxlRWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNo
aWxkMSgpLCBGb3J3YXJkU3BlY3VsYXRpb24pOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0ZWRUeXBlID0gdmFyaWFibGUtPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7Ci0gICAg
ICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAg
ICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPEludDMyVXNlPihub2RlLT5jaGls
ZDEoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0NlbGxTcGVjdWxhdGlvbihwcmVkaWN0ZWRU
eXBlKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZENl
bGw6CiAgICAgICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1
bGF0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5i
b3hJZlByb2ZpdGFibGU8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lv
biAxNTU0OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QKIAogICAgIGlmICghc2tpcHBlZCkgewogICAgICAgICBpZiAobm9kZS0+
aGFzVmFyaWFibGVBY2Nlc3NEYXRhKCp0aGlzKSkKLSAgICAgICAgICAgIG91dC5wcmludCgiICBw
cmVkaWN0aW5nICIsIFNwZWN1bGF0aW9uRHVtcChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
cHJlZGljdGlvbigpKSwgbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJs
ZUZvcm1hdCgpID8gIiwgZm9yY2luZyBkb3VibGUiIDogIiIpOworICAgICAgICAgICAgb3V0LnBy
aW50KCIgIHByZWRpY3RpbmcgIiwgU3BlY3VsYXRpb25EdW1wKG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKICAgICAgICAgZWxzZSBpZiAobm9kZS0+aGFzSGVhcFBy
ZWRpY3Rpb24oKSkKICAgICAgICAgICAgIG91dC5wcmludCgiICBwcmVkaWN0aW5nICIsIFNwZWN1
bGF0aW9uRHVtcChub2RlLT5nZXRIZWFwUHJlZGljdGlvbigpKSk7CiAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0
ZS5jcHAJKHJldmlzaW9uIDE1NTQ5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTEsMTEgKzMxMSwx
NSBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUCiAgICAgICAgIGNh
c2UgU2V0TG9jYWw6CiAgICAgICAgICAgICAvLyBUaGUgYmxvY2sgc2V0cyB0aGUgdmFyaWFibGUs
IGFuZCBwb3RlbnRpYWxseSByZWZpbmVzIGl0LCBib3RoCiAgICAgICAgICAgICAvLyBiZWZvcmUg
YW5kIGFmdGVyIHNldHRpbmcgaXQuCi0gICAgICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgdW5uZWNlc3NhcmlseSBsb3NlcyBwcmVjaXNpb24uCi0gICAgICAgICAgICAg
ICAgc291cmNlLnNldFR5cGUoU3BlY0RvdWJsZSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgaWYgKG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09IEZsdXNoZWREb3VibGUpIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoIShzb3VyY2UubV90eXBlICYgflNwZWNOdW1iZXIpKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoISEoc291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSA9
PSAhIShzb3VyY2UubV90eXBlICYgU3BlY0ludDMyKSk7CisgICAgICAgICAgICAgICAgaWYgKCEo
c291cmNlLm1fdHlwZSAmIH5TcGVjRG91YmxlKSkgeworICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UubWVyZ2UoU3BlY0ludDQ4QXNEb3VibGUpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2Uu
ZmlsdGVyKFNwZWNEb3VibGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICNp
ZiBERkdfRU5BQkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCiAgICAgICAgICAgICBkYXRh
TG9nRigiICAgICAgICAgIFNldHRpbmcgdG8gIik7CiAgICAgICAgICAgICBzb3VyY2UuZHVtcChX
VEY6OmRhdGFGaWxlKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAkocmV2aXNpb24gMTU1NDk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsNyArNDUxLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFk
LmxvY2FsKGxvY2FsKTsKICAgICAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+c2hvdWxkR2Vu
ZXJhdGUoKSkKICAgICAgICAgICAgICAgICBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5sb2NhbChs
b2NhbCkubWFrZUhlYXBUb3AoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSkKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpID09IEZsdXNoZWRE
b3VibGUpCiAgICAgICAgICAgICAgICAgZW50cnktPm1fbG9jYWxzRm9yY2VkRG91YmxlLnNldChs
b2NhbCk7CiAgICAgICAgIH0KICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE1NTQ5NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE5OTcsNyArMTk5Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURv
dWJsZUZvcm1hdCgpKSB7CisgICAgICAgIHN3aXRjaCAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCktPmZsdXNoRm9ybWF0KCkpIHsKKyAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOiB7CiAgICAg
ICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSwgcmVzdWx0LmZw
cigpKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2Rl
LT52aXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTIwMDYsNyArMjAwNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkp
IHsKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAKQEAg
LTIwMTgsNyArMjAxOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
aXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKSkgeworICAgICAgICBjYXNlIEZsdXNoZWRD
ZWxsOiB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2FsKCkpLCBy
ZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgCkBAIC0yMDI5LDggKzIwMzAsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBnZW5lcmF0aW9u
SW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKS5pbml0Q2VsbChub2RlLCBu
b2RlLT5yZWZDb3VudCgpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbih2YWx1ZS5t
X3R5cGUpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjogewog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLT5sb2NhbCgpKSwgcmVzdWx0Lmdw
cigpKTsKICAgICAgICAgICAgIApAQCAtMjA0MSwxOSArMjA0MiwyNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb0Zy
b21WaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKS5pbml0Qm9vbGVhbihub2RlLCBub2Rl
LT5yZWZDb3VudCgpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLQotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBHUFJUZW1w
b3JhcnkgdGFnKHRoaXMpOwotICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0LmxvYWQz
MihKSVRDb21waWxlcjo6dGFnRm9yKG5vZGUtPmxvY2FsKCkpLCB0YWcuZ3ByKCkpOwotCi0gICAg
ICAgIC8vIExpa2UganNWYWx1ZVJlc3VsdCwgYnV0IGRvbid0IHVzZUNoaWxkcmVuIC0gb3VyIGNo
aWxkcmVuIGFyZSBwaGkgbm9kZXMsCi0gICAgICAgIC8vIGFuZCBkb24ndCByZXByZXNlbnQgdmFs
dWVzIHdpdGhpbiB0aGlzIGRhdGFmbG93IHdpdGggdmlydHVhbCByZWdpc3RlcnMuCi0gICAgICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIo
KTsKLSAgICAgICAgbV9ncHJzLnJldGFpbihyZXN1bHQuZ3ByKCksIHZpcnR1YWxSZWdpc3Rlciwg
U3BpbGxPcmRlckpTKTsKLSAgICAgICAgbV9ncHJzLnJldGFpbih0YWcuZ3ByKCksIHZpcnR1YWxS
ZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKLQotICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKS5pbml0SlNWYWx1ZShub2RlLCBub2RlLT5yZWZD
b3VudCgpLCB0YWcuZ3ByKCksIHJlc3VsdC5ncHIoKSwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOiB7CisgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRhZyh0aGlzKTsK
KyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLT5s
b2NhbCgpKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6dGFnRm9yKG5vZGUtPmxvY2FsKCkpLCB0YWcuZ3ByKCkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBMaWtlIGpzVmFsdWVSZXN1bHQsIGJ1dCBkb24ndCB1c2VDaGlsZHJlbiAt
IG91ciBjaGlsZHJlbiBhcmUgcGhpIG5vZGVzLAorICAgICAgICAgICAgLy8gYW5kIGRvbid0IHJl
cHJlc2VudCB2YWx1ZXMgd2l0aGluIHRoaXMgZGF0YWZsb3cgd2l0aCB2aXJ0dWFsIHJlZ2lzdGVy
cy4KKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52
aXJ0dWFsUmVnaXN0ZXIoKTsKKyAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0Lmdwcigp
LCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgICAgICBtX2dwcnMucmV0
YWluKHRhZy5ncHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIodmlydHVh
bFJlZ2lzdGVyKS5pbml0SlNWYWx1ZShub2RlLCBub2RlLT5yZWZDb3VudCgpLCB0YWcuZ3ByKCks
IHJlc3VsdC5ncHIoKSwgRGF0YUZvcm1hdEpTKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgICAgICAKQEAgLTIwODksMTggKzIwOTcsNDQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBzdGFjay4KICAgICAgICAgY29tcGlsZU1vdkhp
bnQobm9kZSk7CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRh
KCktPnNob3VsZFVuYm94SWZQb3NzaWJsZSgpKSB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7Ci0gICAgICAgICAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUuZnByKCksIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpKTsKLSAgICAgICAgICAgICAgICBub1Jlc3Vs
dChub2RlKTsKLSAgICAgICAgICAgICAgICAvLyBJbmRpY2F0ZSB0aGF0IGl0J3Mgbm8gbG9uZ2Vy
IG5lY2Vzc2FyeSB0byByZXRyaWV2ZSB0aGUgdmFsdWUgb2YKLSAgICAgICAgICAgICAgICAvLyB0
aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJzIG9yIG90aGVyIGxvY2F0aW9ucyBp
biB0aGUgc3RhY2ssCi0gICAgICAgICAgICAgICAgLy8gYnV0IHRoYXQgaXQgaXMgc3RvcmVkIGFz
IGEgZG91YmxlLgotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCks
IFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjaykpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGVkVHlwZSA9
IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpOwor
ICAgICAgICBzd2l0Y2ggKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgp
KSB7CisgICAgICAgIGNhc2UgRmx1c2hlZERvdWJsZTogeworICAgICAgICAgICAgU3BlY3VsYXRl
RG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBt
X2ppdC5zdG9yZURvdWJsZSh2YWx1ZS5mcHIoKSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9k
ZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgICAgICAv
LyBJbmRpY2F0ZSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSB0aGUg
dmFsdWUgb2YKKyAgICAgICAgICAgIC8vIHRoaXMgYnl0ZWNvZGUgdmFyaWFibGUgZnJvbSByZWdp
c3RlcnMgb3Igb3RoZXIgbG9jYXRpb25zIGluIHRoZSBzdGFjaywKKyAgICAgICAgICAgIC8vIGJ1
dCB0aGF0IGl0IGlzIHN0b3JlZCBhcyBhIGRvdWJsZS4KKyAgICAgICAgICAgIHJlY29yZFNldExv
Y2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjaykpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZsdXNo
ZWRJbnQzMjogeworICAgICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUuZ3ByKCks
IEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgIG5v
UmVzdWx0KG5vZGUpOworICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwg
VmFsdWVTb3VyY2UoSW50MzJJbkpTU3RhY2spKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDogeworICAgICAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CisgICAgICAgICAgICBtX2ppdC5z
dG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLT5sb2NhbCgpKSk7
CisgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2Fs
KG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkQm9v
bGVhbjogeworICAgICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwg
SklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbm9S
ZXN1bHQobm9kZSk7CisgICAgICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBW
YWx1ZVNvdXJjZShCb29sZWFuSW5KU1N0YWNrKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6IHsKICAgICAg
ICAgICAgIGlmIChnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0dWFsUmVnaXN0ZXIobm9kZS0+Y2hpbGQx
KCktPnZpcnR1YWxSZWdpc3RlcigpKS5yZWdpc3RlckZvcm1hdCgpID09IERhdGFGb3JtYXREb3Vi
bGUpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAg
ICAgIG1faml0LnN0b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cihub2RlLT5sb2NhbCgpKSk7CkBAIC0yMTA4LDQzICsyMTQyLDI3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICByZWNvcmRTZXRMb2Nh
bChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc0ludDMyU3Bl
Y3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVJbnQz
Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxv
Y2FsKCkpKTsKLSAgICAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKLSAgICAgICAgICAgICAg
ICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFj
aykpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwotICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2Fs
KCkpKTsKLSAgICAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKLSAgICAgICAgICAgICAgICBy
ZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShDZWxsSW5KU1N0YWNrKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
aXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBT
cGVjdWxhdGVCb29sZWFuT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OnBheWxv
YWRGb3Iobm9kZS0+bG9jYWwoKSkpOwotICAgICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwot
ICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNl
KEJvb2xlYW5JbkpTU3RhY2spKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2Fk
R1BSKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAg
ICAgIG1faml0LnN0b3JlMzIodmFsdWUudGFnR1BSKCksIEpJVENvbXBpbGVyOjp0YWdGb3Iobm9k
ZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgICAgICBy
ZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjaykp
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJZiB3ZSdyZSBzdG9yaW5nIGFuIGFyZ3Vt
ZW50cyBvYmplY3QgdGhhdCBoYXMgYmVlbiBvcHRpbWl6ZWQgYXdheSwKKyAgICAgICAgICAgIC8v
IG91ciB2YXJpYWJsZSBldmVudCBzdHJlYW0gZm9yIE9TUiBleGl0IG5vdyByZWZsZWN0cyB0aGUg
b3B0aW1pemVkCisgICAgICAgICAgICAvLyB2YWx1ZSAoSlNWYWx1ZSgpKS4gT24gdGhlIHNsb3cg
cGF0aCwgd2Ugd2FudCBhbiBhcmd1bWVudHMgb2JqZWN0CisgICAgICAgICAgICAvLyBpbnN0ZWFk
LiBXZSBhZGQgYW4gYWRkaXRpb25hbCBtb3ZlIGhpbnQgdG8gc2hvdyBPU1IgZXhpdCB0aGF0IGl0
CisgICAgICAgICAgICAvLyBuZWVkcyB0byByZWNvbnN0cnVjdCB0aGUgYXJndW1lbnRzIG9iamVj
dC4KKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFudG9tQXJndW1l
bnRzKQorICAgICAgICAgICAgICAgIGNvbXBpbGVNb3ZIaW50KG5vZGUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2FkR1BSKCksIEpJVENvbXBp
bGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxvY2FsKCkpKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMih2
YWx1ZS50YWdHUFIoKSwgSklUQ29tcGlsZXI6OnRhZ0Zvcihub2RlLT5sb2NhbCgpKSk7Ci0gICAg
ICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgp
LCBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjaykpOwotCi0gICAgICAgIC8vIElmIHdlJ3JlIHN0
b3JpbmcgYW4gYXJndW1lbnRzIG9iamVjdCB0aGF0IGhhcyBiZWVuIG9wdGltaXplZCBhd2F5LAot
ICAgICAgICAvLyBvdXIgdmFyaWFibGUgZXZlbnQgc3RyZWFtIGZvciBPU1IgZXhpdCBub3cgcmVm
bGVjdHMgdGhlIG9wdGltaXplZAotICAgICAgICAvLyB2YWx1ZSAoSlNWYWx1ZSgpKS4gT24gdGhl
IHNsb3cgcGF0aCwgd2Ugd2FudCBhbiBhcmd1bWVudHMgb2JqZWN0Ci0gICAgICAgIC8vIGluc3Rl
YWQuIFdlIGFkZCBhbiBhZGRpdGlvbmFsIG1vdmUgaGludCB0byBzaG93IE9TUiBleGl0IHRoYXQg
aXQKLSAgICAgICAgLy8gbmVlZHMgdG8gcmVjb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBvYmplY3Qu
Ci0gICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFudG9tQXJndW1lbnRzKQot
ICAgICAgICAgICAgY29tcGlsZU1vdkhpbnQobm9kZSk7Ci0KICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE1NTQ5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NjQsNyArMTk2
NCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+dmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7CisgICAgICAgIHN3aXRj
aCAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPmZsdXNoRm9ybWF0KCkpIHsKKyAgICAgICAg
Y2FzZSBGbHVzaGVkRG91YmxlOiB7CiAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cihub2RlLT5sb2NhbCgpKSwgcmVzdWx0LmZwcigpKTsKICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52aXJ0dWFsUmVnaXN0ZXIoKTsKQEAgLTE5NzMs
NyArMTk3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpIHsKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS0+bG9jYWwoKSksIHJlc3Vs
dC5ncHIoKSk7CiAgICAgICAgICAgICAKQEAgLTE5ODQsMjQgKzE5ODUsMjcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZ2VuZXJhdGlvbklu
Zm9Gcm9tVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlcikuaW5pdEludGVnZXIobm9kZSwg
bm9kZS0+cmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0KLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgbV9q
aXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpLCByZXN1bHQu
Z3ByKCkpOwotCi0gICAgICAgIC8vIExpa2UganNWYWx1ZVJlc3VsdCwgYnV0IGRvbid0IHVzZUNo
aWxkcmVuIC0gb3VyIGNoaWxkcmVuIGFyZSBwaGkgbm9kZXMsCi0gICAgICAgIC8vIGFuZCBkb24n
dCByZXByZXNlbnQgdmFsdWVzIHdpdGhpbiB0aGlzIGRhdGFmbG93IHdpdGggdmlydHVhbCByZWdp
c3RlcnMuCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLT52
aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgbV9ncHJzLnJldGFpbihyZXN1bHQuZ3ByKCksIHZp
cnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKLQotICAgICAgICBEYXRhRm9ybWF0IGZvcm1h
dDsKLSAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpCi0gICAgICAg
ICAgICBmb3JtYXQgPSBEYXRhRm9ybWF0SlNDZWxsOwotICAgICAgICBlbHNlIGlmIChpc0Jvb2xl
YW5TcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKQotICAgICAgICAgICAgZm9ybWF0ID0gRGF0YUZv
cm1hdEpTQm9vbGVhbjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZm9ybWF0ID0gRGF0YUZv
cm1hdEpTOwotCi0gICAgICAgIGdlbmVyYXRpb25JbmZvRnJvbVZpcnR1YWxSZWdpc3Rlcih2aXJ0
dWFsUmVnaXN0ZXIpLmluaXRKU1ZhbHVlKG5vZGUsIG5vZGUtPnJlZkNvdW50KCksIHJlc3VsdC5n
cHIoKSwgZm9ybWF0KTsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQ2NChK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgLy8gTGlrZSBqc1ZhbHVlUmVzdWx0LCBidXQgZG9uJ3Qg
dXNlQ2hpbGRyZW4gLSBvdXIgY2hpbGRyZW4gYXJlIHBoaSBub2RlcywKKyAgICAgICAgICAgIC8v
IGFuZCBkb24ndCByZXByZXNlbnQgdmFsdWVzIHdpdGhpbiB0aGlzIGRhdGFmbG93IHdpdGggdmly
dHVhbCByZWdpc3RlcnMuCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lz
dGVyID0gbm9kZS0+dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgICAgICBtX2dwcnMucmV0YWlu
KHJlc3VsdC5ncHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKKyAgICAgICAgICAgIGlmIChpc0Nl
bGxTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IERh
dGFGb3JtYXRKU0NlbGw7CisgICAgICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlv
bih2YWx1ZS5tX3R5cGUpKQorICAgICAgICAgICAgICAgIGZvcm1hdCA9IERhdGFGb3JtYXRKU0Jv
b2xlYW47CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9ybWF0ID0gRGF0YUZv
cm1hdEpTOworICAgICAgICAgICAgCisgICAgICAgICAgICBnZW5lcmF0aW9uSW5mb0Zyb21WaXJ0
dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyKS5pbml0SlNWYWx1ZShub2RlLCBub2RlLT5yZWZD
b3VudCgpLCByZXN1bHQuZ3ByKCksIGZvcm1hdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTIwMzcsNTYgKzIwNDEsNjQgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBzdGFjay4K
ICAgICAgICAgY29tcGlsZU1vdkhpbnQobm9kZSk7CiAgICAgICAgIAotICAgICAgICBpZiAobm9k
ZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVuYm94SWZQb3NzaWJsZSgpKSB7Ci0gICAg
ICAgICAgICBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZv
cm1hdCgpKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUo
dmFsdWUuZnByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpKTsKLSAg
ICAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKLSAgICAgICAgICAgICAgICAvLyBJbmRpY2F0
ZSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSB0aGUgdmFsdWUgb2YK
LSAgICAgICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZyb20gcmVnaXN0ZXJz
IG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0aGUgc3RhY2ssCi0gICAgICAgICAgICAgICAgLy8gYnV0
IHRoYXQgaXQgaXMgc3RvcmVkIGFzIGEgZG91YmxlLgotICAgICAgICAgICAgICAgIHJlY29yZFNl
dExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKERvdWJsZUluSlNTdGFjaykpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3RlZFR5cGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChpc0ludDMyU3Bl
Y3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVJbnQz
Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlMzIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUtPmxv
Y2FsKCkpKTsKLSAgICAgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKLSAgICAgICAgICAgICAg
ICByZWNvcmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFj
aykpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwotICAgICAgICAgICAgICAgIG1f
aml0LnN0b3JlNjQoY2VsbEdQUiwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS0+bG9jYWwo
KSkpOwotICAgICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOwotICAgICAgICAgICAgICAgIHJl
Y29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChp
c0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewotICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIGJvb2xlYW4odGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQoYm9vbGVhbi5ncHIoKSwgSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3Iobm9kZS0+bG9jYWwoKSkpOwotICAgICAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUp
OwotICAgICAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291
cmNlKEJvb2xlYW5JbkpTU3RhY2spKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgc3dpdGNoIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hG
b3JtYXQoKSkgeworICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6IHsKKyAgICAgICAgICAgIFNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUuZnByKCksIEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKG5vZGUtPmxvY2FsKCkpKTsKKyAgICAgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAg
ICAgICAgLy8gSW5kaWNhdGUgdGhhdCBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gcmV0cmll
dmUgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICAvLyB0aGlzIGJ5dGVjb2RlIHZhcmlhYmxlIGZy
b20gcmVnaXN0ZXJzIG9yIG90aGVyIGxvY2F0aW9ucyBpbiB0aGUgc3RhY2ssCisgICAgICAgICAg
ICAvLyBidXQgdGhhdCBpdCBpcyBzdG9yZWQgYXMgYSBkb3VibGUuCisgICAgICAgICAgICByZWNv
cmRTZXRMb2NhbChub2RlLT5sb2NhbCgpLCBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBGbHVzaGVkSW50MzI6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVl
LmdwcigpLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLT5sb2NhbCgpKSk7CisgICAgICAg
ICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNldExvY2FsKG5vZGUtPmxv
Y2FsKCksIFZhbHVlU291cmNlKEludDMySW5KU1N0YWNrKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6IHsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOworICAgICAgICAgICAg
bV9qaXQuc3RvcmU2NChjZWxsR1BSLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2Nh
bCgpKSk7CisgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgICAgIHJlY29yZFNl
dExvY2FsKG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKENlbGxJbkpTU3RhY2spKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVz
aGVkQm9vbGVhbjogeworICAgICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQgYm9vbGVh
bih0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KGJvb2xl
YW4uZ3ByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUtPmxvY2FsKCkpKTsKKyAgICAg
ICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+
bG9jYWwoKSwgVmFsdWVTb3VyY2UoQm9vbGVhbkluSlNTdGFjaykpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVl
OiB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcihub2RlLT5sb2NhbCgpKSk7CisgICAgICAgICAgICBub1Jlc3VsdChub2RlKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVjb3JkU2V0TG9jYWwobm9kZS0+bG9jYWwoKSwg
VmFsdWVTb3VyY2UoVmFsdWVJbkpTU3RhY2spKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gSWYgd2UncmUgc3RvcmluZyBhbiBhcmd1bWVudHMgb2JqZWN0IHRoYXQgaGFzIGJlZW4gb3B0
aW1pemVkIGF3YXksCisgICAgICAgICAgICAvLyBvdXIgdmFyaWFibGUgZXZlbnQgc3RyZWFtIGZv
ciBPU1IgZXhpdCBub3cgcmVmbGVjdHMgdGhlIG9wdGltaXplZAorICAgICAgICAgICAgLy8gdmFs
dWUgKEpTVmFsdWUoKSkuIE9uIHRoZSBzbG93IHBhdGgsIHdlIHdhbnQgYW4gYXJndW1lbnRzIG9i
amVjdAorICAgICAgICAgICAgLy8gaW5zdGVhZC4gV2UgYWRkIGFuIGFkZGl0aW9uYWwgbW92ZSBo
aW50IHRvIHNob3cgT1NSIGV4aXQgdGhhdCBpdAorICAgICAgICAgICAgLy8gbmVlZHMgdG8gcmVj
b25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBvYmplY3QuCisgICAgICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCktPm9wKCkgPT0gUGhhbnRvbUFyZ3VtZW50cykKKyAgICAgICAgICAgICAgICBjb21waWxl
TW92SGludChub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBtX2pp
dC5zdG9yZTY0KHZhbHVlLmdwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLT5sb2Nh
bCgpKSk7Ci0gICAgICAgIG5vUmVzdWx0KG5vZGUpOwotCi0gICAgICAgIHJlY29yZFNldExvY2Fs
KG5vZGUtPmxvY2FsKCksIFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKSk7Ci0KLSAgICAgICAg
Ly8gSWYgd2UncmUgc3RvcmluZyBhbiBhcmd1bWVudHMgb2JqZWN0IHRoYXQgaGFzIGJlZW4gb3B0
aW1pemVkIGF3YXksCi0gICAgICAgIC8vIG91ciB2YXJpYWJsZSBldmVudCBzdHJlYW0gZm9yIE9T
UiBleGl0IG5vdyByZWZsZWN0cyB0aGUgb3B0aW1pemVkCi0gICAgICAgIC8vIHZhbHVlIChKU1Zh
bHVlKCkpLiBPbiB0aGUgc2xvdyBwYXRoLCB3ZSB3YW50IGFuIGFyZ3VtZW50cyBvYmplY3QKLSAg
ICAgICAgLy8gaW5zdGVhZC4gV2UgYWRkIGFuIGFkZGl0aW9uYWwgbW92ZSBoaW50IHRvIHNob3cg
T1NSIGV4aXQgdGhhdCBpdAotICAgICAgICAvLyBuZWVkcyB0byByZWNvbnN0cnVjdCB0aGUgYXJn
dW1lbnRzIG9iamVjdC4KLSAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50
b21Bcmd1bWVudHMpCi0gICAgICAgICAgICBjb21waWxlTW92SGludChub2RlKTsKIAogICAgICAg
ICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTU1NDk3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODks
MTggKzE1ODksMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUlubGluZVN0YXJ0KAog
ICAgICAgICAgICAgQXJndW1lbnRQb3NpdGlvbiYgYXJndW1lbnRQb3NpdGlvbiA9CiAgICAgICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKS5tX2FyZ3VtZW50UG9zaXRpb25zW2FyZ3VtZW50UG9zaXRp
b25TdGFydCArIGldOwogICAgICAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2U7Ci0gICAg
ICAgICAgICBpZiAoIWFyZ3VtZW50UG9zaXRpb24uc2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpCisg
ICAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50UG9zaXRpb24uZmx1c2hGb3JtYXQoKSkgeworICAg
ICAgICAgICAgY2FzZSBEZWFkRmx1c2g6CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVl
OgogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoVmFsdWVJbkpTU3Rh
Y2spOwotICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRQb3NpdGlvbi5zaG91bGRVc2VEb3Vi
bGVGb3JtYXQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmx1
c2hlZERvdWJsZToKICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKERv
dWJsZUluSlNTdGFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0ludDMyU3BlY3VsYXRpb24o
YXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICAgICAgdmFsdWVTb3Vy
Y2UgPSBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7Ci0gICAgICAgICAgICBlbHNlIGlmIChp
c0NlbGxTcGVjdWxhdGlvbihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNoZWRDZWxsOgogICAgICAgICAg
ICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluSlNTdGFjayk7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihhcmd1bWVudFBvc2l0aW9uLnByZWRp
Y3Rpb24oKSkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsdXNo
ZWRCb29sZWFuOgogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQm9v
bGVhbkluSlNTdGFjayk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdmFsdWVT
b3VyY2UgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjayk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZWNvdmVyeSA9IGNvbXB1dGVWYWx1ZVJl
Y292ZXJ5Rm9yKHZhbHVlU291cmNlKTsKICAgICAgICAgfQogICAgICAgICAvLyBUaGUgcmVjb3Zl
cnkgc2hvdWxkIHJlZmVyIGVpdGhlciB0byBzb21ldGhpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVu
CkBAIC0xNjczLDEyICsxNjc5LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUN1cnJl
bnRCbG9jawogICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShBcmd1bWVudHNT
b3VyY2UpOwogICAgICAgICBlbHNlIGlmICghbm9kZS0+cmVmQ291bnQoKSkKICAgICAgICAgICAg
IHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoU291cmNlSXNEZWFkKTsKLSAgICAgICAgZWxzZSBp
ZiAoIW5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zaG91bGRVbmJveElmUG9zc2libGUoKSkK
LSAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoVmFsdWVJbkpTU3RhY2spOwot
ICAgICAgICBlbHNlIGlmIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91
YmxlRm9ybWF0KCkpCi0gICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKERvdWJs
ZUluSlNTdGFjayk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFs
dWVTb3VyY2U6OmZvclNwZWN1bGF0aW9uKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5hcmd1
bWVudEF3YXJlUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVT
b3VyY2U6OmZvckZsdXNoRm9ybWF0KG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZv
cm1hdCgpKTsKICAgICAgICAgbV92YXJpYWJsZXNbaV0gPSB2YWx1ZVNvdXJjZTsKICAgICAgICAg
Ly8gRklYTUU6IERvbid0IGVtaXQgU2V0TG9jYWwoRGVhZCkuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwMTkKICAgICAgICAgbV9zdHJlYW0tPmFwcGVuZEFuZExv
ZyhWYXJpYWJsZUV2ZW50OjpzZXRMb2NhbChsb2NhbFRvT3BlcmFuZChpKSwgdmFsdWVTb3VyY2Uu
ZGF0YUZvcm1hdCgpKSk7CkBAIC0xODQwLDMxICsxODQyLDU0IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKLSAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPnNob3VsZFVuYm94SWZQ
b3NzaWJsZSgpKQorICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQgPSB2YXJpYWJsZUFjY2Vzc0Rh
dGEtPmZsdXNoRm9ybWF0KCk7CisgICAgICAgIAorICAgICAgICBpZiAoZm9ybWF0ID09IEZsdXNo
ZWRKU1ZhbHVlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgp
OwotICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gdmFyaWFibGVBY2Nlc3NE
YXRhLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpOwogCiAgICAgICAgIEpTVmFsdWVTb3VyY2Ug
dmFsdWVTb3VyY2UgPSBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlcikpOwogICAgICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpZiAo
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgeworICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjogewogICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9B
c3NlbWJsZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNC
b29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFs
c2UpKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkp
KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZsdXNoZWRDZWxs
OiB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogI2Vsc2UKLSAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVk
aWN0ZWRUeXBlKSkKKyAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICAgICAgY2FzZSBGbHVz
aGVkSW50MzI6IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVT
b3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklU
Q29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
SW50MzJUYWcpKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3RlZFR5cGUpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBG
bHVzaGVkQm9vbGVhbjogewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpCb29sZWFuVGFnKSkpOwotICAgICAgICBlbHNlIGlmIChpc0NlbGxTcGVjdWxhdGlvbihw
cmVkaWN0ZWRUeXBlKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRmx1c2hlZENlbGw6IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
dmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICNlbmRpZgogICAgIH0KICAgICBtX2lzQ2hlY2tp
bmdBcmd1bWVudFR5cGVzID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhbHVlU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdWYWx1ZVNvdXJjZS5oCShyZXZpc2lvbiAxNTU0OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbHVlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1
ZGUgIkRGR0ZsdXNoRm9ybWF0LmgiCiAjaW5jbHVkZSAiREZHTWluaWZpZWRJRC5oIgogI2luY2x1
ZGUgIkRhdGFGb3JtYXQuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgpAQCAtMTI3LDE1
ICsxMjgsMjQgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoa2luZCgpID09IEhhdmVOb2RlKTsK
ICAgICB9CiAgICAgCi0gICAgc3RhdGljIFZhbHVlU291cmNlIGZvclNwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgc3RhdGljIFZhbHVlU291cmNlIGZvckZsdXNoRm9y
bWF0KEZsdXNoRm9ybWF0IGZvcm1hdCkKICAgICB7Ci0gICAgICAgIGlmIChpc0ludDMyU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCisgICAgICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgIGNh
c2UgRGVhZEZsdXNoOgorICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKFNvdXJjZUlzRGVh
ZCk7CisgICAgICAgIGNhc2UgRmx1c2hlZEpTVmFsdWU6CisgICAgICAgICAgICByZXR1cm4gVmFs
dWVTb3VyY2UoVmFsdWVJbkpTU3RhY2spOworICAgICAgICBjYXNlIEZsdXNoZWREb3VibGU6Cisg
ICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoRG91YmxlSW5KU1N0YWNrKTsKKyAgICAgICAg
Y2FzZSBGbHVzaGVkSW50MzI6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJ
bkpTU3RhY2spOwotICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisg
ICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2Uo
Q2VsbEluSlNTdGFjayk7Ci0gICAgICAgIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0
aW9uKSkKKyAgICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKICAgICAgICAgICAgIHJldHVybiBW
YWx1ZVNvdXJjZShCb29sZWFuSW5KU1N0YWNrKTsKLSAgICAgICAgcmV0dXJuIFZhbHVlU291cmNl
KFZhbHVlSW5KU1N0YWNrKTsKKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gVmFsdWVTb3VyY2UoKTsKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIFZhbHVlU291cmNlIGZvckRhdGFGb3JtYXQoRGF0YUZvcm1hdCBkYXRhRm9ybWF0
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlQWNjZXNzRGF0YUR1bXAuY3BwCShyZXZpc2lvbiAxNTU0OTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgVmFyaWFibGVBY2Nlc3NEYXRhRHVtcDo6ZHVtcChQcmlu
dFMKICAgICBlbHNlIGlmICghbV9kYXRhLT5zaG91bGRVbmJveElmUG9zc2libGUoKSkKICAgICAg
ICAgb3V0LnByaW50KCJ+Iik7CiAKLSAgICBvdXQucHJpbnQoQWJicmV2aWF0ZWRTcGVjdWxhdGlv
bkR1bXAobV9kYXRhLT5wcmVkaWN0aW9uKCkpKTsKKyAgICBvdXQucHJpbnQoQWJicmV2aWF0ZWRT
cGVjdWxhdGlvbkR1bXAobV9kYXRhLT5wcmVkaWN0aW9uKCkpLCAiLyIsIG1fZGF0YS0+Zmx1c2hG
b3JtYXQoKSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAx
NTU0OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDQxICs1NjksNDkgQEAgcHJpdmF0ZToKICAgICAgICAg
b2JzZXJ2ZU1vdkhpbnQobV9ub2RlKTsKICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBtX25vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFibGUtPmFyZ3VtZW50QXdhcmVQcmVkaWN0
aW9uKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAodmFyaWFibGUtPnNob3VsZFVuYm94SWZQb3Nz
aWJsZSgpKSB7Ci0gICAgICAgICAgICBpZiAodmFyaWFibGUtPnNob3VsZFVzZURvdWJsZUZvcm1h
dCgpKSB7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93RG91YmxlKG1fbm9kZS0+
Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlRG91YmxlKHZhbHVlLCBhZGRy
ZXNzRm9yKHZhcmlhYmxlLT5sb2NhbCgpKSk7Ci0gICAgICAgICAgICAgICAgbV92YWx1ZVNvdXJj
ZXMub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3Rh
Y2spOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgc3dp
dGNoICh2YXJpYWJsZS0+Zmx1c2hGb3JtYXQoKSkgeworICAgICAgICBjYXNlIEZsdXNoZWRKU1Zh
bHVlOiB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgYWRkcmVzc0Zvcih2YXJp
YWJsZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXMub3BlcmFuZCh2YXJp
YWJsZS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjayk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGlzSW50
MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkgewotICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1
ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0
b3JlMzIodmFsdWUsIHBheWxvYWRGb3IodmFyaWFibGUtPmxvY2FsKCkpKTsKLSAgICAgICAgICAg
ICAgICBtX3ZhbHVlU291cmNlcy5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9IFZhbHVlU291
cmNlKEludDMySW5KU1N0YWNrKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbikpIHsKLSAg
ICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIGFkZHJlc3NGb3IodmFyaWFibGUt
PmxvY2FsKCkpKTsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlU291cmNlcy5vcGVyYW5kKHZhcmlh
YmxlLT5sb2NhbCgpKSA9IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNCb29sZWFuU3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpIHsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFu
KG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQoCi0gICAg
ICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKSwKLSAgICAgICAgICAgICAgICAgICAgYWRkcmVzc0Zvcih2YXJpYWJsZS0+
bG9jYWwoKSkpOwotICAgICAgICAgICAgICAgIG1fdmFsdWVTb3VyY2VzLm9wZXJhbmQodmFyaWFi
bGUtPmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoVmFsdWVJbkpTU3RhY2spOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBGbHVzaGVkRG91YmxlOiB7
CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBtX291dC5zdG9yZURvdWJsZSh2YWx1ZSwgYWRkcmVzc0Zvcih2YXJpYWJs
ZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXMub3BlcmFuZCh2YXJpYWJs
ZS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShEb3VibGVJbkpTU3RhY2spOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGbHVzaGVkSW50
MzI6IHsKKyAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2YWx1ZSwgcGF5bG9hZEZvcih2YXJpYWJs
ZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXMub3BlcmFuZCh2YXJpYWJs
ZS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShJbnQzMkluSlNTdGFjayk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZsdXNoZWRDZWxs
OiB7CisgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1ZSwgYWRkcmVzc0Zvcih2YXJpYWJsZS0+
bG9jYWwoKSkpOworICAgICAgICAgICAgbV92YWx1ZVNvdXJjZXMub3BlcmFuZCh2YXJpYWJsZS0+
bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjayk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIEZsdXNoZWRCb29sZWFu
OiB7CisgICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFuKG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiksCisgICAgICAgICAgICAgICAg
YWRkcmVzc0Zvcih2YXJpYWJsZS0+bG9jYWwoKSkpOworICAgICAgICAgICAgbV92YWx1ZVNvdXJj
ZXMub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFj
ayk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIERlYWRGbHVzaDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlNjQodmFsdWUsIGFkZHJl
c3NGb3IodmFyaWFibGUtPmxvY2FsKCkpKTsKLSAgICAgICAgbV92YWx1ZVNvdXJjZXMub3BlcmFu
ZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShWYWx1ZUluSlNTdGFjayk7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
Y29tcGlsZU1vdkhpbnQoKQo=
</data>
<flag name="review"
          id="233348"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>