<?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>180057</bug_id>
          
          <creation_ts>2017-11-27 14:57:50 -0800</creation_ts>
          <short_desc>Spread can escape when CreateRest does not</short_desc>
          <delta_ts>2017-11-27 16:14:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375143</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-27 14:57:50 -0800</bug_when>
    <thetext>Previously, we didn&apos;t handle this IR because I didn&apos;t think it was possible to generate. It turns out it is possible, and it happens when we PutStack the Spread but nothing escapes the CreateRest. It&apos;s easy to support this, so we will. Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375158</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-27 15:08:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/35676119&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375159</commentid>
    <comment_count>2</comment_count>
      <attachid>327692</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-27 15:09:12 -0800</bug_when>
    <thetext>Created attachment 327692
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375179</commentid>
    <comment_count>3</comment_count>
      <attachid>327692</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-11-27 15:31:20 -0800</bug_when>
    <thetext>Comment on attachment 327692
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=327692&amp;action=review

r=me

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:5292
&gt; +            static_assert(sizeof(JSValue) == 8 &amp;&amp; 1 &lt;&lt; 3 == 8, &quot;Assumed in the code below.&quot;);

1 &lt;&lt; 3 == 8 ? Seems pretty stable :p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375183</commentid>
    <comment_count>4</comment_count>
      <attachid>327701</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-27 15:41:48 -0800</bug_when>
    <thetext>Created attachment 327701
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375203</commentid>
    <comment_count>5</comment_count>
      <attachid>327701</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-27 16:14:11 -0800</bug_when>
    <thetext>Comment on attachment 327701
patch for landing

Clearing flags on attachment: 327701

