<?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>89752</bug_id>
          
          <creation_ts>2012-06-22 02:22:58 -0700</creation_ts>
          <short_desc>DFG tier-up should happen in prologues, not epilogues</short_desc>
          <delta_ts>2012-06-22 16:33:58 -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="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655319</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-22 02:22:58 -0700</bug_when>
    <thetext>This change has two outcomes:

1) Slightly reduces the likelihood that a function will be optimized both standalone and via inlining.  Previously, if you had a call sequence like foo() calls bar() exactly once, and nobody else calls bar(), then bar() would get optimized first (because it returns first) and then foo() gets optimized.  If foo() can inline bar() then that means that bar() gets optimized twice.  But now, if we optimize in prologues, then foo() will be optimized first.  If it inlines bar(), that means that there will no longer be any calls to bar().

2) It lets us kill some code in JITStubs.  Epilogue tier-up was very different from loop tier-up, since epilogue tier-up should not attempt OSR.  But prologue tier-up requires OSR (albeit really easy OSR since it&apos;s the top of the compilation unit), so it becomes just like loop tier-up.  As a result, we now have one optimizatio hook (cti_optimize) instead of two (cti_optimize_from_loop and cti_optimize_from_ret).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655324</commentid>
    <comment_count>1</comment_count>
      <attachid>148984</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-22 02:29:19 -0700</bug_when>
    <thetext>Created attachment 148984
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655337</commentid>
    <comment_count>2</comment_count>
      <attachid>148984</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-22 02:57:01 -0700</bug_when>
    <thetext>Comment on attachment 148984
the patch

Attachment 148984 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13035353</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655338</commentid>
    <comment_count>3</comment_count>
      <attachid>148984</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-22 02:57:04 -0700</bug_when>
    <thetext>Comment on attachment 148984
the patch

Attachment 148984 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13025353</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655340</commentid>
    <comment_count>4</comment_count>
      <attachid>148984</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-06-22 03:15:33 -0700</bug_when>
    <thetext>Comment on attachment 148984
the patch

Attachment 148984 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13027425</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655818</commentid>
    <comment_count>5</comment_count>
      <attachid>149114</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-22 15:10:10 -0700</bug_when>
    <thetext>Created attachment 149114
the patch

And now, with 32-bit support!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655829</commentid>
    <comment_count>6</comment_count>
      <attachid>149114</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-22 15:22:15 -0700</bug_when>
    <thetext>Comment on attachment 149114
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655918</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-22 16:33:43 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/121073</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148984</attachid>
            <date>2012-06-22 02:29:19 -0700</date>
            <delta_ts>2012-06-22 15:10:10 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>prologueosr_patch_1.diff</filename>
            <type>text/plain</type>
            <size>22234</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMDEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDEyLTA2LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHRpZXItdXAgc2hvdWxkIGhhcHBlbiBpbiBwcm9sb2d1ZXMsIG5vdCBlcGlsb2d1ZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aGFzIHR3byBvdXRjb21lczoKKyAgICAgICAgCisgICAgICAgIDEpIFNsaWdodGx5IHJlZHVjZXMg
