<?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>117363</bug_id>
          
          <creation_ts>2013-06-07 15:24:19 -0700</creation_ts>
          <short_desc>fourthTier: don&apos;t insert ForceOSRExits except for inadequate coverage</short_desc>
          <delta_ts>2013-09-20 12:21:47 -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>
          
          
          <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>898310</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-07 15:24:19 -0700</bug_when>
    <thetext>Previously (in http://trac.webkit.org/changeset/151303) I made it so that we inserted ForceOSRExits more eagerly.  I now think it&apos;s better to have contradictions execute normally and exit with full OSR exit profiling.  It&apos;s better at catching the few cases where the DFG will end up with different types than the baseline engines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898311</commentid>
    <comment_count>1</comment_count>
      <attachid>204071</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-07 15:26:32 -0700</bug_when>
    <thetext>Created attachment 204071
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898315</commentid>
    <comment_count>2</comment_count>
      <attachid>204072</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-07 15:49:10 -0700</bug_when>
    <thetext>Created attachment 204072
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898318</commentid>
    <comment_count>3</comment_count>
      <attachid>204072</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-06-07 16:01:42 -0700</bug_when>
    <thetext>Comment on attachment 204072
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898333</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-07 17:06:16 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/151343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931515</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-09-20 12:21:47 -0700</bug_when>
    <thetext>This is leading to crashes on iCloud.com :(</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204071</attachid>
            <date>2013-06-07 15:26:32 -0700</date>
            <delta_ts>2013-06-07 15:49:10 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22569</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxMzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDEzLTA2LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogZG9uJ3QgaW5zZXJ0IEZvcmNlT1NSRXhpdHMgZXhjZXB0IGZvciBpbmFkZXF1
YXRlIGNvdmVyYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTczNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFByZXZpb3VzbHkgKGluIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzE1MTMwMykgSSBtYWRlIGl0IHNvIHRoYXQgd2UKKyAgICAgICAgaW5zZXJ0ZWQgRm9yY2VP
U1JFeGl0cyBtb3JlIGVhZ2VybHkuICBJIG5vdyB0aGluayBpdCdzIGJldHRlciB0byBoYXZlCisg
ICAgICAgIGNvbnRyYWRpY3Rpb25zIGV4ZWN1dGUgbm9ybWFsbHkgYW5kIGV4aXQgd2l0aCBmdWxs
IE9TUiBleGl0IHByb2ZpbGluZy4gIEl0J3MKKyAgICAgICAgYmV0dGVyIGF0IGNhdGNoaW5nIHRo
ZSBmZXcgY2FzZXMgd2hlcmUgdGhlIERGRyB3aWxsIGVuZCB1cCB3aXRoIGRpZmZlcmVudAorICAg
ICAgICB0eXBlcyB0aGFuIHRoZSBiYXNlbGluZSBlbmdpbmVzLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBzaW1wbGlmaWVzIGEgYnVuY2ggb2YgY29kZS4gRm9yIGV4YW1wbGUgaXQgZ2V0cyByaWQg
b2YKKyAgICAgICAgQ29uc3RhbnRGb2xkaW5nUGhhc2U6OnBhaW50VW5yZWFjaGFibGVDb2RlKCku
CisgICAgICAgIAorICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIHRoaXMgYXMgYSBwYXJ0aWFsIHJv
bGwtb3V0IG9mIHIxNTEzMDMsIGV4Y2VwdCB0aGF0IGl0IHVzZXMKKyAgICAgICAgdGhlIGZhY2ls
aXRpZXMgaW50cm9kdWNlZCBieSB0aGF0IHBhdGNoIHRvIGdpdmUgdXMgcnVuLXRpbWUgYXNzZXJ0
aW9ucyB0aGF0CisgICAgICAgIGNoZWNrIHRoZSBDRkEncyBjb3JyZWN0bmVzczogaWYgdGhlIENG
QSB0aG91Z2h0IHRoYXQgc29tZXRoaW5nIHdhcyBhCisgICAgICAgIGNvbnRyYWRpY3Rpb24gYnV0
IHRoZSBjb2RlIGRpZG4ndCBleGl0LCB3ZSdsbCBub3cgdHJhcC4KKworICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpB
YnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpzdGFydEV4
ZWN1dGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RTdGF0ZTo6ZmlsdGVyQXJyYXlNb2Rlcyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RTdGF0ZTo6ZmlsdGVyQnlWYWx1ZSk6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0U3RhdGU6OmZpbHRlckFycmF5TW9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OmZpbHRlckJ5VmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdDRkFQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAg
ICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
b25zdGFudEZvbGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChDb25zdGFudEZvbGRpbmdQaGFz
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5v
ZGUpOgorCiAyMDEzLTA2LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgZml4IHJlbGVhc2UgYnVpbGQuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE1MTMzNSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgQWJzdHJhY3RTdGF0ZTo6QWJzdHJhY3RTdGF0ZShH
cmFwaCYgZ3JhcAogICAgICwgbV92YXJpYWJsZXMobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSwgZ3JhcGgubV9sb2NhbFZhcnMpCiAgICAgLCBtX2Jsb2NrKDApCiAgICAgLCBtX2N1cnJlbnRO
b2RlKDApCi0gICAgLCBtX2V4ZWN1dGlvbk1vZGUoQ2xlYW5GaWx0cmF0aW9uKQogewogfQogCkBA
IC0yMzMsNyArMjMyLDcgQEAgQWJzdHJhY3RTdGF0ZTo6Qm9vbGVhblJlc3VsdCBBYnN0cmFjdFN0
YQogICAgIHJldHVybiBVbmtub3duQm9vbGVhblJlc3VsdDsKIH0KIAotYm9vbCBBYnN0cmFjdFN0
YXRlOjpzdGFydEV4ZWN1dGluZyhOb2RlKiBub2RlLCBFeGVjdXRpb25Nb2RlIGV4ZWN1dGlvbk1v
ZGUpCitib29sIEFic3RyYWN0U3RhdGU6OnN0YXJ0RXhlY3V0aW5nKE5vZGUqIG5vZGUpCiB7CiAg
ICAgQVNTRVJUKG1fYmxvY2spOwogICAgIEFTU0VSVChtX2lzVmFsaWQpOwpAQCAtMjQ0LDE4ICsy
NDMsMTYgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpzdGFydEV4ZWN1dGluZyhOb2RlKgogICAgIAog
ICAgIGlmICghbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkgewogICAgICAgICBtX2N1cnJlbnROb2Rl
ID0gMDsKLSAgICAgICAgbV9leGVjdXRpb25Nb2RlID0gQ2xlYW5GaWx0cmF0aW9uOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIG1fY3VycmVudE5vZGUgPSBub2RlOwot
ICAgIG1fZXhlY3V0aW9uTW9kZSA9IGV4ZWN1dGlvbk1vZGU7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQWJzdHJhY3RTdGF0ZTo6c3RhcnRFeGVjdXRpbmcodW5zaWduZWQgaW5kZXhJbkJs
b2NrLCBFeGVjdXRpb25Nb2RlIGV4ZWN1dGlvbk1vZGUpCitib29sIEFic3RyYWN0U3RhdGU6OnN0
YXJ0RXhlY3V0aW5nKHVuc2lnbmVkIGluZGV4SW5CbG9jaykKIHsKLSAgICByZXR1cm4gc3RhcnRF
eGVjdXRpbmcobV9ibG9jay0+YXQoaW5kZXhJbkJsb2NrKSwgZXhlY3V0aW9uTW9kZSk7CisgICAg
cmV0dXJuIHN0YXJ0RXhlY3V0aW5nKG1fYmxvY2stPmF0KGluZGV4SW5CbG9jaykpOwogfQogCiB2
b2lkIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZGdlcyhOb2RlKiBub2RlKQpAQCAtMTA5Myw4ICsx
MDkwLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAg
ICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVyKAogICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSwKLSAgICAgICAgICAg
ICAgICBOb3RTdHJpbmdPYmplY3QpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOyAvLyBXZSBjb3VsZCBiZSBtb3JlIHByZWNp
c2UgYnV0IGl0J3MgbGlrZWx5IG5vdCB3b3J0aCBpdC4KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgpAQCAtMTMwMSw3ICsxMjk3LDcgQEAg
Ym9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgc3RhdHVzLnNwZWNpZmljVmFsdWUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkubWFrZVRvcCgpOwotICAgICAgICAgICAgICAgICAgICBmaWx0ZXIobm9kZS0+
Y2hpbGQxKCksIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSwgQmFkQ2FjaGUpOworICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRz
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzM5LDEyICsxMzM1LDYg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBFeGl0S2luZCBleGl0S2luZDsKLSAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5vcCgpID09IFdlYWtKU0NvbnN0YW50KQotICAgICAgICAgICAg
ZXhpdEtpbmQgPSBCYWRXZWFrQ29uc3RhbnRDYWNoZTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgZXhpdEtpbmQgPSBCYWRDYWNoZTsKLQogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwogCiAgICAgICAgIC8vIElmIHRoaXMgc3RydWN0dXJlIGNoZWNrIGlzIGF0dGVtcHRpbmcgdG8g
cHJvdmUga25vd2xlZGdlIGFscmVhZHkgaGVsZCBpbgpAQCAtMTM1MywxMSArMTM0MywxMSBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgIGlmICh2YWx1
ZS5tX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KQogICAgICAgICAgICAg
JiYgdmFsdWUubV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKSkgewogICAg
ICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7Ci0gICAgICAgICAgICBmaWx0ZXIodmFs
dWUsIHZhbHVlLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuc2luZ2xldG9uKCksIGV4aXRLaW5k
KTsKKyAgICAgICAgICAgIGZpbHRlcih2YWx1ZSwgdmFsdWUubV9mdXR1cmVQb3NzaWJsZVN0cnVj
dHVyZS5zaW5nbGV0b24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIGZpbHRlcih2YWx1ZSwgc2V0LCBleGl0S2luZCk7CisgICAgICAgIGZpbHRlcih2YWx1ZSwg
c2V0KTsKICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEzNjYsMTIgKzEzNTYsNiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnCiAgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnQ6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKIAotICAgICAgICBFeGl0S2luZCBleGl0S2luZDsKLSAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5vcCgpID09IFdlYWtKU0NvbnN0YW50KQotICAgICAgICAgICAgZXhpdEtpbmQgPSBC
YWRXZWFrQ29uc3RhbnRDYWNoZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZXhpdEtpbmQg
PSBCYWRDYWNoZTsKLQogICAgICAgICAvLyBJdCdzIG9ubHkgdmFsaWQgdG8gaXNzdWUgYSBzdHJ1
Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IGlmIHdlIGFscmVhZHkKICAgICAgICAgLy8ga25v
dyB0aGF0IHRoZSB3YXRjaHBvaW50IGNvdmVycyBhIHN1cGVyc2V0IG9mIHRoZSBzdHJ1Y3R1cmVz
IGtub3duIHRvCiAgICAgICAgIC8vIGJlbG9uZyB0byB0aGUgc2V0IG9mIGZ1dHVyZSBzdHJ1Y3R1
cmVzIHRoYXQgdGhpcyB2YWx1ZSBtYXkgaGF2ZS4KQEAgLTEzODIsNyArMTM2Niw3IEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgIHZhbHVlLm1f
ZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQobm9kZS0+c3Ry
dWN0dXJlKCkpKQogICAgICAgICAgICAgfHwgbV9ncmFwaC53YXRjaHBvaW50cygpLnNob3VsZEFz
c3VtZU1peGVkU3RhdGUobm9kZS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
KCkpKTsKICAgICAgICAgCi0gICAgICAgIGZpbHRlcih2YWx1ZSwgbm9kZS0+c3RydWN0dXJlKCks
IGV4aXRLaW5kKTsKKyAgICAgICAgZmlsdGVyKHZhbHVlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwogICAgICAgICBicmVhazsKQEAgLTE0NzcsNyArMTQ2MSw3IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgIG1fZm91bmRDb25zdGFu
dHMgPSB0cnVlOwogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBjbG9i
YmVyU3RydWN0dXJlcyhpbmRleEluQmxvY2spOwotICAgICAgICBmaWx0ZXIodmFsdWUsIHNldCwg
QmFkSW5kZXhpbmdUeXBlKTsKKyAgICAgICAgZmlsdGVyKHZhbHVlLCBzZXQpOwogICAgICAgICBt
X2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTUwMyw3
ICsxNDg3LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOyAvLyBMaWVz
ISBXZSBjYW4gZG8gYmV0dGVyLgotICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgp
LCBub2RlLT5mdW5jdGlvbigpLCBCYWRGdW5jdGlvbik7CisgICAgICAgIGZpbHRlckJ5VmFsdWUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUtPmZ1bmN0aW9uKCkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIApAQCAtMTUxOCw3ICsxNTAyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldLAogICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0g
UHV0QnlJZERpcmVjdCk7CiAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgp
KSB7Ci0gICAgICAgICAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBzdHJ1Y3R1cmUsIEJh
ZENhY2hlKTsKKyAgICAgICAgICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNjA3LDEwICsxNTkxLDEwIEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICByZXR1cm4gZXhlY3V0ZUVm
ZmVjdHMoaW5kZXhJbkJsb2NrLCBtX2Jsb2NrLT5hdChpbmRleEluQmxvY2spKTsKIH0KIAotYm9v
bCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaywgRXhlY3V0aW9u
TW9kZSBleGVjdXRpb25Nb2RlKQorYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVk
IGluZGV4SW5CbG9jaykKIHsKICAgICBOb2RlKiBub2RlID0gbV9ibG9jay0+YXQoaW5kZXhJbkJs
b2NrKTsKLSAgICBpZiAoIXN0YXJ0RXhlY3V0aW5nKG5vZGUsIGV4ZWN1dGlvbk1vZGUpKQorICAg
IGlmICghc3RhcnRFeGVjdXRpbmcobm9kZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAog
ICAgIGV4ZWN1dGVFZGdlcyhub2RlKTsKQEAgLTE4NDQsNjEgKzE4MjgsMzkgQEAgdm9pZCBBYnN0
cmFjdFN0YXRlOjpkdW1wKFByaW50U3RyZWFtJiBvdQogICAgIH0KIH0KIAotRmlsdHJhdGlvblJl
c3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXIoCi0gICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUsIGNv
bnN0IFN0cnVjdHVyZVNldCYgc2V0LCBFeGl0S2luZCBleGl0S2luZCkKK0ZpbHRyYXRpb25SZXN1
bHQgQWJzdHJhY3RTdGF0ZTo6ZmlsdGVyKEFic3RyYWN0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAodmFsdWUuZmlsdGVyKG1fZ3JhcGgsIHNldCkgPT0g
RmlsdHJhdGlvbk9LKQogICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOwotICAgIGJhaWwoZXhp
dEtpbmQpOworICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgIHJldHVybiBDb250cmFkaWN0aW9u
OwogfQogICAgIAotRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXJBcnJheU1v
ZGVzKAotICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlLCBBcnJheU1vZGVzIGFycmF5TW9kZXMsIEV4
aXRLaW5kIGV4aXRLaW5kKQorRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXJB
cnJheU1vZGVzKEFic3RyYWN0VmFsdWUmIHZhbHVlLCBBcnJheU1vZGVzIGFycmF5TW9kZXMpCiB7
CiAgICAgaWYgKHZhbHVlLmZpbHRlckFycmF5TW9kZXMoYXJyYXlNb2RlcykgPT0gRmlsdHJhdGlv
bk9LKQogICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOwotICAgIGJhaWwoZXhpdEtpbmQpOwor
ICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgIHJldHVybiBDb250cmFkaWN0aW9uOwogfQogICAg
IAotRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXIoCi0gICAgQWJzdHJhY3RW
YWx1ZSYgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUsIEV4aXRLaW5kIGV4aXRLaW5kKQorRmls
dHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYgdmFsdWUs
IFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKHZhbHVlLmZpbHRlcih0eXBlKSA9PSBG
aWx0cmF0aW9uT0spCiAgICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7Ci0gICAgYmFpbChleGl0
S2luZCk7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAgICAgcmV0dXJuIENvbnRyYWRpY3Rpb247
CiB9CiAgICAgCiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0U3RhdGU6OmZpbHRlckJ5VmFsdWUo
Ci0gICAgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSwgSlNWYWx1ZSBjb25jcmV0ZVZhbHVl
LCBFeGl0S2luZCBleGl0S2luZCkKKyAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdFZhbHVlLCBK
U1ZhbHVlIGNvbmNyZXRlVmFsdWUpCiB7CiAgICAgaWYgKGFic3RyYWN0VmFsdWUuZmlsdGVyQnlW
YWx1ZShjb25jcmV0ZVZhbHVlKSA9PSBGaWx0cmF0aW9uT0spCiAgICAgICAgIHJldHVybiBGaWx0
cmF0aW9uT0s7Ci0gICAgYmFpbChleGl0S2luZCk7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAg
ICAgcmV0dXJuIENvbnRyYWRpY3Rpb247CiB9CiAKLXZvaWQgQWJzdHJhY3RTdGF0ZTo6YmFpbChF
eGl0S2luZCBleGl0S2luZCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50Tm9kZSk7Ci0gICAgbV9p
c1ZhbGlkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChtX2V4ZWN1dGlvbk1vZGUpIHsKLSAgICBjYXNl
IFN0aWxsQ29udmVyZ2luZzoKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWZ0ZXJDb252ZXJn
ZW5jZTogewotICAgICAgICBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fY3VycmVudE5v
ZGUtPmNvZGVPcmlnaW4pLT5hZGRGcmVxdWVudEV4aXRTaXRlKAotICAgICAgICAgICAgRnJlcXVl
bnRFeGl0U2l0ZShtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGV4aXRL
aW5kKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDbGVhbkZpbHRyYXRpb246
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLSAgICAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9u
IDE1MTMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05MywyMSArOTMsNiBAQCBwdWJsaWM6CiAgICAgICAgIE1lcmdl
VG9TdWNjZXNzb3JzCiAgICAgfTsKICAgICAKLSAgICBlbnVtIEV4ZWN1dGlvbk1vZGUgewotICAg
ICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSBjb250cmFkaWN0aW9uLCBhc3N1bWUgdGhhdCB0aGlz
IG1pZ2h0IGp1c3QKLSAgICAgICAgLy8gYmUgYmVjYXVzZSB3ZSBoYXZlbid0IGNvbnZlcmdlZCB5
ZXQuCi0gICAgICAgIFN0aWxsQ29udmVyZ2luZywKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHdl
IGVuY291bnRlciBhIGNvbnRyYWRpdGlvbiwgYXNzdW1lIHRoYXQgdGhpcyBjb250cmFkaWN0aW9u
Ci0gICAgICAgIC8vIGlzIHJlYWwgYW5kIHJlcG9ydCBpdCB0byB0aGUgcHJvZmlsaW5nIGluZnJh
c3RydWN0dXJlIGFzIGlmIGl0Ci0gICAgICAgIC8vIGhhcHBlbmVkIGF0IHJ1biB0aW1lLgotICAg
ICAgICBBZnRlckNvbnZlcmdlbmNlLAotICAgICAgICAKLSAgICAgICAgLy8gQXNzdW1lIHRoYXQg
dGhlcmUgY2Fubm90IGJlIGFueSBjb250cmFkaWN0aW9ucyBvdGhlciB0aGFuCi0gICAgICAgIC8v
IEZvcmNlT1NSRXhpdCBiZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSBjbGVhbmVkIHRoZSBncmFwaC4K
LSAgICAgICAgQ2xlYW5GaWx0cmF0aW9uCi0gICAgfTsKLSAgICAKICAgICBBYnN0cmFjdFN0YXRl
KEdyYXBoJik7CiAgICAgCiAgICAgfkFic3RyYWN0U3RhdGUoKTsKQEAgLTE5MSwxMiArMTc2LDEy
IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBlcXVp
dmFsZW50IHRvIGRvaW5nOgogICAgIC8vCi0gICAgLy8gaWYgKHN0YXRlLnN0YXJ0RXhlY3V0aW5n
KGluZGV4LCBleGVjdXRpb25Nb2RlKSkgeworICAgIC8vIGlmIChzdGF0ZS5zdGFydEV4ZWN1dGlu
ZyhpbmRleCkpIHsKICAgICAvLyAgICAgc3RhdGUuZXhlY3V0ZUVkZ2VzKGluZGV4KTsKICAgICAv
LyAgICAgcmVzdWx0ID0gc3RhdGUuZXhlY3V0ZUVmZmVjdHMoaW5kZXgpOwogICAgIC8vIH0gZWxz
ZQogICAgIC8vICAgICByZXN1bHQgPSB0cnVlOwotICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCBp
bmRleEluQmxvY2ssIEV4ZWN1dGlvbk1vZGUpOworICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCBp
bmRleEluQmxvY2spOwogICAgIAogICAgIC8vIEluZGljYXRlIHRoZSBzdGFydCBvZiBleGVjdXRp
b24gb2YgdGhlIG5vZGUuIEl0IHJlc2V0cyBhbnkgc3RhdGUgaW4gdGhlIG5vZGUsCiAgICAgLy8g
dGhhdCBpcyBwcm9ncmVzc2l2ZWx5IGJ1aWx0IHVwIGJ5IGV4ZWN1dGVFZGdlcygpIGFuZCBleGVj
dXRlRWZmZWN0cygpLiBJbgpAQCAtMjA0LDggKzE4OSw4IEBAIHB1YmxpYzoKICAgICAvLyBzdGFy
dEV4ZWN1dGluZygpIGFuZCBleGVjdXRlRWRnZXMoKS9FZmZlY3RzKCkgd2hldGhlciB0aGUgbGFz
dCBydW4gb2YgdGhlCiAgICAgLy8gYW5hbHlzaXMgY29uY2x1ZGVkIHRoYXQgdGhlIG5vZGUgY2Fu
IGV4aXQsIHlvdSBzaG91bGQgcHJvYmFibHkgc2V0IHRoYXQKICAgICAvLyBpbmZvcm1hdGlvbiBh
c2lkZSBwcmlvciB0byBjYWxsaW5nIHN0YXJ0RXhlY3V0aW5nKCkuCi0gICAgYm9vbCBzdGFydEV4
ZWN1dGluZyhOb2RlKiwgRXhlY3V0aW9uTW9kZSk7Ci0gICAgYm9vbCBzdGFydEV4ZWN1dGluZyh1
bnNpZ25lZCBpbmRleEluQmxvY2ssIEV4ZWN1dGlvbk1vZGUpOworICAgIGJvb2wgc3RhcnRFeGVj
dXRpbmcoTm9kZSopOworICAgIGJvb2wgc3RhcnRFeGVjdXRpbmcodW5zaWduZWQgaW5kZXhJbkJs
b2NrKTsKICAgICAKICAgICAvLyBBYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGVkZ2VzIG9mIHRoZSBn
aXZlbiBub2RlLiBUaGlzIHJ1bnMgZmlsdGVyRWRnZUJ5VXNlKCkKICAgICAvLyBvbiBhbGwgZWRn
ZXMgb2YgdGhlIG5vZGUuIFlvdSBjYW4gc2tpcCB0aGlzIHN0ZXAsIGlmIHlvdSBoYXZlIGFscmVh
ZHkgdXNlZApAQCAtMjQ3LDM2ICsyMzIsMzMgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEZpbHRy
YXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIEV4aXRL
aW5kIGV4aXRLaW5kKQorICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzZXQpCiAgICAgewotICAgICAgICByZXR1cm4gZmlsdGVyKGZvck5vZGUo
bm9kZSksIHNldCwgZXhpdEtpbmQpOworICAgICAgICByZXR1cm4gZmlsdGVyKGZvck5vZGUobm9k
ZSksIHNldCk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgRmls
dHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKAotICAgICAgICBUIG5vZGUsIEFycmF5TW9k
ZXMgYXJyYXlNb2RlcywgRXhpdEtpbmQgZXhpdEtpbmQgPSBCYWRJbmRleGluZ1R5cGUpCisgICAg
RmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKFQgbm9kZSwgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZpbHRlckFycmF5TW9kZXMoZm9yTm9kZShu
b2RlKSwgYXJyYXlNb2RlcywgZXhpdEtpbmQpOworICAgICAgICByZXR1cm4gZmlsdGVyQXJyYXlN
b2Rlcyhmb3JOb2RlKG5vZGUpLCBhcnJheU1vZGVzKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihUIG5vZGUsIFNwZWN1
bGF0ZWRUeXBlIHR5cGUsIEV4aXRLaW5kIGV4aXRLaW5kID0gQmFkVHlwZSkKKyAgICBGaWx0cmF0
aW9uUmVzdWx0IGZpbHRlcihUIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gZmlsdGVyKGZvck5vZGUobm9kZSksIHR5cGUsIGV4aXRLaW5kKTsKKyAgICAg
ICAgcmV0dXJuIGZpbHRlcihmb3JOb2RlKG5vZGUpLCB0eXBlKTsKICAgICB9CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUo
VCBub2RlLCBKU1ZhbHVlIHZhbHVlLCBFeGl0S2luZCBleGl0S2luZCkKKyAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlckJ5VmFsdWUoVCBub2RlLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGZpbHRlckJ5VmFsdWUoZm9yTm9kZShub2RlKSwgdmFsdWUsIGV4aXRLaW5kKTsK
KyAgICAgICAgcmV0dXJuIGZpbHRlckJ5VmFsdWUoZm9yTm9kZShub2RlKSwgdmFsdWUpOwogICAg
IH0KICAgICAKLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgY29u
c3QgU3RydWN0dXJlU2V0JiwgRXhpdEtpbmQpOwotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
QXJyYXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2RlcywgRXhpdEtpbmQgPSBCYWRJbmRl
eGluZ1R5cGUpOwotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBT
cGVjdWxhdGVkVHlwZSwgRXhpdEtpbmQgPSBCYWRUeXBlKTsKLSAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEpTVmFsdWUsIEV4aXRLaW5kKTsKLSAgICAK
LSAgICB2b2lkIGJhaWwoRXhpdEtpbmQpOworICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKEFi
c3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckFycmF5TW9kZXMoQWJzdHJhY3RWYWx1ZSYsIEFycmF5TW9kZXMpOworICAgIEZpbHRy
YXRpb25SZXN1bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBTcGVjdWxhdGVkVHlwZSk7CisgICAg
RmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKEFic3RyYWN0VmFsdWUmLCBKU1ZhbHVlKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbG9iYmVyV29ybGQoY29uc3QgQ29kZU9yaWdpbiYs
IHVuc2lnbmVkIGluZGV4SW5CbG9jayk7CkBAIC0zMzIsNyArMzE0LDYgQEAgcHJpdmF0ZToKICAg
ICBPcGVyYW5kczxBYnN0cmFjdFZhbHVlPiBtX3ZhcmlhYmxlczsKICAgICBCYXNpY0Jsb2NrKiBt
X2Jsb2NrOwogICAgIE5vZGUqIG1fY3VycmVudE5vZGU7Ci0gICAgRXhlY3V0aW9uTW9kZSBtX2V4
ZWN1dGlvbk1vZGU7CiAgICAgCiAgICAgYm9vbCBtX2hhdmVTdHJ1Y3R1cmVzOwogICAgIGJvb2wg
bV9mb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCShyZXZpc2lvbiAxNTEzMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoIW1fc3RhdGUuZXhlY3V0ZShpLCBBYnN0cmFjdFN0YXRlOjpTdGlsbENvbnZlcmdpbmcpKSB7
CisgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZXhlY3V0ZShpKSkgewogICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAgRXhw
ZWN0IE9TUiBleGl0LlxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMTUxMzM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Js
b2NrSW5kZXhdLmdldCgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghYmxvY2stPmNmYURpZEZpbmlzaCkKLSAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHBhaW50VW5yZWFjaGFibGVDb2RlKGJsb2NrSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKGJsb2NrLT5jZmFGb3VuZENvbnN0YW50cykKICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IGZvbGRDb25zdGFudHMoYmxvY2tJbmRleCk7CiAgICAgICAgIH0KQEAgLTEw
Myw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KSkgewotICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrLCBBYnN0cmFjdFN0YXRl
OjpDbGVhbkZpbHRyYXRpb24pOyAvLyBDYXRjaCB0aGUgZmFjdCB0aGF0IHdlIG1heSBmaWx0ZXIg
b24gY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9j
ayk7IC8vIENhdGNoIHRoZSBmYWN0IHRoYXQgd2UgbWF5IGZpbHRlciBvbiBjZWxsLgogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEx
Miw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVWYWx1
ZS5pc1N1YnNldE9mKHNldCkKICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlVmFsdWUu
aGFzU2luZ2xldG9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBzdHJ1Y3R1cmVWYWx1ZS5zaW5nbGV0b24oKTsKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jaywgQWJzdHJhY3RTdGF0ZTo6Q2xlYW5GaWx0cmF0aW9u
KTsgLy8gQ2F0Y2ggdGhlIGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNlbGwuCisgICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBDYXRjaCB0aGUg
ZmFjdCB0aGF0IHdlIG1heSBmaWx0ZXIgb24gY2VsbC4KICAgICAgICAgICAgICAgICAgICAgQWRq
YWNlbmN5TGlzdCBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuOwogICAgICAgICAgICAgICAgICAg
ICBjaGlsZHJlbi5yZW1vdmVFZGdlKDApOwogICAgICAgICAgICAgICAgICAgICBpZiAoISFjaGls
ZHJlbi5jaGlsZDEoKSkgewpAQCAtMTgwLDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgLy8gTm93IGJlZm9yZSB3ZSBkbyBhbnl0aGluZyBlbHNlLCBwdXNoIHRoZSBDRkEgZm9y
d2FyZCBvdmVyIHRoZSBHZXRCeUlkCiAgICAgICAgICAgICAgICAgLy8gYW5kIG1ha2Ugc3VyZSB3
ZSBzaWduYWwgdG8gdGhlIGxvb3AgdGhhdCBpdCBzaG91bGQgY29udGludWUgYW5kIG5vdAogICAg
ICAgICAgICAgICAgIC8vIGRvIGFueSBlbGltaW5hdGlvbnMuCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jaywgQWJzdHJhY3RTdGF0ZTo6Q2xlYW5GaWx0cmF0aW9u
KTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAg
ICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAobmVlZHNXYXRjaHBvaW50KSB7CkBAIC0yNDMsNyArMjQxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAvLyBOb3cgYmVmb3JlIHdlIGRvIGFueXRoaW5nIGVsc2UsIHB1
c2ggdGhlIENGQSBmb3J3YXJkIG92ZXIgdGhlIFB1dEJ5SWQKICAgICAgICAgICAgICAgICAvLyBh
bmQgbWFrZSBzdXJlIHdlIHNpZ25hbCB0byB0aGUgbG9vcCB0aGF0IGl0IHNob3VsZCBjb250aW51
ZSBhbmQgbm90CiAgICAgICAgICAgICAgICAgLy8gZG8gYW55IGVsaW1pbmF0aW9ucy4KLSAgICAg
ICAgICAgICAgICBtX3N0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrLCBBYnN0cmFjdFN0YXRlOjpD
bGVhbkZpbHRyYXRpb24pOworICAgICAgICAgICAgICAgIG1fc3RhdGUuZXhlY3V0ZShpbmRleElu
QmxvY2spOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChuZWVkc1dhdGNocG9pbnQpIHsKQEAgLTMzMiw3ICsz
MzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9zdGF0ZS5leGVjdXRlKGluZGV4SW5C
bG9jaywgQWJzdHJhY3RTdGF0ZTo6Q2xlYW5GaWx0cmF0aW9uKTsKKyAgICAgICAgICAgIG1fc3Rh
dGUuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAgICAgICAgICAgaWYgKCFub2RlLT5zaG91bGRH
ZW5lcmF0ZSgpIHx8IG1fc3RhdGUuZGlkQ2xvYmJlcigpIHx8IG5vZGUtPmhhc0NvbnN0YW50KCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKG5vZGUpLnZhbHVlKCk7CkBAIC00MjAsNTQgKzQxOCw2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoY2VsbC0+c3Ry
dWN0dXJlKCkpKSwgRWRnZSh3ZWFrQ29uc3RhbnQsIENlbGxVc2UpKTsKICAgICB9CiAgICAgCi0g
ICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgQ0ZBIG1heSByZWFjaCBjb25jbHVz
aW9ucyBhYm91dCBjb25zdGFudHMgYmFzZWQgb24gaXRzCi0gICAgLy8gYXNzdW1wdGlvbiB0aGF0
IGNlcnRhaW4gY29kZSBtdXN0IGV4aXQsIGJ1dCB0aGVuIHRob3NlIGNvbnN0YW50cyBtYXkgbGVh
ZCBmdXR1cmUKLSAgICAvLyByZWV4ZWN1dGlvbnMgb2YgdGhlIENGQSB0byBiZWxpZXZlIHRoYXQg
dGhlIHNhbWUgY29kZSB3aWxsIG5vdyBubyBsb25nZXIgZXhpdC4gVGh1cwotICAgIC8vIHRvIGVu
c3VyZSBzb3VuZG5lc3MsIHdlIG11c3QgcGFpbnQgdW5yZWFjaGFibGUgY29kZSBhcyBzdWNoLCBi
eSBpbnNlcnRpbmcgYW4KLSAgICAvLyB1bmNvbmRpdGlvbmFsIEZvcmNlT1NSRXhpdCB3aGVyZXZl
ciB3ZSBmaW5kIHRoYXQgYSBub2RlIHdvdWxkIGhhdmUgYWx3YXlzIGV4aXRlZC4KLSAgICAvLyBU
aGlzIHdpbGwgb25seSBoYXBwZW4gaW4gY2FzZXMgd2hlcmUgd2UgYXJlIG1ha2luZyBzdGF0aWMg
c3BlY3VsYXRpb25zLCBvciB3ZSdyZQotICAgIC8vIG1ha2luZyB0b3RhbGx5IHdyb25nIHNwZWN1
bGF0aW9ucyBkdWUgdG8gaW1wcmVjaXNpb24gaW4gdGhlIHByZWRpY3Rpb24gcHJvcGFnYXRvci4K
LSAgICBib29sIHBhaW50VW5yZWFjaGFibGVDb2RlKEJsb2NrSW5kZXggYmxvY2tJbmRleCkKLSAg
ICB7Ci0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAKLSNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJQYWludGlu
ZyB1bnJlYWNoYWJsZSBjb2RlIGluIEJsb2NrICMldS5cbiIsIGJsb2NrSW5kZXgpOwotI2VuZGlm
Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4
XS5nZXQoKTsKLSAgICAgICAgbV9zdGF0ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2spOwotICAgICAg
ICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sg
PCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewotICAgICAgICAgICAgbV9zdGF0ZS5l
eGVjdXRlKGluZGV4SW5CbG9jaywgQWJzdHJhY3RTdGF0ZTo6QWZ0ZXJDb252ZXJnZW5jZSk7Ci0g
ICAgICAgICAgICBpZiAobV9zdGF0ZS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5k
ZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRocm93OgotICAgICAgICAgICAgY2Fz
ZSBUaHJvd1JlZmVyZW5jZUVycm9yOgotICAgICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6Ci0g
ICAgICAgICAgICBjYXNlIEZvcndhcmRGb3JjZU9TUkV4aXQ6Ci0gICAgICAgICAgICAgICAgLy8g
RG8gbm90aGluZy4gVGhlc2Ugbm9kZXMgd2lsbCBhbHJlYWR5IGRvIHRoZSByaWdodCB0aGluZy4K
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwKLSAgICAgICAgICAgICAgICAg
ICAgKG5vZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSA/IEZvcndhcmRGb3JjZU9TUkV4
aXQgOiBGb3JjZU9TUkV4aXQsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4p
OwotICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9zdGF0ZS5yZXNldCgpOwotICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLQogICAgIEFic3RyYWN0
U3RhdGUgbV9zdGF0ZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE1MTMzNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQxLDExICsxNjQxLDE1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICBmb3IgKG1faW5kZXhJbkJs
b2NrID0gMDsgbV9pbmRleEluQmxvY2sgPCBibG9jay5zaXplKCk7ICsrbV9pbmRleEluQmxvY2sp
IHsKICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrW21faW5kZXhJbkJsb2NrXTsKICAgICAg
ICAgCi0gICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIGNvbnRyYWRpY3Rpb24gdGhlbiB0aGUgY29u
c3RhbnQgZm9sZGVyIG91Z2h0IHRvIGhhdmUgY2F1Z2h0IGl0LgotICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX3N0YXRlLmlzVmFsaWQoKSk7CisgICAgICAgIC8vIFdlIG1heSBoYXZlIGhpcyBhIGNv
bnRyYWRpY3Rpb24gdGhhdCB0aGUgQ0ZBIHdhcyBhd2FyZSBvZiBidXQgdGhhdCB0aGUgSklUCisg
ICAgICAgIC8vIGRpZG4ndCBjYXVzZSBkaXJlY3RseS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgYmFpbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2NhbkV4aXQgPSBtX2N1cnJlbnROb2RlLT5jYW5F
eGl0KCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUVmZmVjdHMgPSBtX3N0YXRlLnN0YXJ0
RXhlY3V0aW5nKG1fY3VycmVudE5vZGUsIEFic3RyYWN0U3RhdGU6OkNsZWFuRmlsdHJhdGlvbik7
CisgICAgICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUVmZmVjdHMgPSBtX3N0YXRlLnN0YXJ0RXhlY3V0
aW5nKG1fY3VycmVudE5vZGUpOwogICAgICAgICBtX2ppdC5zZXRGb3JOb2RlKG1fY3VycmVudE5v
ZGUpOwogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JPU1IgPSBtX2N1cnJlbnROb2RlLT5jb2RlT3Jp
Z2luOwogICAgICAgICBpZiAoIW1fY3VycmVudE5vZGUtPnNob3VsZEdlbmVyYXRlKCkpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxNTEzMzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBk
YXRhTG9nKCJMb3dlcmluZyAiLCBtX25vZGUsICJcbiIpOwogICAgICAgICAKLSAgICAgICAgYm9v
bCBzaG91bGRFeGVjdXRlRWZmZWN0cyA9IG1fc3RhdGUuc3RhcnRFeGVjdXRpbmcobV9ub2RlLCBB
YnN0cmFjdFN0YXRlOjpDbGVhbkZpbHRyYXRpb24pOworICAgICAgICBib29sIHNob3VsZEV4ZWN1
dGVFZmZlY3RzID0gbV9zdGF0ZS5zdGFydEV4ZWN1dGluZyhtX25vZGUpOwogICAgICAgICAKICAg
ICAgICAgbV9kaXJlY3Rpb24gPSAobV9ub2RlLT5mbGFncygpICYgTm9kZUV4aXRzRm9yd2FyZCkg
PyBGb3J3YXJkU3BlY3VsYXRpb24gOiBCYWNrd2FyZFNwZWN1bGF0aW9uOwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204072</attachid>
            <date>2013-06-07 15:49:10 -0700</date>
            <delta_ts>2013-06-07 16:01:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29842</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxMzM4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDEzLTA2LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogZG9uJ3QgaW5zZXJ0IEZvcmNlT1NSRXhpdHMgZXhjZXB0IGZvciBpbmFkZXF1
YXRlIGNvdmVyYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTczNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFByZXZpb3VzbHkgKGluIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzE1MTMwMykgSSBtYWRlIGl0IHNvIHRoYXQgd2UKKyAgICAgICAgaW5zZXJ0ZWQgRm9yY2VP
U1JFeGl0cyBtb3JlIGVhZ2VybHkuICBJIG5vdyB0aGluayBpdCdzIGJldHRlciB0byBoYXZlCisg
ICAgICAgIGNvbnRyYWRpY3Rpb25zIGV4ZWN1dGUgbm9ybWFsbHkgYW5kIGV4aXQgd2l0aCBmdWxs
IE9TUiBleGl0IHByb2ZpbGluZy4gIEl0J3MKKyAgICAgICAgYmV0dGVyIGF0IGNhdGNoaW5nIHRo
ZSBmZXcgY2FzZXMgd2hlcmUgdGhlIERGRyB3aWxsIGVuZCB1cCB3aXRoIGRpZmZlcmVudAorICAg
ICAgICB0eXBlcyB0aGFuIHRoZSBiYXNlbGluZSBlbmdpbmVzLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBzaW1wbGlmaWVzIGEgYnVuY2ggb2YgY29kZS4gRm9yIGV4YW1wbGUgaXQgZ2V0cyByaWQg
b2YKKyAgICAgICAgQ29uc3RhbnRGb2xkaW5nUGhhc2U6OnBhaW50VW5yZWFjaGFibGVDb2RlKCku
CisgICAgICAgIAorICAgICAgICBZb3UgY2FuIHRoaW5rIG9mIHRoaXMgYXMgYSBwYXJ0aWFsIHJv
bGwtb3V0IG9mIHIxNTEzMDMsIGV4Y2VwdCB0aGF0IGl0IHVzZXMKKyAgICAgICAgdGhlIGZhY2ls
aXRpZXMgaW50cm9kdWNlZCBieSB0aGF0IHBhdGNoIHRvIGdpdmUgdXMgcnVuLXRpbWUgYXNzZXJ0
aW9ucyB0aGF0CisgICAgICAgIGNoZWNrIHRoZSBDRkEncyBjb3JyZWN0bmVzczogaWYgdGhlIENG
QSB0aG91Z2h0IHRoYXQgc29tZXRoaW5nIHdhcyBhCisgICAgICAgIGNvbnRyYWRpY3Rpb24gYnV0
IHRoZSBjb2RlIGRpZG4ndCBleGl0LCB3ZSdsbCBub3cgdHJhcC4KKworICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpB
YnN0cmFjdFN0YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpzdGFydEV4
ZWN1dGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RTdGF0ZTo6ZmlsdGVyQXJyYXlNb2Rlcyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RTdGF0ZTo6ZmlsdGVyQnlWYWx1ZSk6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRm
Zy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0U3RhdGU6OmZpbHRlckFycmF5TW9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OmZpbHRlckJ5VmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdDRkFQaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Q0ZBUGhhc2U6OnBlcmZvcm1CbG9ja0NGQSk6CisgICAgICAg
ICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpD
b25zdGFudEZvbGRpbmdQaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZv
bGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChDb25zdGFudEZvbGRpbmdQaGFz
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5v
ZGUpOgorCiAyMDEzLTA2LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgZml4IHJlbGVhc2UgYnVpbGQuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDE1MTMzOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQzLDcgKzQzLDYgQEAgQWJzdHJhY3RTdGF0ZTo6QWJzdHJhY3RTdGF0ZShH
cmFwaCYgZ3JhcAogICAgICwgbV92YXJpYWJsZXMobV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSwgZ3JhcGgubV9sb2NhbFZhcnMpCiAgICAgLCBtX2Jsb2NrKDApCiAgICAgLCBtX2N1cnJlbnRO
b2RlKDApCi0gICAgLCBtX2V4ZWN1dGlvbk1vZGUoQ2xlYW5GaWx0cmF0aW9uKQogewogfQogCkBA
IC0yMzMsNyArMjMyLDcgQEAgQWJzdHJhY3RTdGF0ZTo6Qm9vbGVhblJlc3VsdCBBYnN0cmFjdFN0
YQogICAgIHJldHVybiBVbmtub3duQm9vbGVhblJlc3VsdDsKIH0KIAotYm9vbCBBYnN0cmFjdFN0
YXRlOjpzdGFydEV4ZWN1dGluZyhOb2RlKiBub2RlLCBFeGVjdXRpb25Nb2RlIGV4ZWN1dGlvbk1v
ZGUpCitib29sIEFic3RyYWN0U3RhdGU6OnN0YXJ0RXhlY3V0aW5nKE5vZGUqIG5vZGUpCiB7CiAg
ICAgQVNTRVJUKG1fYmxvY2spOwogICAgIEFTU0VSVChtX2lzVmFsaWQpOwpAQCAtMjQ0LDE4ICsy
NDMsMTYgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpzdGFydEV4ZWN1dGluZyhOb2RlKgogICAgIAog
ICAgIGlmICghbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkgewogICAgICAgICBtX2N1cnJlbnROb2Rl
ID0gMDsKLSAgICAgICAgbV9leGVjdXRpb25Nb2RlID0gQ2xlYW5GaWx0cmF0aW9uOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIG1fY3VycmVudE5vZGUgPSBub2RlOwot
ICAgIG1fZXhlY3V0aW9uTW9kZSA9IGV4ZWN1dGlvbk1vZGU7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgQWJzdHJhY3RTdGF0ZTo6c3RhcnRFeGVjdXRpbmcodW5zaWduZWQgaW5kZXhJbkJs
b2NrLCBFeGVjdXRpb25Nb2RlIGV4ZWN1dGlvbk1vZGUpCitib29sIEFic3RyYWN0U3RhdGU6OnN0
YXJ0RXhlY3V0aW5nKHVuc2lnbmVkIGluZGV4SW5CbG9jaykKIHsKLSAgICByZXR1cm4gc3RhcnRF
eGVjdXRpbmcobV9ibG9jay0+YXQoaW5kZXhJbkJsb2NrKSwgZXhlY3V0aW9uTW9kZSk7CisgICAg
cmV0dXJuIHN0YXJ0RXhlY3V0aW5nKG1fYmxvY2stPmF0KGluZGV4SW5CbG9jaykpOwogfQogCiB2
b2lkIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZGdlcyhOb2RlKiBub2RlKQpAQCAtMTA5Myw4ICsx
MDkwLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAg
ICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVyKAogICAgICAgICAgICAgICAg
IG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSwKLSAgICAgICAgICAg
ICAgICBOb3RTdHJpbmdPYmplY3QpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPmNvZGVPcmlnaW4pLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOyAvLyBXZSBjb3VsZCBiZSBtb3JlIHByZWNp
c2UgYnV0IGl0J3MgbGlrZWx5IG5vdCB3b3J0aCBpdC4KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFN0cmluZ09yU3RyaW5nT2JqZWN0VXNlOgpAQCAtMTMwMSw3ICsxMjk3LDcgQEAg
Ym9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgc3RhdHVzLnNwZWNpZmljVmFsdWUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZSkubWFrZVRvcCgpOwotICAgICAgICAgICAgICAgICAgICBmaWx0ZXIobm9kZS0+
Y2hpbGQxKCksIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSwgQmFkQ2FjaGUpOworICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIHN0YXR1cy5zdHJ1Y3R1cmVTZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRz
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzM5LDEyICsxMzM1LDYg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBFeGl0S2luZCBleGl0S2luZDsKLSAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5vcCgpID09IFdlYWtKU0NvbnN0YW50KQotICAgICAgICAgICAg
ZXhpdEtpbmQgPSBCYWRXZWFrQ29uc3RhbnRDYWNoZTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgZXhpdEtpbmQgPSBCYWRDYWNoZTsKLQogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUp
OwogCiAgICAgICAgIC8vIElmIHRoaXMgc3RydWN0dXJlIGNoZWNrIGlzIGF0dGVtcHRpbmcgdG8g
cHJvdmUga25vd2xlZGdlIGFscmVhZHkgaGVsZCBpbgpAQCAtMTM1MywxMSArMTM0MywxMSBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3RzKHVuc2lnCiAgICAgICAgIGlmICh2YWx1
ZS5tX2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KQogICAgICAgICAgICAg
JiYgdmFsdWUubV9mdXR1cmVQb3NzaWJsZVN0cnVjdHVyZS5oYXNTaW5nbGV0b24oKSkgewogICAg
ICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7Ci0gICAgICAgICAgICBmaWx0ZXIodmFs
dWUsIHZhbHVlLm1fZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuc2luZ2xldG9uKCksIGV4aXRLaW5k
KTsKKyAgICAgICAgICAgIGZpbHRlcih2YWx1ZSwgdmFsdWUubV9mdXR1cmVQb3NzaWJsZVN0cnVj
dHVyZS5zaW5nbGV0b24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAg
ICAgIGZpbHRlcih2YWx1ZSwgc2V0LCBleGl0S2luZCk7CisgICAgICAgIGZpbHRlcih2YWx1ZSwg
c2V0KTsKICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTEzNjYsMTIgKzEzNTYsNiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGVF
ZmZlY3RzKHVuc2lnCiAgICAgY2FzZSBGb3J3YXJkU3RydWN0dXJlVHJhbnNpdGlvbldhdGNocG9p
bnQ6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKIAotICAgICAgICBFeGl0S2luZCBleGl0S2luZDsKLSAgICAgICAgaWYgKG5vZGUtPmNo
aWxkMSgpLT5vcCgpID09IFdlYWtKU0NvbnN0YW50KQotICAgICAgICAgICAgZXhpdEtpbmQgPSBC
YWRXZWFrQ29uc3RhbnRDYWNoZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZXhpdEtpbmQg
PSBCYWRDYWNoZTsKLQogICAgICAgICAvLyBJdCdzIG9ubHkgdmFsaWQgdG8gaXNzdWUgYSBzdHJ1
Y3R1cmUgdHJhbnNpdGlvbiB3YXRjaHBvaW50IGlmIHdlIGFscmVhZHkKICAgICAgICAgLy8ga25v
dyB0aGF0IHRoZSB3YXRjaHBvaW50IGNvdmVycyBhIHN1cGVyc2V0IG9mIHRoZSBzdHJ1Y3R1cmVz
IGtub3duIHRvCiAgICAgICAgIC8vIGJlbG9uZyB0byB0aGUgc2V0IG9mIGZ1dHVyZSBzdHJ1Y3R1
cmVzIHRoYXQgdGhpcyB2YWx1ZSBtYXkgaGF2ZS4KQEAgLTEzODIsNyArMTM2Niw3IEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgIHZhbHVlLm1f
ZnV0dXJlUG9zc2libGVTdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQobm9kZS0+c3Ry
dWN0dXJlKCkpKQogICAgICAgICAgICAgfHwgbV9ncmFwaC53YXRjaHBvaW50cygpLnNob3VsZEFz
c3VtZU1peGVkU3RhdGUobm9kZS0+c3RydWN0dXJlKCktPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0
KCkpKTsKICAgICAgICAgCi0gICAgICAgIGZpbHRlcih2YWx1ZSwgbm9kZS0+c3RydWN0dXJlKCks
IGV4aXRLaW5kKTsKKyAgICAgICAgZmlsdGVyKHZhbHVlLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgIG1faGF2ZVN0cnVjdHVyZXMgPSB0cnVlOwogICAgICAgICBub2RlLT5zZXRDYW5FeGl0
KHRydWUpOwogICAgICAgICBicmVhazsKQEAgLTE0NzcsNyArMTQ2MSw3IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICAgICAgICAgIG1fZm91bmRDb25zdGFu
dHMgPSB0cnVlOwogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOwogICAgICAgICBjbG9i
YmVyU3RydWN0dXJlcyhpbmRleEluQmxvY2spOwotICAgICAgICBmaWx0ZXIodmFsdWUsIHNldCwg
QmFkSW5kZXhpbmdUeXBlKTsKKyAgICAgICAgZmlsdGVyKHZhbHVlLCBzZXQpOwogICAgICAgICBt
X2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTUwMyw3
ICsxNDg3LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBub2RlLT5zZXRDYW5FeGl0KHRydWUpOyAvLyBMaWVz
ISBXZSBjYW4gZG8gYmV0dGVyLgotICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgp
LCBub2RlLT5mdW5jdGlvbigpLCBCYWRGdW5jdGlvbik7CisgICAgICAgIGZpbHRlckJ5VmFsdWUo
bm9kZS0+Y2hpbGQxKCksIG5vZGUtPmZ1bmN0aW9uKCkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIApAQCAtMTUxOCw3ICsxNTAyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlRWZmZWN0cyh1bnNpZwogICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldLAogICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0g
UHV0QnlJZERpcmVjdCk7CiAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlUmVwbGFjZSgp
KSB7Ci0gICAgICAgICAgICAgICAgZmlsdGVyKG5vZGUtPmNoaWxkMSgpLCBzdHJ1Y3R1cmUsIEJh
ZENhY2hlKTsKKyAgICAgICAgICAgICAgICBmaWx0ZXIobm9kZS0+Y2hpbGQxKCksIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNjA3LDEwICsxNTkxLDEwIEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZUVmZmVjdHModW5zaWcKICAgICByZXR1cm4gZXhlY3V0ZUVm
ZmVjdHMoaW5kZXhJbkJsb2NrLCBtX2Jsb2NrLT5hdChpbmRleEluQmxvY2spKTsKIH0KIAotYm9v
bCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZGV4SW5CbG9jaywgRXhlY3V0aW9u
TW9kZSBleGVjdXRpb25Nb2RlKQorYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVk
IGluZGV4SW5CbG9jaykKIHsKICAgICBOb2RlKiBub2RlID0gbV9ibG9jay0+YXQoaW5kZXhJbkJs
b2NrKTsKLSAgICBpZiAoIXN0YXJ0RXhlY3V0aW5nKG5vZGUsIGV4ZWN1dGlvbk1vZGUpKQorICAg
IGlmICghc3RhcnRFeGVjdXRpbmcobm9kZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAog
ICAgIGV4ZWN1dGVFZGdlcyhub2RlKTsKQEAgLTE4NDQsNjEgKzE4MjgsMzkgQEAgdm9pZCBBYnN0
cmFjdFN0YXRlOjpkdW1wKFByaW50U3RyZWFtJiBvdQogICAgIH0KIH0KIAotRmlsdHJhdGlvblJl
c3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXIoCi0gICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUsIGNv
bnN0IFN0cnVjdHVyZVNldCYgc2V0LCBFeGl0S2luZCBleGl0S2luZCkKK0ZpbHRyYXRpb25SZXN1
bHQgQWJzdHJhY3RTdGF0ZTo6ZmlsdGVyKEFic3RyYWN0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAodmFsdWUuZmlsdGVyKG1fZ3JhcGgsIHNldCkgPT0g
RmlsdHJhdGlvbk9LKQogICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOwotICAgIGJhaWwoZXhp
dEtpbmQpOworICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgIHJldHVybiBDb250cmFkaWN0aW9u
OwogfQogICAgIAotRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXJBcnJheU1v
ZGVzKAotICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlLCBBcnJheU1vZGVzIGFycmF5TW9kZXMsIEV4
aXRLaW5kIGV4aXRLaW5kKQorRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXJB
cnJheU1vZGVzKEFic3RyYWN0VmFsdWUmIHZhbHVlLCBBcnJheU1vZGVzIGFycmF5TW9kZXMpCiB7
CiAgICAgaWYgKHZhbHVlLmZpbHRlckFycmF5TW9kZXMoYXJyYXlNb2RlcykgPT0gRmlsdHJhdGlv
bk9LKQogICAgICAgICByZXR1cm4gRmlsdHJhdGlvbk9LOwotICAgIGJhaWwoZXhpdEtpbmQpOwor
ICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgIHJldHVybiBDb250cmFkaWN0aW9uOwogfQogICAg
IAotRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXIoCi0gICAgQWJzdHJhY3RW
YWx1ZSYgdmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUsIEV4aXRLaW5kIGV4aXRLaW5kKQorRmls
dHJhdGlvblJlc3VsdCBBYnN0cmFjdFN0YXRlOjpmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYgdmFsdWUs
IFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKHZhbHVlLmZpbHRlcih0eXBlKSA9PSBG
aWx0cmF0aW9uT0spCiAgICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7Ci0gICAgYmFpbChleGl0
S2luZCk7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAgICAgcmV0dXJuIENvbnRyYWRpY3Rpb247
CiB9CiAgICAgCiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0U3RhdGU6OmZpbHRlckJ5VmFsdWUo
Ci0gICAgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSwgSlNWYWx1ZSBjb25jcmV0ZVZhbHVl
LCBFeGl0S2luZCBleGl0S2luZCkKKyAgICBBYnN0cmFjdFZhbHVlJiBhYnN0cmFjdFZhbHVlLCBK
U1ZhbHVlIGNvbmNyZXRlVmFsdWUpCiB7CiAgICAgaWYgKGFic3RyYWN0VmFsdWUuZmlsdGVyQnlW
YWx1ZShjb25jcmV0ZVZhbHVlKSA9PSBGaWx0cmF0aW9uT0spCiAgICAgICAgIHJldHVybiBGaWx0
cmF0aW9uT0s7Ci0gICAgYmFpbChleGl0S2luZCk7CisgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAg
ICAgcmV0dXJuIENvbnRyYWRpY3Rpb247CiB9CiAKLXZvaWQgQWJzdHJhY3RTdGF0ZTo6YmFpbChF
eGl0S2luZCBleGl0S2luZCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50Tm9kZSk7Ci0gICAgbV9p
c1ZhbGlkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChtX2V4ZWN1dGlvbk1vZGUpIHsKLSAgICBjYXNl
IFN0aWxsQ29udmVyZ2luZzoKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQWZ0ZXJDb252ZXJn
ZW5jZTogewotICAgICAgICBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fY3VycmVudE5v
ZGUtPmNvZGVPcmlnaW4pLT5hZGRGcmVxdWVudEV4aXRTaXRlKAotICAgICAgICAgICAgRnJlcXVl
bnRFeGl0U2l0ZShtX2N1cnJlbnROb2RlLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGV4aXRL
aW5kKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBDbGVhbkZpbHRyYXRpb246
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLSAgICAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9u
IDE1MTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC05MywyMSArOTMsNiBAQCBwdWJsaWM6CiAgICAgICAgIE1lcmdl
VG9TdWNjZXNzb3JzCiAgICAgfTsKICAgICAKLSAgICBlbnVtIEV4ZWN1dGlvbk1vZGUgewotICAg
ICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSBjb250cmFkaWN0aW9uLCBhc3N1bWUgdGhhdCB0aGlz
IG1pZ2h0IGp1c3QKLSAgICAgICAgLy8gYmUgYmVjYXVzZSB3ZSBoYXZlbid0IGNvbnZlcmdlZCB5
ZXQuCi0gICAgICAgIFN0aWxsQ29udmVyZ2luZywKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHdl
IGVuY291bnRlciBhIGNvbnRyYWRpdGlvbiwgYXNzdW1lIHRoYXQgdGhpcyBjb250cmFkaWN0aW9u
Ci0gICAgICAgIC8vIGlzIHJlYWwgYW5kIHJlcG9ydCBpdCB0byB0aGUgcHJvZmlsaW5nIGluZnJh
c3RydWN0dXJlIGFzIGlmIGl0Ci0gICAgICAgIC8vIGhhcHBlbmVkIGF0IHJ1biB0aW1lLgotICAg
ICAgICBBZnRlckNvbnZlcmdlbmNlLAotICAgICAgICAKLSAgICAgICAgLy8gQXNzdW1lIHRoYXQg
dGhlcmUgY2Fubm90IGJlIGFueSBjb250cmFkaWN0aW9ucyBvdGhlciB0aGFuCi0gICAgICAgIC8v
IEZvcmNlT1NSRXhpdCBiZWNhdXNlIHdlIGhhdmUgYWxyZWFkeSBjbGVhbmVkIHRoZSBncmFwaC4K
LSAgICAgICAgQ2xlYW5GaWx0cmF0aW9uCi0gICAgfTsKLSAgICAKICAgICBBYnN0cmFjdFN0YXRl
KEdyYXBoJik7CiAgICAgCiAgICAgfkFic3RyYWN0U3RhdGUoKTsKQEAgLTE5MSwxMiArMTc2LDEy
IEBAIHB1YmxpYzoKICAgICAvLwogICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBlcXVp
dmFsZW50IHRvIGRvaW5nOgogICAgIC8vCi0gICAgLy8gaWYgKHN0YXRlLnN0YXJ0RXhlY3V0aW5n
KGluZGV4LCBleGVjdXRpb25Nb2RlKSkgeworICAgIC8vIGlmIChzdGF0ZS5zdGFydEV4ZWN1dGlu
ZyhpbmRleCkpIHsKICAgICAvLyAgICAgc3RhdGUuZXhlY3V0ZUVkZ2VzKGluZGV4KTsKICAgICAv
LyAgICAgcmVzdWx0ID0gc3RhdGUuZXhlY3V0ZUVmZmVjdHMoaW5kZXgpOwogICAgIC8vIH0gZWxz
ZQogICAgIC8vICAgICByZXN1bHQgPSB0cnVlOwotICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCBp
bmRleEluQmxvY2ssIEV4ZWN1dGlvbk1vZGUpOworICAgIGJvb2wgZXhlY3V0ZSh1bnNpZ25lZCBp
bmRleEluQmxvY2spOwogICAgIAogICAgIC8vIEluZGljYXRlIHRoZSBzdGFydCBvZiBleGVjdXRp
b24gb2YgdGhlIG5vZGUuIEl0IHJlc2V0cyBhbnkgc3RhdGUgaW4gdGhlIG5vZGUsCiAgICAgLy8g
dGhhdCBpcyBwcm9ncmVzc2l2ZWx5IGJ1aWx0IHVwIGJ5IGV4ZWN1dGVFZGdlcygpIGFuZCBleGVj
dXRlRWZmZWN0cygpLiBJbgpAQCAtMjA0LDggKzE4OSw4IEBAIHB1YmxpYzoKICAgICAvLyBzdGFy
dEV4ZWN1dGluZygpIGFuZCBleGVjdXRlRWRnZXMoKS9FZmZlY3RzKCkgd2hldGhlciB0aGUgbGFz
dCBydW4gb2YgdGhlCiAgICAgLy8gYW5hbHlzaXMgY29uY2x1ZGVkIHRoYXQgdGhlIG5vZGUgY2Fu
IGV4aXQsIHlvdSBzaG91bGQgcHJvYmFibHkgc2V0IHRoYXQKICAgICAvLyBpbmZvcm1hdGlvbiBh
c2lkZSBwcmlvciB0byBjYWxsaW5nIHN0YXJ0RXhlY3V0aW5nKCkuCi0gICAgYm9vbCBzdGFydEV4
ZWN1dGluZyhOb2RlKiwgRXhlY3V0aW9uTW9kZSk7Ci0gICAgYm9vbCBzdGFydEV4ZWN1dGluZyh1
bnNpZ25lZCBpbmRleEluQmxvY2ssIEV4ZWN1dGlvbk1vZGUpOworICAgIGJvb2wgc3RhcnRFeGVj
dXRpbmcoTm9kZSopOworICAgIGJvb2wgc3RhcnRFeGVjdXRpbmcodW5zaWduZWQgaW5kZXhJbkJs
b2NrKTsKICAgICAKICAgICAvLyBBYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGVkZ2VzIG9mIHRoZSBn
aXZlbiBub2RlLiBUaGlzIHJ1bnMgZmlsdGVyRWRnZUJ5VXNlKCkKICAgICAvLyBvbiBhbGwgZWRn
ZXMgb2YgdGhlIG5vZGUuIFlvdSBjYW4gc2tpcCB0aGlzIHN0ZXAsIGlmIHlvdSBoYXZlIGFscmVh
ZHkgdXNlZApAQCAtMjQ3LDM2ICsyMzIsMzMgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEZpbHRy
YXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIEV4aXRL
aW5kIGV4aXRLaW5kKQorICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzZXQpCiAgICAgewotICAgICAgICByZXR1cm4gZmlsdGVyKGZvck5vZGUo
bm9kZSksIHNldCwgZXhpdEtpbmQpOworICAgICAgICByZXR1cm4gZmlsdGVyKGZvck5vZGUobm9k
ZSksIHNldCk7CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgRmls
dHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKAotICAgICAgICBUIG5vZGUsIEFycmF5TW9k
ZXMgYXJyYXlNb2RlcywgRXhpdEtpbmQgZXhpdEtpbmQgPSBCYWRJbmRleGluZ1R5cGUpCisgICAg
RmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVzKFQgbm9kZSwgQXJyYXlNb2RlcyBhcnJh
eU1vZGVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGZpbHRlckFycmF5TW9kZXMoZm9yTm9kZShu
b2RlKSwgYXJyYXlNb2RlcywgZXhpdEtpbmQpOworICAgICAgICByZXR1cm4gZmlsdGVyQXJyYXlN
b2Rlcyhmb3JOb2RlKG5vZGUpLCBhcnJheU1vZGVzKTsKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihUIG5vZGUsIFNwZWN1
bGF0ZWRUeXBlIHR5cGUsIEV4aXRLaW5kIGV4aXRLaW5kID0gQmFkVHlwZSkKKyAgICBGaWx0cmF0
aW9uUmVzdWx0IGZpbHRlcihUIG5vZGUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gZmlsdGVyKGZvck5vZGUobm9kZSksIHR5cGUsIGV4aXRLaW5kKTsKKyAgICAg
ICAgcmV0dXJuIGZpbHRlcihmb3JOb2RlKG5vZGUpLCB0eXBlKTsKICAgICB9CiAgICAgCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckJ5VmFsdWUo
VCBub2RlLCBKU1ZhbHVlIHZhbHVlLCBFeGl0S2luZCBleGl0S2luZCkKKyAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlckJ5VmFsdWUoVCBub2RlLCBKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGZpbHRlckJ5VmFsdWUoZm9yTm9kZShub2RlKSwgdmFsdWUsIGV4aXRLaW5kKTsK
KyAgICAgICAgcmV0dXJuIGZpbHRlckJ5VmFsdWUoZm9yTm9kZShub2RlKSwgdmFsdWUpOwogICAg
IH0KICAgICAKLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgY29u
c3QgU3RydWN0dXJlU2V0JiwgRXhpdEtpbmQpOwotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
QXJyYXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2RlcywgRXhpdEtpbmQgPSBCYWRJbmRl
eGluZ1R5cGUpOwotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBT
cGVjdWxhdGVkVHlwZSwgRXhpdEtpbmQgPSBCYWRUeXBlKTsKLSAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEpTVmFsdWUsIEV4aXRLaW5kKTsKLSAgICAK
LSAgICB2b2lkIGJhaWwoRXhpdEtpbmQpOworICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKEFi
c3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckFycmF5TW9kZXMoQWJzdHJhY3RWYWx1ZSYsIEFycmF5TW9kZXMpOworICAgIEZpbHRy
YXRpb25SZXN1bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBTcGVjdWxhdGVkVHlwZSk7CisgICAg
RmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKEFic3RyYWN0VmFsdWUmLCBKU1ZhbHVlKTsK
ICAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbG9iYmVyV29ybGQoY29uc3QgQ29kZU9yaWdpbiYs
IHVuc2lnbmVkIGluZGV4SW5CbG9jayk7CkBAIC0zMzIsNyArMzE0LDYgQEAgcHJpdmF0ZToKICAg
ICBPcGVyYW5kczxBYnN0cmFjdFZhbHVlPiBtX3ZhcmlhYmxlczsKICAgICBCYXNpY0Jsb2NrKiBt
X2Jsb2NrOwogICAgIE5vZGUqIG1fY3VycmVudE5vZGU7Ci0gICAgRXhlY3V0aW9uTW9kZSBtX2V4
ZWN1dGlvbk1vZGU7CiAgICAgCiAgICAgYm9vbCBtX2hhdmVTdHJ1Y3R1cmVzOwogICAgIGJvb2wg
bV9mb3VuZENvbnN0YW50czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZB
UGhhc2UuY3BwCShyZXZpc2lvbiAxNTEzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGQVBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5kdW1wKFdURjo6ZGF0YUZpbGUoKSk7CiAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoIW1fc3RhdGUuZXhlY3V0ZShpLCBBYnN0cmFjdFN0YXRlOjpTdGlsbENvbnZlcmdpbmcpKSB7
CisgICAgICAgICAgICBpZiAoIW1fc3RhdGUuZXhlY3V0ZShpKSkgewogICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiICAgICAgICAgRXhw
ZWN0IE9TUiBleGl0LlxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMTUxMzM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDYgQEAgcHVi
bGljOgogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Js
b2NrSW5kZXhdLmdldCgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghYmxvY2stPmNmYURpZEZpbmlzaCkKLSAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IHBhaW50VW5yZWFjaGFibGVDb2RlKGJsb2NrSW5kZXgpOwog
ICAgICAgICAgICAgaWYgKGJsb2NrLT5jZmFGb3VuZENvbnN0YW50cykKICAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IGZvbGRDb25zdGFudHMoYmxvY2tJbmRleCk7CiAgICAgICAgIH0KQEAgLTEw
Myw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLm1fY3VycmVudEtub3duU3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KSkgewotICAgICAg
ICAgICAgICAgICAgICBtX3N0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrLCBBYnN0cmFjdFN0YXRl
OjpDbGVhbkZpbHRyYXRpb24pOyAvLyBDYXRjaCB0aGUgZmFjdCB0aGF0IHdlIG1heSBmaWx0ZXIg
b24gY2VsbC4KKyAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9j
ayk7IC8vIENhdGNoIHRoZSBmYWN0IHRoYXQgd2UgbWF5IGZpbHRlciBvbiBjZWxsLgogICAgICAg
ICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9QaGFudG9tKCk7CiAgICAgICAgICAgICAgICAg
ICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEx
Miw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmVWYWx1
ZS5pc1N1YnNldE9mKHNldCkKICAgICAgICAgICAgICAgICAgICAgJiYgc3RydWN0dXJlVmFsdWUu
aGFzU2luZ2xldG9uKCkpIHsKICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBzdHJ1Y3R1cmVWYWx1ZS5zaW5nbGV0b24oKTsKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jaywgQWJzdHJhY3RTdGF0ZTo6Q2xlYW5GaWx0cmF0aW9u
KTsgLy8gQ2F0Y2ggdGhlIGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNlbGwuCisgICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBDYXRjaCB0aGUg
ZmFjdCB0aGF0IHdlIG1heSBmaWx0ZXIgb24gY2VsbC4KICAgICAgICAgICAgICAgICAgICAgQWRq
YWNlbmN5TGlzdCBjaGlsZHJlbiA9IG5vZGUtPmNoaWxkcmVuOwogICAgICAgICAgICAgICAgICAg
ICBjaGlsZHJlbi5yZW1vdmVFZGdlKDApOwogICAgICAgICAgICAgICAgICAgICBpZiAoISFjaGls
ZHJlbi5jaGlsZDEoKSkgewpAQCAtMTgwLDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgLy8gTm93IGJlZm9yZSB3ZSBkbyBhbnl0aGluZyBlbHNlLCBwdXNoIHRoZSBDRkEgZm9y
d2FyZCBvdmVyIHRoZSBHZXRCeUlkCiAgICAgICAgICAgICAgICAgLy8gYW5kIG1ha2Ugc3VyZSB3
ZSBzaWduYWwgdG8gdGhlIGxvb3AgdGhhdCBpdCBzaG91bGQgY29udGludWUgYW5kIG5vdAogICAg
ICAgICAgICAgICAgIC8vIGRvIGFueSBlbGltaW5hdGlvbnMuCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jaywgQWJzdHJhY3RTdGF0ZTo6Q2xlYW5GaWx0cmF0aW9u
KTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAg
ICAgICAgICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBpZiAobmVlZHNXYXRjaHBvaW50KSB7CkBAIC0yNDMsNyArMjQxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAvLyBOb3cgYmVmb3JlIHdlIGRvIGFueXRoaW5nIGVsc2UsIHB1
c2ggdGhlIENGQSBmb3J3YXJkIG92ZXIgdGhlIFB1dEJ5SWQKICAgICAgICAgICAgICAgICAvLyBh
bmQgbWFrZSBzdXJlIHdlIHNpZ25hbCB0byB0aGUgbG9vcCB0aGF0IGl0IHNob3VsZCBjb250aW51
ZSBhbmQgbm90CiAgICAgICAgICAgICAgICAgLy8gZG8gYW55IGVsaW1pbmF0aW9ucy4KLSAgICAg
ICAgICAgICAgICBtX3N0YXRlLmV4ZWN1dGUoaW5kZXhJbkJsb2NrLCBBYnN0cmFjdFN0YXRlOjpD
bGVhbkZpbHRyYXRpb24pOworICAgICAgICAgICAgICAgIG1fc3RhdGUuZXhlY3V0ZShpbmRleElu
QmxvY2spOwogICAgICAgICAgICAgICAgIGVsaW1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGlmIChuZWVkc1dhdGNocG9pbnQpIHsKQEAgLTMzMiw3ICsz
MzAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9zdGF0ZS5leGVjdXRlKGluZGV4SW5C
bG9jaywgQWJzdHJhY3RTdGF0ZTo6Q2xlYW5GaWx0cmF0aW9uKTsKKyAgICAgICAgICAgIG1fc3Rh
dGUuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAgICAgICAgICAgaWYgKCFub2RlLT5zaG91bGRH
ZW5lcmF0ZSgpIHx8IG1fc3RhdGUuZGlkQ2xvYmJlcigpIHx8IG5vZGUtPmhhc0NvbnN0YW50KCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKG5vZGUpLnZhbHVlKCk7CkBAIC00MjAsNTQgKzQxOCw2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoY2VsbC0+c3Ry
dWN0dXJlKCkpKSwgRWRnZSh3ZWFrQ29uc3RhbnQsIENlbGxVc2UpKTsKICAgICB9CiAgICAgCi0g
ICAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgQ0ZBIG1heSByZWFjaCBjb25jbHVz
aW9ucyBhYm91dCBjb25zdGFudHMgYmFzZWQgb24gaXRzCi0gICAgLy8gYXNzdW1wdGlvbiB0aGF0
IGNlcnRhaW4gY29kZSBtdXN0IGV4aXQsIGJ1dCB0aGVuIHRob3NlIGNvbnN0YW50cyBtYXkgbGVh
ZCBmdXR1cmUKLSAgICAvLyByZWV4ZWN1dGlvbnMgb2YgdGhlIENGQSB0byBiZWxpZXZlIHRoYXQg
dGhlIHNhbWUgY29kZSB3aWxsIG5vdyBubyBsb25nZXIgZXhpdC4gVGh1cwotICAgIC8vIHRvIGVu
c3VyZSBzb3VuZG5lc3MsIHdlIG11c3QgcGFpbnQgdW5yZWFjaGFibGUgY29kZSBhcyBzdWNoLCBi
eSBpbnNlcnRpbmcgYW4KLSAgICAvLyB1bmNvbmRpdGlvbmFsIEZvcmNlT1NSRXhpdCB3aGVyZXZl
ciB3ZSBmaW5kIHRoYXQgYSBub2RlIHdvdWxkIGhhdmUgYWx3YXlzIGV4aXRlZC4KLSAgICAvLyBU
aGlzIHdpbGwgb25seSBoYXBwZW4gaW4gY2FzZXMgd2hlcmUgd2UgYXJlIG1ha2luZyBzdGF0aWMg
c3BlY3VsYXRpb25zLCBvciB3ZSdyZQotICAgIC8vIG1ha2luZyB0b3RhbGx5IHdyb25nIHNwZWN1
bGF0aW9ucyBkdWUgdG8gaW1wcmVjaXNpb24gaW4gdGhlIHByZWRpY3Rpb24gcHJvcGFnYXRvci4K
LSAgICBib29sIHBhaW50VW5yZWFjaGFibGVDb2RlKEJsb2NrSW5kZXggYmxvY2tJbmRleCkKLSAg
ICB7Ci0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAKLSNpZiBERkdfRU5B
QkxFKERFQlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgIGRhdGFMb2dGKCJQYWludGlu
ZyB1bnJlYWNoYWJsZSBjb2RlIGluIEJsb2NrICMldS5cbiIsIGJsb2NrSW5kZXgpOwotI2VuZGlm
Ci0gICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4
XS5nZXQoKTsKLSAgICAgICAgbV9zdGF0ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2spOwotICAgICAg
ICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sg
PCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewotICAgICAgICAgICAgbV9zdGF0ZS5l
eGVjdXRlKGluZGV4SW5CbG9jaywgQWJzdHJhY3RTdGF0ZTo6QWZ0ZXJDb252ZXJnZW5jZSk7Ci0g
ICAgICAgICAgICBpZiAobV9zdGF0ZS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5k
ZXhJbkJsb2NrKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBSZXR1cm46Ci0gICAgICAgICAgICBjYXNlIFRocm93OgotICAgICAgICAgICAgY2Fz
ZSBUaHJvd1JlZmVyZW5jZUVycm9yOgotICAgICAgICAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6Ci0g
ICAgICAgICAgICBjYXNlIEZvcndhcmRGb3JjZU9TUkV4aXQ6Ci0gICAgICAgICAgICAgICAgLy8g
RG8gbm90aGluZy4gVGhlc2Ugbm9kZXMgd2lsbCBhbHJlYWR5IGRvIHRoZSByaWdodCB0aGluZy4K
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKLSAgICAg
ICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwKLSAgICAgICAgICAgICAgICAg
ICAgKG5vZGUtPmZsYWdzKCkgJiBOb2RlRXhpdHNGb3J3YXJkKSA/IEZvcndhcmRGb3JjZU9TUkV4
aXQgOiBGb3JjZU9TUkV4aXQsCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvZGVPcmlnaW4p
OwotICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
bV9zdGF0ZS5yZXNldCgpOwotICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiBjaGFuZ2VkOwotICAgIH0KLQogICAgIEFic3RyYWN0
U3RhdGUgbV9zdGF0ZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CiB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDE1MTMzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQxLDExICsxNjQxLDE1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICBmb3IgKG1faW5kZXhJbkJs
b2NrID0gMDsgbV9pbmRleEluQmxvY2sgPCBibG9jay5zaXplKCk7ICsrbV9pbmRleEluQmxvY2sp
IHsKICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IGJsb2NrW21faW5kZXhJbkJsb2NrXTsKICAgICAg
ICAgCi0gICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIGNvbnRyYWRpY3Rpb24gdGhlbiB0aGUgY29u
c3RhbnQgZm9sZGVyIG91Z2h0IHRvIGhhdmUgY2F1Z2h0IGl0LgotICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX3N0YXRlLmlzVmFsaWQoKSk7CisgICAgICAgIC8vIFdlIG1heSBoYXZlIGhpcyBhIGNv
bnRyYWRpY3Rpb24gdGhhdCB0aGUgQ0ZBIHdhcyBhd2FyZSBvZiBidXQgdGhhdCB0aGUgSklUCisg
ICAgICAgIC8vIGRpZG4ndCBjYXVzZSBkaXJlY3RseS4KKyAgICAgICAgaWYgKCFtX3N0YXRlLmlz
VmFsaWQoKSkgeworICAgICAgICAgICAgYmFpbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2NhbkV4aXQgPSBtX2N1cnJlbnROb2RlLT5jYW5F
eGl0KCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUVmZmVjdHMgPSBtX3N0YXRlLnN0YXJ0
RXhlY3V0aW5nKG1fY3VycmVudE5vZGUsIEFic3RyYWN0U3RhdGU6OkNsZWFuRmlsdHJhdGlvbik7
CisgICAgICAgIGJvb2wgc2hvdWxkRXhlY3V0ZUVmZmVjdHMgPSBtX3N0YXRlLnN0YXJ0RXhlY3V0
aW5nKG1fY3VycmVudE5vZGUpOwogICAgICAgICBtX2ppdC5zZXRGb3JOb2RlKG1fY3VycmVudE5v
ZGUpOwogICAgICAgICBtX2NvZGVPcmlnaW5Gb3JPU1IgPSBtX2N1cnJlbnROb2RlLT5jb2RlT3Jp
Z2luOwogICAgICAgICBpZiAoIW1fY3VycmVudE5vZGUtPnNob3VsZEdlbmVyYXRlKCkpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxNTEzMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY1LDcgKzI2NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICh2ZXJib3NlQ29tcGlsYXRpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBk
YXRhTG9nKCJMb3dlcmluZyAiLCBtX25vZGUsICJcbiIpOwogICAgICAgICAKLSAgICAgICAgYm9v
bCBzaG91bGRFeGVjdXRlRWZmZWN0cyA9IG1fc3RhdGUuc3RhcnRFeGVjdXRpbmcobV9ub2RlLCBB
YnN0cmFjdFN0YXRlOjpDbGVhbkZpbHRyYXRpb24pOworICAgICAgICBib29sIHNob3VsZEV4ZWN1
dGVFZmZlY3RzID0gbV9zdGF0ZS5zdGFydEV4ZWN1dGluZyhtX25vZGUpOwogICAgICAgICAKICAg
ICAgICAgbV9kaXJlY3Rpb24gPSAobV9ub2RlLT5mbGFncygpICYgTm9kZUV4aXRzRm9yd2FyZCkg
PyBGb3J3YXJkU3BlY3VsYXRpb24gOiBCYWNrd2FyZFNwZWN1bGF0aW9uOwogICAgICAgICAKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1MTMzOSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA2LTA3ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgZm91cnRoVGllcjogZG9uJ3QgaW5zZXJ0IEZvcmNlT1NS
RXhpdHMgZXhjZXB0IGZvciBpbmFkZXF1YXRlIGNvdmVyYWdlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczNjMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIENvbnZlcnQgdGhpcyB0ZXN0LCBz
aW5jZSB0aGlzIHdhcyB0aGUgdGVzdCBvcmlnaW5hbGx5IGFkZGVkIGZvcgorICAgICAgICBDb25z
dGFudEZvbGRpbmdQaGFzZTo6cGFpbnRVbnJlYWNoYWJsZUNvZGUoKS4gSSB3YW50ZWQgdG8gbWFr
ZSBzdXJlIHRoYXQgSSBoYWQgZ29vZCBjb3ZlcmFnZQorICAgICAgICBmb3IgdGhpcyBzaW5jZSBJ
IGFtIHJlbW92aW5nIHRoYXQgbWV0aG9kLgorCisgICAgICAgICogZmFzdC9qcy9kZmctZm9yY2Ut
ZXhpdC10aGVuLXNwYXJzZS1jb25kaXRpb25hbC1jb25zdGFudC1wcm9wLWluLWxvb3AtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1mb3JjZS1leGl0LXRo
ZW4tc3BhcnNlLWNvbmRpdGlvbmFsLWNvbnN0YW50LXByb3AtaW4tbG9vcC5qczoKKwogMjAxMy0w
Ni0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVyZ2VkIGZy
b20gaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2RmZy1mb3JjZS1leGl0LXRoZW4tc3BhcnNlLWNvbmRpdGlvbmFs
LWNvbnN0YW50LXByb3AtaW4tbG9vcC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9kZmctZm9yY2UtZXhpdC10aGVuLXNwYXJzZS1jb25kaXRpb25hbC1jb25z
dGFudC1wcm9wLWluLWxvb3AtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxNTEzMzgpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2pzL2RmZy1mb3JjZS1leGl0LXRoZW4tc3BhcnNlLWNvbmRpdGlvbmFsLWNv
bnN0YW50LXByb3AtaW4tbG9vcC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMjA3
ICszLDcgQEAgQ2hlY2tzIHRoYXQgaW5jcmVhc2VkIGFnZ3Jlc3NpdmVuZXNzIGluIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZv
byhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5
KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3
NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFT
UyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhh
cnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBp
cyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYK
LVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBm
b28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJh
eSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4
NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBB
U1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28o
YXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkg
aXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2
Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1Mg
Zm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJy
YXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMg
ODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1Q
QVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9v
KGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkp
IGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0
NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNT
IGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFy
cmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlz
IDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0Ngot
UEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZv
byhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5
KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3
NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFT
UyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhh
cnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBp
cyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYK
LVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBm
b28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJh
eSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4
NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBB
U1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28o
YXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkg
aXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2
Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1Mg
Zm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJy
YXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMg
ODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1Q
QVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9v
KGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkp
IGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0
NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNT
IGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFy
cmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlz
IDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0Ngot
UEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZv
byhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5
KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3
NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFT
UyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhh
cnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBp
cyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYK
LVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBm
b28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJh
eSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4
NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBB
U1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28o
YXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkg
aXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2
Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1Mg
Zm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJy
YXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMg
ODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1Q
QVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9v
KGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkp
IGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0
NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNT
IGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFy
cmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlz
IDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0Ngot
UEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZv
byhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5
KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3
NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFT
UyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhh
cnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBp
cyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYK
LVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBm
b28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJh
eSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4
NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28oYXJyYXkpIGlzIDg3NDYKLVBB
U1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkgaXMgODc0NgotUEFTUyBmb28o
YXJyYXkpIGlzIDg3NDYKLVBBU1MgZm9vKGFycmF5KSBpcyA4NzQ2Ci1QQVNTIGZvbyhhcnJheSkg
aXMgODc0NgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorUGFzc2VkIHNvbWUgdGVz
dHMgc2lsZW50bHkuCiAKIFRFU1QgQ09NUExFVEUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9q
cy9zY3JpcHQtdGVzdHMvZGZnLWZvcmNlLWV4aXQtdGhlbi1zcGFyc2UtY29uZGl0aW9uYWwtY29u
c3RhbnQtcHJvcC1pbi1sb29wLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMv
c2NyaXB0LXRlc3RzL2RmZy1mb3JjZS1leGl0LXRoZW4tc3BhcnNlLWNvbmRpdGlvbmFsLWNvbnN0
YW50LXByb3AtaW4tbG9vcC5qcwkocmV2aXNpb24gMTUxMzM4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9qcy9zY3JpcHQtdGVzdHMvZGZnLWZvcmNlLWV4aXQtdGhlbi1zcGFyc2UtY29uZGl0aW9uYWwt
Y29uc3RhbnQtcHJvcC1pbi1sb29wLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw1ICsxOCw4IEBA
IGZ1bmN0aW9uIGZvbyhhKSB7CiAKIHZhciBhcnJheSA9IFs1NCwgNTQzMiwgMTIzNCwgNTQsIDEy
MzUsIDY0LCA3NSwgNTMyLCA2NCwgMl07CiAKLWZvciAodmFyIGkgPSAwOyBpIDwgMjAwOyArK2kp
CitzaWxlbnRUZXN0UGFzcyA9IHRydWU7Citub0lubGluZShmb28pOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDI7IGkgPSBkZmdJbmNyZW1lbnQoe2Y6Zm9vLCBpOmkgKyAxLCBuOjF9KSkKICAgICBz
aG91bGRCZSgiZm9vKGFycmF5KSIsICI4NzQ2Iik7Cg==
</data>
<flag name="review"
          id="225596"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>