Committed r225202: &lt;https://trac.webkit.org/changeset/225202&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375204</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-27 16:14:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327692</attachid>
            <date>2017-11-27 15:09:12 -0800</date>
            <delta_ts>2017-11-27 15:41:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>11741</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjUxOTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE3LTExLTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFNwcmVhZCBjYW4gZXNjYXBlIHdoZW4gQ3JlYXRlUmVzdCBkb2VzIG5v
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMDU3
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTY3NjExOT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9zcHJlYWQtZXNjYXBlcy1idXQt
Y3JlYXRlLXJlc3QtZG9lcy1ub3QuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAg
ICAgKGdldFByb3BlcnRpZXMpOgorICAgICAgICAodGhlRnVuYyk6CisgICAgICAgIChsZXQub2Jq
LnZhbHVlT2YpOgorCiAyMDE3LTExLTIxICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgogCiAgICAgICAgIFtERkddIEFkZCBOb3JtYWxpemVNYXBLZXkgREZHIElSCkluZGV4
OiBKU1Rlc3RzL3N0cmVzcy9zcHJlYWQtZXNjYXBlcy1idXQtY3JlYXRlLXJlc3QtZG9lcy1ub3Qu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvc3ByZWFkLWVzY2FwZXMtYnV0LWNyZWF0
ZS1yZXN0LWRvZXMtbm90LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3NwcmVh
ZC1lc2NhcGVzLWJ1dC1jcmVhdGUtcmVzdC1kb2VzLW5vdC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM1IEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yOworfQorbm9JbmxpbmUoYXNzZXJ0KTsKKworZnVuY3Rpb24gZ2V0UHJv
cGVydGllcyhvYmopIHsKKyAgICBsZXQgcHJvcGVydGllcyA9IFtdOworICAgIGZvciAobGV0IG5h
bWUgb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKSkgeworICAgICAgICBwcm9wZXJ0
aWVzLnB1c2gobmFtZSk7CisgICAgfQorICAgIHJldHVybiBwcm9wZXJ0aWVzOworfQorCitmdW5j
dGlvbiB0aGVGdW5jKG9iaiwgaW5kZXgsIC4uLmFyZ3MpIHsKKyAgICBsZXQgZnVuY3Rpb25zID0g
Z2V0UHJvcGVydGllcyhvYmopOworICAgIGxldCBmdW5jID0gZnVuY3Rpb25zW2luZGV4ICUgZnVu
Y3Rpb25zLmxlbmd0aF07CisgICAgb2JqW2Z1bmNdKC4uLmFyZ3MpOworfQorCitsZXQgbyA9IHt9
OworbGV0IG9iaiA9IHsKKyAgICB2YWx1ZU9mOiBmdW5jdGlvbiAoeCwgeSkgeworICAgICAgICBh
c3NlcnQoeCA9PT0gNDIpOworICAgICAgICBhc3NlcnQoeSA9PT0gbyk7CisgICAgICAgIHRyeSB7
CisgICAgICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgfQorfTsKKworZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTU7ICsraSkgeworICAgIGZvciAobGV0IF9pID0gMDsgX2kgPCAxMDA7IF9pKyspIHsKKyAg
ICB9CisgICAgdGhlRnVuYyhvYmosIDg5Nzk4OSwgNDIsIG8pOworfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjUxODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMTEtMjcgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgU3ByZWFkIGNhbiBlc2Nh
cGUgd2hlbiBDcmVhdGVSZXN0IGRvZXMgbm90CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODAwNTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1Njc2
MTE5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
IHByZXZpb3VzbHkgZGlkIG5vdCBoYW5kbGUgU3ByZWFkKFBoYW50b21DcmVhdGVSZXN0KSBvbmx5
IGJlY2F1c2UgSSBkaWQgbm90CisgICAgICAgIHRoaW5rIGl0IHdhcyBwb3NzaWJsZSB0byBnZW5l
cmF0ZSB0aGlzIElSLiBJIHdhcyB3cm9uZy4gV2UgY2FuIGdlbmVyYXRlCisgICAgICAgIHN1Y2gg
SVIgd2hlbiB3ZSBoYXZlIGEgUHV0U3RhY2soU3ByZWFkKSBidXQgbm90aGluZyBlc2NhcGVzIHRo
ZSBDcmVhdGVSZXN0LgorICAgICAgICBUaGlzIElSIGlzIHJhcmUgdG8gZ2VuZXJhdGUgc2luY2Ug
d2Ugbm9ybWFsbHkgZG9uJ3QgUHV0U3RhY2soU3ByZWFkKSBiZWNhdXNlCisgICAgICAgIHRoZSBT
ZXRMb2NhbCBhbG1vc3QgYWx3YXlzIGdldHMgZWxpbWluYXRlZCBiZWNhdXNlIG9mIGhvdyBvdXIg
Ynl0ZWNvZGUgZ2VuZXJhdGVzCisgICAgICAgIG9wX3NwcmVhZC4gSG93ZXZlciwgdGhlcmUgZXhp
c3RzIGEgdGVzdCBjYXNlIHNob3dpbmcgaXQgaXMgcG9zc2libGUuIFN1cHBvcnRpbmcKKyAgICAg
ICAgdGhpcyBJUiBwYXR0ZXJuIGluIEZUTExvd2VyIGlzIHRyaXZpYWwuIFRoaXMgcGF0Y2ggaW1w
bGVtZW50cyBpdCBhbmQgcmV3cml0ZXMKKyAgICAgICAgdGhlIFZhbGlkYXRpb24gcnVsZSBmb3Ig
U3ByZWFkLgorCisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAg
ICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVNwcmVhZCk6CisgICAgICAgICogcnVudGltZS9KU0ZpeGVkQXJy
YXkuaDoKKyAgICAgICAgKEpTQzo6SlNGaXhlZEFycmF5Ojp0cnlDcmVhdGUpOgorCiAyMDE3LTEx
LTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE9u
ZSB0b28gbWFueSB6ZXJvZXMgaW4gbWFjT1MgdmVyc2lvbiBudW1iZXIgaW4gRmVhdHVyZURlZmlu
ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4NCw2ICsyMzg0LDE5IEBAIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheVcKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitK
U0NlbGwqIG9wZXJhdGlvbkNyZWF0ZUZpeGVkQXJyYXkoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25l
ZCBsZW5ndGgpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKEpTRml4ZWRBcnJheSogcmVzdWx0ID0gSlNGaXhlZEFy
cmF5Ojp0cnlDcmVhdGUodm0sIHZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCkp
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhl
Yywgc2NvcGUpOworICAgIHJldHVybiBudWxscHRyOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uU3ByZWFkR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogaXRlcmFi
bGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMjUxODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1LDYg
KzIzNSw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheUluZGUKIEpTQ2Vs
bCogSklUX09QRVJBVElPTiBvcGVyYXRpb25TcHJlYWRGYXN0QXJyYXkoRXhlY1N0YXRlKiwgSlND
ZWxsKik7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkR2VuZXJpYyhFeGVj
U3RhdGUqLCBKU0NlbGwqKTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJh
eVdpdGhTcHJlYWRTbG93KEV4ZWNTdGF0ZSosIHZvaWQqLCB1aW50MzJfdCk7CitKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlRml4ZWRBcnJheShFeGVjU3RhdGUqLCB1bnNpZ25l
ZCBsZW5ndGgpOwogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZVNjb3Bl
KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNs
SW5FdmFsKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBVbmlxdWVkU3RyaW5nSW1wbCopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIyNTE4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OTAsNiArNzkwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIGNhc2UgU3ByZWFk
OgorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5jaGlsZDEoKS0+
aXNQaGFudG9tQWxsb2NhdGlvbigpIHx8IG5vZGUtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21D
cmVhdGVSZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAg
ICBjYXNlIEVudHJ5U3dpdGNoOgogICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSks
IG5vZGUtPmVudHJ5U3dpdGNoRGF0YSgpLT5jYXNlcy5zaXplKCkgPT0gbV9ncmFwaC5tX251bWJl
ck9mRW50cnlwb2ludHMpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIy
NTE4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTI3MywxMiArNTI3Myw1NCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjb21waWxlU3ByZWFkKCkKICAgICB7Ci0gICAgICAgIC8vIEl0IHdvdWxkIGJlIHRyaXZpYWwg
dG8gc3VwcG9ydCB0aGlzLCBidXQgZm9yIG5vdywgd2UgbmV2ZXIgY3JlYXRlCi0gICAgICAgIC8v
IElSIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgdGhpcy4gVGhlIHJlYXNvbiBpcyB0aGF0IFNwcmVh
ZCBpcyBvbmx5Ci0gICAgICAgIC8vIGNvbnN1bWVkIGJ5IE5ld0FycmF5V2l0aFNwcmVhZCBhbmQg
VmFyYXJncyBvcGVyYXRpb25zLiBBbmQgaXQgaXMKLSAgICAgICAgLy8gbmV2ZXIgYW55dGhpbmcg
ZWxzZS4gQWxzbywgYW55IFNwcmVhZChQaGFudG9tQ3JlYXRlUmVzdCkgd2lsbCB0dXJuCi0gICAg
ICAgIC8vIGludG8gUGhhbnRvbVNwcmVhZChQaGFudG9tQ3JlYXRlUmVzdCkuCi0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fbm9kZS0+Y2hpbGQxKCktPm9wKCkgIT0gUGhhbnRvbUNyZWF0ZVJlc3Qp
OyAKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCktPm9wKCkgPT0gUGhhbnRvbUNyZWF0ZVJl
c3QpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgSVIgaXMgcmFyZSB0byBnZW5lcmF0ZSBzaW5jZSBp
dCByZXF1aXJlcyBlc2NhcGluZyB0aGUgU3ByZWFkCisgICAgICAgICAgICAvLyBidXQgbm90IHRo
ZSBDcmVhdGVSZXN0LiBJbiBieXRlY29kZSwgd2UgaGF2ZSBvbmx5IGZldyBvcGVyYXRpb25zIHRo
YXQKKyAgICAgICAgICAgIC8vIGFjY2VwdCBTcHJlYWQncyByZXN1bHQgYXMgaW5wdXQuIFRoaXMg
dXN1YWxseSBsZWFkcyB0byB0aGUgU3ByZWFkIG5vZGUgbm90CisgICAgICAgICAgICAvLyBlc2Nh
cGluZy4gSG93ZXZlciwgdGhpcyBjYW4gaGFwcGVuIGlmIGZvciBleGFtcGxlIHdlIGdlbmVyYXRl
IGEgUHV0U3RhY2sgb24KKyAgICAgICAgICAgIC8vIHRoZSBTcHJlYWQgYnV0IG5vdGhpbmcgZXNj
YXBlcyB0aGUgQ3JlYXRlUmVzdC4KKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxvb3BIZWFkZXIg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbG9vcEJvZHkgPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd0FsbG9jYXRpb24g
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKGxvb3BIZWFkZXIpOworCisgICAgICAgICAgICBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fbm9kZS0+Y2hpbGQxKCktPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZkFyZ3VtZW50c1RvU2tpcCA9IG1fbm9kZS0+Y2hpbGQxKCktPm51bWJlck9mQXJndW1lbnRzVG9T
a2lwKCk7CisgICAgICAgICAgICBMVmFsdWUgc291cmNlU3RhcnQgPSBnZXRBcmd1bWVudHNTdGFy
dChpbmxpbmVDYWxsRnJhbWUsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKTsKKyAgICAgICAgICAg
IExWYWx1ZSBsZW5ndGggPSBnZXRTcHJlYWRMZW5ndGhGcm9tSW5saW5lQ2FsbEZyYW1lKGlubGlu
ZUNhbGxGcmFtZSwgbnVtYmVyT2ZBcmd1bWVudHNUb1NraXApOworICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChzaXplb2YoSlNWYWx1ZSkgPT0gOCAmJiAxIDw8IDMgPT0gOCwgIkFzc3VtZWQgaW4g
dGhlIGNvZGUgYmVsb3cuIik7CisgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IG1fb3V0LmFkZCgK
KyAgICAgICAgICAgICAgICBtX291dC5zaGwobV9vdXQuemVyb0V4dFB0cihsZW5ndGgpLCBtX291
dC5jb25zdEludDMyKDMpKSwKKyAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihKU0Zp
eGVkQXJyYXk6Om9mZnNldE9mRGF0YSgpKSk7CisKKyAgICAgICAgICAgIExWYWx1ZSBmYXN0QXJy
YXlWYWx1ZSA9IGFsbG9jYXRlVmFyaWFibGVTaXplZENlbGw8SlNGaXhlZEFycmF5PihzaXplLCBt
X2dyYXBoLm1fdm0uZml4ZWRBcnJheVN0cnVjdHVyZS5nZXQoKSwgc2xvd0FsbG9jYXRpb24pOwor
ICAgICAgICAgICAgbV9vdXQuc3RvcmUzMihsZW5ndGgsIGZhc3RBcnJheVZhbHVlLCBtX2hlYXBz
LkpTRml4ZWRBcnJheV9zaXplKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RBcnJh
eSA9IG1fb3V0LmFuY2hvcihmYXN0QXJyYXlWYWx1ZSk7CisgICAgICAgICAgICBtX291dC5qdW1w
KGxvb3BIZWFkZXIpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93QWxsb2NhdGlv
biwgbG9vcEhlYWRlcik7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93QXJyYXkgPSBt
X291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRl
Rml4ZWRBcnJheSksIG1fY2FsbEZyYW1lLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1
bXAobG9vcEhlYWRlcik7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxvb3BIZWFkZXIs
IGxvb3BCb2R5KTsKKyAgICAgICAgICAgIExWYWx1ZSBmaXhlZEFycmF5ID0gbV9vdXQucGhpKElu
dDY0LCBmYXN0QXJyYXksIHNsb3dBcnJheSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBz
dGFydEluZGV4ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50UHRyKDApKTsKKyAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm8zMihsZW5ndGgpLCB1bnN1cmUoY29udGludWF0
aW9uKSwgdW5zdXJlKGxvb3BCb2R5KSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxv
b3BCb2R5LCBjb250aW51YXRpb24pOworICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIHN0YXJ0SW5kZXgpOworICAgICAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbV9vdXQubG9hZDY0KAorICAgICAgICAgICAgICAgIG1fb3V0LmJhc2VJbmRleChtX2hlYXBz
LnZhcmlhYmxlcywgc291cmNlU3RhcnQsIGluZGV4KSk7CisgICAgICAgICAgICBtX291dC5zdG9y
ZTY0KHZhbHVlLCBtX291dC5iYXNlSW5kZXgobV9oZWFwcy5KU0ZpeGVkQXJyYXlfYnVmZmVyLCBm
aXhlZEFycmF5LCBpbmRleCkpOworICAgICAgICAgICAgTFZhbHVlIG5leHRJbmRleCA9IG1fb3V0
LmFkZChtX291dC5jb25zdEludFB0cigxKSwgaW5kZXgpOworICAgICAgICAgICAgbV9vdXQuYWRk
SW5jb21pbmdUb1BoaShpbmRleCwgbV9vdXQuYW5jaG9yKG5leHRJbmRleCkpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0LmJlbG93KG5leHRJbmRleCwgbV9vdXQuemVyb0V4dFB0cihs
ZW5ndGgpKSwgdW5zdXJlKGxvb3BCb2R5KSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOworCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUoZml4ZWRBcnJheSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KIAogICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpeGVkQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ZpeGVkQXJyYXku
aAkocmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
aXhlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oSlNGaXhlZEFycmF5VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwog
ICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTRml4ZWRBcnJheSogdHJ5Q3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIHNpemUpCisgICAgeworICAg
ICAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IGNoZWNrZWRBbGxvY2F0aW9uU2l6
ZSA9IGFsbG9jYXRpb25TaXplKHNpemUpOworICAgICAgICBpZiAoVU5MSUtFTFkoY2hlY2tlZEFs
bG9jYXRpb25TaXplLmhhc092ZXJmbG93ZWQoKSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNlbGw8SlNGaXhlZEFycmF5
Pih2bS5oZWFwLCBjaGVja2VkQWxsb2NhdGlvblNpemUudW5zYWZlR2V0KCkpOworICAgICAgICBp
ZiAoVU5MSUtFTFkoIWJ1ZmZlcikpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgSlNGaXhlZEFycmF5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGJ1ZmZlcikgSlNGaXhlZEFy
cmF5KHZtLCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU0ZpeGVkQXJyYXkqIGNyZWF0ZUZyb21BcnJheShFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSwgSlNBcnJheSogYXJyYXkpCiAgICAgewogICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTExOCwyMyArMTMyLDYgQEAgcHVibGljOgogICAg
IHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVs
ZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAKIHByaXZhdGU6
Ci0gICAgdW5zaWduZWQgbV9zaXplOwotCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaXhl
ZEFycmF5KiB0cnlDcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQg
c2l6ZSkKLSAgICB7Ci0gICAgICAgIENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gY2hl
Y2tlZEFsbG9jYXRpb25TaXplID0gYWxsb2NhdGlvblNpemUoc2l6ZSk7Ci0gICAgICAgIGlmIChV
TkxJS0VMWShjaGVja2VkQWxsb2NhdGlvblNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKLSAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHZvaWQqIGJ1ZmZlciA9IHRyeUFsbG9jYXRl
Q2VsbDxKU0ZpeGVkQXJyYXk+KHZtLmhlYXAsIGNoZWNrZWRBbGxvY2F0aW9uU2l6ZS51bnNhZmVH
ZXQoKSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghYnVmZmVyKSkKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgICAgICBKU0ZpeGVkQXJyYXkqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwg
YnVmZmVyKSBKU0ZpeGVkQXJyYXkodm0sIHN0cnVjdHVyZSwgc2l6ZSk7Ci0gICAgICAgIHJlc3Vs
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQot
CiAgICAgSlNGaXhlZEFycmF5KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVk
IHNpemUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICAgICAsIG1fc2l6ZShz
aXplKQpAQCAtMTQzLDExICsxNDAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJ1ZmZlcigp
W2ldLnNldFN0YXJ0aW5nVmFsdWUoSlNWYWx1ZSgpKTsKICAgICB9CiAKLQogICAgIHN0YXRpYyBD
aGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6
ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtSXRlbXMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zm
c2V0T2ZEYXRhKCkgKyBudW1JdGVtcyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwog
ICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>
<flag name="review"
          id="346876"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327701</attachid>
            <date>2017-11-27 15:41:48 -0800</date>
            <delta_ts>2017-11-27 16:14:11 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>11762</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjUxOTUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE3LTExLTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFNwcmVhZCBjYW4gZXNjYXBlIHdoZW4gQ3JlYXRlUmVzdCBkb2VzIG5v
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMDU3
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTY3NjExOT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBKRiBCYXN0aWVuLgorCisgICAgICAgICogc3RyZXNzL3NwcmVhZC1lc2NhcGVzLWJ1dC1jcmVh
dGUtcmVzdC1kb2VzLW5vdC5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgorICAgICAgICAo
Z2V0UHJvcGVydGllcyk6CisgICAgICAgICh0aGVGdW5jKToKKyAgICAgICAgKGxldC5vYmoudmFs
dWVPZik6CisKIDIwMTctMTEtMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgW0RGR10gQWRkIE5vcm1hbGl6ZU1hcEtleSBERkcgSVIKSW5kZXg6IEpT
VGVzdHMvc3RyZXNzL3NwcmVhZC1lc2NhcGVzLWJ1dC1jcmVhdGUtcmVzdC1kb2VzLW5vdC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9zcHJlYWQtZXNjYXBlcy1idXQtY3JlYXRlLXJl
c3QtZG9lcy1ub3QuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mvc3ByZWFkLWVz
Y2FwZXMtYnV0LWNyZWF0ZS1yZXN0LWRvZXMtbm90LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzUgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3I7Cit9Citub0lubGluZShhc3NlcnQpOworCitmdW5jdGlvbiBnZXRQcm9wZXJ0
aWVzKG9iaikgeworICAgIGxldCBwcm9wZXJ0aWVzID0gW107CisgICAgZm9yIChsZXQgbmFtZSBv
ZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopKSB7CisgICAgICAgIHByb3BlcnRpZXMu
cHVzaChuYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHByb3BlcnRpZXM7Cit9CisKK2Z1bmN0aW9u
IHRoZUZ1bmMob2JqLCBpbmRleCwgLi4uYXJncykgeworICAgIGxldCBmdW5jdGlvbnMgPSBnZXRQ
cm9wZXJ0aWVzKG9iaik7CisgICAgbGV0IGZ1bmMgPSBmdW5jdGlvbnNbaW5kZXggJSBmdW5jdGlv
bnMubGVuZ3RoXTsKKyAgICBvYmpbZnVuY10oLi4uYXJncyk7Cit9CisKK2xldCBvID0ge307Cits
ZXQgb2JqID0geworICAgIHZhbHVlT2Y6IGZ1bmN0aW9uICh4LCB5KSB7CisgICAgICAgIGFzc2Vy
dCh4ID09PSA0Mik7CisgICAgICAgIGFzc2VydCh5ID09PSBvKTsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgfSBjYXRjaCAoZSkge30KKyAgICB9Cit9OworCitmb3IgKGxldCBpID0gMDsgaSA8IDFl
NTsgKytpKSB7CisgICAgZm9yIChsZXQgX2kgPSAwOyBfaSA8IDEwMDsgX2krKykgeworICAgIH0K
KyAgICB0aGVGdW5jKG9iaiwgODk3OTg5LCA0Miwgbyk7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIyNTE4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0xMS0yNyAgU2FhbSBC
YXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBTcHJlYWQgY2FuIGVzY2FwZSB3
aGVuIENyZWF0ZVJlc3QgZG9lcyBub3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MDA1NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzU2NzYxMTk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAgICAgICBXZSBwcmV2aW91
c2x5IGRpZCBub3QgaGFuZGxlIFNwcmVhZChQaGFudG9tQ3JlYXRlUmVzdCkgb25seSBiZWNhdXNl
IEkgZGlkIG5vdAorICAgICAgICB0aGluayBpdCB3YXMgcG9zc2libGUgdG8gZ2VuZXJhdGUgdGhp
cyBJUi4gSSB3YXMgd3JvbmcuIFdlIGNhbiBnZW5lcmF0ZQorICAgICAgICBzdWNoIElSIHdoZW4g
d2UgaGF2ZSBhIFB1dFN0YWNrKFNwcmVhZCkgYnV0IG5vdGhpbmcgZXNjYXBlcyB0aGUgQ3JlYXRl
UmVzdC4KKyAgICAgICAgVGhpcyBJUiBpcyByYXJlIHRvIGdlbmVyYXRlIHNpbmNlIHdlIG5vcm1h
bGx5IGRvbid0IFB1dFN0YWNrKFNwcmVhZCkgYmVjYXVzZQorICAgICAgICB0aGUgU2V0TG9jYWwg
YWxtb3N0IGFsd2F5cyBnZXRzIGVsaW1pbmF0ZWQgYmVjYXVzZSBvZiBob3cgb3VyIGJ5dGVjb2Rl
IGdlbmVyYXRlcworICAgICAgICBvcF9zcHJlYWQuIEhvd2V2ZXIsIHRoZXJlIGV4aXN0cyBhIHRl
c3QgY2FzZSBzaG93aW5nIGl0IGlzIHBvc3NpYmxlLiBTdXBwb3J0aW5nCisgICAgICAgIHRoaXMg
SVIgcGF0dGVybiBpbiBGVExMb3dlciBpcyB0cml2aWFsLiBUaGlzIHBhdGNoIGltcGxlbWVudHMg
aXQgYW5kIHJld3JpdGVzCisgICAgICAgIHRoZSBWYWxpZGF0aW9uIHJ1bGUgZm9yIFNwcmVhZC4K
KworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVTcHJlYWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGaXhlZEFycmF5Lmg6Cisg
ICAgICAgIChKU0M6OkpTRml4ZWRBcnJheTo6dHJ5Q3JlYXRlKToKKwogMjAxNy0xMS0yNyAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBPbmUgdG9vIG1h
bnkgemVyb2VzIGluIG1hY09TIHZlcnNpb24gbnVtYmVyIGluIEZlYXR1cmVEZWZpbmVzCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDIyNTE4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzODQsNiArMjM4NCwxOSBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3QXJyYXlXCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorSlNDZWxsKiBv
cGVyYXRpb25DcmVhdGVGaXhlZEFycmF5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2Vy
IHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGlmIChKU0ZpeGVkQXJyYXkqIHJlc3VsdCA9IEpTRml4ZWRBcnJheTo6dHJ5
Q3JlYXRlKHZtLCB2bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgpLCBsZW5ndGgpKQorICAgICAg
ICByZXR1cm4gcmVzdWx0OworCisgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNjb3Bl
KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblNwcmVhZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGl0ZXJhYmxlKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsNyBA
QCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlJbmRlCiBKU0NlbGwqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uU3ByZWFkRmFzdEFycmF5KEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwog
SlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNwcmVhZEdlbmVyaWMoRXhlY1N0YXRlKiwg
SlNDZWxsKik7CiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXlXaXRoU3By
ZWFkU2xvdyhFeGVjU3RhdGUqLCB2b2lkKiwgdWludDMyX3QpOworSlNDZWxsKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNyZWF0ZUZpeGVkQXJyYXkoRXhlY1N0YXRlKiwgdW5zaWduZWQgbGVuZ3Ro
KTsKIAogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblJlc29sdmVTY29wZShFeGVjU3Rh
dGUqLCBKU1Njb3BlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbChF
eGVjU3RhdGUqLCBKU1Njb3BlKiwgVW5pcXVlZFN0cmluZ0ltcGwqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMjUxODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzkwLDYgKzc5MCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBjYXNlIFNwcmVhZDoKKyAgICAg
ICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRv
bUFsbG9jYXRpb24oKSB8fCBub2RlLT5jaGlsZDEoKS0+b3AoKSA9PSBQaGFudG9tQ3JlYXRlUmVz
dCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAgY2FzZSBF
bnRyeVN3aXRjaDoKICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5l
bnRyeVN3aXRjaERhdGEoKS0+Y2FzZXMuc2l6ZSgpID09IG1fZ3JhcGgubV9udW1iZXJPZkVudHJ5
cG9pbnRzKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjUxODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyNzMsMTIgKzUyNzMsNTUgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGls
ZVNwcmVhZCgpCiAgICAgewotICAgICAgICAvLyBJdCB3b3VsZCBiZSB0cml2aWFsIHRvIHN1cHBv
cnQgdGhpcywgYnV0IGZvciBub3csIHdlIG5ldmVyIGNyZWF0ZQotICAgICAgICAvLyBJUiB0aGF0
IHdvdWxkIG5lY2Vzc2l0YXRlIHRoaXMuIFRoZSByZWFzb24gaXMgdGhhdCBTcHJlYWQgaXMgb25s
eQotICAgICAgICAvLyBjb25zdW1lZCBieSBOZXdBcnJheVdpdGhTcHJlYWQgYW5kIFZhcmFyZ3Mg
b3BlcmF0aW9ucy4gQW5kIGl0IGlzCi0gICAgICAgIC8vIG5ldmVyIGFueXRoaW5nIGVsc2UuIEFs
c28sIGFueSBTcHJlYWQoUGhhbnRvbUNyZWF0ZVJlc3QpIHdpbGwgdHVybgotICAgICAgICAvLyBp
bnRvIFBoYW50b21TcHJlYWQoUGhhbnRvbUNyZWF0ZVJlc3QpLgotICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX25vZGUtPmNoaWxkMSgpLT5vcCgpICE9IFBoYW50b21DcmVhdGVSZXN0KTsgCisgICAg
ICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLT5vcCgpID09IFBoYW50b21DcmVhdGVSZXN0KSB7Cisg
ICAgICAgICAgICAvLyBUaGlzIElSIGlzIHJhcmUgdG8gZ2VuZXJhdGUgc2luY2UgaXQgcmVxdWly
ZXMgZXNjYXBpbmcgdGhlIFNwcmVhZAorICAgICAgICAgICAgLy8gYnV0IG5vdCB0aGUgQ3JlYXRl
UmVzdC4gSW4gYnl0ZWNvZGUsIHdlIGhhdmUgb25seSBmZXcgb3BlcmF0aW9ucyB0aGF0CisgICAg
ICAgICAgICAvLyBhY2NlcHQgU3ByZWFkJ3MgcmVzdWx0IGFzIGlucHV0LiBUaGlzIHVzdWFsbHkg
bGVhZHMgdG8gdGhlIFNwcmVhZCBub2RlIG5vdAorICAgICAgICAgICAgLy8gZXNjYXBpbmcuIEhv
d2V2ZXIsIHRoaXMgY2FuIGhhcHBlbiBpZiBmb3IgZXhhbXBsZSB3ZSBnZW5lcmF0ZSBhIFB1dFN0
YWNrIG9uCisgICAgICAgICAgICAvLyB0aGUgU3ByZWFkIGJ1dCBub3RoaW5nIGVzY2FwZXMgdGhl
IENyZWF0ZVJlc3QuCisgICAgICAgICAgICBMQmFzaWNCbG9jayBsb29wSGVhZGVyID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxvb3BCb2R5ID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dBbGxvY2F0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmlu
c2VydE5ld0Jsb2Nrc0JlZm9yZShsb29wSGVhZGVyKTsKKworICAgICAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50
aWMuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZBcmd1bWVu
dHNUb1NraXAgPSBtX25vZGUtPmNoaWxkMSgpLT5udW1iZXJPZkFyZ3VtZW50c1RvU2tpcCgpOwor
ICAgICAgICAgICAgTFZhbHVlIHNvdXJjZVN0YXJ0ID0gZ2V0QXJndW1lbnRzU3RhcnQoaW5saW5l
Q2FsbEZyYW1lLCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCk7CisgICAgICAgICAgICBMVmFsdWUg
bGVuZ3RoID0gZ2V0U3ByZWFkTGVuZ3RoRnJvbUlubGluZUNhbGxGcmFtZShpbmxpbmVDYWxsRnJh
bWUsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKEpTVmFsdWUpID09IDggJiYgMSA8PCAzID09IDgsICJBc3N1bWVkIGluIHRoZSBjb2Rl
IGJlbG93LiIpOworICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBtX291dC5hZGQoCisgICAgICAg
ICAgICAgICAgbV9vdXQuc2hsKG1fb3V0Lnplcm9FeHRQdHIobGVuZ3RoKSwgbV9vdXQuY29uc3RJ
bnQzMigzKSksCisgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoSlNGaXhlZEFycmF5
OjpvZmZzZXRPZkRhdGEoKSkpOworCisgICAgICAgICAgICBMVmFsdWUgZmFzdEFycmF5VmFsdWUg
PSBhbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTRml4ZWRBcnJheT4oc2l6ZSwgbV9ncmFwaC5t
X3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCksIHNsb3dBbGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIG1fb3V0LnN0b3JlMzIobGVuZ3RoLCBmYXN0QXJyYXlWYWx1ZSwgbV9oZWFwcy5KU0ZpeGVk
QXJyYXlfc2l6ZSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0QXJyYXkgPSBtX291
dC5hbmNob3IoZmFzdEFycmF5VmFsdWUpOworICAgICAgICAgICAgbV9vdXQuanVtcChsb29wSGVh
ZGVyKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0FsbG9jYXRpb24sIGxvb3BI
ZWFkZXIpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0FycmF5ID0gbV9vdXQuYW5j
aG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUZpeGVkQXJy
YXkpLCBtX2NhbGxGcmFtZSwgbGVuZ3RoKSk7CisgICAgICAgICAgICBtX291dC5qdW1wKGxvb3BI
ZWFkZXIpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsb29wSGVhZGVyLCBsb29wQm9k
eSk7CisgICAgICAgICAgICBMVmFsdWUgZml4ZWRBcnJheSA9IG1fb3V0LnBoaShJbnQ2NCwgZmFz
dEFycmF5LCBzbG93QXJyYXkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc3RhcnRJbmRl
eCA9IG1fb3V0LmFuY2hvcihtX291dC5jb25zdEludFB0cigwKSk7CisgICAgICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuaXNaZXJvMzIobGVuZ3RoKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVu
c3VyZShsb29wQm9keSkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhsb29wQm9keSwg
Y29udGludWF0aW9uKTsKKyAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LnBoaShwb2lu
dGVyVHlwZSgpLCBzdGFydEluZGV4KTsKKyAgICAgICAgICAgIExWYWx1ZSB2YWx1ZSA9IG1fb3V0
LmxvYWQ2NCgKKyAgICAgICAgICAgICAgICBtX291dC5iYXNlSW5kZXgobV9oZWFwcy52YXJpYWJs
ZXMsIHNvdXJjZVN0YXJ0LCBpbmRleCkpOworICAgICAgICAgICAgbV9vdXQuc3RvcmU2NCh2YWx1
ZSwgbV9vdXQuYmFzZUluZGV4KG1faGVhcHMuSlNGaXhlZEFycmF5X2J1ZmZlciwgZml4ZWRBcnJh
eSwgaW5kZXgpKTsKKyAgICAgICAgICAgIExWYWx1ZSBuZXh0SW5kZXggPSBtX291dC5hZGQobV9v
dXQuY29uc3RJbnRQdHIoMSksIGluZGV4KTsKKyAgICAgICAgICAgIG1fb3V0LmFkZEluY29taW5n
VG9QaGkoaW5kZXgsIG1fb3V0LmFuY2hvcihuZXh0SW5kZXgpKTsKKyAgICAgICAgICAgIG1fb3V0
LmJyYW5jaChtX291dC5iZWxvdyhuZXh0SW5kZXgsIG1fb3V0Lnplcm9FeHRQdHIobGVuZ3RoKSks
IHVuc3VyZShsb29wQm9keSksIHVuc3VyZShjb250aW51YXRpb24pKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICBtdXRh
dG9yRmVuY2UoKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUoZml4ZWRBcnJheSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dD
ZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ZpeGVkQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0ZpeGVkQXJyYXkuaAkocmV2aXNpb24gMjI1MTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGaXhlZEFycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSlNGaXhlZEFycmF5VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIEpT
Rml4ZWRBcnJheSogdHJ5Q3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2ln
bmVkIHNpemUpCisgICAgeworICAgICAgICBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+
IGNoZWNrZWRBbGxvY2F0aW9uU2l6ZSA9IGFsbG9jYXRpb25TaXplKHNpemUpOworICAgICAgICBp
ZiAoVU5MSUtFTFkoY2hlY2tlZEFsbG9jYXRpb25TaXplLmhhc092ZXJmbG93ZWQoKSkpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxv
Y2F0ZUNlbGw8SlNGaXhlZEFycmF5Pih2bS5oZWFwLCBjaGVja2VkQWxsb2NhdGlvblNpemUudW5z
YWZlR2V0KCkpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWJ1ZmZlcikpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgSlNGaXhlZEFycmF5KiByZXN1bHQgPSBuZXcgKE5vdE51
bGwsIGJ1ZmZlcikgSlNGaXhlZEFycmF5KHZtLCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICBy
ZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0ZpeGVkQXJyYXkqIGNyZWF0ZUZyb21BcnJh
eShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNBcnJheSogYXJyYXkpCiAgICAgewogICAgICAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKQEAgLTExOCwyMyAr
MTMyLDYgQEAgcHVibGljOgogICAgIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFZp
cnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCk7CiAKIHByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9zaXplOwotCi0gICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNGaXhlZEFycmF5KiB0cnlDcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgdW5zaWduZWQgc2l6ZSkKLSAgICB7Ci0gICAgICAgIENoZWNrZWQ8c2l6ZV90
LCBSZWNvcmRPdmVyZmxvdz4gY2hlY2tlZEFsbG9jYXRpb25TaXplID0gYWxsb2NhdGlvblNpemUo
c2l6ZSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShjaGVja2VkQWxsb2NhdGlvblNpemUuaGFzT3Zl
cmZsb3dlZCgpKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIHZvaWQq
IGJ1ZmZlciA9IHRyeUFsbG9jYXRlQ2VsbDxKU0ZpeGVkQXJyYXk+KHZtLmhlYXAsIGNoZWNrZWRB
bGxvY2F0aW9uU2l6ZS51bnNhZmVHZXQoKSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghYnVmZmVy
KSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBKU0ZpeGVkQXJyYXkqIHJl
c3VsdCA9IG5ldyAoTm90TnVsbCwgYnVmZmVyKSBKU0ZpeGVkQXJyYXkodm0sIHN0cnVjdHVyZSwg
c2l6ZSk7Ci0gICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0KLQotCiAgICAgSlNGaXhlZEFycmF5KFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIHNpemUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQogICAgICAgICAsIG1fc2l6ZShzaXplKQpAQCAtMTQzLDExICsxNDAsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIGJ1ZmZlcigpW2ldLnNldFN0YXJ0aW5nVmFsdWUoSlNWYWx1ZSgpKTsKICAg
ICB9CiAKLQogICAgIHN0YXRpYyBDaGVja2VkPHNpemVfdCwgUmVjb3JkT3ZlcmZsb3c+IGFsbG9j
YXRpb25TaXplKENoZWNrZWQ8c2l6ZV90LCBSZWNvcmRPdmVyZmxvdz4gbnVtSXRlbXMpCiAgICAg
ewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZEYXRhKCkgKyBudW1JdGVtcyAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pOwogICAgIH0KKworICAgIHVuc2lnbmVkIG1fc2l6ZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>