dGhlIGxpa2VsaWhvb2QgdGhhdCBhIGZ1bmN0aW9uIHdpbGwgYmUgb3B0aW1pemVkIGJvdGgKKyAg
ICAgICAgc3RhbmRhbG9uZSBhbmQgdmlhIGlubGluaW5nLiAgUHJldmlvdXNseSwgaWYgeW91IGhh
ZCBhIGNhbGwgc2VxdWVuY2UgbGlrZSBmb28oKSAKKyAgICAgICAgY2FsbHMgYmFyKCkgZXhhY3Rs
eSBvbmNlLCBhbmQgbm9ib2R5IGVsc2UgY2FsbHMgYmFyKCksIHRoZW4gYmFyKCkgd291bGQgZ2V0
CisgICAgICAgIG9wdGltaXplZCBmaXJzdCAoYmVjYXVzZSBpdCByZXR1cm5zIGZpcnN0KSBhbmQg
dGhlbiBmb28oKSBnZXRzIG9wdGltaXplZC4gIElmIGZvbygpCisgICAgICAgIGNhbiBpbmxpbmUg
YmFyKCkgdGhlbiB0aGF0IG1lYW5zIHRoYXQgYmFyKCkgZ2V0cyBvcHRpbWl6ZWQgdHdpY2UuICBC
dXQgbm93LCBpZiB3ZQorICAgICAgICBvcHRpbWl6ZSBpbiBwcm9sb2d1ZXMsIHRoZW4gZm9vKCkg
d2lsbCBiZSBvcHRpbWl6ZWQgZmlyc3QuICBJZiBpdCBpbmxpbmVzIGJhcigpLAorICAgICAgICB0
aGF0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBubyBsb25nZXIgYmUgYW55IGNhbGxzIHRvIGJhcigp
LgorICAgICAgICAKKyAgICAgICAgMikgSXQgbGV0cyB1cyBraWxsIHNvbWUgY29kZSBpbiBKSVRT
dHVicy4gIEVwaWxvZ3VlIHRpZXItdXAgd2FzIHZlcnkgZGlmZmVyZW50IGZyb20KKyAgICAgICAg
bG9vcCB0aWVyLXVwLCBzaW5jZSBlcGlsb2d1ZSB0aWVyLXVwIHNob3VsZCBub3QgYXR0ZW1wdCBP
U1IuICBCdXQgcHJvbG9ndWUgdGllci11cAorICAgICAgICByZXF1aXJlcyBPU1IgKGFsYmVpdCBy
ZWFsbHkgZWFzeSBPU1Igc2luY2UgaXQncyB0aGUgdG9wIG9mIHRoZSBjb21waWxhdGlvbiB1bml0
KSwKKyAgICAgICAgc28gaXQgYmVjb21lcyBqdXN0IGxpa2UgbG9vcCB0aWVyLXVwLiAgQXMgYSBy
ZXN1bHQsIHdlIG5vdyBoYXZlIG9uZSBvcHRpbWl6YXRpb24KKyAgICAgICAgaG9vayAoY3RpX29w
dGltaXplKSBpbnN0ZWFkIG9mIHR3byAoY3RpX29wdGltaXplX2Zyb21fbG9vcCBhbmQKKyAgICAg
ICAgY3RpX29wdGltaXplX2Zyb21fcmV0KS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgY29uc2Vx
dWVuY2Ugb2Ygbm90IGhhdmluZyBhbiBvcHRpbWl6YXRpb24gY2hlY2sgaW4gZXBpbG9ndWVzLCB0
aGUgT1NSIGV4aXQKKyAgICAgICAgY29kZSBtdXN0IG5vdyB0cmlnZ2VyIHJlb3B0aW1pemF0aW9u
IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3Qgc2lnbmFsaW5nIHRoZSBlcGlsb2d1ZQorICAgICAgICBj
aGVjayB0byBmaXJlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgdGhlIGFiaWxp
dHkgdG8gY291bnQgdGhlIG51bWJlciBvZiBERkcgY29tcGlsYXRpb25zLCB3aGljaCB3YXMKKyAg
ICAgICAgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgdGhpcyBwYXRjaCBhbmQgbWlnaHQgYmUgdXNlZnVs
IGZvciBvdGhlciB0aGluZ3MgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVvcHRpbWl6ZSk6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OmdldE51
bUNvbXBpbGF0aW9ucyk6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR0RyaXZlci5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmhhbmRs
ZUV4aXRDb3VudHMpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3JldCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXRfb2JqZWN0X29yX3RoaXMpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZW50ZXIpOgorICAgICAgICAqIGppdC9KSVRTdHVi
cy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBq
aXQvSklUU3R1YnMuaDoKKwogMjAxMi0wNi0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIG9wX3Jlc29sdmVfZ2xvYmFsIHNob3VsZCBub3QgcHJldmVudCBERkcg
aW5saW5pbmcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCShyZXZpc2lvbiAxMjA5OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2NCw2ICsyNDY0LDE2IEBAIHZv
aWQgQ29kZUJsb2NrOjpjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHQKIH0KIAogI2lmIEVOQUJMRShK
SVQpCit2b2lkIENvZGVCbG9jazo6cmVvcHRpbWl6ZSgpCit7CisgICAgQVNTRVJUKHJlcGxhY2Vt
ZW50KCkgIT0gdGhpcyk7CisgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmFsdGVybmF0aXZlKCkg
PT0gdGhpcyk7CisgICAgcmVwbGFjZW1lbnQoKS0+dGFsbHlGcmVxdWVudEV4aXRTaXRlcygpOwor
ICAgIHJlcGxhY2VtZW50KCktPmpldHRpc29uKCk7CisgICAgY291bnRSZW9wdGltaXphdGlvbigp
OworICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKK30KKwogQ29kZUJsb2NrKiBQcm9ncmFtQ29k
ZUJsb2NrOjpyZXBsYWNlbWVudCgpCiB7CiAgICAgcmV0dXJuICZzdGF0aWNfY2FzdDxQcm9ncmFt
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9u
IDEyMDk5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAko
d29ya2luZyBjb3B5KQpAQCAtMTEwNSwxNSArMTEwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogI2Vu
ZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIHZvaWQgcmVvcHRpbWl6ZSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpICE9IHRoaXMpOwot
ICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmFsdGVybmF0aXZlKCkgPT0gdGhpcyk7
Ci0gICAgICAgICAgICByZXBsYWNlbWVudCgpLT50YWxseUZyZXF1ZW50RXhpdFNpdGVzKCk7Ci0g
ICAgICAgICAgICByZXBsYWNlbWVudCgpLT5qZXR0aXNvbigpOwotICAgICAgICAgICAgY291bnRS
ZW9wdGltaXphdGlvbigpOwotICAgICAgICAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwotICAg
ICAgICB9CisgICAgICAgIHZvaWQgcmVvcHRpbWl6ZSgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VkVSQk9TRV9WQUxVRV9QUk9GSUxFKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMDk5MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjU3LDYgKzMyNTcsOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygp
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2lubGluZVN0YWNrVG9wLT5tX3VubGlua2Vk
QmxvY2tzLmlzRW1wdHkoKSB8fCBtX2dyYXBoLm1fYmxvY2tzW21faW5saW5lU3RhY2tUb3AtPm1f
dW5saW5rZWRCbG9ja3MubGFzdCgpLm1fYmxvY2tJbmRleF0tPmJ5dGVjb2RlQmVnaW4gPCBtX2N1
cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fdW5s
aW5rZWRCbG9ja3MuYXBwZW5kKFVubGlua2VkQmxvY2sobV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCkp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9ibG9ja0xpbmtpbmdU
YXJnZXRzLmFwcGVuZChtX2dyYXBoLm1fYmxvY2tzLnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBmaXJzdCBibG9jayBpcyBkZWZpbml0ZWx5IGFuIE9TUiB0YXJnZXQuCisgICAg
ICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCkpCisgICAgICAgICAg
ICAgICAgICAgICAgICBibG9jay0+aXNPU1JUYXJnZXQgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICBtX2dyYXBoLm1fYmxvY2tzLmFwcGVuZChibG9jay5yZWxlYXNlKCkpOwogICAgICAgICAg
ICAgICAgICAgICBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CiAgICAgICAgICAgICAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTIwOTkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MywxMSArNDMsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCitzdGF0aWMgdW5zaWduZWQgbnVtQ29tcGlsYXRpb25zOworCit1bnNpZ25lZCBnZXROdW1D
b21waWxhdGlvbnMoKQoreworICAgIHJldHVybiBudW1Db21waWxhdGlvbnM7Cit9CisKIGVudW0g
Q29tcGlsZU1vZGUgeyBDb21waWxlRnVuY3Rpb24sIENvbXBpbGVPdGhlciB9OwogaW5saW5lIGJv
b2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTW9kZSwgRXhlY1N0YXRlKiBleGVjLCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oIkRGRyBDb21waWxhdGlvbiAoRHJpdmVyKSIpOwogICAgIAorICAgIG51bUNvbXBpbGF0
aW9ucysrOworICAgIAogICAgIEFTU0VSVChjb2RlQmxvY2spOwogICAgIEFTU0VSVChjb2RlQmxv
Y2stPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkt
PmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRHJpdmVyLmgJKHJldmlzaW9uIDEyMDk5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDgg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOwogCiBuYW1lc3BhY2UgREZHIHsKIAorSlNf
RVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgZ2V0TnVtQ29tcGlsYXRpb25zKCk7CisKICNpZiBFTkFC
TEUoREZHX0pJVCkKIGJvb2wgdHJ5Q29tcGlsZShFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCBKSVRD
b2RlJik7CiBib29sIHRyeUNvbXBpbGVGdW5jdGlvbihFeGVjU3RhdGUqLCBDb2RlQmxvY2sqLCBK
SVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMTIwOTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyArMTE1LDEwIEBAIHZv
aWQgT1NSRXhpdENvbXBpbGVyOjpoYW5kbGVFeGl0Q291bnRzKGMKICAgICAgICAgbV9qaXQuc3Rv
cmUzMihHUFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mRm9yY2VkT1NSRXhpdENvdW50ZXIoKSkpOwogICAgICAg
ICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QxLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZTcGVjdWxhdGl2ZVN1Y2Nlc3NDb3Vu
dGVyKCkpKTsKICAgICAgICAgCisgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKG1faml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7
CisKICAgICAgICAgdG9vRmV3RmFpbHMuYXBwZW5kKG1faml0LmJyYW5jaDMyKEFzc2VtYmx5SGVs
cGVyczo6QmVsb3dPckVxdWFsLCBHUFJJbmZvOjpyZWdUMiwgQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoT3B0aW9uczo6Zm9yY2VkT1NSRXhpdENvdW50Rm9yUmVvcHRpbWl6YXRpb24pKSk7
CisKICAgICB9IGVsc2UgewogICAgICAgICAvLyBQcm9jZWVkIGJhc2VkIG9uIHRoZSBhc3N1bXB0
aW9uIHRoYXQgd2UgY2FuIGhhbmRsZSB0aGVzZSBleGl0cyBzbyBsb25nIGFzIHRoZXkKICAgICAg
ICAgLy8gZG9uJ3QgZ2V0IHRvbyBmcmVxdWVudC4KQEAgLTEzNiw4ICsxMzksMTQgQEAgdm9pZCBP
U1JFeGl0Q29tcGlsZXI6OmhhbmRsZUV4aXRDb3VudHMoYwogICAgIH0KIAogICAgIC8vIFJlb3B0
aW1pemUgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKDApLCBBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6
cmVnVDAsIENvZGVCbG9jazo6b2Zmc2V0T2ZKSVRFeGVjdXRlQ291bnRlcigpKSk7Ci0gICAgbV9q
aXQuc3RvcmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0
aW9uQWN0aXZlVGhyZXNob2xkKCkpKTsKKyNpZiAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVS
UworICAgIG1faml0LnBva2UoR1BSSW5mbzo6cmVnVDApOworI2Vsc2UKKyAgICBtX2ppdC5tb3Zl
KEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIEFTU0VSVChHUFJJ
bmZvOjphcmd1bWVudEdQUjAgIT0gR1BSSW5mbzo6cmVnVDEpOworI2VuZGlmCisgICAgbV9qaXQu
bW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0
cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3cpKSwgR1BSSW5mbzo6cmVnVDEpOworICAgIG1faml0LmNh
bGwoR1BSSW5mbzo6cmVnVDEpOwogICAgIEFzc2VtYmx5SGVscGVyczo6SnVtcCBkb25lQWRqdXN0
aW5nID0gbV9qaXQuanVtcCgpOwogICAgIAogICAgIHRvb0Zld0ZhaWxzLmxpbmsoJm1faml0KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2
aXNpb24gMTIwOTkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTQgKzMyLDE1IEBACiAjaW5jbHVkZSAiREZHUmVw
YXRjaC5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCiAj
aW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5j
bHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIk5hbWVJbnN0YW5jZS5oIgog
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKIApAQCAtMTI1MSw2ICsxMjUyLDI3IEBAIHZvaWQgREZHX09QRVJB
VElPTiBkZWJ1Z09wZXJhdGlvblByaW50U3AKIH0KICNlbmRpZgogCitleHRlcm4gIkMiIHZvaWQg
REZHX09QRVJBVElPTiB0cmlnZ2VyUmVvcHRpbWl6YXRpb25Ob3coQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCit7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBkYXRhTG9nKCIlcDogRW50
ZXJlZCByZW9wdGltaXplXG4iLCBjb2RlQmxvY2spOworI2VuZGlmCisgICAgLy8gV2UgbXVzdCBi
ZSBjYWxsZWQgd2l0aCB0aGUgYmFzZWxpbmUgY29kZSBibG9jay4KKyAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKKworICAgIC8vIElm
IEkgYW0gbXkgb3duIHJlcGxhY2VtZW50LCB0aGVuIHJlb3B0aW1pemF0aW9uIGhhcyBhbHJlYWR5
IGJlZW4gdHJpZ2dlcmVkLgorICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpbiByZWN1cnNpdmUgZnVu
Y3Rpb25zLgorICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkgPT0gY29kZUJsb2NrKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBPdGhlcndpc2UsIHRoZSByZXBsYWNlbWVudCBtdXN0
IGJlIG9wdGltaXplZCBjb2RlLiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eQorICAgIC8vIHRv
IGNoZWNrIG91ciBsb2dpYy4KKyAgICBBU1NFUlQoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5nZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKKworICAgIGNvZGVCbG9jay0+cmVvcHRpbWl6ZSgp
OworfQorCiB9IC8vIGV4dGVybiAiQyIKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDEy
MDk5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjcsNiArMjI3LDggQEAgc2l6ZV90IERGR19PUEVSQVRJT04gZGZnQ29u
dmVydEpTVmFsdWVUbwogdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcGVj
dWxhdGlvbkZhaWx1cmUoRXhlY1N0YXRlKiwgdm9pZCopIFdURl9JTlRFUk5BTDsKICNlbmRpZgog
Cit2b2lkIERGR19PUEVSQVRJT04gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9jayop
IFdURl9JTlRFUk5BTDsKKwogfSAvLyBleHRlcm4gIkMiCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEyMDk5MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAwLDkgKzEwMCwxMCBAQCB2b2lkIEpJVDo6ZW1pdE9wdGltaXphdGlvbkNoZWNrKE9wdGltaXph
CiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBKdW1wIHNraXBPcHRpbWl6ZSA9IGJyYW5jaEFk
ZDMyKFNpZ25lZCwgVHJ1c3RlZEltbTMyKGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8g
T3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvckxvb3AgOiBPcHRpb25zOjpleGVj
dXRpb25Db3VudGVySW5jcmVtZW50Rm9yUmV0dXJuKSwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJs
b2NrLT5hZGRyZXNzT2ZKSVRFeGVjdXRlQ291bnRlcigpKSk7Ci0gICAgSklUU3R1YkNhbGwgc3R1
YkNhbGwodGhpcywga2luZCA9PSBMb29wT3B0aW1pemF0aW9uQ2hlY2sgPyBjdGlfb3B0aW1pemVf
ZnJvbV9sb29wIDogY3RpX29wdGltaXplX2Zyb21fcmV0KTsKLSAgICBpZiAoa2luZCA9PSBMb29w
T3B0aW1pemF0aW9uQ2hlY2spCi0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihtX2J5dGVjb2RlT2Zmc2V0KSk7CisgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywg
Y3RpX29wdGltaXplKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIobV9i
eXRlY29kZU9mZnNldCkpOworICAgIGlmIChraW5kID09IEVudGVyT3B0aW1pemF0aW9uQ2hlY2sp
CisgICAgICAgIEFTU0VSVCghbV9ieXRlY29kZU9mZnNldCk7CiAgICAgc3R1YkNhbGwuY2FsbCgp
OwogICAgIHNraXBPcHRpbWl6ZS5saW5rKHRoaXMpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCShyZXZpc2lvbiAxMjA5OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDYsNyArODA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIC8vIExvYWRzIHRoZSBjaGFyYWN0ZXIgdmFsdWUgb2YgYSBzaW5nbGUgY2hhcmFjdGVy
IHN0cmluZyBpbnRvIGRzdC4KICAgICAgICAgdm9pZCBlbWl0TG9hZENoYXJhY3RlclN0cmluZyhS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QsIEp1bXBMaXN0JiBmYWlsdXJlcyk7CiAgICAg
ICAgIAotICAgICAgICBlbnVtIE9wdGltaXphdGlvbkNoZWNrS2luZCB7IExvb3BPcHRpbWl6YXRp
b25DaGVjaywgUmV0T3B0aW1pemF0aW9uQ2hlY2sgfTsKKyAgICAgICAgZW51bSBPcHRpbWl6YXRp
b25DaGVja0tpbmQgeyBMb29wT3B0aW1pemF0aW9uQ2hlY2ssIEVudGVyT3B0aW1pemF0aW9uQ2hl
Y2sgfTsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBlbWl0T3B0aW1pemF0aW9u
Q2hlY2soT3B0aW1pemF0aW9uQ2hlY2tLaW5kKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDEyMDk5MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Niw4
ICs1NzYsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVudHMoSW5zCiAKIHZv
aWQgSklUOjplbWl0X29wX3JldChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIGVtaXRPcHRpbWl6YXRpb25DaGVjayhSZXRPcHRpbWl6YXRpb25DaGVjayk7Ci0gICAgCiAg
ICAgQVNTRVJUKGNhbGxGcmFtZVJlZ2lzdGVyICE9IHJlZ1QxKTsKICAgICBBU1NFUlQocmVnVDEg
IT0gcmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAgICAgQVNTRVJUKHJldHVyblZhbHVlUmVnaXN0ZXIg
IT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtNTk4LDggKzU5Niw2IEBAIHZvaWQgSklUOjplbWl0
X29wX3JldChJbnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcmV0X29iamVj
dF9vcl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE9w
dGltaXphdGlvbkNoZWNrKFJldE9wdGltaXphdGlvbkNoZWNrKTsKLSAgICAKICAgICBBU1NFUlQo
Y2FsbEZyYW1lUmVnaXN0ZXIgIT0gcmVnVDEpOwogICAgIEFTU0VSVChyZWdUMSAhPSByZXR1cm5W
YWx1ZVJlZ2lzdGVyKTsKICAgICBBU1NFUlQocmV0dXJuVmFsdWVSZWdpc3RlciAhPSBjYWxsRnJh
bWVSZWdpc3Rlcik7CkBAIC0xMjE4LDEzICsxMjE0LDE0IEBAIHZvaWQgSklUOjplbWl0X29wX25l
cV9udWxsKEluc3RydWN0aW9uKiAKIAogdm9pZCBKSVQ6OmVtaXRfb3BfZW50ZXIoSW5zdHJ1Y3Rp
b24qKQogeworICAgIGVtaXRPcHRpbWl6YXRpb25DaGVjayhFbnRlck9wdGltaXphdGlvbkNoZWNr
KTsKKyAgICAKICAgICAvLyBFdmVuIHRob3VnaCBDVEkgZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5p
dGlhbGl6ZSBvdXIgY29uc3RhbnQKICAgICAvLyByZWdpc3RlcnMgdG8gemFwIHN0YWxlIHBvaW50
ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdpbmcKICAgICAvLyBvYmplY3QgbGlm
ZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCiAgICAgc2l6ZV90IGNvdW50ID0gbV9j
b2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGNvdW50OyAr
K2opCiAgICAgICAgIGVtaXRJbml0UmVnaXN0ZXIoaik7Ci0KIH0KIAogdm9pZCBKSVQ6OmVtaXRf
b3BfY3JlYXRlX2FjdGl2YXRpb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMjA5OTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkxOSwxNyArMTkxOSwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9j
aGVja19oYXNfCiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLURFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wdGltaXplX2Zyb21fbG9vcCkKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9w
dGltaXplKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICAK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLQogICAgIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKLSAgICAKKwog
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZygiJXA6IEVudGVyZWQgb3B0
aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVC
bG9jaywgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
KCkpOworICAgIGRhdGFMb2coIiVwOiBFbnRlcmVkIG9wdGltaXplIHdpdGggYnl0ZWNvZGVJbmRl
eCA9ICV1LCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9
ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLCBieXRlY29k
ZUluZGV4LCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50
ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmICghY29kZUJsb2NrLT5jaGVja0lmT3B0aW1pemF0aW9u
VGhyZXNob2xkUmVhY2hlZCgpKQpAQCAtMTkzNyw3ICsxOTM2LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAg
IGRhdGFMb2coIkNvbnNpZGVyaW5nIGxvb3AgT1NSIGludG8gJXAoJXApIHdpdGggc3VjY2Vzcy9m
YWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVC
bG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxv
Y2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CisgICAgICAgIGRh
dGFMb2coIkNvbnNpZGVyaW5nIE9TUiBpbnRvICVwKCVwKSB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8l
dS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJl
cGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBs
YWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOwogI2VuZGlmCiAgICAgICAgIGlm
IChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNob3VsZFJlb3B0aW1pemVGcm9tTG9vcE5vdygp
KSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKQEAgLTE5NTksMTQgKzE5NTgsMTQgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgICAgICBKU09iamVj
dCogZXJyb3IgPSBjb2RlQmxvY2stPmNvbXBpbGVPcHRpbWl6ZWQoY2FsbEZyYW1lLCBzY29wZUNo
YWluKTsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQogICAgICAgICBpZiAoZXJyb3IpCi0g
ICAgICAgICAgICBkYXRhTG9nKCJXQVJOSU5HOiBvcHRpbWl6ZWQgY29tcGlsYXRpb24gZnJvbSBs
b29wIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgZGF0YUxvZygiV0FSTklORzogb3B0aW1pemVk
IGNvbXBpbGF0aW9uIGZhaWxlZC5cbiIpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGVy
cm9yKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKSA9PSBjb2RlQmxvY2spIHsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAg
ICAgICAgZGF0YUxvZygiT3B0aW1pemluZyAlcCBmcm9tIGxvb3AgZmFpbGVkLlxuIiwgY29kZUJs
b2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgJXAgZmFpbGVkLlxuIiwgY29k
ZUJsb2NrKTsKICNlbmRpZgogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQoY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwpAQCAtMTk4MCw3ICsx
OTc5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIAog
ICAgIGlmICh2b2lkKiBhZGRyZXNzID0gREZHOjpwcmVwYXJlT1NSRW50cnkoY2FsbEZyYW1lLCBv
cHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICAgICAgZGF0YUxvZygiT3B0aW1pemluZyAlcCBmcm9tIGxvb3Agc3VjY2Vl
ZGVkLCBwZXJmb3JtaW5nIE9TUiBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBj
b2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICAgICAgZGF0YUxvZygi
T3B0aW1pemluZyAlcCBzdWNjZWVkZWQsIHBlcmZvcm1pbmcgT1NSIGFmdGVyIGEgZGVsYXkgb2Yg
JXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkp
OwogI2VuZGlmCiAKICAgICAgICAgY29kZUJsb2NrLT5vcHRpbWl6ZVNvb24oKTsKQEAgLTE5OTAs
NyArMTk4OSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAg
ICB9CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nKCJPcHRp
bWl6aW5nICVwIGZyb20gbG9vcCBzdWNjZWVkZWQsIE9TUiBmYWlsZWQsIGFmdGVyIGEgZGVsYXkg
b2YgJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
KCkpOworICAgIGRhdGFMb2coIk9wdGltaXppbmcgJXAgc3VjY2VlZGVkLCBPU1IgZmFpbGVkLCBh
ZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlv
bkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgLy8gQ291bnQgdGhlIE9TUiBmYWlsdXJl
IGFzIGEgc3BlY3VsYXRpb24gZmFpbHVyZS4gSWYgdGhpcyBoYXBwZW5zIGEgbG90LCB0aGVuCkBA
IC0xOTk4LDcgKzE5OTcsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9m
cm9tCiAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5jb3VudFNwZWN1bGF0aW9uRmFpbHVyZSgpOwog
ICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZygiRW5jb3VudGVy
ZWQgbG9vcCBPU1IgZmFpbHVyZSBpbnRvICVwKCVwKSB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldS5c
biIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxh
Y2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOworICAgIGRhdGFMb2coIkVuY291bnRl
cmVkIE9TUiBmYWlsdXJlIGludG8gJXAoJXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1l
bnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50
KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIC8vIFdlIGFyZSBh
IGxvdCBtb3JlIGNvbnNlcnZhdGl2ZSBhYm91dCB0cmlnZ2VyaW5nIHJlb3B0aW1pemF0aW9uIGFm
dGVyIE9TUiBmYWlsdXJlIHRoYW4KQEAgLTIwMTEsNyArMjAxMCw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICAvLyByZW9wdGltaXphdGlvbiB0cmlnZ2Vy
LgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2stPnNob3VsZFJlb3B0aW1pemVOb3coKSkgewog
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIGRhdGFMb2coIlRyaWdnZXJpbmcg
cmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiBsb29wIGFmdGVyIE9TUiBmYWlsKS5cbiIsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKKyAgICAgICAgZGF0YUxvZygiVHJp
Z2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCglcCkgKGFmdGVyIE9TUiBmYWlsKS5cbiIsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsKICNlbmRpZgogICAgICAgICBjb2Rl
QmxvY2stPnJlb3B0aW1pemUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjAyMSw3MSArMjAyMCw2
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICAvLyBsb25n
ZXIgYW5kIHRoZW4gdHJ5IGFnYWluLgogICAgIGNvZGVCbG9jay0+b3B0aW1pemVBZnRlcldhcm1V
cCgpOwogfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tX3JldCkK
LXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0gICAgCi0gICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7Ci0gICAgCi0jaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nKCJFbnRlcmVkIG9wdGltaXplX2Zyb21fcmV0IHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNv
dW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxv
Y2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKLSNlbmRpZgotCi0gICAgaWYgKCFjb2Rl
QmxvY2stPmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRSZWFjaGVkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsK
LSNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAgICBkYXRhTG9nKCJSZXR1cm5pbmcg
ZnJvbSBvbGQgSklUIGNhbGwgZnJhbWUgd2l0aCBvcHRpbWl6ZWQgcmVwbGFjZW1lbnQgJXAoJXAp
LCB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldSIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkp
OwotICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0gY2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZSgpOwotICAgICAgICBpZiAoY2FsbGVyRnJhbWUpCi0gICAgICAgICAgICBkYXRhTG9nKCIsIGNh
bGxlckZyYW1lID0gJXAsIHJldHVyblBDID0gJXAsIGNhbGxlciBjb2RlIGJsb2NrID0gJXAiLCBj
YWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZhbHVlKCksIGNhbGxlckZyYW1lLT5j
b2RlQmxvY2soKSk7Ci0gICAgICAgIGRhdGFMb2coIlxuIik7Ci0jZW5kaWYKLSAgICAgICAgaWYg
KGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxkUmVvcHRpbWl6ZU5vdygpKSB7Ci0jaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAgIGRhdGFMb2coIlRyaWdnZXJpbmcg
cmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiByZXR1cm4pLlxuIiwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPnJlcGxhY2VtZW50KCkpOwotI2VuZGlmCi0gICAgICAgICAgICBjb2RlQmxvY2stPnJl
b3B0aW1pemUoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29kZUJsb2NrLT5vcHRp
bWl6ZVNvb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWNvZGVC
bG9jay0+c2hvdWxkT3B0aW1pemVOb3coKSkgewotI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
Ci0gICAgICAgIGRhdGFMb2coIkRlbGF5aW5nIG9wdGltaXphdGlvbiBmb3IgJXAgKGluIHJldHVy
bikgYmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJvZmlsaW5nLlxuIiwgY29kZUJsb2NrKTsKLSNl
bmRpZgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluID0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7Ci0KLSAgICBKU09iamVjdCogZXJy
b3IgPSBjb2RlQmxvY2stPmNvbXBpbGVPcHRpbWl6ZWQoY2FsbEZyYW1lLCBzY29wZUNoYWluKTsK
LSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGRhdGFMb2coIldBUk5JTkc6IG9wdGltaXplZCBjb21w
aWxhdGlvbiBmcm9tIHJldCBmYWlsZWQuXG4iKTsKLSAgICAKLSAgICBpZiAoY29kZUJsb2NrLT5y
ZXBsYWNlbWVudCgpID09IGNvZGVCbG9jaykgewotI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
Ci0gICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgJXAgZnJvbSByZXR1cm4gZmFpbGVkLlxuIiwg
Y29kZUJsb2NrKTsKLSNlbmRpZgotCi0gICAgICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgIGNvZGVCbG9jay0+ZG9udE9w
dGltaXplQW55dGltZVNvb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBB
U1NFUlQoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
REZHSklUKTsKLQotI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZygiT3B0
aW1pemluZyAlcCBmcm9tIHJldHVybiBzdWNjZWVkZWQgYWZ0ZXIgYSBkZWxheSBvZiAldS5cbiIs
IGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7Ci0jZW5k
aWYKLSAgICAKLSAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwotfQogI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQogCiBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3Bf
aW5zdGFuY2VvZikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlz
aW9uIDEyMDk5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUwLDggKzQ1MCw3IEBAIGV4dGVybiAiQyIgewogICAgIHZvaWQgSklU
X1NUVUIgY3RpX29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdU
Rl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9vcF90aHJvd19yZWZlcmVuY2VfZXJy
b3IoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7CiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgdm9pZCBKSVRfU1RVQiBjdGlfb3B0aW1pemVfZnJvbV9sb29wKFNUVUJfQVJHU19E
RUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotICAgIHZvaWQgSklUX1NUVUIgY3RpX29wdGltaXpl
X2Zyb21fcmV0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOworICAgIHZvaWQg
SklUX1NUVUIgY3RpX29wdGltaXplKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFM
OwogI2VuZGlmCiAgICAgdm9pZCogSklUX1NUVUIgY3RpX29wX2NhbGxfYXJpdHlDaGVjayhTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkKiBKSVRfU1RVQiBjdGlf
b3BfY29uc3RydWN0X2FyaXR5Q2hlY2soU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJO
QUw7Cg==
</data>
<flag name="commit-queue"
          id="156888"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149114</attachid>
            <date>2012-06-22 15:10:10 -0700</date>
            <delta_ts>2012-06-22 15:22:14 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>prologueosr_patch_3.diff</filename>
            <type>text/plain</type>
            <size>23851</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMDU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDEyLTA2LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHRpZXItdXAgc2hvdWxkIGhhcHBlbiBpbiBwcm9sb2d1ZXMsIG5vdCBlcGlsb2d1ZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
