<?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>130001</bug_id>
          
          <creation_ts>2014-03-09 22:36:47 -0700</creation_ts>
          <short_desc>DFG and FTL should know that comparing anything to Misc is cheap and easy</short_desc>
          <delta_ts>2014-03-10 15:05:57 -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>112840</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>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>988802</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-09 22:36:47 -0700</bug_when>
    <thetext>Patch forthcoming.  This will expand FTL coverage since FTL does support CompareStrictEq(Untyped:, Untyped:) and it will also make a lot of things faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988803</commentid>
    <comment_count>1</comment_count>
      <attachid>226279</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-09 22:39:14 -0700</bug_when>
    <thetext>Created attachment 226279
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988889</commentid>
    <comment_count>2</comment_count>
      <attachid>226304</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-10 08:09:40 -0700</bug_when>
    <thetext>Created attachment 226304
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988917</commentid>
    <comment_count>3</comment_count>
      <attachid>226304</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-10 09:52:56 -0700</bug_when>
    <thetext>Comment on attachment 226304
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989065</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-10 15:05:57 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/165406</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226279</attachid>
            <date>2014-03-09 22:39:14 -0700</date>
            <delta_ts>2014-03-10 08:09:40 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>28955</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MzYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDE0LTAzLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGFuZCBGVEwgc2hvdWxkIGtub3cgdGhhdCBjb21wYXJpbmcgYW55dGhpbmcgdG8gTWlzYyBp
cyBjaGVhcCBhbmQgZWFzeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMwMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorICAgICAgICAKKyAgICAgICAgLSBF
eHBhbmQgQ29tcGFyZVN0cmljdEVxKE1pc2M6LCBNaXNjOikgdG8gd29yayBmb3IgY2FzZXMgd2hl
cmUgZWl0aGVyIHNpZGUgb2YgdGhlCisgICAgICAgICAgY29tcGFyaXNvbiBpcyBqdXN0IFVudHlw
ZWQ6LgorICAgICAgICAKKyAgICAgICAgLSBUaGlzIG9idmlhdGVzIHRoZSBuZWVkIGZvciBDb21w
YXJlU3RyaWN0RXFDb25zdGFudCwgc28gcmVtb3ZlIGl0LgorICAgICAgICAKKyAgICAgICAgLSBG
VEwgaGFkIGEgdGhpbmcgY2FsbGVkICJOdWxseSIgd2hpY2ggaXMgcmVhbGx5ICJPdGhlciIuCisK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAg
ICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6
OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjppc0JpbmFyeVVzZUtpbmQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZU90aGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTWlzY1N0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ29tcGFyZUVxKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBhcmVFcU9iamVjdE9yT3Ro
ZXJUb09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmVxdWFsTnVs
bE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aXNOb3RP
dGhlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzT3RoZXIpOgorICAg
ICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGUpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpzcGVjdWxhdGVPYmplY3RPck90aGVyKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTm90Q2VsbCk6CisgICAgICAgIChK
U0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnNwZWN1bGF0ZU90aGVyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlTWlzYyk6CisKIDIwMTQtMDMtMDkgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGVEwgZmFpbHMgdGhlIG5ldyBl
cXVhbHMtbWFzcXVlcmFkZXIgc3RyaWN0RXF1YWxDb25zdGFudCB0ZXN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCShyZXZpc2lvbiAxNjUzNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzNSw4
ICs5MzUsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIAotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVx
OgotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6IHsKKyAgICBjYXNlIENvbXBhcmVT
dHJpY3RFcTogewogICAgICAgICBOb2RlKiBsZWZ0Tm9kZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUo
KTsKICAgICAgICAgTm9kZSogcmlnaHROb2RlID0gbm9kZS0+Y2hpbGQyKCkubm9kZSgpOwogICAg
ICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKGxlZnROb2RlKS52YWx1ZSgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlz
aW9uIDE2NTM1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTgsMTYgKzcxOCw2IEBAIHByaXZhdGU6CiAgICAg
ICAgIHJldHVybiBub2RlLT5pc1N0cm9uZ2x5UHJvdmVkQ29uc3RhbnRJbihpbmxpbmVDYWxsRnJh
bWUoKSk7CiAgICAgfQogCi0gICAgLy8gT3VyIGNvZGVnZW4gZm9yIGNvbnN0YW50IHN0cmljdCBl
cXVhbGl0eSBwZXJmb3JtcyBhIGJpdHdpc2UgY29tcGFyaXNvbiwKLSAgICAvLyBzbyB3ZSBjYW4g
b25seSBzZWxlY3QgdmFsdWVzIHRoYXQgaGF2ZSBhIGNvbnNpc3RlbnQgYml0d2lzZSBpZGVudGl0
eS4KLSAgICBib29sIGlzQ29uc3RhbnRGb3JDb21wYXJlU3RyaWN0RXEoTm9kZSogbm9kZSkKLSAg
ICB7Ci0gICAgICAgIGlmICghbm9kZS0+aXNDb25zdGFudCgpKQotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQobm9kZSk7
Ci0gICAgICAgIHJldHVybiB2YWx1ZS5pc0Jvb2xlYW4oKSB8fCB2YWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpOwotICAgIH0KLSAgICAKICAgICBCcmFuY2hEYXRhKiBicmFuY2hEYXRhKHVuc2lnbmVk
IHRha2VuLCB1bnNpZ25lZCBub3RUYWtlbikKICAgICB7CiAgICAgICAgIEJyYW5jaERhdGEqIGRh
dGEgPSBtX2dyYXBoLm1fYnJhbmNoRGF0YS5hZGQoKTsKQEAgLTI2MDgsMTIgKzI1OTgsNyBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAg
ICAgIGdldEpTQ29uc3RhbnRGb3JWYWx1ZShqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGEsIGIpKSkpOwogICAg
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3N0cmljdGVxKTsKICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChpc0NvbnN0YW50Rm9yQ29tcGFyZVN0cmljdEVxKG9wMSkpCi0gICAgICAg
ICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSwgYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXFDb25zdGFudCwgb3AyLCBvcDEpKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGlzQ29uc3RhbnRGb3JDb21wYXJlU3RyaWN0RXEob3AyKSkKLSAg
ICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RFcUNvbnN0YW50LCBvcDEsIG9wMikp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoQ29tcGFyZVN0cmlj
dEVxLCBvcDEsIG9wMikpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEsIG9w
MSwgb3AyKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zdHJpY3RlcSk7CiAgICAgICAg
IH0KIApAQCAtMjY0OCwxMiArMjYzMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uc3RyaWN0ZXEpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgTm9kZSogaW52ZXJ0ZWRSZXN1bHQ7Ci0gICAgICAg
ICAgICBpZiAoaXNDb25zdGFudEZvckNvbXBhcmVTdHJpY3RFcShvcDEpKQotICAgICAgICAgICAg
ICAgIGludmVydGVkUmVzdWx0ID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXFDb25zdGFudCwg
b3AyLCBvcDEpOwotICAgICAgICAgICAgZWxzZSBpZiAoaXNDb25zdGFudEZvckNvbXBhcmVTdHJp
Y3RFcShvcDIpKQotICAgICAgICAgICAgICAgIGludmVydGVkUmVzdWx0ID0gYWRkVG9HcmFwaChD
b21wYXJlU3RyaWN0RXFDb25zdGFudCwgb3AxLCBvcDIpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGludmVydGVkUmVzdWx0ID0gYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXEs
IG9wMSwgb3AyKTsKKyAgICAgICAgICAgIGludmVydGVkUmVzdWx0ID0gYWRkVG9HcmFwaChDb21w
YXJlU3RyaWN0RXEsIG9wMSwgb3AyKTsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTG9naWNhbE5vdCwg
aW52ZXJ0ZWRSZXN1bHQpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25zdHJpY3RlcSk7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCShyZXZpc2lvbiAxNjUzNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw2IEBAIHZvaWQgY2xvYmJl
cml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6
CiAgICAgY2FzZSBTdHJpbmdGcm9tQ2hhckNvZGU6CiAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFu
dDoKLSAgICBjYXNlIENvbXBhcmVTdHJpY3RFcUNvbnN0YW50OgogICAgIGNhc2UgQ29tcGFyZVN0
cmljdEVxOgogICAgIGNhc2UgSXNVbmRlZmluZWQ6CiAgICAgY2FzZSBJc0Jvb2xlYW46CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9u
IDE2NTM1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5MSwxMCArMzkxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBDb21wYXJlU3Ry
aWN0RXFDb25zdGFudDogewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcTogewogICAgICAgICAgICAgaWYgKE5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4obm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5j
aGlsZDIoKS5ub2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihu
b2RlLT5jaGlsZDEoKSk7CkBAIC00MzIsOCArNDI4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgZml4RWRnZTxPYmplY3RVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+
c2hvdWxkU3BlY3VsYXRlTWlzYygpICYmIG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVN
aXNjKCkpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRl
TWlzYygpKSB7CiAgICAgICAgICAgICAgICAgZml4RWRnZTxNaXNjVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZU1pc2MoKSkgewogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8TWlzY1VzZT4obm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpAQCAtNzcyLDcgKzc3MSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgVG9UaGlzOiB7CiAgICAgICAgICAgICBFQ01BTW9kZSBlY21hTW9kZSA9IG1fZ3JhcGgu
ZXhlY3V0YWJsZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5pc1N0cmljdE1vZGUoKSA/IFN0
cmljdE1vZGUgOiBOb3RTdHJpY3RNb2RlOwogCi0gICAgICAgICAgICBpZiAoaXNPdGhlclNwZWN1
bGF0aW9uKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU90aGVyKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoZWNtYU1vZGUgPT0gU3RyaWN0TW9kZSkgewogICAgICAgICAgICAgICAgICAgICBmaXhF
ZGdlPE90aGVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PmNvbnZlcnRUb0lkZW50aXR5KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMTY1MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMzEsOSArMTMzMSwxNCBAQCBzdHJ1Y3QgTm9kZSB7CiAg
ICAgICAgIHJldHVybiBjaGlsZDEoKS51c2VLaW5kKCk7CiAgICAgfQogICAgIAorICAgIGJvb2wg
aXNCaW5hcnlVc2VLaW5kKFVzZUtpbmQgbGVmdCwgVXNlS2luZCByaWdodCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjaGlsZDEoKS51c2VLaW5kKCkgPT0gbGVmdCAmJiBjaGlsZDIoKS51c2VLaW5k
KCkgPT0gcmlnaHQ7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNCaW5hcnlVc2VLaW5kKFVzZUtp
bmQgdXNlS2luZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBjaGlsZDEoKS51c2VLaW5kKCkgPT0g
dXNlS2luZCAmJiBjaGlsZDIoKS51c2VLaW5kKCkgPT0gdXNlS2luZDsKKyAgICAgICAgcmV0dXJu
IGlzQmluYXJ5VXNlS2luZCh1c2VLaW5kLCB1c2VLaW5kKTsKICAgICB9CiAgICAgCiAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbigpCkBAIC0xNDAxLDYgKzE0MDYsMTEgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICByZXR1cm4gaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsK
ICAgICB9CiAgICAgCisgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVPdGhlcigpCisgICAgeworICAg
ICAgICByZXR1cm4gaXNPdGhlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgfQorICAg
IAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTWlzYygpCiAgICAgewogICAgICAgICByZXR1cm4g
aXNNaXNjU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDE2NTM1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw2
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDb21wYXJlRXEs
IE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxk
KSBcCiAgICAgbWFjcm8oQ29tcGFyZUVxQ29uc3RhbnQsIE5vZGVSZXN1bHRCb29sZWFuKSBcCiAg
ICAgbWFjcm8oQ29tcGFyZVN0cmljdEVxLCBOb2RlUmVzdWx0Qm9vbGVhbikgXAotICAgIG1hY3Jv
KENvbXBhcmVTdHJpY3RFcUNvbnN0YW50LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAgIFwKICAg
ICAvKiBDYWxscy4gKi9cCiAgICAgbWFjcm8oQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjUzNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQ1LDcgKzM0NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxOgog
ICAgICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgICAgICBjYXNlIENvbXBhcmVTdHJp
Y3RFcToKLSAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXFDb25zdGFudDoKICAgICAgICAgY2Fz
ZSBJbnN0YW5jZU9mOgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgICAgICBjYXNlIElz
Qm9vbGVhbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCShyZXZpc2lvbiAxNjUzNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDcgKzE4NSw2IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIENvbXBhcmVFcToK
ICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgot
ICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6CiAgICAgY2FzZSBDYWxsOgogICAgIGNh
c2UgQ29uc3RydWN0OgogICAgIGNhc2UgTmV3T2JqZWN0OgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lv
biAxNjUzNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjAsOCArNjIwLDEwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVNaXNjU3RyaWN0RXEKICAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhp
cywgbm9kZS0+Y2hpbGQyKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAKLSAgICBzcGVjdWxhdGVNaXNjKG5vZGUtPmNoaWxk
MSgpLCBvcDEuanNWYWx1ZVJlZ3MoKSk7Ci0gICAgc3BlY3VsYXRlTWlzYyhub2RlLT5jaGlsZDIo
KSwgb3AyLmpzVmFsdWVSZWdzKCkpOworICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gTWlzY1VzZSkKKyAgICAgICAgc3BlY3VsYXRlTWlzYyhub2RlLT5jaGlsZDEoKSwgb3AxLmpz
VmFsdWVSZWdzKCkpOworICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gTWlzY1Vz
ZSkKKyAgICAgICAgc3BlY3VsYXRlTWlzYyhub2RlLT5jaGlsZDIoKSwgb3AyLmpzVmFsdWVSZWdz
KCkpOwogICAgIAogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkp
OwogICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEVxdWFsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6Ok5vdEVxdWFsLCBvcDEudGFnR1BSKCksIG9wMi50YWdHUFIoKSk7CkBAIC0yMjY5LDEx
ICsyMjcxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ29tcGFyZVN0cmlj
dEVxQ29uc3RhbnQ6Ci0gICAgICAgIGlmIChjb21waWxlU3RyaWN0RXFGb3JDb25zdGFudChub2Rl
LCBub2RlLT5jaGlsZDEoKSwgdmFsdWVPZkpTQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgp
KSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDb21w
YXJlU3RyaWN0RXE6CiAgICAgICAgIGlmIChjb21waWxlU3RyaWN0RXEobm9kZSkpCiAgICAgICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE2NTM1NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1
Niw4ICs2NTYsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcQog
ICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFu
ZFNwZWN1bGF0aW9uKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIAotICAg
IHNwZWN1bGF0ZU1pc2Mobm9kZS0+Y2hpbGQxKCksIG9wMS5qc1ZhbHVlUmVncygpKTsKLSAgICBz
cGVjdWxhdGVNaXNjKG5vZGUtPmNoaWxkMigpLCBvcDIuanNWYWx1ZVJlZ3MoKSk7CisgICAgaWYg
KG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNaXNjVXNlKQorICAgICAgICBzcGVjdWxhdGVN
aXNjKG5vZGUtPmNoaWxkMSgpLCBvcDEuanNWYWx1ZVJlZ3MoKSk7CisgICAgaWYgKG5vZGUtPmNo
aWxkMigpLnVzZUtpbmQoKSA9PSBNaXNjVXNlKQorICAgICAgICBzcGVjdWxhdGVNaXNjKG5vZGUt
PmNoaWxkMigpLCBvcDIuanNWYWx1ZVJlZ3MoKSk7CiAgICAgCiAgICAgbV9qaXQuY29tcGFyZTMy
KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
CiAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7
CkBAIC0yNjI5LDExICsyNjMxLDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2Ug
Q29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6Ci0gICAgICAgIGlmIChjb21waWxlU3RyaWN0RXFGb3JD
b25zdGFudChub2RlLCBub2RlLT5jaGlsZDEoKSwgdmFsdWVPZkpTQ29uc3RhbnQobm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJyZWFrOwotCiAg
ICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAgICAgIGlmIChjb21waWxlU3RyaWN0RXEobm9k
ZSkpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTY1MzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyODEsOSArMTI4MSw5IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZUJyYW4KICAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVCb29sZWFuQnJhbmNoKG5vZGUs
IGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkKICAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVP
YmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNl
S2luZCgpID09IE9iamVjdE9yT3RoZXJVc2UpCisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBPYmplY3RPck90aGVyVXNlKSkKICAgICAgICAgICAg
ICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eShub2RlLT5j
aGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGJyYW5jaE5vZGUpOwotICAgICAgICAgICAgZWxzZSBp
ZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdE9yT3RoZXJVc2UgJiYgbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RPck90aGVyVXNlLCBPYmplY3RVc2UpKQogICAgICAg
ICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KG5v
ZGUtPmNoaWxkMigpLCBub2RlLT5jaGlsZDEoKSwgYnJhbmNoTm9kZSk7CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoKG5vZGUs
IGJyYW5jaE5vZGUsIGNvbmRpdGlvbiwgb3BlcmF0aW9uKTsKQEAgLTM2MjEsMTIgKzM2MjEsMTIg
QEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSAmJiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkg
PT0gT2JqZWN0T3JPdGhlclVzZSkgeworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5k
KE9iamVjdFVzZSwgT2JqZWN0T3JPdGhlclVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVPYmpl
Y3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eShub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdE9yT3RoZXJVc2UgJiYgbm9k
ZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IE9iamVjdFVzZSkgeworICAgICAgICBpZiAobm9kZS0+
aXNCaW5hcnlVc2VLaW5kKE9iamVjdE9yT3RoZXJVc2UsIE9iamVjdFVzZSkpIHsKICAgICAgICAg
ICAgIGNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eShub2RlLT5jaGlsZDIoKSwg
bm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0zNjM2LDgyICszNjM2LDkgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBu
b2RlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN0cmljdEVxRm9yQ29uc3RhbnQoTm9kZSogbm9kZSwgRWRnZSB2YWx1ZSwgSlNWYWx1ZSBjb25z
dGFudCkKLXsKLSAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgdmFsdWUpOwotICAgIAotICAg
IHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7Ci0g
ICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgewotICAgICAgICBOb2RlKiBi
cmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKLSAgICAgICAgQmFz
aWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5icmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOwot
ICAgICAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+
bm90VGFrZW4uYmxvY2s7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpFcXVhbDsKLSAgICAgICAgCi0gICAgICAg
IC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2lsbCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2Nr
LgotICAgICAgICAvLyBJZiB0YWtlbiBpcyBuZXh0LCBzd2l0Y2ggdGFrZW4gd2l0aCBub3RUYWtl
biAmIGludmVydCB0aGUgYnJhbmNoIGNvbmRpdGlvbiBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoLgot
ICAgICAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKLSAgICAgICAgICAgIGNvbmRpdGlv
biA9IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbDsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIHRt
cCA9IHRha2VuOwotICAgICAgICAgICAgdGFrZW4gPSBub3RUYWtlbjsKLSAgICAgICAgICAgIG5v
dFRha2VuID0gdG1wOwotICAgICAgICB9Ci0KLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBi
cmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoY29uc3RhbnQpKSwgdGFrZW4pOwotI2Vsc2UKLSAgICAgICAgR1BS
UmVnIHBheWxvYWRHUFIgPSBvcDEucGF5bG9hZEdQUigpOwotICAgICAgICBHUFJSZWcgdGFnR1BS
ID0gb3AxLnRhZ0dQUigpOwotICAgICAgICBpZiAoY29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVy
OjpFcXVhbCkgewotICAgICAgICAgICAgLy8gRHJvcCBkb3duIGlmIG5vdCBlcXVhbCwgZ28gZWxz
ZXdoZXJlIGlmIGVxdWFsLgotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90RXF1
YWwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgTWFj
cm9Bc3NlbWJsZXI6OkltbTMyKGNvbnN0YW50LnRhZygpKSk7Ci0gICAgICAgICAgICBicmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0z
Mihjb25zdGFudC5wYXlsb2FkKCkpLCB0YWtlbik7Ci0gICAgICAgICAgICBub3RFcXVhbC5saW5r
KCZtX2ppdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBEcm9wIGRvd24gaWYg
ZXF1YWwsIGdvIGVsc2Vod2VyZSBpZiBub3QgZXF1YWwuCi0gICAgICAgICAgICBicmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNv
bnN0YW50LnRhZygpKSwgdGFrZW4pOwotICAgICAgICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBwYXlsb2FkR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tMzIoY29uc3RhbnQu
cGF5bG9hZCgpKSwgdGFrZW4pOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAg
IGp1bXAobm90VGFrZW4pOwotICAgICAgICAKLSAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsK
LSAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgbV9pbmRleEluQmxvY2sgPSBi
cmFuY2hJbmRleEluQmxvY2s7Ci0gICAgICAgIG1fY3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKLSAgICAKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIEdQUlJlZyBvcDFHUFIgPSBv
cDEuZ3ByKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKLSAgICBtX2pp
dC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVGYWxzZSksIHJlc3VsdEdQ
Uik7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90RXF1YWwgPSBtX2ppdC5icmFuY2g2NChN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW02NChKU1ZhbHVlOjplbmNvZGUoY29uc3RhbnQpKSk7Ci0gICAgbV9qaXQub3IzMihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOwotICAgIG5vdEVxdWFsLmxpbmso
Jm1faml0KTsKLSAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpT
Qm9vbGVhbik7Ci0jZWxzZQotICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRH
UFIoKTsKLSAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3AxLnRhZ0dQUigpOwotICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCks
IHJlc3VsdEdQUik7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG5vdEVxdWFsOwotICAg
IG5vdEVxdWFsLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IG9wMVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNvbnN0YW50LnRhZygpKSkpOwotICAg
IG5vdEVxdWFsLmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IG9wMVBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihjb25zdGFudC5wYXlsb2FkKCkp
KSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7Ci0gICAgbm90
RXF1YWwubGluaygmbV9qaXQpOwotICAgIGJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
LSNlbmRpZgotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQogYm9vbCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5vZGUpCiB7Ci0gICAgc3dpdGNoIChub2RlLT5iaW5h
cnlVc2VLaW5kKCkpIHsKLSAgICBjYXNlIEJvb2xlYW5Vc2U6IHsKKyAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4
SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRl
eEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBt
X2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwpAQCAtMzcyNiw3ICszNjUzLDcgQEAgYm9v
bCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgY2FzZSBJbnQzMlVzZTogeworICAgIGlmIChub2RlLT5pc0JpbmFy
eVVzZUtpbmQoSW50MzJVc2UpKSB7CiAgICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9j
ayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxv
Y2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2Nr
LT5hdChicmFuY2hJbmRleEluQmxvY2spOwpAQCAtMzc0Miw3ICszNjY5LDcgQEAgYm9vbCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgIH0KICAgICAKICNpZiBVU0UoSlNW
QUxVRTY0KSAgIAotICAgIGNhc2UgTWFjaGluZUludFVzZTogeworICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5k
ZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaElu
ZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgewogICAgICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9
IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7CkBAIC0zNzU3LDggKzM2ODQsOCBAQCBi
b29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaWN0RXEoTm9kCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgCi0gICAgY2Fz
ZSBOdW1iZXJVc2U6IHsKKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNl
KSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9s
ZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7
CiAgICAgICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJ
bkJsb2NrKTsKQEAgLTM3NzIsMTggKzM2OTksMTggQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVN0cmljdEVxKE5vZAogICAgICAgICBjb21waWxlRG91YmxlQ29tcGFyZShub2RlLCBNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQot
ICAgICAgICAKLSAgICBjYXNlIFN0cmluZ1VzZTogeworICAgIAorICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgewogICAgICAgICBjb21waWxlU3RyaW5nRXF1YWxpdHko
bm9kZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgICAgIAotICAgIGNhc2Ug
U3RyaW5nSWRlbnRVc2U6IHsKKyAgICAKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0
cmluZ0lkZW50VXNlKSkgewogICAgICAgICBjb21waWxlU3RyaW5nSWRlbnRFcXVhbGl0eShub2Rl
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBPYmpl
Y3RVc2U6IHsKKworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkgewog
ICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5j
aCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CiAgICAg
ICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2Nr
KTsKQEAgLTM3OTcsMjAgKzM3MjQsMTUgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmljdEVxKE5vZAogICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgTWlzY1VzZTogeworCisg
ICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQorICAgICAg
ICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkpIHsKICAgICAg
ICAgY29tcGlsZU1pc2NTdHJpY3RFcShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICAgICAgCi0gICAgY2FzZSBVbnR5cGVkVXNlOiB7Ci0gICAgICAgIHJldHVybiBub25T
cGVjdWxhdGl2ZVN0cmljdEVxKG5vZGUpOwotICAgIH0KLSAgICAgICAgCi0gICAgZGVmYXVsdDoK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KKyAgICAKKyAgICBSRUxFQVNFX0FTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtp
bmQoVW50eXBlZFVzZSkpOworICAgIHJldHVybiBub25TcGVjdWxhdGl2ZVN0cmljdEVxKG5vZGUp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSog
bm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2
aXNpb24gMTY1MzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDI1LDggKzIwMjUsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlv
bmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVEb3VibGVDb21wYXJlKE5vZGUqLCBNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICAKLSAgICBib29sIGNvbXBpbGVTdHJp
Y3RFcUZvckNvbnN0YW50KE5vZGUqLCBFZGdlIHZhbHVlLCBKU1ZhbHVlIGNvbnN0YW50KTsKLSAg
ICAKICAgICBib29sIGNvbXBpbGVTdHJpY3RFcShOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21w
aWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9kZSopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTY1MzU3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw3ICs5MSw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgogICAgIGNhc2UgSW50MzJUb0RvdWJsZToK
ICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50OgotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxQ29u
c3RhbnQ6CiAgICAgY2FzZSBKdW1wOgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2Ug
UGhpOgpAQCAtMjM4LDExICsyMzcsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5
VXNlS2luZChCb29sZWFuVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZQotICAgICAgICAgICAgJiYgbm9kZS0+
Y2hpbGQyKCkudXNlS2luZCgpID09IE9iamVjdE9yT3RoZXJVc2UpCisgICAgICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBPYmplY3RPck90aGVyVXNlKSkKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVj
dE9yT3RoZXJVc2UKLSAgICAgICAgICAgICYmIG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBP
YmplY3RVc2UpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0T3JPdGhl
clVzZSwgT2JqZWN0VXNlKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKQEAgLTI1NCwxMCArMjUxLDEy
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpCiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNj
VXNlKSkKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VL
aW5kKEJvb2xlYW5Vc2UpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBlZFVzZSkpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSkK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICBj
YXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKQEAgLTM1MCw2ICszNDks
NyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAg
ICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNl
IEZpbmFsT2JqZWN0VXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTm90Q2VsbFVzZToKKyAgICAg
ICAgICAgICAgICBjYXNlIE90aGVyVXNlOgogICAgICAgICAgICAgICAgIGNhc2UgTWlzY1VzZToK
ICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjUzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDkgKzUyNSw2
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgICAgICAgICAg
Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSgpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6Ci0gICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0
cmljdEVxQ29uc3RhbnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbXBh
cmVMZXNzOgogICAgICAgICAgICAgY29tcGlsZUNvbXBhcmVMZXNzKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTMzNzgsMTQgKzMzNzUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IE9iamVjdFVzZQotICAgICAgICAgICAgJiYgbV9ub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gT2JqZWN0T3JPdGhlclVzZSkgeworICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFy
eVVzZUtpbmQoT2JqZWN0VXNlLCBPYmplY3RPck90aGVyVXNlKSkgewogICAgICAgICAgICAgY29t
cGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0KG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gT2JqZWN0T3JPdGhlclVzZQotICAg
ICAgICAgICAgJiYgbV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7Cisg
ICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RPck90aGVyVXNlLCBPYmpl
Y3RVc2UpKSB7CiAgICAgICAgICAgICBjb21wYXJlRXFPYmplY3RPck90aGVyVG9PYmplY3QobV9u
b2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTM0NDIsMTEgKzM0MzcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlV
c2VLaW5kKE1pc2NVc2UpKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChN
aXNjVXNlLCBVbnR5cGVkVXNlKQorICAgICAgICAgICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtp
bmQoVW50eXBlZFVzZSwgTWlzY1VzZSkpIHsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZhbHVlKGxlZnQpLCBtX25vZGUtPmNoaWxkMSgp
LCBTcGVjTWlzYywgaXNOb3RNaXNjKGxlZnQpKTsKLSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNL
KGpzVmFsdWVWYWx1ZShyaWdodCksIG1fbm9kZS0+Y2hpbGQyKCksIFNwZWNNaXNjLCBpc05vdE1p
c2MocmlnaHQpKTsKICAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQuZXF1YWwobGVmdCwgcmln
aHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzk5Niw3ICszOTkyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxlZnROb3RDZWxs
Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAg
ICBqc1ZhbHVlVmFsdWUobGVmdFZhbHVlKSwgbGVmdENoaWxkLCBTcGVjT3RoZXIgfCBTcGVjQ2Vs
bCwgaXNOb3ROdWxseShsZWZ0VmFsdWUpKTsKKyAgICAgICAgICAgIGpzVmFsdWVWYWx1ZShsZWZ0
VmFsdWUpLCBsZWZ0Q2hpbGQsIFNwZWNPdGhlciB8IFNwZWNDZWxsLCBpc05vdE90aGVyKGxlZnRW
YWx1ZSkpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5j
aG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKICAgICAgICAgCkBAIC00MzM0LDExICs0MzMwLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBwcmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChW
YWx1ZVVuZGVmaW5lZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXF1YWxO
dWxsT3JVbmRlZmluZWQ6Ci0gICAgICAgICAgICBwcmltaXRpdmVSZXN1bHQgPSBpc051bGx5KHZh
bHVlKTsKKyAgICAgICAgICAgIHByaW1pdGl2ZVJlc3VsdCA9IGlzT3RoZXIodmFsdWUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3BlY3VsYXRlTnVsbE9yVW5kZWZpbmVkOgog
ICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICAgICAganNWYWx1ZVZhbHVl
KHZhbHVlKSwgZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIsIGlzTm90TnVsbHkodmFsdWUpKTsK
KyAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQ2VsbCB8IFNw
ZWNPdGhlciwgaXNOb3RPdGhlcih2YWx1ZSkpOwogICAgICAgICAgICAgcHJpbWl0aXZlUmVzdWx0
ID0gbV9vdXQuYm9vbGVhblRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
NTAxMCwxMyArNTAwNiwxMyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmNv
bnN0SW50NjQoVmFsdWVUcnVlKSwgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZUZhbHNlKSk7CiAgICAg
fQogICAgIAotICAgIExWYWx1ZSBpc05vdE51bGx5KExWYWx1ZSB2YWx1ZSkKKyAgICBMVmFsdWUg
aXNOb3RPdGhlcihMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQubm90
RXF1YWwoCiAgICAgICAgICAgICBtX291dC5iaXRBbmQodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQo
flRhZ0JpdFVuZGVmaW5lZCkpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZU51
bGwpKTsKICAgICB9Ci0gICAgTFZhbHVlIGlzTnVsbHkoTFZhbHVlIHZhbHVlKQorICAgIExWYWx1
ZSBpc090aGVyKExWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX291dC5lcXVh
bCgKICAgICAgICAgICAgIG1fb3V0LmJpdEFuZCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCh+VGFn
Qml0VW5kZWZpbmVkKSksCkBAIC01MDc1LDYgKzUwNzEsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIE5vdENlbGxVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVOb3RDZWxsKGVkZ2UpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgT3RoZXJVc2U6CisgICAgICAgICAgICBzcGVj
dWxhdGVPdGhlcihlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1pc2NV
c2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVNaXNjKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC01MjA4LDcgKzUyMDcsNyBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhw
cmltaXRpdmVDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgRlRMX1RZUEVf
Q0hFQ0soCi0gICAgICAgICAgICBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjQ2VsbCB8
IFNwZWNPdGhlciwgaXNOb3ROdWxseSh2YWx1ZSkpOworICAgICAgICAgICAganNWYWx1ZVZhbHVl
KHZhbHVlKSwgZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIsIGlzTm90T3RoZXIodmFsdWUpKTsK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkBA
IC01MzQyLDE2ICs1MzQxLDI1IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbV9pbnRlcnByZXRl
ci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSk7CisgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAg
ICAgdHlwZUNoZWNrKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIH5TcGVjQ2VsbCwgaXNDZWxs
KHZhbHVlKSk7CiAgICAgfQogICAgIAorICAgIHZvaWQgc3BlY3VsYXRlT3RoZXIoRWRnZSBlZGdl
KQorICAgIHsKKyAgICAgICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2Up
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIHZhbHVlID0g
bG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOworICAgICAgICB0eXBl
Q2hlY2soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY090aGVyLCBpc05vdE90aGVyKHZh
bHVlKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTWlzYyhFZGdlIGVkZ2UpCiAg
ICAgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dK
U1ZhbHVlKGVkZ2UpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAgICAgIHR5cGVDaGVjayhqc1ZhbHVlVmFsdWUo
dmFsdWUpLCBlZGdlLCBTcGVjTWlzYywgaXNOb3RNaXNjKHZhbHVlKSk7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226304</attachid>
            <date>2014-03-10 08:09:40 -0700</date>
            <delta_ts>2014-03-10 09:52:56 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>30133</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1MzYxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDE0LTAzLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIGFuZCBGVEwgc2hvdWxkIGtub3cgdGhhdCBjb21wYXJpbmcgYW55dGhpbmcgdG8gTWlzYyBp
cyBjaGVhcCBhbmQgZWFzeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMwMDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIAorICAgICAgICAtIEV4cGFuZCBDb21wYXJlU3RyaWN0RXEoTWlzYzosIE1pc2M6KSB0
byB3b3JrIGZvciBjYXNlcyB3aGVyZSBlaXRoZXIgc2lkZSBvZiB0aGUKKyAgICAgICAgICBjb21w
YXJpc29uIGlzIGp1c3QgVW50eXBlZDouCisgICAgICAgIAorICAgICAgICAtIFRoaXMgb2J2aWF0
ZXMgdGhlIG5lZWQgZm9yIENvbXBhcmVTdHJpY3RFcUNvbnN0YW50LCBzbyByZW1vdmUgaXQuCisg
ICAgICAgIAorICAgICAgICAtIEZUTCBoYWQgYSB0aGluZyBjYWxsZWQgIk51bGx5IiB3aGljaCBp
cyByZWFsbHkgIk90aGVyIi4gUmVuYW1lIGl0IGFuZCBhZGQKKyAgICAgICAgICBPdGhlclVzZS4K
KyAgICAgICAgCisgICAgICAgIDklIHNwZWVkLXVwIG9uIGJveDJkLgorCisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1
cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aXNCaW5h
cnlVc2VLaW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVPdGhl
cik6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlU3RyaWN0RXEpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1pc2NT
dHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBhcmVFcSk6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlND
OjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21wYXJlRXFPYmplY3RPck90aGVyVG9PYmplY3QpOgor
ICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjplcXVhbE51bGxPclVuZGVmaW5lZCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzTm90T3RoZXIpOgorICAgICAg
ICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppc090aGVyKToKKyAgICAgICAgKEpTQzo6RlRM
OjpMb3dlckRGR1RvTExWTTo6c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6c3BlY3VsYXRlT2JqZWN0T3JPdGhlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OnNwZWN1bGF0ZU5vdENlbGwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpzcGVjdWxhdGVPdGhlcik6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdU
b0xMVk06OnNwZWN1bGF0ZU1pc2MpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9jb21wYXJlLXN0
cmljdC1lcS1pbnRlZ2VyLXRvLW1pc2MuanM6IEFkZGVkLgorCiAyMDE0LTAzLTA5ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRlRMIGZhaWxzIHRoZSBuZXcgZXF1
YWxzLW1hc3F1ZXJhZGVyIHN0cmljdEVxdWFsQ29uc3RhbnQgdGVzdApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkocmV2aXNpb24gMTY1MzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzUsOCAr
OTM1LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAKLSAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToK
LSAgICBjYXNlIENvbXBhcmVTdHJpY3RFcUNvbnN0YW50OiB7CisgICAgY2FzZSBDb21wYXJlU3Ry
aWN0RXE6IHsKICAgICAgICAgTm9kZSogbGVmdE5vZGUgPSBub2RlLT5jaGlsZDEoKS5ub2RlKCk7
CiAgICAgICAgIE5vZGUqIHJpZ2h0Tm9kZSA9IG5vZGUtPmNoaWxkMigpLm5vZGUoKTsKICAgICAg
ICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShsZWZ0Tm9kZSkudmFsdWUoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAxNjUzNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzE4LDE2ICs3MTgsNiBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gbm9kZS0+aXNTdHJvbmdseVByb3ZlZENvbnN0YW50SW4oaW5saW5lQ2FsbEZyYW1l
KCkpOwogICAgIH0KIAotICAgIC8vIE91ciBjb2RlZ2VuIGZvciBjb25zdGFudCBzdHJpY3QgZXF1
YWxpdHkgcGVyZm9ybXMgYSBiaXR3aXNlIGNvbXBhcmlzb24sCi0gICAgLy8gc28gd2UgY2FuIG9u
bHkgc2VsZWN0IHZhbHVlcyB0aGF0IGhhdmUgYSBjb25zaXN0ZW50IGJpdHdpc2UgaWRlbnRpdHku
Ci0gICAgYm9vbCBpc0NvbnN0YW50Rm9yQ29tcGFyZVN0cmljdEVxKE5vZGUqIG5vZGUpCi0gICAg
ewotICAgICAgICBpZiAoIW5vZGUtPmlzQ29uc3RhbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpOwot
ICAgICAgICByZXR1cm4gdmFsdWUuaXNCb29sZWFuKCkgfHwgdmFsdWUuaXNVbmRlZmluZWRPck51
bGwoKTsKLSAgICB9Ci0gICAgCiAgICAgQnJhbmNoRGF0YSogYnJhbmNoRGF0YSh1bnNpZ25lZCB0
YWtlbiwgdW5zaWduZWQgbm90VGFrZW4pCiAgICAgewogICAgICAgICBCcmFuY2hEYXRhKiBkYXRh
ID0gbV9ncmFwaC5tX2JyYW5jaERhdGEuYWRkKCk7CkBAIC0yNjA4LDEyICsyNTk4LDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAg
ICBnZXRKU0NvbnN0YW50Rm9yVmFsdWUoanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBhLCBiKSkpKTsKICAgICAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9zdHJpY3RlcSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoaXNDb25zdGFudEZvckNvbXBhcmVTdHJpY3RFcShvcDEpKQotICAgICAgICAg
ICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCksIGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQsIG9wMiwgb3AxKSk7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChpc0NvbnN0YW50Rm9yQ29tcGFyZVN0cmljdEVxKG9wMikpCi0gICAg
ICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSwgYWRkVG9HcmFwaChDb21wYXJlU3RyaWN0RXFDb25zdGFudCwgb3AxLCBvcDIpKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKENvbXBhcmVTdHJpY3RF
cSwgb3AxLCBvcDIpKTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxLCBvcDEs
IG9wMikpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc3RyaWN0ZXEpOwogICAgICAgICB9
CiAKQEAgLTI2NDgsMTIgKzI2MzMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbnN0cmljdGVxKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIE5vZGUqIGludmVydGVkUmVzdWx0OwotICAgICAgICAg
ICAgaWYgKGlzQ29uc3RhbnRGb3JDb21wYXJlU3RyaWN0RXEob3AxKSkKLSAgICAgICAgICAgICAg
ICBpbnZlcnRlZFJlc3VsdCA9IGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQsIG9w
Miwgb3AxKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzQ29uc3RhbnRGb3JDb21wYXJlU3RyaWN0
RXEob3AyKSkKLSAgICAgICAgICAgICAgICBpbnZlcnRlZFJlc3VsdCA9IGFkZFRvR3JhcGgoQ29t
cGFyZVN0cmljdEVxQ29uc3RhbnQsIG9wMSwgb3AyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBpbnZlcnRlZFJlc3VsdCA9IGFkZFRvR3JhcGgoQ29tcGFyZVN0cmljdEVxLCBv
cDEsIG9wMik7CisgICAgICAgICAgICBpbnZlcnRlZFJlc3VsdCA9IGFkZFRvR3JhcGgoQ29tcGFy
ZVN0cmljdEVxLCBvcDEsIG9wMik7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKExvZ2ljYWxOb3QsIGlu
dmVydGVkUmVzdWx0KSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uc3RyaWN0ZXEpOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAkocmV2aXNpb24gMTY1MzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3ICsxMTYsNiBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0Ogog
ICAgIGNhc2UgU3RyaW5nRnJvbUNoYXJDb2RlOgogICAgIGNhc2UgQ29tcGFyZUVxQ29uc3RhbnQ6
Ci0gICAgY2FzZSBDb21wYXJlU3RyaWN0RXFDb25zdGFudDoKICAgICBjYXNlIENvbXBhcmVTdHJp
Y3RFcToKICAgICBjYXNlIElzVW5kZWZpbmVkOgogICAgIGNhc2UgSXNCb29sZWFuOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAx
NjUzNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTEsMTAgKzM5MSw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQ29tcGFyZVN0cmlj
dEVxQ29uc3RhbnQ6IHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6IHsKICAgICAgICAgICAgIGlmIChOb2Rl
OjpzaG91bGRTcGVjdWxhdGVCb29sZWFuKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSwgbm9kZS0+Y2hp
bGQyKCkubm9kZSgpKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Qm9vbGVhblVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwpAQCAtNDMyLDggKzQyOCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8T2JqZWN0VXNlPihub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZU1pc2MoKSAmJiBub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlTWlz
YygpKSB7CisgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU1p
c2MoKSkgewogICAgICAgICAgICAgICAgIGZpeEVkZ2U8TWlzY1VzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVNaXNjKCkpIHsKICAgICAgICAgICAgICAg
ICBmaXhFZGdlPE1pc2NVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTc3Miw3ICs3NzEsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFRvVGhpczogewogICAgICAgICAgICAgRUNNQU1vZGUgZWNtYU1vZGUgPSBtX2dyYXBoLmV4
ZWN1dGFibGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNTdHJpY3RNb2RlKCkgPyBTdHJp
Y3RNb2RlIDogTm90U3RyaWN0TW9kZTsKIAotICAgICAgICAgICAgaWYgKGlzT3RoZXJTcGVjdWxh
dGlvbihub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPdGhlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGVjbWFNb2RlID09IFN0cmljdE1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAgZml4RWRn
ZTxPdGhlclVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgICAgICBub2RlLT5j
b252ZXJ0VG9JZGVudGl0eSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHJldmlzaW9uIDE2NTM2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMxLDkgKzEzMzEsMTQgQEAgc3RydWN0IE5vZGUgewogICAg
ICAgICByZXR1cm4gY2hpbGQxKCkudXNlS2luZCgpOwogICAgIH0KICAgICAKKyAgICBib29sIGlz
QmluYXJ5VXNlS2luZChVc2VLaW5kIGxlZnQsIFVzZUtpbmQgcmlnaHQpCisgICAgeworICAgICAg
ICByZXR1cm4gY2hpbGQxKCkudXNlS2luZCgpID09IGxlZnQgJiYgY2hpbGQyKCkudXNlS2luZCgp
ID09IHJpZ2h0OworICAgIH0KKyAgICAKICAgICBib29sIGlzQmluYXJ5VXNlS2luZChVc2VLaW5k
IHVzZUtpbmQpCiAgICAgewotICAgICAgICByZXR1cm4gY2hpbGQxKCkudXNlS2luZCgpID09IHVz
ZUtpbmQgJiYgY2hpbGQyKCkudXNlS2luZCgpID09IHVzZUtpbmQ7CisgICAgICAgIHJldHVybiBp
c0JpbmFyeVVzZUtpbmQodXNlS2luZCwgdXNlS2luZCk7CiAgICAgfQogICAgIAogICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24oKQpAQCAtMTQwMSw2ICsxNDA2LDExIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAg
ICAgfQogICAgIAorICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlT3RoZXIoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGlzT3RoZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOworICAgIH0KKyAgICAK
ICAgICBib29sIHNob3VsZFNwZWN1bGF0ZU1pc2MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGlz
TWlzY1NwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxNjUzNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw3ICsyMTcsNiBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ29tcGFyZUVxLCBO
b2RlUmVzdWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkg
XAogICAgIG1hY3JvKENvbXBhcmVFcUNvbnN0YW50LCBOb2RlUmVzdWx0Qm9vbGVhbikgXAogICAg
IG1hY3JvKENvbXBhcmVTdHJpY3RFcSwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKLSAgICBtYWNybyhD
b21wYXJlU3RyaWN0RXFDb25zdGFudCwgTm9kZVJlc3VsdEJvb2xlYW4pIFwKICAgICBcCiAgICAg
LyogQ2FsbHMuICovXAogICAgIG1hY3JvKENhbGwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTY1MzYxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM0NSw3ICszNDUsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENvbXBhcmVFcToKICAg
ICAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKICAgICAgICAgY2FzZSBDb21wYXJlU3RyaWN0
RXE6Ci0gICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6CiAgICAgICAgIGNhc2Ug
SW5zdGFuY2VPZjoKICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDoKICAgICAgICAgY2FzZSBJc0Jv
b2xlYW46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAkocmV2aXNpb24gMTY1MzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNiBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBDb21wYXJlRXE6CiAg
ICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKICAgICBjYXNlIENvbXBhcmVTdHJpY3RFcToKLSAg
ICBjYXNlIENvbXBhcmVTdHJpY3RFcUNvbnN0YW50OgogICAgIGNhc2UgQ2FsbDoKICAgICBjYXNl
IENvbnN0cnVjdDoKICAgICBjYXNlIE5ld09iamVjdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTY1MzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIwLDggKzYyMCwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMs
IG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CiAgICAgCi0gICAgc3BlY3VsYXRlTWlzYyhub2RlLT5jaGlsZDEo
KSwgb3AxLmpzVmFsdWVSZWdzKCkpOwotICAgIHNwZWN1bGF0ZU1pc2Mobm9kZS0+Y2hpbGQyKCks
IG9wMi5qc1ZhbHVlUmVncygpKTsKKyAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IE1pc2NVc2UpCisgICAgICAgIHNwZWN1bGF0ZU1pc2Mobm9kZS0+Y2hpbGQxKCksIG9wMS5qc1Zh
bHVlUmVncygpKTsKKyAgICBpZiAobm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IE1pc2NVc2Up
CisgICAgICAgIHNwZWN1bGF0ZU1pc2Mobm9kZS0+Y2hpbGQyKCksIG9wMi5qc1ZhbHVlUmVncygp
KTsKICAgICAKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsK
ICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RFcXVhbCA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgb3AxLnRhZ0dQUigpLCBvcDIudGFnR1BSKCkpOwpAQCAtMjI2OSwxMSAr
MjI3MSw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIENvbXBhcmVTdHJpY3RF
cUNvbnN0YW50OgotICAgICAgICBpZiAoY29tcGlsZVN0cmljdEVxRm9yQ29uc3RhbnQobm9kZSwg
bm9kZS0+Y2hpbGQxKCksIHZhbHVlT2ZKU0NvbnN0YW50KG5vZGUtPmNoaWxkMigpLm5vZGUoKSkp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQ29tcGFy
ZVN0cmljdEVxOgogICAgICAgICBpZiAoY29tcGlsZVN0cmljdEVxKG5vZGUpKQogICAgICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjUzNjEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTYs
MTAgKzY1NiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWlzY1N0cmljdEVxCiAg
ICAgSlNWYWx1ZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgCi0gICAg
c3BlY3VsYXRlTWlzYyhub2RlLT5jaGlsZDEoKSwgb3AxLmpzVmFsdWVSZWdzKCkpOwotICAgIHNw
ZWN1bGF0ZU1pc2Mobm9kZS0+Y2hpbGQyKCksIG9wMi5qc1ZhbHVlUmVncygpKTsKKyAgICBpZiAo
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE1pc2NVc2UpCisgICAgICAgIHNwZWN1bGF0ZU1p
c2Mobm9kZS0+Y2hpbGQxKCksIG9wMS5qc1ZhbHVlUmVncygpKTsKKyAgICBpZiAobm9kZS0+Y2hp
bGQyKCkudXNlS2luZCgpID09IE1pc2NVc2UpCisgICAgICAgIHNwZWN1bGF0ZU1pc2Mobm9kZS0+
Y2hpbGQyKCksIG9wMi5qc1ZhbHVlUmVncygpKTsKICAgICAKLSAgICBtX2ppdC5jb21wYXJlMzIo
SklUQ29tcGlsZXI6OkVxdWFsLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
KyAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDEuZ3ByKCksIG9wMi5n
cHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZh
bHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9k
ZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiB9CkBAIC0yNjI5LDExICsyNjMxLDYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBicmVhazsKIAotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6Ci0gICAg
ICAgIGlmIChjb21waWxlU3RyaWN0RXFGb3JDb25zdGFudChub2RlLCBub2RlLT5jaGlsZDEoKSwg
dmFsdWVPZkpTQ29uc3RhbnQobm9kZS0+Y2hpbGQyKCkubm9kZSgpKSkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CiAgICAg
ICAgIGlmIChjb21waWxlU3RyaWN0RXEobm9kZSkpCiAgICAgICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
cmV2aXNpb24gMTY1MzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODEsOSArMTI4MSw5IEBAIGJvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW4KICAgICAgICAgICAgICAgICBjb21waWxl
UGVlcEhvbGVCb29sZWFuQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbik7CiAgICAg
ICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkKICAgICAg
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2Rl
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBPYmpl
Y3RVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IE9iamVjdE9yT3RoZXJVc2UpCisg
ICAgICAgICAgICBlbHNlIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBPYmpl
Y3RPck90aGVyVXNlKSkKICAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RUb09i
amVjdE9yT3RoZXJFcXVhbGl0eShub2RlLT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCksIGJyYW5j
aE5vZGUpOwotICAgICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IE9iamVjdE9yT3RoZXJVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IE9iamVjdFVz
ZSkKKyAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChPYmplY3RPck90
aGVyVXNlLCBPYmplY3RVc2UpKQogICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVj
dFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KG5vZGUtPmNoaWxkMigpLCBub2RlLT5jaGlsZDEoKSwg
YnJhbmNoTm9kZSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBub25TcGVj
dWxhdGl2ZVBlZXBob2xlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGUsIGNvbmRpdGlvbiwgb3BlcmF0
aW9uKTsKQEAgLTM2MjEsMTIgKzM2MjEsMTIgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFy
ZShOb2RlKiBub2RlLAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZSAm
JiBub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gT2JqZWN0T3JPdGhlclVzZSkgeworICAgICAg
ICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdFVzZSwgT2JqZWN0T3JPdGhlclVzZSkp
IHsKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eShub2Rl
LT5jaGlsZDEoKSwgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IE9iamVjdE9yT3RoZXJVc2UgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IE9iamVj
dFVzZSkgeworICAgICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKE9iamVjdE9yT3RoZXJV
c2UsIE9iamVjdFVzZSkpIHsKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RUb09iamVjdE9yT3Ro
ZXJFcXVhbGl0eShub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0zNjM2LDgyICszNjM2LDkgQEAgYm9vbCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlKiBub2RlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxRm9yQ29uc3RhbnQoTm9kZSogbm9k
ZSwgRWRnZSB2YWx1ZSwgSlNWYWx1ZSBjb25zdGFudCkKLXsKLSAgICBKU1ZhbHVlT3BlcmFuZCBv
cDEodGhpcywgdmFsdWUpOwotICAgIAotICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9
IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7Ci0gICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBV
SU5UX01BWCkgewotICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9ibG9jay0+YXQoYnJhbmNo
SW5kZXhJbkJsb2NrKTsKLSAgICAgICAgQmFzaWNCbG9jayogdGFrZW4gPSBicmFuY2hOb2RlLT5i
cmFuY2hEYXRhKCktPnRha2VuLmJsb2NrOwotICAgICAgICBCYXNpY0Jsb2NrKiBub3RUYWtlbiA9
IGJyYW5jaE5vZGUtPmJyYW5jaERhdGEoKS0+bm90VGFrZW4uYmxvY2s7Ci0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVy
OjpFcXVhbDsKLSAgICAgICAgCi0gICAgICAgIC8vIFRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24gd2ls
bCBicmFuY2ggdG8gdGhlIHRha2VuIGJsb2NrLgotICAgICAgICAvLyBJZiB0YWtlbiBpcyBuZXh0
LCBzd2l0Y2ggdGFrZW4gd2l0aCBub3RUYWtlbiAmIGludmVydCB0aGUgYnJhbmNoIGNvbmRpdGlv
biBzbyB3ZSBjYW4gZmFsbCB0aHJvdWdoLgotICAgICAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2Nr
KCkpIHsKLSAgICAgICAgICAgIGNvbmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbDsK
LSAgICAgICAgICAgIEJhc2ljQmxvY2sqIHRtcCA9IHRha2VuOwotICAgICAgICAgICAgdGFrZW4g
PSBub3RUYWtlbjsKLSAgICAgICAgICAgIG5vdFRha2VuID0gdG1wOwotICAgICAgICB9Ci0KLSNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBicmFuY2g2NChjb25kaXRpb24sIG9wMS5ncHIoKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoY29uc3RhbnQpKSwg
dGFrZW4pOwotI2Vsc2UKLSAgICAgICAgR1BSUmVnIHBheWxvYWRHUFIgPSBvcDEucGF5bG9hZEdQ
UigpOwotICAgICAgICBHUFJSZWcgdGFnR1BSID0gb3AxLnRhZ0dQUigpOwotICAgICAgICBpZiAo
Y29uZGl0aW9uID09IE1hY3JvQXNzZW1ibGVyOjpFcXVhbCkgewotICAgICAgICAgICAgLy8gRHJv
cCBkb3duIGlmIG5vdCBlcXVhbCwgZ28gZWxzZXdoZXJlIGlmIGVxdWFsLgotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90RXF1YWwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNvbnN0YW50LnRh
ZygpKSk7Ci0gICAgICAgICAgICBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHBheWxv
YWRHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihjb25zdGFudC5wYXlsb2FkKCkpLCB0YWtlbik7
Ci0gICAgICAgICAgICBub3RFcXVhbC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBEcm9wIGRvd24gaWYgZXF1YWwsIGdvIGVsc2Vod2VyZSBpZiBub3QgZXF1
YWwuCi0gICAgICAgICAgICBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkltbTMyKGNvbnN0YW50LnRhZygpKSwgdGFrZW4pOwotICAgICAg
ICAgICAgYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBwYXlsb2FkR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6SW1tMzIoY29uc3RhbnQucGF5bG9hZCgpKSwgdGFrZW4pOwotICAgICAgICB9
Ci0jZW5kaWYKLSAgICAgICAgCi0gICAgICAgIGp1bXAobm90VGFrZW4pOwotICAgICAgICAKLSAg
ICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgdXNlKG5vZGUtPmNoaWxkMigpKTsK
LSAgICAgICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7Ci0gICAgICAgIG1f
Y3VycmVudE5vZGUgPSBicmFuY2hOb2RlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0g
ICAgCi0gICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAKLSNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7Ci0gICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tNjQoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
bm90RXF1YWwgPSBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMUdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoY29uc3RhbnQp
KSk7Ci0gICAgbV9qaXQub3IzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1
bHRHUFIpOwotICAgIG5vdEVxdWFsLmxpbmsoJm1faml0KTsKLSAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7Ci0jZWxzZQotICAgIEdQUlJlZyBv
cDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRHUFIoKTsKLSAgICBHUFJSZWcgb3AxVGFnR1BSID0g
b3AxLnRhZ0dQUigpOwotICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdEdQUik7Ci0gICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IG5vdEVxdWFsOwotICAgIG5vdEVxdWFsLmFwcGVuZChtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMVRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6Oklt
bTMyKGNvbnN0YW50LnRhZygpKSkpOwotICAgIG5vdEVxdWFsLmFwcGVuZChtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIG9wMVBheWxvYWRHUFIsIE1hY3JvQXNzZW1ibGVy
OjpJbW0zMihjb25zdGFudC5wYXlsb2FkKCkpKSk7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
MzIoMSksIHJlc3VsdEdQUik7Ci0gICAgbm90RXF1YWwubGluaygmbV9qaXQpOwotICAgIGJvb2xl
YW5SZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKLSNlbmRpZgotICAgIAotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQogYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZGUqIG5vZGUp
CiB7Ci0gICAgc3dpdGNoIChub2RlLT5iaW5hcnlVc2VLaW5kKCkpIHsKLSAgICBjYXNlIEJvb2xl
YW5Vc2U6IHsKKyAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpKSB7CiAg
ICAgICAgIHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNo
KCk7CiAgICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAg
ICAgICAgIE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2sp
OwpAQCAtMzcyNiw3ICszNjUzLDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlj
dEVxKE5vZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY2FzZSBJbnQzMlVz
ZTogeworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoSW50MzJVc2UpKSB7CiAgICAgICAg
IHVuc2lnbmVkIGJyYW5jaEluZGV4SW5CbG9jayA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAg
ICAgICAgIGlmIChicmFuY2hJbmRleEluQmxvY2sgIT0gVUlOVF9NQVgpIHsKICAgICAgICAgICAg
IE5vZGUqIGJyYW5jaE5vZGUgPSBtX2Jsb2NrLT5hdChicmFuY2hJbmRleEluQmxvY2spOwpAQCAt
Mzc0Miw3ICszNjY5LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5v
ZAogICAgIH0KICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KSAgIAotICAgIGNhc2UgTWFjaGluZUlu
dFVzZTogeworICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWFjaGluZUludFVzZSkpIHsK
ICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVlcEhvbGVCcmFu
Y2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01BWCkgewogICAg
ICAgICAgICAgTm9kZSogYnJhbmNoTm9kZSA9IG1fYmxvY2stPmF0KGJyYW5jaEluZGV4SW5CbG9j
ayk7CkBAIC0zNzU3LDggKzM2ODQsOCBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3Ry
aWN0RXEoTm9kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgCi0gICAgY2FzZSBOdW1iZXJVc2U6IHsKKworICAgIGlmIChub2Rl
LT5pc0JpbmFyeVVzZUtpbmQoTnVtYmVyVXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJ
bmRleEluQmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNo
SW5kZXhJbkJsb2NrICE9IFVJTlRfTUFYKSB7CiAgICAgICAgICAgICBOb2RlKiBicmFuY2hOb2Rl
ID0gbV9ibG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKQEAgLTM3NzIsMTggKzM2OTksMTgg
QEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgICAgICBjb21w
aWxlRG91YmxlQ29tcGFyZShub2RlLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlRXF1YWwpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgICAgICAKLSAgICBjYXNlIFN0cmluZ1VzZTog
eworICAgIAorICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoU3RyaW5nVXNlKSkgewogICAg
ICAgICBjb21waWxlU3RyaW5nRXF1YWxpdHkobm9kZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0gICAgICAgIAotICAgIGNhc2UgU3RyaW5nSWRlbnRVc2U6IHsKKyAgICAKKyAgICBp
ZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKFN0cmluZ0lkZW50VXNlKSkgewogICAgICAgICBjb21w
aWxlU3RyaW5nSWRlbnRFcXVhbGl0eShub2RlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KLSAgICAgICAgCi0gICAgY2FzZSBPYmplY3RVc2U6IHsKKworICAgIGlmIChub2RlLT5pc0Jp
bmFyeVVzZUtpbmQoT2JqZWN0VXNlKSkgewogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleElu
QmxvY2sgPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJ
bkJsb2NrICE9IFVJTlRfTUFYKSB7CiAgICAgICAgICAgICBOb2RlKiBicmFuY2hOb2RlID0gbV9i
bG9jay0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKQEAgLTM3OTcsMjAgKzM3MjQsMTUgQEAgYm9v
bCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmljdEVxKE5vZAogICAgICAgICBjb21waWxlT2Jq
ZWN0RXF1YWxpdHkobm9kZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgICAg
IAotICAgIGNhc2UgTWlzY1VzZTogeworCisgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChN
aXNjVXNlLCBVbnR5cGVkVXNlKQorICAgICAgICB8fCBub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50
eXBlZFVzZSwgTWlzY1VzZSkpIHsKICAgICAgICAgY29tcGlsZU1pc2NTdHJpY3RFcShub2RlKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICAgICAgCi0gICAgY2FzZSBVbnR5cGVk
VXNlOiB7Ci0gICAgICAgIHJldHVybiBub25TcGVjdWxhdGl2ZVN0cmljdEVxKG5vZGUpOwotICAg
IH0KLSAgICAgICAgCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICAKKyAgICBSRUxFQVNF
X0FTU0VSVChub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSkpOworICAgIHJldHVybiBu
b25TcGVjdWxhdGl2ZVN0cmljdEVxKG5vZGUpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQm9vbGVhbkNvbXBhcmUoTm9kZSogbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9u
YWxDb25kaXRpb24gY29uZGl0aW9uKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTY1MzYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDI1
LDggKzIwMjUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlQm9vbGVhbkNvbXBhcmUoTm9k
ZSosIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBp
bGVEb3VibGVDb21wYXJlKE5vZGUqLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uKTsK
ICAgICAKLSAgICBib29sIGNvbXBpbGVTdHJpY3RFcUZvckNvbnN0YW50KE5vZGUqLCBFZGdlIHZh
bHVlLCBKU1ZhbHVlIGNvbnN0YW50KTsKLSAgICAKICAgICBib29sIGNvbXBpbGVTdHJpY3RFcShO
b2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoTm9k
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAkocmV2aXNpb24gMTY1MzYxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw2IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVy
OgogICAgIGNhc2UgSW50MzJUb0RvdWJsZToKICAgICBjYXNlIENvbXBhcmVFcUNvbnN0YW50Ogot
ICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6CiAgICAgY2FzZSBKdW1wOgogICAgIGNh
c2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgUGhpOgpAQCAtMjM4LDExICsyMzcsOSBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNlS2luZChCb29sZWFuVXNlKSkKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVj
dFVzZQotICAgICAgICAgICAgJiYgbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpID09IE9iamVjdE9y
T3RoZXJVc2UpCisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBP
YmplY3RPck90aGVyVXNlKSkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAobm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdE9yT3RoZXJVc2UKLSAgICAgICAgICAgICYmIG5v
ZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBPYmplY3RVc2UpCisgICAgICAgIGlmIChub2RlLT5p
c0JpbmFyeVVzZUtpbmQoT2JqZWN0T3JPdGhlclVzZSwgT2JqZWN0VXNlKSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICBjYXNlIENvbXBhcmVT
dHJpY3RFcToKQEAgLTI1NCwxMCArMjUxLDEyIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAobm9kZS0+aXNC
aW5hcnlVc2VLaW5kKE9iamVjdFVzZSkpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYg
KG5vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlKSkKLSAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBpZiAobm9kZS0+aXNCaW5hcnlVc2VLaW5kKEJvb2xlYW5Vc2UpKQogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGlmIChub2RlLT5pc0JpbmFyeVVzZUtpbmQoTWlzY1VzZSwgVW50eXBl
ZFVzZSkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKG5vZGUtPmlzQmluYXJ5VXNl
S2luZChVbnR5cGVkVXNlLCBNaXNjVXNlKSkKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBy
ZXR1cm4gQ2Fubm90Q29tcGlsZTsKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgIGNhc2UgQ29t
cGFyZUxlc3NFcToKQEAgLTM1MCw2ICszNDksNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGls
ZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdPclN0cmluZ09iamVj
dFVzZToKICAgICAgICAgICAgICAgICBjYXNlIEZpbmFsT2JqZWN0VXNlOgogICAgICAgICAgICAg
ICAgIGNhc2UgTm90Q2VsbFVzZToKKyAgICAgICAgICAgICAgICBjYXNlIE90aGVyVXNlOgogICAg
ICAgICAgICAgICAgIGNhc2UgTWlzY1VzZToKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlc2Ug
YXJlIE9LLgogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNjUzNjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTI1LDkgKzUyNSw2IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ29t
cGFyZVN0cmljdEVxOgogICAgICAgICAgICAgY29tcGlsZUNvbXBhcmVTdHJpY3RFcSgpOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQ6Ci0g
ICAgICAgICAgICBjb21waWxlQ29tcGFyZVN0cmljdEVxQ29uc3RhbnQoKTsKLSAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgICAgICAgICAgY29tcGlsZUNv
bXBhcmVMZXNzKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMzNzgsMTQgKzMzNzUsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IE9iamVjdFVzZQotICAgICAgICAg
ICAgJiYgbV9ub2RlLT5jaGlsZDIoKS51c2VLaW5kKCkgPT0gT2JqZWN0T3JPdGhlclVzZSkgewor
ICAgICAgICBpZiAobV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoT2JqZWN0VXNlLCBPYmplY3RPck90
aGVyVXNlKSkgewogICAgICAgICAgICAgY29tcGFyZUVxT2JqZWN0T3JPdGhlclRvT2JqZWN0KG1f
bm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gT2JqZWN0T3JPdGhlclVzZQotICAgICAgICAgICAgJiYgbV9ub2RlLT5jaGlsZDIoKS51
c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CisgICAgICAgIGlmIChtX25vZGUtPmlzQmluYXJ5VXNl
S2luZChPYmplY3RPck90aGVyVXNlLCBPYmplY3RVc2UpKSB7CiAgICAgICAgICAgICBjb21wYXJl
RXFPYmplY3RPck90aGVyVG9PYmplY3QobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0NDIsMTEgKzM0MzcsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKE1pc2NVc2UpKSB7CisgICAgICAgIGlm
IChtX25vZGUtPmlzQmluYXJ5VXNlS2luZChNaXNjVXNlLCBVbnR5cGVkVXNlKQorICAgICAgICAg
ICAgfHwgbV9ub2RlLT5pc0JpbmFyeVVzZUtpbmQoVW50eXBlZFVzZSwgTWlzY1VzZSkpIHsKKyAg
ICAgICAgICAgIHNwZWN1bGF0ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pOwogICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24pOwotICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soanNWYWx1ZVZh
bHVlKGxlZnQpLCBtX25vZGUtPmNoaWxkMSgpLCBTcGVjTWlzYywgaXNOb3RNaXNjKGxlZnQpKTsK
LSAgICAgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShyaWdodCksIG1fbm9kZS0+
Y2hpbGQyKCksIFNwZWNNaXNjLCBpc05vdE1pc2MocmlnaHQpKTsKICAgICAgICAgICAgIHNldEJv
b2xlYW4obV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzk5Niw3ICszOTkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGxlZnROb3RDZWxsQ2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAg
RlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBqc1ZhbHVlVmFsdWUobGVmdFZhbHVlKSwgbGVm
dENoaWxkLCBTcGVjT3RoZXIgfCBTcGVjQ2VsbCwgaXNOb3ROdWxseShsZWZ0VmFsdWUpKTsKKyAg
ICAgICAgICAgIGpzVmFsdWVWYWx1ZShsZWZ0VmFsdWUpLCBsZWZ0Q2hpbGQsIFNwZWNPdGhlciB8
IFNwZWNDZWxsLCBpc05vdE90aGVyKGxlZnRWYWx1ZSkpOwogICAgICAgICBWYWx1ZUZyb21CbG9j
ayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5GYWxzZSk7CiAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkBAIC00MzM0LDExICs0MzMw
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBwcmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVh
bCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZVVuZGVmaW5lZCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgRXF1YWxOdWxsT3JVbmRlZmluZWQ6Ci0gICAgICAgICAgICBw
cmltaXRpdmVSZXN1bHQgPSBpc051bGx5KHZhbHVlKTsKKyAgICAgICAgICAgIHByaW1pdGl2ZVJl
c3VsdCA9IGlzT3RoZXIodmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
U3BlY3VsYXRlTnVsbE9yVW5kZWZpbmVkOgogICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICAgICAganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0NlbGwgfCBTcGVj
T3RoZXIsIGlzTm90TnVsbHkodmFsdWUpKTsKKyAgICAgICAgICAgICAgICBqc1ZhbHVlVmFsdWUo
dmFsdWUpLCBlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlciwgaXNOb3RPdGhlcih2YWx1ZSkpOwog
ICAgICAgICAgICAgcHJpbWl0aXZlUmVzdWx0ID0gbV9vdXQuYm9vbGVhblRydWU7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNTAxMCwxMyArNTAwNiwxMyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVUcnVlKSwgbV9vdXQuY29u
c3RJbnQ2NChWYWx1ZUZhbHNlKSk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBpc05vdE51bGx5
KExWYWx1ZSB2YWx1ZSkKKyAgICBMVmFsdWUgaXNOb3RPdGhlcihMVmFsdWUgdmFsdWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gbV9vdXQubm90RXF1YWwoCiAgICAgICAgICAgICBtX291dC5iaXRB
bmQodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoflRhZ0JpdFVuZGVmaW5lZCkpLAogICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZU51bGwpKTsKICAgICB9Ci0gICAgTFZhbHVlIGlzTnVs
bHkoTFZhbHVlIHZhbHVlKQorICAgIExWYWx1ZSBpc090aGVyKExWYWx1ZSB2YWx1ZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKICAgICAgICAgICAgIG1fb3V0LmJpdEFuZCh2
YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCh+VGFnQml0VW5kZWZpbmVkKSksCkBAIC01MDc1LDYgKzUw
NzEsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5vdENlbGxVc2U6CiAgICAgICAgICAgICBz
cGVjdWxhdGVOb3RDZWxsKGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
T3RoZXJVc2U6CisgICAgICAgICAgICBzcGVjdWxhdGVPdGhlcihlZGdlKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIE1pc2NVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVNaXNj
KGVkZ2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MjA4LDcgKzUyMDcsNyBAQCBwcml2YXRl
OgogICAgICAgICBtX291dC5hcHBlbmRUbyhwcmltaXRpdmVDYXNlLCBjb250aW51YXRpb24pOwog
ICAgICAgICAKICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBqc1ZhbHVlVmFs
dWUodmFsdWUpLCBlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlciwgaXNOb3ROdWxseSh2YWx1ZSkp
OworICAgICAgICAgICAganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZSwgU3BlY0NlbGwgfCBTcGVj
T3RoZXIsIGlzTm90T3RoZXIodmFsdWUpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKICAgICAgICAgCkBAIC01MzQyLDE2ICs1MzQxLDI1IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghbV9pbnRlcnByZXRlci5uZWVkc1R5cGVDaGVjayhlZGdlKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFs
dWUoZWRnZSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFs
T3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICAgICAgdHlwZUNoZWNrKGpzVmFsdWVWYWx1ZSh2YWx1
ZSksIGVkZ2UsIH5TcGVjQ2VsbCwgaXNDZWxsKHZhbHVlKSk7CiAgICAgfQogICAgIAorICAgIHZv
aWQgc3BlY3VsYXRlT3RoZXIoRWRnZSBlZGdlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2ludGVy
cHJldGVyLm5lZWRzVHlwZUNoZWNrKGVkZ2UpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShlZGdlLCBNYW51YWxPcGVyYW5k
U3BlY3VsYXRpb24pOworICAgICAgICB0eXBlQ2hlY2soanNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRn
ZSwgU3BlY090aGVyLCBpc05vdE90aGVyKHZhbHVlKSk7CisgICAgfQorICAgIAogICAgIHZvaWQg
c3BlY3VsYXRlTWlzYyhFZGdlIGVkZ2UpCiAgICAgewogICAgICAgICBpZiAoIW1faW50ZXJwcmV0
ZXIubmVlZHNUeXBlQ2hlY2soZWRnZSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAot
ICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UpOworICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CiAgICAg
ICAgIHR5cGVDaGVjayhqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLCBTcGVjTWlzYywgaXNOb3RN
aXNjKHZhbHVlKSk7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1lcS1pbnRlZ2VyLXRvLW1pc2MuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9jb21wYXJlLXN0cmljdC1l
cS1pbnRlZ2VyLXRvLW1pc2MuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2NvbXBhcmUtc3RyaWN0LWVxLWludGVnZXItdG8tbWlzYy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI1IEBACitmdW5jdGlvbiBmb28odGhpbmd5KSB7CisgICAg
aWYgKHRoaW5neS5sZW5ndGggPT09IHZvaWQgMCB8fCB0aGluZ3kuY2hhckF0ICE9PSB2b2lkIDAp
CisgICAgICAgIHJldHVybiAieWVzIjsKKyAgICByZXR1cm4gIm5vIjsKK30KKworbm9JbmxpbmUo
Zm9vKTsKKworZnVuY3Rpb24gdGVzdChvYmplY3QsIGV4cGVjdGVkKSB7CisgICAgdmFyIHJlc3Vs
dCA9IGZvbyhvYmplY3QpOworICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcigiQmFkIHJlc3VsdDogIiArIHJlc3VsdCk7Cit9CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgdGVzdCh7fSwgInllcyIpOworICAgIHRlc3QoW10s
ICJubyIpOworICAgIHRlc3QoImhlbGxvIiwgInllcyIpOworICAgIHRlc3QoKGZ1bmN0aW9uKCl7
cmV0dXJuIGFyZ3VtZW50czt9KSgpLCAibm8iKTsKKyAgICB2YXIgYXJyYXkgPSBbXTsKKyAgICBm
b3IgKHZhciBqID0gMDsgaiA8IDEwMDsgKytqKSB7CisgICAgICAgIHRlc3QoYXJyYXksICJubyIp
OworICAgICAgICBhcnJheS5wdXNoKDQyKTsKKyAgICB9Cit9Cg==
</data>
<flag name="review"
          id="250532"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>