aGFzIHR3byBvdXRjb21lczoKKyAgICAgICAgCisgICAgICAgIDEpIFNsaWdodGx5IHJlZHVjZXMg
dGhlIGxpa2VsaWhvb2QgdGhhdCBhIGZ1bmN0aW9uIHdpbGwgYmUgb3B0aW1pemVkIGJvdGgKKyAg
ICAgICAgc3RhbmRhbG9uZSBhbmQgdmlhIGlubGluaW5nLiAgUHJldmlvdXNseSwgaWYgeW91IGhh
ZCBhIGNhbGwgc2VxdWVuY2UgbGlrZSBmb28oKSAKKyAgICAgICAgY2FsbHMgYmFyKCkgZXhhY3Rs
eSBvbmNlLCBhbmQgbm9ib2R5IGVsc2UgY2FsbHMgYmFyKCksIHRoZW4gYmFyKCkgd291bGQgZ2V0
CisgICAgICAgIG9wdGltaXplZCBmaXJzdCAoYmVjYXVzZSBpdCByZXR1cm5zIGZpcnN0KSBhbmQg
dGhlbiBmb28oKSBnZXRzIG9wdGltaXplZC4gIElmIGZvbygpCisgICAgICAgIGNhbiBpbmxpbmUg
YmFyKCkgdGhlbiB0aGF0IG1lYW5zIHRoYXQgYmFyKCkgZ2V0cyBvcHRpbWl6ZWQgdHdpY2UuICBC
dXQgbm93LCBpZiB3ZQorICAgICAgICBvcHRpbWl6ZSBpbiBwcm9sb2d1ZXMsIHRoZW4gZm9vKCkg
d2lsbCBiZSBvcHRpbWl6ZWQgZmlyc3QuICBJZiBpdCBpbmxpbmVzIGJhcigpLAorICAgICAgICB0
aGF0IG1lYW5zIHRoYXQgdGhlcmUgd2lsbCBubyBsb25nZXIgYmUgYW55IGNhbGxzIHRvIGJhcigp
LgorICAgICAgICAKKyAgICAgICAgMikgSXQgbGV0cyB1cyBraWxsIHNvbWUgY29kZSBpbiBKSVRT
dHVicy4gIEVwaWxvZ3VlIHRpZXItdXAgd2FzIHZlcnkgZGlmZmVyZW50IGZyb20KKyAgICAgICAg
bG9vcCB0aWVyLXVwLCBzaW5jZSBlcGlsb2d1ZSB0aWVyLXVwIHNob3VsZCBub3QgYXR0ZW1wdCBP
U1IuICBCdXQgcHJvbG9ndWUgdGllci11cAorICAgICAgICByZXF1aXJlcyBPU1IgKGFsYmVpdCBy
ZWFsbHkgZWFzeSBPU1Igc2luY2UgaXQncyB0aGUgdG9wIG9mIHRoZSBjb21waWxhdGlvbiB1bml0
KSwKKyAgICAgICAgc28gaXQgYmVjb21lcyBqdXN0IGxpa2UgbG9vcCB0aWVyLXVwLiAgQXMgYSBy
ZXN1bHQsIHdlIG5vdyBoYXZlIG9uZSBvcHRpbWl6YXRpb24KKyAgICAgICAgaG9vayAoY3RpX29w
dGltaXplKSBpbnN0ZWFkIG9mIHR3byAoY3RpX29wdGltaXplX2Zyb21fbG9vcCBhbmQKKyAgICAg
ICAgY3RpX29wdGltaXplX2Zyb21fcmV0KS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgY29uc2Vx
dWVuY2Ugb2Ygbm90IGhhdmluZyBhbiBvcHRpbWl6YXRpb24gY2hlY2sgaW4gZXBpbG9ndWVzLCB0
aGUgT1NSIGV4aXQKKyAgICAgICAgY29kZSBtdXN0IG5vdyB0cmlnZ2VyIHJlb3B0aW1pemF0aW9u
IGl0c2VsZiBpbnN0ZWFkIG9mIGp1c3Qgc2lnbmFsaW5nIHRoZSBlcGlsb2d1ZQorICAgICAgICBj
aGVjayB0byBmaXJlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhbHNvIGFkZHMgdGhlIGFiaWxp
dHkgdG8gY291bnQgdGhlIG51bWJlciBvZiBERkcgY29tcGlsYXRpb25zLCB3aGljaCB3YXMKKyAg
ICAgICAgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgdGhpcyBwYXRjaCBhbmQgbWlnaHQgYmUgdXNlZnVs
IGZvciBvdGhlciB0aGluZ3MgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVvcHRpbWl6ZSk6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoQ29k
ZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OmdldE51
bUNvbXBpbGF0aW9ucyk6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR0RyaXZlci5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmhhbmRs
ZUV4aXRDb3VudHMpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVjayk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmV0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmV0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAgICAgICogaml0L0pJVE9w
Y29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9lbnRlcik6CisgICAg
ICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJ
T04pOgorICAgICAgICAqIGppdC9KSVRTdHVicy5oOgorCiAyMDEyLTA2LTIwICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgSlNMb2NrIHNob3VsZCBi
ZSBwZXItSlNHbG9iYWxEYXRhCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIxMDU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NjQsNiArMjQ2
NCwxNiBAQCB2b2lkIENvZGVCbG9jazo6Y29weVBvc3RQYXJzZURhdGFGcm9tQWx0CiB9CiAKICNp
ZiBFTkFCTEUoSklUKQordm9pZCBDb2RlQmxvY2s6OnJlb3B0aW1pemUoKQoreworICAgIEFTU0VS
VChyZXBsYWNlbWVudCgpICE9IHRoaXMpOworICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5hbHRl
cm5hdGl2ZSgpID09IHRoaXMpOworICAgIHJlcGxhY2VtZW50KCktPnRhbGx5RnJlcXVlbnRFeGl0
U2l0ZXMoKTsKKyAgICByZXBsYWNlbWVudCgpLT5qZXR0aXNvbigpOworICAgIGNvdW50UmVvcHRp
bWl6YXRpb24oKTsKKyAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7Cit9CisKIENvZGVCbG9jayog
UHJvZ3JhbUNvZGVCbG9jazo6cmVwbGFjZW1lbnQoKQogewogICAgIHJldHVybiAmc3RhdGljX2Nh
c3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmdlbmVyYXRlZEJ5dGVj
b2RlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiAxMjEwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMDUsMTUgKzExMDUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQotICAgICAgICB2b2lkIHJl
b3B0aW1pemUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSAh
PSB0aGlzKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5hbHRlcm5hdGl2ZSgp
ID09IHRoaXMpOwotICAgICAgICAgICAgcmVwbGFjZW1lbnQoKS0+dGFsbHlGcmVxdWVudEV4aXRT
aXRlcygpOwotICAgICAgICAgICAgcmVwbGFjZW1lbnQoKS0+amV0dGlzb24oKTsKLSAgICAgICAg
ICAgIGNvdW50UmVvcHRpbWl6YXRpb24oKTsKLSAgICAgICAgICAgIG9wdGltaXplQWZ0ZXJXYXJt
VXAoKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIHJlb3B0aW1pemUoKTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMjEwNTgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI1Nyw2ICszMjU3LDkgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VD
b2RlQmxvY2soKQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9pbmxpbmVTdGFja1RvcC0+
bV91bmxpbmtlZEJsb2Nrcy5pc0VtcHR5KCkgfHwgbV9ncmFwaC5tX2Jsb2Nrc1ttX2lubGluZVN0
YWNrVG9wLT5tX3VubGlua2VkQmxvY2tzLmxhc3QoKS5tX2Jsb2NrSW5kZXhdLT5ieXRlY29kZUJl
Z2luIDwgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3VubGlua2VkQmxvY2tzLmFwcGVuZChVbmxpbmtlZEJsb2NrKG1fZ3JhcGgubV9ibG9j
a3Muc2l6ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmxv
Y2tMaW5raW5nVGFyZ2V0cy5hcHBlbmQobV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgYmxvY2sgaXMgZGVmaW5pdGVseSBhbiBPU1IgdGFy
Z2V0LgorICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmlzT1NSVGFyZ2V0ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrcy5hcHBlbmQoYmxvY2sucmVsZWFzZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgcHJlcGFyZVRvUGFyc2VCbG9jaygpOwogICAgICAgICAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlz
aW9uIDEyMTA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsMTEgKzQzLDIwIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAorc3RhdGljIHVuc2lnbmVkIG51bUNvbXBpbGF0aW9uczsKKwordW5zaWdu
ZWQgZ2V0TnVtQ29tcGlsYXRpb25zKCkKK3sKKyAgICByZXR1cm4gbnVtQ29tcGlsYXRpb25zOwor
fQorCiBlbnVtIENvbXBpbGVNb2RlIHsgQ29tcGlsZUZ1bmN0aW9uLCBDb21waWxlT3RoZXIgfTsK
IGlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU1vZGUsIEV4ZWNTdGF0ZSog
ZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciogaml0Q29kZVdpdGhBcml0eUNoZWNrKQogewogICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKCJERkcgQ29tcGlsYXRpb24gKERyaXZlcikiKTsKICAgICAKKyAgICBu
dW1Db21waWxhdGlvbnMrKzsKKyAgICAKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICAgICBBU1NF
UlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRl
cm5hdGl2ZSgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCShyZXZpc2lvbiAxMjEwNTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw2ICszOCw4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKIAogbmFtZXNwYWNlIERG
RyB7CiAKK0pTX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGdldE51bUNvbXBpbGF0aW9ucygpOwor
CiAjaWYgRU5BQkxFKERGR19KSVQpCiBib29sIHRyeUNvbXBpbGUoRXhlY1N0YXRlKiwgQ29kZUJs
b2NrKiwgSklUQ29kZSYpOwogYm9vbCB0cnlDb21waWxlRnVuY3Rpb24oRXhlY1N0YXRlKiwgQ29k
ZUJsb2NrKiwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0
eUNoZWNrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDEyMTA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzEx
NSwxMCBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6aGFuZGxlRXhpdENvdW50cyhjCiAgICAgICAg
IG1faml0LnN0b3JlMzIoR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRPZkZvcmNlZE9TUkV4aXRDb3VudGVyKCkp
KTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihHUFJJbmZvOjpyZWdUMSwgQXNzZW1ibHlIZWxwZXJz
OjpBZGRyZXNzKEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mU3BlY3VsYXRpdmVT
dWNjZXNzQ291bnRlcigpKSk7CiAgICAgICAgIAorICAgICAgICBtX2ppdC5tb3ZlKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbVB0cihtX2ppdC5iYXNlbGluZUNvZGVCbG9jaygpKSwgR1BSSW5m
bzo6cmVnVDApOworCiAgICAgICAgIHRvb0Zld0ZhaWxzLmFwcGVuZChtX2ppdC5icmFuY2gzMihB
c3NlbWJseUhlbHBlcnM6OkJlbG93T3JFcXVhbCwgR1BSSW5mbzo6cmVnVDIsIEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKE9wdGlvbnM6OmZvcmNlZE9TUkV4aXRDb3VudEZvclJlb3B0aW1p
emF0aW9uKSkpOworCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUHJvY2VlZCBiYXNlZCBvbiB0
aGUgYXNzdW1wdGlvbiB0aGF0IHdlIGNhbiBoYW5kbGUgdGhlc2UgZXhpdHMgc28gbG9uZyBhcyB0
aGV5CiAgICAgICAgIC8vIGRvbid0IGdldCB0b28gZnJlcXVlbnQuCkBAIC0xMzYsOCArMTM5LDE0
IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpoYW5kbGVFeGl0Q291bnRzKGMKICAgICB9CiAKICAg
ICAvLyBSZW9wdGltaXplIGFzIHNvb24gYXMgcG9zc2libGUuCi0gICAgbV9qaXQuc3RvcmUzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigwKSwgQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNz
KEdQUkluZm86OnJlZ1QwLCBDb2RlQmxvY2s6Om9mZnNldE9mSklURXhlY3V0ZUNvdW50ZXIoKSkp
OwotICAgIG1faml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoMCksIEFz
c2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpvZmZzZXRP
ZkpJVEV4ZWN1dGlvbkFjdGl2ZVRocmVzaG9sZCgpKSk7CisjaWYgIU5VTUJFUl9PRl9BUkdVTUVO
VF9SRUdJU1RFUlMKKyAgICBtX2ppdC5wb2tlKEdQUkluZm86OnJlZ1QwKTsKKyNlbHNlCisgICAg
bV9qaXQubW92ZShHUFJJbmZvOjpyZWdUMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBB
U1NFUlQoR1BSSW5mbzo6YXJndW1lbnRHUFIwICE9IEdQUkluZm86OnJlZ1QxKTsKKyNlbmRpZgor
ICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2Fz
dDx2b2lkKj4odHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KSksIEdQUkluZm86OnJlZ1QxKTsKKyAg
ICBtX2ppdC5jYWxsKEdQUkluZm86OnJlZ1QxKTsKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAg
ZG9uZUFkanVzdGluZyA9IG1faml0Lmp1bXAoKTsKICAgICAKICAgICB0b29GZXdGYWlscy5saW5r
KCZtX2ppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAJKHJldmlzaW9uIDEyMTA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxNSBAQAogI2luY2x1
ZGUgIkRGR1JlcGF0Y2guaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0
aW9ucy5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0
YS5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJOYW1lSW5z
dGFuY2UuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisjaW5jbHVkZSA8d3RmL0lubGluZUFT
TS5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKQEAgLTEyNTEsNiArMTI1MiwyNyBAQCB2b2lk
IERGR19PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwCiB9CiAjZW5kaWYKIAorZXh0ZXJu
ICJDIiB2b2lkIERGR19PUEVSQVRJT04gdHJpZ2dlclJlb3B0aW1pemF0aW9uTm93KENvZGVCbG9j
ayogY29kZUJsb2NrKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgZGF0YUxv
ZygiJXA6IEVudGVyZWQgcmVvcHRpbWl6ZVxuIiwgY29kZUJsb2NrKTsKKyNlbmRpZgorICAgIC8v
IFdlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGJhc2VsaW5lIGNvZGUgYmxvY2suCisgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CisK
KyAgICAvLyBJZiBJIGFtIG15IG93biByZXBsYWNlbWVudCwgdGhlbiByZW9wdGltaXphdGlvbiBo
YXMgYWxyZWFkeSBiZWVuIHRyaWdnZXJlZC4KKyAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaW4gcmVj
dXJzaXZlIGZ1bmN0aW9ucy4KKyAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpID09IGNv
ZGVCbG9jaykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gT3RoZXJ3aXNlLCB0aGUgcmVwbGFj
ZW1lbnQgbXVzdCBiZSBvcHRpbWl6ZWQgY29kZS4gVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkK
KyAgICAvLyB0byBjaGVjayBvdXIgbG9naWMuCisgICAgQVNTRVJUKGNvZGVCbG9jay0+aGFzT3B0
aW1pemVkUmVwbGFjZW1lbnQoKSk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQo
KS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CisKKyAgICBjb2RlQmxvY2stPnJl
b3B0aW1pemUoKTsKK30KKwogfSAvLyBleHRlcm4gIkMiCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShy
ZXZpc2lvbiAxMjEwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDYgKzIyNyw4IEBAIHNpemVfdCBERkdfT1BFUkFU
SU9OIGRmZ0NvbnZlcnRKU1ZhbHVlVG8KIHZvaWQgREZHX09QRVJBVElPTiBkZWJ1Z09wZXJhdGlv
blByaW50U3BlY3VsYXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSosIHZvaWQqKSBXVEZfSU5URVJOQUw7
CiAjZW5kaWYKIAordm9pZCBERkdfT1BFUkFUSU9OIHRyaWdnZXJSZW9wdGltaXphdGlvbk5vdyhD
b2RlQmxvY2sqKSBXVEZfSU5URVJOQUw7CisKIH0gLy8gZXh0ZXJuICJDIgogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAxMjEwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMCw5ICsxMDAsMTAgQEAgdm9pZCBKSVQ6OmVtaXRPcHRpbWl6YXRpb25DaGVj
ayhPcHRpbWl6YQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgSnVtcCBza2lwT3B0aW1pemUg
PSBicmFuY2hBZGQzMihTaWduZWQsIFRydXN0ZWRJbW0zMihraW5kID09IExvb3BPcHRpbWl6YXRp
b25DaGVjayA/IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJJbmNyZW1lbnRGb3JMb29wIDogT3B0
aW9uczo6ZXhlY3V0aW9uQ291bnRlckluY3JlbWVudEZvclJldHVybiksIEFic29sdXRlQWRkcmVz
cyhtX2NvZGVCbG9jay0+YWRkcmVzc09mSklURXhlY3V0ZUNvdW50ZXIoKSkpOwotICAgIEpJVFN0
dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGtpbmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrID8gY3Rp
X29wdGltaXplX2Zyb21fbG9vcCA6IGN0aV9vcHRpbWl6ZV9mcm9tX3JldCk7Ci0gICAgaWYgKGtp
bmQgPT0gTG9vcE9wdGltaXphdGlvbkNoZWNrKQotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChUcnVzdGVkSW1tMzIobV9ieXRlY29kZU9mZnNldCkpOworICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcHRpbWl6ZSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3Rl
ZEltbTMyKG1fYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICBpZiAoa2luZCA9PSBFbnRlck9wdGltaXph
dGlvbkNoZWNrKQorICAgICAgICBBU1NFUlQoIW1fYnl0ZWNvZGVPZmZzZXQpOwogICAgIHN0dWJD
YWxsLmNhbGwoKTsKICAgICBza2lwT3B0aW1pemUubGluayh0aGlzKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAkocmV2aXNpb24gMTIxMDU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtODA2LDcgKzgwNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAvLyBMb2FkcyB0aGUgY2hhcmFjdGVyIHZhbHVlIG9mIGEgc2luZ2xl
IGNoYXJhY3RlciBzdHJpbmcgaW50byBkc3QuCiAgICAgICAgIHZvaWQgZW1pdExvYWRDaGFyYWN0
ZXJTdHJpbmcoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0LCBKdW1wTGlzdCYgZmFpbHVy
ZXMpOwogICAgICAgICAKLSAgICAgICAgZW51bSBPcHRpbWl6YXRpb25DaGVja0tpbmQgeyBMb29w
T3B0aW1pemF0aW9uQ2hlY2ssIFJldE9wdGltaXphdGlvbkNoZWNrIH07CisgICAgICAgIGVudW0g
T3B0aW1pemF0aW9uQ2hlY2tLaW5kIHsgTG9vcE9wdGltaXphdGlvbkNoZWNrLCBFbnRlck9wdGlt
aXphdGlvbkNoZWNrIH07CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgZW1pdE9w
dGltaXphdGlvbkNoZWNrKE9wdGltaXphdGlvbkNoZWNrS2luZCk7CiAjZWxzZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTIxMDU4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw4ICs1Niw2IEBAIHZvaWQgSklUOjplbWl0X29wX2NhbGxfcHV0X3Jlc3Vs
dChJbnN0cnUKIAogdm9pZCBKSVQ6OmVtaXRfb3BfcmV0KEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7Ci0gICAgZW1pdE9wdGltaXphdGlvbkNoZWNrKFJldE9wdGltaXphdGlvbkNo
ZWNrKTsKLSAgICAKICAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwogCiAgICAgZW1pdExvYWQoZHN0LCByZWdUMSwgcmVnVDApOwpAQCAtNzAsOCArNjgs
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXQoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAKIHZvaWQgSklU
OjplbWl0X29wX3JldF9vYmplY3Rfb3JfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogewotICAgIGVtaXRPcHRpbWl6YXRpb25DaGVjayhSZXRPcHRpbWl6YXRpb25DaGVjayk7
Ci0gICAgCiAgICAgdW5zaWduZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKICAgICB1bnNpZ25lZCB0aGlzUmVnID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAkocmV2aXNpb24gMTIxMDU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDYgKzE0ODcsOCBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VyCiAKIHZvaWQgSklUOjplbWl0
X29wX2VudGVyKEluc3RydWN0aW9uKikKIHsKKyAgICBlbWl0T3B0aW1pemF0aW9uQ2hlY2soRW50
ZXJPcHRpbWl6YXRpb25DaGVjayk7CisgICAgCiAgICAgLy8gRXZlbiB0aG91Z2ggSklUIGNvZGUg
ZG9lc24ndCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6ZSBvdXIgY29uc3RhbnQKICAgICAvLyByZWdp
c3RlcnMgdG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xv
bmdpbmcKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9u
IDEyMTA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3Niw4ICs1NzYsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90ZWFyX29m
Zl9hcmd1bWVudHMoSW5zCiAKIHZvaWQgSklUOjplbWl0X29wX3JldChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIGVtaXRPcHRpbWl6YXRpb25DaGVjayhSZXRPcHRpbWl6
YXRpb25DaGVjayk7Ci0gICAgCiAgICAgQVNTRVJUKGNhbGxGcmFtZVJlZ2lzdGVyICE9IHJlZ1Qx
KTsKICAgICBBU1NFUlQocmVnVDEgIT0gcmV0dXJuVmFsdWVSZWdpc3Rlcik7CiAgICAgQVNTRVJU
KHJldHVyblZhbHVlUmVnaXN0ZXIgIT0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtNTk4LDggKzU5
Niw2IEBAIHZvaWQgSklUOjplbWl0X29wX3JldChJbnN0cnVjdGlvbiogY3VycmUKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfcmV0X29iamVjdF9vcl90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgZW1pdE9wdGltaXphdGlvbkNoZWNrKFJldE9wdGltaXphdGlvbkNoZWNr
KTsKLSAgICAKICAgICBBU1NFUlQoY2FsbEZyYW1lUmVnaXN0ZXIgIT0gcmVnVDEpOwogICAgIEFT
U0VSVChyZWdUMSAhPSByZXR1cm5WYWx1ZVJlZ2lzdGVyKTsKICAgICBBU1NFUlQocmV0dXJuVmFs
dWVSZWdpc3RlciAhPSBjYWxsRnJhbWVSZWdpc3Rlcik7CkBAIC0xMjE4LDEzICsxMjE0LDE0IEBA
IHZvaWQgSklUOjplbWl0X29wX25lcV9udWxsKEluc3RydWN0aW9uKiAKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfZW50ZXIoSW5zdHJ1Y3Rpb24qKQogeworICAgIGVtaXRPcHRpbWl6YXRpb25DaGVjayhF
bnRlck9wdGltaXphdGlvbkNoZWNrKTsKKyAgICAKICAgICAvLyBFdmVuIHRob3VnaCBDVEkgZG9l
c24ndCB1c2UgdGhlbSwgd2UgaW5pdGlhbGl6ZSBvdXIgY29uc3RhbnQKICAgICAvLyByZWdpc3Rl
cnMgdG8gemFwIHN0YWxlIHBvaW50ZXJzLCB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IHByb2xvbmdp
bmcKICAgICAvLyBvYmplY3QgbGlmZXRpbWUgYW5kIGluY3JlYXNpbmcgR0MgcHJlc3N1cmUuCiAg
ICAgc2l6ZV90IGNvdW50ID0gbV9jb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IGNvdW50OyArK2opCiAgICAgICAgIGVtaXRJbml0UmVnaXN0ZXIoaik7Ci0K
IH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX2FjdGl2YXRpb24oSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCShyZXZpc2lvbiAxMjEwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxOSwxNyArMTkxOSwxNiBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkLCBvcF9jaGVja19oYXNfCiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkK
LURFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb21fbG9vcCkKK0RFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKICAgICAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJh
bWUuY2FsbEZyYW1lOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKTsKLQogICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3Nb
MF0uaW50MzIoKTsKLSAgICAKKwogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0
YUxvZygiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIg
PSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigp
LCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIGRhdGFMb2coIiVwOiBFbnRlcmVkIG9wdGlt
aXplIHdpdGggYnl0ZWNvZGVJbmRleCA9ICV1LCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxu
IiwgY29kZUJsb2NrLCBieXRlY29kZUluZGV4LCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVy
KCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmICghY29kZUJsb2Nr
LT5jaGVja0lmT3B0aW1pemF0aW9uVGhyZXNob2xkUmVhY2hlZCgpKQpAQCAtMTkzNyw3ICsxOTM2
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogCiAgICAgaWYg
KGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewogI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCi0gICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGxvb3AgT1NSIGludG8g
JXAoJXApIHdpdGggc3VjY2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2st
PnJlcGxhY2VtZW50KCksIGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNj
ZXNzQ291bnRlcigpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENv
dW50ZXIoKSk7CisgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIE9TUiBpbnRvICVwKCVwKSB3
aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNl
bWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkp
OwogI2VuZGlmCiAgICAgICAgIGlmIChjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNob3VsZFJl
b3B0aW1pemVGcm9tTG9vcE5vdygpKSB7CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKQEAg
LTE5NTksMTQgKzE5NTgsMTQgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVf
ZnJvbQogICAgICAgICBKU09iamVjdCogZXJyb3IgPSBjb2RlQmxvY2stPmNvbXBpbGVPcHRpbWl6
ZWQoY2FsbEZyYW1lLCBzY29wZUNoYWluKTsKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQog
ICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBkYXRhTG9nKCJXQVJOSU5HOiBvcHRpbWl6
ZWQgY29tcGlsYXRpb24gZnJvbSBsb29wIGZhaWxlZC5cbiIpOworICAgICAgICAgICAgZGF0YUxv
ZygiV0FSTklORzogb3B0aW1pemVkIGNvbXBpbGF0aW9uIGZhaWxlZC5cbiIpOwogI2Vsc2UKICAg
ICAgICAgVU5VU0VEX1BBUkFNKGVycm9yKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgaWYg
KGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKSA9PSBjb2RlQmxvY2spIHsKICNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQotICAgICAgICAgICAgZGF0YUxvZygiT3B0aW1pemluZyAlcCBmcm9tIGxv
b3AgZmFpbGVkLlxuIiwgY29kZUJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2coIk9wdGltaXpp
bmcgJXAgZmFpbGVkLlxuIiwgY29kZUJsb2NrKTsKICNlbmRpZgogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOwpAQCAtMTk4MCw3ICsxOTc5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwg
b3B0aW1pemVfZnJvbQogICAgIAogICAgIGlmICh2b2lkKiBhZGRyZXNzID0gREZHOjpwcmVwYXJl
T1NSRW50cnkoY2FsbEZyYW1lLCBvcHRpbWl6ZWRDb2RlQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKSB7
CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgZGF0YUxvZygiT3B0aW1pemlu
ZyAlcCBmcm9tIGxvb3Agc3VjY2VlZGVkLCBwZXJmb3JtaW5nIE9TUiBhZnRlciBhIGRlbGF5IG9m
ICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigp
KTsKKyAgICAgICAgZGF0YUxvZygiT3B0aW1pemluZyAlcCBzdWNjZWVkZWQsIHBlcmZvcm1pbmcg
T1NSIGFmdGVyIGEgZGVsYXkgb2YgJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+b3B0aW1p
emF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICAgICAgY29kZUJsb2NrLT5vcHRp
bWl6ZVNvb24oKTsKQEAgLTE5OTAsNyArMTk4OSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wdGltaXplX2Zyb20KICAgICB9CiAgICAgCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09T
UikKLSAgICBkYXRhTG9nKCJPcHRpbWl6aW5nICVwIGZyb20gbG9vcCBzdWNjZWVkZWQsIE9TUiBm
YWlsZWQsIGFmdGVyIGEgZGVsYXkgb2YgJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+b3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIGRhdGFMb2coIk9wdGltaXppbmcgJXAgc3Vj
Y2VlZGVkLCBPU1IgZmFpbGVkLCBhZnRlciBhIGRlbGF5IG9mICV1LlxuIiwgY29kZUJsb2NrLCBj
b2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgLy8g
Q291bnQgdGhlIE9TUiBmYWlsdXJlIGFzIGEgc3BlY3VsYXRpb24gZmFpbHVyZS4gSWYgdGhpcyBo
YXBwZW5zIGEgbG90LCB0aGVuCkBAIC0xOTk4LDcgKzE5OTcsNyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5jb3VudFNw
ZWN1bGF0aW9uRmFpbHVyZSgpOwogICAgIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0g
ICAgZGF0YUxvZygiRW5jb3VudGVyZWQgbG9vcCBPU1IgZmFpbHVyZSBpbnRvICVwKCVwKSB3aXRo
IHN1Y2Nlc3MvZmFpbCAldS8ldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVu
dCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIo
KSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpOwor
ICAgIGRhdGFMb2coIkVuY291bnRlcmVkIE9TUiBmYWlsdXJlIGludG8gJXAoJXApIHdpdGggc3Vj
Y2Vzcy9mYWlsICV1LyV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCks
IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcigpLCBj
b2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSk7CiAjZW5k
aWYKIAogICAgIC8vIFdlIGFyZSBhIGxvdCBtb3JlIGNvbnNlcnZhdGl2ZSBhYm91dCB0cmlnZ2Vy
aW5nIHJlb3B0aW1pemF0aW9uIGFmdGVyIE9TUiBmYWlsdXJlIHRoYW4KQEAgLTIwMTEsNyArMjAx
MCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICAvLyBy
ZW9wdGltaXphdGlvbiB0cmlnZ2VyLgogICAgIGlmIChvcHRpbWl6ZWRDb2RlQmxvY2stPnNob3Vs
ZFJlb3B0aW1pemVOb3coKSkgewogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAg
IGRhdGFMb2coIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiBsb29wIGFm
dGVyIE9TUiBmYWlsKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsK
KyAgICAgICAgZGF0YUxvZygiVHJpZ2dlcmluZyByZW9wdGltaXphdGlvbiBvZiAlcCglcCkgKGFm
dGVyIE9TUiBmYWlsKS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpKTsK
ICNlbmRpZgogICAgICAgICBjb2RlQmxvY2stPnJlb3B0aW1pemUoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjAyMSw3MSArMjAyMCw2IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGlt
aXplX2Zyb20KICAgICAvLyBsb25nZXIgYW5kIHRoZW4gdHJ5IGFnYWluLgogICAgIGNvZGVCbG9j
ay0+b3B0aW1pemVBZnRlcldhcm1VcCgpOwogfQotCi1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcHRpbWl6ZV9mcm9tX3JldCkKLXsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7Ci0gICAgCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
Ci0gICAgCi0jaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBkYXRhTG9nKCJFbnRlcmVk
IG9wdGltaXplX2Zyb21fcmV0IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNv
ZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKLSNl
bmRpZgotCi0gICAgaWYgKCFjb2RlQmxvY2stPmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hvbGRS
ZWFjaGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkpIHsKLSNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgICAg
ICBkYXRhTG9nKCJSZXR1cm5pbmcgZnJvbSBvbGQgSklUIGNhbGwgZnJhbWUgd2l0aCBvcHRpbWl6
ZWQgcmVwbGFjZW1lbnQgJXAoJXApLCB3aXRoIHN1Y2Nlc3MvZmFpbCAldS8ldSIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCktPnNw
ZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXIoKSwgY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5zcGVj
dWxhdGl2ZUZhaWxDb3VudGVyKCkpOwotICAgICAgICBDYWxsRnJhbWUqIGNhbGxlckZyYW1lID0g
Y2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpOwotICAgICAgICBpZiAoY2FsbGVyRnJhbWUpCi0gICAg
ICAgICAgICBkYXRhTG9nKCIsIGNhbGxlckZyYW1lID0gJXAsIHJldHVyblBDID0gJXAsIGNhbGxl
ciBjb2RlIGJsb2NrID0gJXAiLCBjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpLnZh
bHVlKCksIGNhbGxlckZyYW1lLT5jb2RlQmxvY2soKSk7Ci0gICAgICAgIGRhdGFMb2coIlxuIik7
Ci0jZW5kaWYKLSAgICAgICAgaWYgKGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKS0+c2hvdWxkUmVv
cHRpbWl6ZU5vdygpKSB7Ci0jaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICAgICAgICAg
IGRhdGFMb2coIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgJXAoJXApIChpbiByZXR1cm4p
LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCkpOwotI2VuZGlmCi0gICAg
ICAgICAgICBjb2RlQmxvY2stPnJlb3B0aW1pemUoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgY29kZUJsb2NrLT5vcHRpbWl6ZVNvb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICAKLSAgICBpZiAoIWNvZGVCbG9jay0+c2hvdWxkT3B0aW1pemVOb3coKSkgewotI2lmIEVO
QUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIGRhdGFMb2coIkRlbGF5aW5nIG9wdGltaXph
dGlvbiBmb3IgJXAgKGluIHJldHVybikgYmVjYXVzZSBvZiBpbnN1ZmZpY2llbnQgcHJvZmlsaW5n
LlxuIiwgY29kZUJsb2NrKTsKLSNlbmRpZgotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluID0gY2FsbEZyYW1lLT5zY29wZUNoYWluKCk7
Ci0KLSAgICBKU09iamVjdCogZXJyb3IgPSBjb2RlQmxvY2stPmNvbXBpbGVPcHRpbWl6ZWQoY2Fs
bEZyYW1lLCBzY29wZUNoYWluKTsKLSAgICBpZiAoZXJyb3IpCi0gICAgICAgIGRhdGFMb2coIldB
Uk5JTkc6IG9wdGltaXplZCBjb21waWxhdGlvbiBmcm9tIHJldCBmYWlsZWQuXG4iKTsKLSAgICAK
LSAgICBpZiAoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpID09IGNvZGVCbG9jaykgewotI2lmIEVO
QUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgICAgIGRhdGFMb2coIk9wdGltaXppbmcgJXAgZnJv
bSByZXR1cm4gZmFpbGVkLlxuIiwgY29kZUJsb2NrKTsKLSNlbmRpZgotCi0gICAgICAgIEFTU0VS
VChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAg
ICAgIGNvZGVCbG9jay0+ZG9udE9wdGltaXplQW55dGltZVNvb24oKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICAKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5yZXBsYWNlbWVudCgpLT5nZXRK
SVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKLQotI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCi0gICAgZGF0YUxvZygiT3B0aW1pemluZyAlcCBmcm9tIHJldHVybiBzdWNjZWVkZWQgYWZ0
ZXIgYSBkZWxheSBvZiAldS5cbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25E
ZWxheUNvdW50ZXIoKSk7Ci0jZW5kaWYKLSAgICAKLSAgICBjb2RlQmxvY2stPm9wdGltaXplU29v
bigpOwotfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogCiBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfaW5zdGFuY2VvZikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDEyMTA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDUwLDggKzQ1MCw3IEBAIGV4dGVy
biAiQyIgewogICAgIHZvaWQgSklUX1NUVUIgY3RpX29wX3RlYXJfb2ZmX2FyZ3VtZW50cyhTVFVC
X0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAgICB2b2lkIEpJVF9TVFVCIGN0aV9v
cF90aHJvd19yZWZlcmVuY2VfZXJyb3IoU1RVQl9BUkdTX0RFQ0xBUkFUSU9OKSBXVEZfSU5URVJO
QUw7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgdm9pZCBKSVRfU1RVQiBjdGlfb3B0aW1pemVf
ZnJvbV9sb29wKFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RGX0lOVEVSTkFMOwotICAgIHZvaWQg
SklUX1NUVUIgY3RpX29wdGltaXplX2Zyb21fcmV0KFNUVUJfQVJHU19ERUNMQVJBVElPTikgV1RG
X0lOVEVSTkFMOworICAgIHZvaWQgSklUX1NUVUIgY3RpX29wdGltaXplKFNUVUJfQVJHU19ERUNM
QVJBVElPTikgV1RGX0lOVEVSTkFMOwogI2VuZGlmCiAgICAgdm9pZCogSklUX1NUVUIgY3RpX29w
X2NhbGxfYXJpdHlDaGVjayhTVFVCX0FSR1NfREVDTEFSQVRJT04pIFdURl9JTlRFUk5BTDsKICAg
ICB2b2lkKiBKSVRfU1RVQiBjdGlfb3BfY29uc3RydWN0X2FyaXR5Q2hlY2soU1RVQl9BUkdTX0RF
Q0xBUkFUSU9OKSBXVEZfSU5URVJOQUw7Cg==
</data>
<flag name="review"
          id="157044"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>