<?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>50653</bug_id>
          
          <creation_ts>2010-12-07 15:59:52 -0800</creation_ts>
          <short_desc>Migrated OS-specific allocation code from PageReservation and PageAllocation to OSAllocator</short_desc>
          <delta_ts>2010-12-09 11:22:30 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>318477</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-07 15:59:52 -0800</bug_when>
    <thetext>Migrated OS-specific allocation code from PageReservation and PageAllocation to OSAllocator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318478</commentid>
    <comment_count>1</comment_count>
      <attachid>75849</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-07 16:00:58 -0800</bug_when>
    <thetext>Created attachment 75849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318479</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-07 16:01:33 -0800</bug_when>
    <thetext>Just posting to check the EWS bots -- not quite ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319345</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-09 02:22:15 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/73570 might have broken GTK Linux 32-bit Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319611</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-12-09 11:22:30 -0800</bug_when>
    <thetext>Committed revision 73570.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75849</attachid>
            <date>2010-12-07 16:00:58 -0800</date>
            <delta_ts>2010-12-07 18:46:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50653-20101207160057.patch</filename>
            <type>text/plain</type>
            <size>26718</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDczNDc0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMTItMDcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNaWdyYXRlZCBPUy1zcGVjaWZpYyBhbGxvY2F0aW9uIGNvZGUg
ZnJvbSBQYWdlUmVzZXJ2YXRpb24gYW5kIFBhZ2VBbGxvY2F0aW9uIHRvIE9TQWxsb2NhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDY1MworCisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lz
dGVyRmlsZS5oOgorICAgICAgICAoSlNDOjpSZWdpc3RlckZpbGU6OlJlZ2lzdGVyRmlsZSk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyRmlsZTo6Z3Jvdyk6CisgICAgICAgICogaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHA6CisgICAgICAgIChKU0M6OkZpeGVkVk1Qb29sQWxs
b2NhdG9yOjpyZXVzZSk6CisgICAgICAgIChKU0M6OkZpeGVkVk1Qb29sQWxsb2NhdG9yOjpGaXhl
ZFZNUG9vbEFsbG9jYXRvcik6CisgICAgICAgICogcnVudGltZS9BbGlnbmVkTWVtb3J5QWxsb2Nh
dG9yLmg6CisgICAgICAgIChKU0M6Ojo6YWxsb2NhdGUpOgorICAgICAgICAqIHd0Zi9PU0FsbG9j
YXRvci5oOgorICAgICAgICAqIHd0Zi9PU0FsbG9jYXRvclBvc2l4LmNwcDoKKyAgICAgICAgKFdU
Rjo6T1NBbGxvY2F0b3I6OnJlc2VydmUpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZUFuZENvbW1pdCk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpjb21taXQpOgorICAg
ICAgICAqIHd0Zi9PU0FsbG9jYXRvclN5bWJpYW4uY3BwOgorICAgICAgICAoV1RGOjpPU0FsbG9j
YXRvcjo6cmVzZXJ2ZSk6CisgICAgICAgIChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29t
bWl0KToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OmNvbW1pdCk6CisgICAgICAgICogd3Rm
L09TQWxsb2NhdG9yV2luLmNwcDoKKyAgICAgICAgKFdURjo6cHJvdGVjdGlvbik6CisgICAgICAg
IChXVEY6Ok9TQWxsb2NhdG9yOjpyZXNlcnZlKToKKyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQpOgorICAgICAgICAoV1RGOjpPU0FsbG9jYXRvcjo6Y29tbWl0KToK
KyAgICAgICAgKFdURjo6T1NBbGxvY2F0b3I6OnJlbGVhc2UpOgorICAgICAgICAqIHd0Zi9QYWdl
QWxsb2NhdGlvbi5jcHA6CisgICAgICAgICogd3RmL1BhZ2VBbGxvY2F0aW9uLmg6CisgICAgICAg
IChXVEY6OlBhZ2VBbGxvY2F0aW9uOjphbGxvY2F0ZSk6CisgICAgICAgIChXVEY6OlBhZ2VBbGxv
Y2F0aW9uOjphbGxvY2F0ZUFsaWduZWQpOgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlvbjo6
ZGVhbGxvY2F0ZSk6CisgICAgICAgIChXVEY6OlBhZ2VBbGxvY2F0aW9uOjppc1Bvd2VyT2ZUd28p
OgorICAgICAgICAoV1RGOjpQYWdlQWxsb2NhdGlvbjo6c3lzdGVtQWxsb2NhdGVBbGlnbmVkKToK
KyAgICAgICAgKiB3dGYvUGFnZVJlc2VydmF0aW9uLmg6CisgICAgICAgIChXVEY6OlBhZ2VSZXNl
cnZhdGlvbjo6Y29tbWl0KToKKyAgICAgICAgKFdURjo6UGFnZVJlc2VydmF0aW9uOjpkZWNvbW1p
dCk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZSk6CisgICAgICAgIChX
VEY6OlBhZ2VSZXNlcnZhdGlvbjo6ZGVhbGxvY2F0ZSk6CisgICAgICAgIChXVEY6OlBhZ2VSZXNl
cnZhdGlvbjo6UGFnZVJlc2VydmF0aW9uKToKKwogMjAxMC0xMi0wNyAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb2xsb3cgdXAgYnVp
bGQgZml4LgpJbmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNzM0NzMp
CisrKyBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1OSw3ICszNTksNiBAQCBfX1pOM1dURjEwU3RyaW5nSW1wbEQxRXYKIF9fWk4zV1RGMTBmYXN0
Q2FsbG9jRW1tCiBfX1pOM1dURjEwZmFzdE1hbGxvY0VtCiBfX1pOM1dURjEwZmFzdFN0ckR1cEVQ
S2MKLV9fWk4zV1RGMTFPU0FsbG9jYXRvcjE2cmVzZXJ2ZUFuZENvbW1pdEVtCiBfX1pOM1dURjEx
T1NBbGxvY2F0b3I3cmVsZWFzZUVQdm0KIF9fWk4zV1RGMTFjb21tZW50QXRvbUUKIF9fWk4zV1RG
MTFjdXJyZW50VGltZUV2CkBAIC01OTIsMyArNTkxLDQgQEAgX19aVFZOM0pTQzhKU09iamVjdEUK
IF9fWlRWTjNKU0M4SlNTdHJpbmdFCiBfanNjb3JlX2Zhc3RtYWxsb2NfaW50cm9zcGVjdGlvbgog
X2tKU0NsYXNzRGVmaW5pdGlvbkVtcHR5CitfX1pOM1dURjExT1NBbGxvY2F0b3IxNnJlc2VydmVB
bmRDb21taXRFbU5TMF81VXNhZ2VFYmIKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiA3MzQ3MykKKysrIEphdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNyArMTM4LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmco
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgY2hlY2tBbGxvY2F0ZWRPa2F5KGJvb2wg
b2theSk7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZv
aWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CiAgICAgICAgIHNpemVfdCBtX251bUds
b2JhbHM7CkBAIC0xNjQsMTEgKzE2MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNT
RVJUKGNhcGFjaXR5ICYmIFBhZ2VBbGxvY2F0aW9uOjppc1BhZ2VBbGlnbmVkKGNhcGFjaXR5KSk7
CiAKICAgICAgICAgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IChjYXBhY2l0eSArIG1heEdsb2JhbHMp
ICogc2l6ZW9mKFJlZ2lzdGVyKTsKLSAgICAgICAgbV9yZXNlcnZhdGlvbiA9IFBhZ2VSZXNlcnZh
dGlvbjo6cmVzZXJ2ZShyb3VuZFVwQWxsb2NhdGlvblNpemUoYnVmZmVyTGVuZ3RoLCBjb21taXRT
aXplKSwgUGFnZUFsbG9jYXRpb246OkpTVk1TdGFja1BhZ2VzKTsKKyAgICAgICAgbV9yZXNlcnZh
dGlvbiA9IFBhZ2VSZXNlcnZhdGlvbjo6cmVzZXJ2ZShyb3VuZFVwQWxsb2NhdGlvblNpemUoYnVm
ZmVyTGVuZ3RoLCBjb21taXRTaXplKSwgT1NBbGxvY2F0b3I6OkpTVk1TdGFja1BhZ2VzKTsKICAg
ICAgICAgdm9pZCogYmFzZSA9IG1fcmVzZXJ2YXRpb24uYmFzZSgpOwotICAgICAgICBjaGVja0Fs
bG9jYXRlZE9rYXkoYmFzZSk7CiAgICAgICAgIHNpemVfdCBjb21taXR0ZWRTaXplID0gcm91bmRV
cEFsbG9jYXRpb25TaXplKG1heEdsb2JhbHMgKiBzaXplb2YoUmVnaXN0ZXIpLCBjb21taXRTaXpl
KTsKLSAgICAgICAgY2hlY2tBbGxvY2F0ZWRPa2F5KG1fcmVzZXJ2YXRpb24uY29tbWl0KGJhc2Us
IGNvbW1pdHRlZFNpemUpKTsKKyAgICAgICAgbV9yZXNlcnZhdGlvbi5jb21taXQoYmFzZSwgY29t
bWl0dGVkU2l6ZSk7CiAgICAgICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KHN0YXRpY19jYXN0
PGxvbmc+KGNvbW1pdHRlZFNpemUpKTsKICAgICAgICAgbV9jb21taXRFbmQgPSByZWludGVycHJl
dF9jYXN0X3B0cjxSZWdpc3Rlcio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJhc2UpICsgY29t
bWl0dGVkU2l6ZSk7CiAgICAgICAgIG1fc3RhcnQgPSBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KGJh
c2UpICsgbWF4R2xvYmFsczsKQEAgLTE5Niw3ICsxOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBpZiAobmV3RW5kID4gbV9jb21taXRFbmQpIHsKICAgICAgICAgICAgIHNpemVfdCBz
aXplID0gcm91bmRVcEFsbG9jYXRpb25TaXplKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG5ld0Vu
ZCkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihtX2NvbW1pdEVuZCksIGNvbW1pdFNpemUpOwot
ICAgICAgICAgICAgY2hlY2tBbGxvY2F0ZWRPa2F5KG1fcmVzZXJ2YXRpb24uY29tbWl0KG1fY29t
bWl0RW5kLCBzaXplKSk7CisgICAgICAgICAgICBtX3Jlc2VydmF0aW9uLmNvbW1pdChtX2NvbW1p
dEVuZCwgc2l6ZSk7CiAgICAgICAgICAgICBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChzdGF0aWNf
Y2FzdDxsb25nPihzaXplKSk7CiAgICAgICAgICAgICBtX2NvbW1pdEVuZCA9IHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPFJlZ2lzdGVyKj4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9jb21taXRFbmQp
ICsgc2l6ZSk7CiAgICAgICAgIH0KQEAgLTIwOCwxNiArMjA2LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIFJlZ2lzdGVy
RmlsZTo6Y2hlY2tBbGxvY2F0ZWRPa2F5KGJvb2wgb2theSkKLSAgICB7Ci0gICAgICAgIGlmICgh
b2theSkgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291
bGQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIGZpbGU6ICVkXG4iLCBQYWdlUmVzZXJ2YXRpb246Omxh
c3RFcnJvcigpKTsKLSNlbmRpZgotICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgfQotICAg
IH0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBSZWdpc3RlckZpbGVfaApJbmRl
eDogSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhl
ZFZNUG9vbC5jcHAJKHJldmlzaW9uIDczNDczKQorKysgSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw4ICsx
MzMsNyBAQCBjbGFzcyBGaXhlZFZNUG9vbEFsbG9jYXRvcgogCiAgICAgdm9pZCByZXVzZSh2b2lk
KiBwb3NpdGlvbiwgc2l6ZV90IHNpemUpCiAgICAgewotICAgICAgICBib29sIG9rYXkgPSBtX2Fs
bG9jYXRpb24uY29tbWl0KHBvc2l0aW9uLCBzaXplKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChv
a2F5LCBva2F5KTsKKyAgICAgICAgbV9hbGxvY2F0aW9uLmNvbW1pdChwb3NpdGlvbiwgc2l6ZSk7
CiAgICAgICAgIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KHN0YXRpY19jYXN0PGxvbmc+KHNpemUp
KTsKICAgICB9CiAKQEAgLTI3OSw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9jb21t
b25TaXplKGNvbW1vblNpemUpCiAgICAgICAgICwgbV9jb3VudEZyZWVkU2luY2VMYXN0Q29hbGVz
Y2UoMCkKICAgICB7Ci0gICAgICAgIG1fYWxsb2NhdGlvbiA9IFBhZ2VSZXNlcnZhdGlvbjo6cmVz
ZXJ2ZSh0b3RhbEhlYXBTaXplLCBQYWdlQWxsb2NhdGlvbjo6SlNKSVRDb2RlUGFnZXMsIEVYRUNV
VEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSk7CisgICAgICAgIG1fYWxsb2NhdGlvbiA9IFBhZ2VS
ZXNlcnZhdGlvbjo6cmVzZXJ2ZSh0b3RhbEhlYXBTaXplLCBPU0FsbG9jYXRvcjo6SlNKSVRDb2Rl
UGFnZXMsIEVYRUNVVEFCTEVfUE9PTF9XUklUQUJMRSwgdHJ1ZSk7CiAKICAgICAgICAgaWYgKCEh
bV9hbGxvY2F0aW9uKQogICAgICAgICAgICAgbV9mcmVlTGlzdC5pbnNlcnQobmV3IEZyZWVMaXN0
RW50cnkobV9hbGxvY2F0aW9uLmJhc2UoKSwgbV9hbGxvY2F0aW9uLnNpemUoKSkpOwpJbmRleDog
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9BbGlnbmVkTWVtb3J5QWxsb2NhdG9yLmgJKHJl
dmlzaW9uIDczNDczKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9BbGlnbmVkTWVtb3J5QWxs
b2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgaW5saW5lIHZvaWQgQWxp
Z25lZE1lbW9yeUFsbG9jYXRvcjxibG9jawogdGVtcGxhdGU8c2l6ZV90IGJsb2NrU2l6ZT4KIGlu
bGluZSBBbGlnbmVkTWVtb3J5PGJsb2NrU2l6ZT4gQWxpZ25lZE1lbW9yeUFsbG9jYXRvcjxibG9j
a1NpemU+OjphbGxvY2F0ZSgpCiB7Ci0gICAgcmV0dXJuIEFsaWduZWRNZW1vcnk8YmxvY2tTaXpl
PihQYWdlQWxsb2NhdGlvbjo6YWxsb2NhdGVBbGlnbmVkKGJsb2NrU2l6ZSwgUGFnZUFsbG9jYXRp
b246OkpTR0NIZWFwUGFnZXMpKTsKKyAgICByZXR1cm4gQWxpZ25lZE1lbW9yeTxibG9ja1NpemU+
KFBhZ2VBbGxvY2F0aW9uOjphbGxvY2F0ZUFsaWduZWQoYmxvY2tTaXplLCBPU0FsbG9jYXRvcjo6
SlNHQ0hlYXBQYWdlcykpOwogfQogCiB0ZW1wbGF0ZTxzaXplX3QgYmxvY2tTaXplPgpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL09TQWxsb2NhdG9yLmgJKHJldmlzaW9uIDczNDczKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL09TQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwyNCBAQAog
I2lmbmRlZiBPU0FsbG9jYXRvcl9oCiAjZGVmaW5lIE9TQWxsb2NhdG9yX2gKIAorI2luY2x1ZGUg
PHd0Zi9WTVRhZ3MuaD4KKwogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIE9TQWxsb2NhdG9yIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZShzaXplX3QpOwotICAgIHN0YXRpYyB2
b2lkKiByZXNlcnZlQW5kQ29tbWl0KHNpemVfdCk7CisgICAgZW51bSBVc2FnZSB7CisgICAgICAg
IFVua25vd25Vc2FnZSA9IC0xLAorICAgICAgICBGYXN0TWFsbG9jUGFnZXMgPSBWTV9UQUdfRk9S
X1RDTUFMTE9DX01FTU9SWSwKKyAgICAgICAgSlNHQ0hlYXBQYWdlcyA9IFZNX1RBR19GT1JfQ09M
TEVDVE9SX01FTU9SWSwKKyAgICAgICAgSlNWTVN0YWNrUGFnZXMgPSBWTV9UQUdfRk9SX1JFR0lT
VEVSRklMRV9NRU1PUlksCisgICAgICAgIEpTSklUQ29kZVBhZ2VzID0gVk1fVEFHX0ZPUl9FWEVD
VVRBQkxFQUxMT0NBVE9SX01FTU9SWSwKKyAgICB9OworCisgICAgc3RhdGljIHZvaWQqIHJlc2Vy
dmUoc2l6ZV90LCBVc2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJv
b2wgZXhlY3V0YWJsZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgdm9pZCogcmVzZXJ2ZUFuZENvbW1p
dChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBib29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9v
bCBleGVjdXRhYmxlID0gZmFsc2UpOwogCi0gICAgc3RhdGljIHZvaWQgY29tbWl0KHZvaWQqLCBz
aXplX3QpOworICAgIHN0YXRpYyB2b2lkIGNvbW1pdCh2b2lkKiwgc2l6ZV90LCBib29sIHdyaXRh
YmxlLCBib29sIGV4ZWN1dGFibGUpOwogICAgIHN0YXRpYyB2b2lkIGRlY29tbWl0KHZvaWQqLCBz
aXplX3QpOwogCiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZSh2b2lkKiwgc2l6ZV90KTsKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvclBvc2l4LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3JQb3NpeC5jcHAJKHJldmlzaW9uIDczNDczKQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yUG9zaXguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxMSArMzMsOSBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCogT1NBbGxvY2F0
b3I6OnJlc2VydmUoc2l6ZV90IGJ5dGVzKQordm9pZCogT1NBbGxvY2F0b3I6OnJlc2VydmUoc2l6
ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQog
ewotICAgIHZvaWQqIHJlc3VsdCA9IG1tYXAoMCwgYnl0ZXMsIFBST1RfUkVBRCB8IFBST1RfV1JJ
VEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKLSAgICBpZiAocmVzdWx0ID09IE1B
UF9GQUlMRUQpCi0gICAgICAgIENSQVNIKCk7CisgICAgdm9pZCogcmVzdWx0ID0gcmVzZXJ2ZUFu
ZENvbW1pdChieXRlcywgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKICNpZiBIQVZFKE1B
RFZfRlJFRV9SRVVTRSkKICAgICAvLyBUbyBzdXBwb3J0IHRoZSAicmVzZXJ2ZSB0aGVuIGNvbW1p
dCIgbW9kZWwsIHdlIGhhdmUgdG8gaW5pdGlhbGx5IGRlY29tbWl0LgogICAgIHdoaWxlIChtYWR2
aXNlKHJlc3VsdCwgYnl0ZXMsIE1BRFZfRlJFRV9SRVVTQUJMRSkgPT0gLTEgJiYgZXJybm8gPT0g
RUFHQUlOKSB7IH0KQEAgLTQ1LDE2ICs0Myw1MCBAQCB2b2lkKiBPU0FsbG9jYXRvcjo6cmVzZXJ2
ZShzaXplX3QgYnl0ZXMpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCogT1NBbGxvY2F0
b3I6OnJlc2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzKQordm9pZCogT1NBbGxvY2F0b3I6OnJl
c2VydmVBbmRDb21taXQoc2l6ZV90IGJ5dGVzLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwg
Ym9vbCBleGVjdXRhYmxlKQogewogICAgIC8vIEFsbCBQT1NJWCByZXNlcnZhdGlvbnMgc3RhcnQg
b3V0IGxvZ2ljYWxseSBjb21taXR0ZWQuCi0gICAgdm9pZCogcmVzdWx0ID0gbW1hcCgwLCBieXRl
cywgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1BSSVZBVEUgfCBNQVBfQU5PTiwgLTEsIDAp
OworICAgIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEOworICAgIGlmICh3cml0YWJsZSkKKyAg
ICAgICAgcHJvdGVjdGlvbiB8PSBQUk9UX1dSSVRFOworICAgIGlmIChleGVjdXRhYmxlKQorICAg
ICAgICBwcm90ZWN0aW9uIHw9IFBST1RfRVhFQzsKKworICAgIGludCBmbGFncyA9IE1BUF9QUklW
QVRFIHwgTUFQX0FOT047CisKKyNpZiBPUyhEQVJXSU4pICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKQorICAgIGludCBmZCA9IHVzYWdlOworI2Vsc2UKKyAgICBpbnQgZmQgPSAtMTsKKyNl
bmRpZgorCisgICAgdm9pZCogcmVzdWx0ID0gMDsKKyNpZiAoT1MoREFSV0lOKSAmJiBDUFUoWDg2
XzY0KSkKKyAgICBpZiAoZXhlY3V0YWJsZSkgeworICAgICAgICAvLyBDb29rIHVwIGFuIGFkZHJl
c3MgdG8gYWxsb2NhdGUgYXQsIHVzaW5nIHRoZSBmb2xsb3dpbmcgcmVjaXBlOgorICAgICAgICAv
LyAgIDE3IGJpdHMgb2YgemVybywgc3RheSBpbiB1c2Vyc3BhY2Uga2lkcy4KKyAgICAgICAgLy8g
ICAyNiBiaXRzIG9mIHJhbmRvbW5lc3MgZm9yIEFTTFIuCisgICAgICAgIC8vICAgMjEgYml0cyBv
ZiB6ZXJvLCBhdCBsZWFzdCBzdGF5IGFsaWduZWQgd2l0aGluIG9uZSBsZXZlbCBvZiB0aGUgcGFn
ZXRhYmxlcy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gQnV0ISAtIGFzIGEgdGVtcG9yYXJ5IHdv
cmthcm91bmQgZm9yIHNvbWUgcGx1Z2luIHByb2JsZW1zIChyZGFyOi8vcHJvYmxlbS82ODEyODU0
KSwKKyAgICAgICAgLy8gZm9yIG5vdyBpbnN0ZWFkIG9mIDJeMjYgYml0cyBvZiBBU0xSIGxldHMg
c3RpY2sgd2l0aCAyNSBiaXRzIG9mIHJhbmRvbWl6YXRpb24gcGx1cworICAgICAgICAvLyAyXjI0
LCB3aGljaCBzaG91bGQgcHV0IHVwIHNvbWV3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHVzZXJzcGFj
ZSAoaW4gdGhlIGFkZHJlc3MgcmFuZ2UKKyAgICAgICAgLy8gMHgyMDAwMDAwMDAwMDAgLi4gMHg1
ZmZmZmZmZmZmZmYpLgorICAgICAgICBpbnRwdHJfdCByYW5kb21Mb2NhdGlvbiA9IDA7CisgICAg
ICAgIHJhbmRvbUxvY2F0aW9uID0gYXJjNHJhbmRvbSgpICYgKCgxIDw8IDI1KSAtIDEpOworICAg
ICAgICByYW5kb21Mb2NhdGlvbiArPSAoMSA8PCAyNCk7CisgICAgICAgIHJhbmRvbUxvY2F0aW9u
IDw8PSAyMTsKKyAgICAgICAgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmFuZG9t
TG9jYXRpb24pOworICAgIH0KKyNlbmRpZgorCisgICAgcmVzdWx0ID0gbW1hcChyZXN1bHQsIGJ5
dGVzLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApOwogICAgIGlmIChyZXN1bHQgPT0gTUFQX0ZB
SUxFRCkKICAgICAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIE9T
QWxsb2NhdG9yOjpjb21taXQodm9pZCogYWRkcmVzcywgc2l6ZV90IGJ5dGVzKQordm9pZCBPU0Fs
bG9jYXRvcjo6Y29tbWl0KHZvaWQqIGFkZHJlc3MsIHNpemVfdCBieXRlcywgYm9vbCwgYm9vbCkK
IHsKICNpZiBIQVZFKE1BRFZfRlJFRV9SRVVTRSkKICAgICB3aGlsZSAobWFkdmlzZShhZGRyZXNz
LCBieXRlcywgTUFEVl9GUkVFX1JFVVNFKSA9PSAtMSAmJiBlcnJubyA9PSBFQUdBSU4pIHsgfQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yU3ltYmlhbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yU3ltYmlhbi5jcHAJKHJldmlzaW9u
IDczNDczKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yU3ltYmlhbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDE3ICszMCwxNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9p
ZCogT1NBbGxvY2F0b3I6OnJlc2VydmUoc2l6ZV90IGJ5dGVzKQordm9pZCogT1NBbGxvY2F0b3I6
OnJlc2VydmUoc2l6ZV90LCBVc2FnZSwgYm9vbCwgYm9vbCkKIHsKICAgICByZXR1cm4gZmFzdE1h
bGxvYyhieXRlcyk7CiB9CiAKLXZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNp
emVfdCBieXRlcykKK3ZvaWQqIE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemVfdCBi
eXRlcywgVXNhZ2UsIGJvb2wsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHJlc2VydmUoYnl0ZXMpOwog
fQogCi12b2lkIE9TQWxsb2NhdG9yOjpjb21taXQodm9pZCosIHNpemVfdCkKK3ZvaWQgT1NBbGxv
Y2F0b3I6OmNvbW1pdCh2b2lkKiwgc2l6ZV90LCBVc2FnZSwgYm9vbCwgYm9vbCkKIHsKIH0KIApJ
bmRleDogSmF2YVNjcmlwdENvcmUvd3RmL09TQWxsb2NhdG9yV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS93dGYvT1NBbGxvY2F0b3JXaW4uY3BwCShyZXZpc2lvbiA3MzQ3MykK
KysrIEphdmFTY3JpcHRDb3JlL3d0Zi9PU0FsbG9jYXRvcldpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDI1ICszMSwzMiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdm9pZCogT1NBbGxvY2F0
b3I6OnJlc2VydmUoc2l6ZV90IGJ5dGVzKQorc3RhdGljIGlubGluZSBEV09SRCBwcm90ZWN0aW9u
KGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKIHsKLSAgICB2b2lkKiByZXN1bHQgPSBW
aXJ0dWFsQWxsb2MoMCwgYnl0ZXMsIE1FTV9SRVNFUlZFLCBQQUdFX1JFQURXUklURSk7CisgICAg
cmV0dXJuIGV4ZWN1dGFibGUgPworICAgICAgICAod3JpdGFibGUgPyBQQUdFX0VYRUNVVEVfUkVB
RFdSSVRFIDogUEFHRV9FWEVDVVRFX1JFQUQpIDoKKyAgICAgICAgKHdyaXRhYmxlID8gUEFHRV9S
RUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKK30KKwordm9pZCogT1NBbGxvY2F0b3I6OnJlc2Vy
dmUoc2l6ZV90IGJ5dGVzLCBVc2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQor
eworICAgIHZvaWQqIHJlc3VsdCA9IFZpcnR1YWxBbGxvYygwLCBieXRlcywgTUVNX1JFU0VSVkUs
IHByb3RlY3Rpb24od3JpdGFibGUsIGV4ZWN1dGFibGUpKTsKICAgICBpZiAoIXJlc3VsdCkKICAg
ICAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkKiBPU0FsbG9jYXRv
cjo6cmVzZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMpCit2b2lkKiBPU0FsbG9jYXRvcjo6cmVz
ZXJ2ZUFuZENvbW1pdChzaXplX3QgYnl0ZXMsIFVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4
ZWN1dGFibGUpCiB7Ci0gICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jKDAsIGJ5dGVzLCBN
RU1fUkVTRVJWRSB8IE1FTV9DT01NSVQsIFBBR0VfUkVBRFdSSVRFKTsKKyAgICB2b2lkKiByZXN1
bHQgPSBWaXJ0dWFsQWxsb2MoMCwgYnl0ZXMsIE1FTV9SRVNFUlZFIHwgTUVNX0NPTU1JVCwgcHJv
dGVjdGlvbih3cml0YWJsZSwgZXhlY3V0YWJsZSkpOwogICAgIGlmICghcmVzdWx0KQogICAgICAg
ICBDUkFTSCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgT1NBbGxvY2F0b3I6OmNv
bW1pdCh2b2lkKiBhZGRyZXNzLCBzaXplX3QgYnl0ZXMpCit2b2lkIE9TQWxsb2NhdG9yOjpjb21t
aXQodm9pZCogYWRkcmVzcywgc2l6ZV90IGJ5dGVzLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1
dGFibGUpCiB7Ci0gICAgdm9pZCogcmVzdWx0ID0gVmlydHVhbEFsbG9jKGFkZHJlc3MsIGJ5dGVz
LCBNRU1fQ09NTUlULCBQQUdFX1JFQURXUklURSk7CisgICAgdm9pZCogcmVzdWx0ID0gVmlydHVh
bEFsbG9jKGFkZHJlc3MsIGJ5dGVzLCBNRU1fQ09NTUlULCBwcm90ZWN0aW9uKHdyaXRhYmxlLCBl
eGVjdXRhYmxlKSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIENSQVNIKCk7CiB9CkBAIC02
Myw2ICs3MCw5IEBAIHZvaWQgT1NBbGxvY2F0b3I6OmRlY29tbWl0KHZvaWQqIGFkZHJlc3MKIAog
dm9pZCBPU0FsbG9jYXRvcjo6cmVsZWFzZSh2b2lkKiBhZGRyZXNzLCBzaXplX3QgYnl0ZXMpCiB7
CisjaWYgT1MoV0lOQ0UpCisgICAgZGVjb21taXQoYWRkcmVzcywgYnl0ZXMpOworI2VuZGlmCiAg
ICAgLy8gQWNjb3JkaW5nIHRvIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFy
eS9hYTM2Njg5MihWUy44NSkuYXNweCwKICAgICAvLyBkd1NpemUgbXVzdCBiZSAwIGlmIGR3RnJl
ZVR5cGUgaXMgTUVNX1JFTEVBU0UuCiAgICAgYm9vbCByZXN1bHQgPSBWaXJ0dWFsRnJlZShhZGRy
ZXNzLCAwLCBNRU1fUkVMRUFTRSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZUFsbG9j
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlQWxsb2NhdGlv
bi5jcHAJKHJldmlzaW9uIDczNDczKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTcgKzMyLDQgQEAgbmFtZXNwYWNlIFdURiB7
CiAKIHNpemVfdCBQYWdlQWxsb2NhdGlvbjo6c19wYWdlU2l6ZSA9IDA7CiAKLSNpZm5kZWYgTkRF
QlVHCi0KLWludCBQYWdlQWxsb2NhdGlvbjo6bGFzdEVycm9yKCkKLXsKLSNpZiBPUyhXSU5DRSkK
LSAgICByZXR1cm4gR2V0TGFzdEVycm9yKCk7Ci0jZWxzZQotICAgIHJldHVybiBlcnJubzsKLSNl
bmRpZgotfQotCi0jZW5kaWYKLQogfQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxv
Y2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9u
LmgJKHJldmlzaW9uIDczNDczKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUGFnZUFsbG9jYXRp
b25faAogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvT1NBbGxv
Y2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvVk1U
YWdzLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtODIsMTQgKzgzLDYgQEAgbmFtZXNwYWNl
IFdURiB7CiAqLwogY2xhc3MgUGFnZUFsbG9jYXRpb24gewogcHVibGljOgotICAgIGVudW0gVXNh
Z2UgewotICAgICAgICBVbmtub3duVXNhZ2UgPSAtMSwKLSAgICAgICAgRmFzdE1hbGxvY1BhZ2Vz
ID0gVk1fVEFHX0ZPUl9UQ01BTExPQ19NRU1PUlksCi0gICAgICAgIEpTR0NIZWFwUGFnZXMgPSBW
TV9UQUdfRk9SX0NPTExFQ1RPUl9NRU1PUlksCi0gICAgICAgIEpTVk1TdGFja1BhZ2VzID0gVk1f
VEFHX0ZPUl9SRUdJU1RFUkZJTEVfTUVNT1JZLAotICAgICAgICBKU0pJVENvZGVQYWdlcyA9IFZN
X1RBR19GT1JfRVhFQ1VUQUJMRUFMTE9DQVRPUl9NRU1PUlksCi0gICAgfTsKLQogICAgIFBhZ2VB
bGxvY2F0aW9uKCkKICAgICAgICAgOiBtX2Jhc2UoMCkKICAgICAgICAgLCBtX3NpemUoMCkKQEAg
LTEwMywxNCArOTYsMTQgQEAgcHVibGljOgogICAgIHZvaWQqIGJhc2UoKSBjb25zdCB7IHJldHVy
biBtX2Jhc2U7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQog
Ci0gICAgc3RhdGljIFBhZ2VBbGxvY2F0aW9uIGFsbG9jYXRlKHNpemVfdCBzaXplLCBVc2FnZSB1
c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJs
ZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0ZShzaXplX3Qgc2l6
ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6OlVua25vd25Vc2FnZSwg
Ym9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAgICAgICByZXR1cm4gc3lzdGVt
QWxsb2NhdGUoc2l6ZSwgdXNhZ2UsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKKyAgICAgICAgcmV0
dXJuIFBhZ2VBbGxvY2F0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlQW5kQ29tbWl0KHNpemUsIHVz
YWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUpOwogICAgIH0KIAogI2lmIEhBVkUoUEFH
RV9BTExPQ0FURV9BTElHTkVEKQotICAgIHN0YXRpYyBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0ZUFs
aWduZWQoc2l6ZV90IHNpemUsIFVzYWdlIHVzYWdlID0gVW5rbm93blVzYWdlKQorICAgIHN0YXRp
YyBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0ZUFsaWduZWQoc2l6ZV90IHNpemUsIE9TQWxsb2NhdG9y
OjpVc2FnZSB1c2FnZSA9IE9TQWxsb2NhdG9yOjpVbmtub3duVXNhZ2UpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaXNQYWdlQWxpZ25lZChzaXplKSk7CiAgICAgICAgIEFTU0VSVChpc1Bvd2VyT2ZU
d28oc2l6ZSkpOwpAQCAtMTIxLDcgKzExNCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlYWxsb2Nh
dGUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYmFzZSk7Ci0gICAgICAgIHN5c3RlbURlYWxs
b2NhdGUodHJ1ZSk7CisgICAgICAgIHZvaWQqIHRtcCA9IDA7CisgICAgICAgIHN0ZDo6c3dhcCh0
bXAsIG1fYmFzZSk7CisgICAgICAgIE9TQWxsb2NhdG9yOjpyZWxlYXNlKHRtcCwgbV9zaXplKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgc2l6ZV90IHBhZ2VTaXplKCkKQEAgLTEzNiw3ICsxMzEsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgaXNQYWdlQWxpZ25lZCh2b2lkKiBhZGRyZXNzKSB7
IHJldHVybiAhKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFkZHJlc3MpICYgKHBhZ2VTaXpl
KCkgLSAxKSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc1BhZ2VBbGlnbmVkKHNpemVfdCBzaXplKSB7
IHJldHVybiAhKHNpemUgJiAocGFnZVNpemUoKSAtIDEpKTsgfQogICAgIHN0YXRpYyBib29sIGlz
UG93ZXJPZlR3byhzaXplX3Qgc2l6ZSkgeyByZXR1cm4gIShzaXplICYgKHNpemUgLSAxKSk7IH0K
LSAgICBzdGF0aWMgaW50IGxhc3RFcnJvcigpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKQEAgLTE1
NSwxMyArMTQ5LDkgQEAgcHJvdGVjdGVkOgogICAgIH0KICNlbmRpZgogCi0gICAgc3RhdGljIFBh
Z2VBbGxvY2F0aW9uIHN5c3RlbUFsbG9jYXRlKHNpemVfdCwgVXNhZ2UsIGJvb2wsIGJvb2wpOwog
I2lmIEhBVkUoUEFHRV9BTExPQ0FURV9BTElHTkVEKQotICAgIHN0YXRpYyBQYWdlQWxsb2NhdGlv
biBzeXN0ZW1BbGxvY2F0ZUFsaWduZWQoc2l6ZV90LCBVc2FnZSk7CisgICAgc3RhdGljIFBhZ2VB
bGxvY2F0aW9uIHN5c3RlbUFsbG9jYXRlQWxpZ25lZChzaXplX3QsIE9TQWxsb2NhdG9yOjpVc2Fn
ZSk7CiAjZW5kaWYKLSAgICAvLyBzeXN0ZW1EZWFsbG9jYXRlIHRha2VzIGEgcGFyYW1ldGVyIGlu
ZGljYXRpbmcgd2hldGhlciBtZW1vcnkgaXMgY3VycmVudGx5IGNvbW1pdHRlZAotICAgIC8vICh0
aGlzIHNob3VsZCBhbHdheXMgYmUgdHJ1ZSBmb3IgUGFnZUFsbG9jYXRpb24sIGZhbHNlIGZvciBQ
YWdlUmVzZXJ2YXRpb24pLgotICAgIHZvaWQgc3lzdGVtRGVhbGxvY2F0ZShib29sIGNvbW1pdHRl
ZCk7CiAgICAgc3RhdGljIHNpemVfdCBzeXN0ZW1QYWdlU2l6ZSgpOwogCiAgICAgdm9pZCogbV9i
YXNlOwpAQCAtMTc3LDQ5ICsxNjcsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgSEFWRShNTUFQKQogCiAK
LWlubGluZSBQYWdlQWxsb2NhdGlvbiBQYWdlQWxsb2NhdGlvbjo6c3lzdGVtQWxsb2NhdGUoc2l6
ZV90IHNpemUsIFVzYWdlIHVzYWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCi17
Ci0gICAgaW50IHByb3RlY3Rpb24gPSBQUk9UX1JFQUQ7Ci0gICAgaWYgKHdyaXRhYmxlKQotICAg
ICAgICBwcm90ZWN0aW9uIHw9IFBST1RfV1JJVEU7Ci0gICAgaWYgKGV4ZWN1dGFibGUpCi0gICAg
ICAgIHByb3RlY3Rpb24gfD0gUFJPVF9FWEVDOwotCi0gICAgaW50IGZsYWdzID0gTUFQX1BSSVZB
VEUgfCBNQVBfQU5PTjsKLQotI2lmIE9TKERBUldJTikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpCi0gICAgaW50IGZkID0gdXNhZ2U7Ci0jZWxzZQotICAgIGludCBmZCA9IC0xOwotI2Vu
ZGlmCi0KLSAgICB2b2lkKiBiYXNlID0gMDsKLSNpZiAoT1MoREFSV0lOKSAmJiBDUFUoWDg2XzY0
KSkKLSAgICBpZiAoZXhlY3V0YWJsZSkgewotICAgICAgICAvLyBDb29rIHVwIGFuIGFkZHJlc3Mg
dG8gYWxsb2NhdGUgYXQsIHVzaW5nIHRoZSBmb2xsb3dpbmcgcmVjaXBlOgotICAgICAgICAvLyAg
IDE3IGJpdHMgb2YgemVybywgc3RheSBpbiB1c2Vyc3BhY2Uga2lkcy4KLSAgICAgICAgLy8gICAy
NiBiaXRzIG9mIHJhbmRvbW5lc3MgZm9yIEFTTFIuCi0gICAgICAgIC8vICAgMjEgYml0cyBvZiB6
ZXJvLCBhdCBsZWFzdCBzdGF5IGFsaWduZWQgd2l0aGluIG9uZSBsZXZlbCBvZiB0aGUgcGFnZXRh
Ymxlcy4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gQnV0ISAtIGFzIGEgdGVtcG9yYXJ5IHdvcmth
cm91bmQgZm9yIHNvbWUgcGx1Z2luIHByb2JsZW1zIChyZGFyOi8vcHJvYmxlbS82ODEyODU0KSwK
LSAgICAgICAgLy8gZm9yIG5vdyBpbnN0ZWFkIG9mIDJeMjYgYml0cyBvZiBBU0xSIGxldHMgc3Rp
Y2sgd2l0aCAyNSBiaXRzIG9mIHJhbmRvbWl6YXRpb24gcGx1cwotICAgICAgICAvLyAyXjI0LCB3
aGljaCBzaG91bGQgcHV0IHVwIHNvbWV3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHVzZXJzcGFjZSAo
aW4gdGhlIGFkZHJlc3MgcmFuZ2UKLSAgICAgICAgLy8gMHgyMDAwMDAwMDAwMDAgLi4gMHg1ZmZm
ZmZmZmZmZmYpLgotICAgICAgICBpbnRwdHJfdCByYW5kb21Mb2NhdGlvbiA9IDA7Ci0gICAgICAg
IHJhbmRvbUxvY2F0aW9uID0gYXJjNHJhbmRvbSgpICYgKCgxIDw8IDI1KSAtIDEpOwotICAgICAg
ICByYW5kb21Mb2NhdGlvbiArPSAoMSA8PCAyNCk7Ci0gICAgICAgIHJhbmRvbUxvY2F0aW9uIDw8
PSAyMTsKLSAgICAgICAgYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJhbmRvbUxvY2F0
aW9uKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGJhc2UgPSBtbWFwKGJhc2UsIHNpemUsIHByb3Rl
Y3Rpb24sIGZsYWdzLCBmZCwgMCk7Ci0gICAgaWYgKGJhc2UgPT0gTUFQX0ZBSUxFRCkKLSAgICAg
ICAgYmFzZSA9IDA7Ci0gICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKGJhc2UsIHNpemUpOwotfQot
Ci1pbmxpbmUgUGFnZUFsbG9jYXRpb24gUGFnZUFsbG9jYXRpb246OnN5c3RlbUFsbG9jYXRlQWxp
Z25lZChzaXplX3Qgc2l6ZSwgVXNhZ2UgdXNhZ2UpCitpbmxpbmUgUGFnZUFsbG9jYXRpb24gUGFn
ZUFsbG9jYXRpb246OnN5c3RlbUFsbG9jYXRlQWxpZ25lZChzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0
b3I6OlVzYWdlIHVzYWdlKQogewogI2lmIE9TKERBUldJTikKICAgICB2bV9hZGRyZXNzX3QgYWRk
cmVzcyA9IDA7CkBAIC0yNjIsMTUgKzIxMCw2IEBAIGlubGluZSBQYWdlQWxsb2NhdGlvbiBQYWdl
QWxsb2NhdGlvbjo6c3kKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBQYWdlQWxsb2NhdGlvbjo6
c3lzdGVtRGVhbGxvY2F0ZShib29sKQotewotICAgIHZvaWQqIHRtcCA9IDA7Ci0gICAgc3RkOjpz
d2FwKHRtcCwgbV9iYXNlKTsKLQotICAgIGludCByZXN1bHQgPSBtdW5tYXAodG1wLCBtX3NpemUp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKLX0KLQogaW5saW5lIHNpemVf
dCBQYWdlQWxsb2NhdGlvbjo6c3lzdGVtUGFnZVNpemUoKQogewogICAgIHJldHVybiBnZXRwYWdl
c2l6ZSgpOwpAQCAtMjgwLDE2ICsyMTksOCBAQCBpbmxpbmUgc2l6ZV90IFBhZ2VBbGxvY2F0aW9u
OjpzeXN0ZW1QYWdlCiAjZWxpZiBIQVZFKFZJUlRVQUxBTExPQykKIAogCi1pbmxpbmUgUGFnZUFs
bG9jYXRpb24gUGFnZUFsbG9jYXRpb246OnN5c3RlbUFsbG9jYXRlKHNpemVfdCBzaXplLCBVc2Fn
ZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVjdXRhYmxlKQotewotICAgIERXT1JEIHByb3RlY3Rp
b24gPSBleGVjdXRhYmxlID8KLSAgICAgICAgKHdyaXRhYmxlID8gUEFHRV9FWEVDVVRFX1JFQURX
UklURSA6IFBBR0VfRVhFQ1VURV9SRUFEKSA6Ci0gICAgICAgICh3cml0YWJsZSA/IFBBR0VfUkVB
RFdSSVRFIDogUEFHRV9SRUFET05MWSk7Ci0gICAgcmV0dXJuIFBhZ2VBbGxvY2F0aW9uKFZpcnR1
YWxBbGxvYygwLCBzaXplLCBNRU1fQ09NTUlUIHwgTUVNX1JFU0VSVkUsIHByb3RlY3Rpb24pLCBz
aXplKTsKLX0KLQogI2lmIEhBVkUoQUxJR05FRF9NQUxMT0MpCi1pbmxpbmUgUGFnZUFsbG9jYXRp
b24gUGFnZUFsbG9jYXRpb246OnN5c3RlbUFsbG9jYXRlQWxpZ25lZChzaXplX3Qgc2l6ZSwgVXNh
Z2UgdXNhZ2UpCitpbmxpbmUgUGFnZUFsbG9jYXRpb24gUGFnZUFsbG9jYXRpb246OnN5c3RlbUFs
bG9jYXRlQWxpZ25lZChzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlKQogewog
I2lmIENPTVBJTEVSKE1JTkdXKSAmJiAhQ09NUElMRVIoTUlOR1c2NCkKICAgICB2b2lkKiBhZGRy
ZXNzID0gX19taW5nd19hbGlnbmVkX21hbGxvYyhzaXplLCBzaXplKTsKQEAgLTMwMSwyMCArMjMy
LDYgQEAgaW5saW5lIFBhZ2VBbGxvY2F0aW9uIFBhZ2VBbGxvY2F0aW9uOjpzeQogfQogI2VuZGlm
CiAKLWlubGluZSB2b2lkIFBhZ2VBbGxvY2F0aW9uOjpzeXN0ZW1EZWFsbG9jYXRlKGJvb2wgY29t
bWl0dGVkKQotewotICAgIHZvaWQqIHRtcCA9IDA7Ci0gICAgc3RkOjpzd2FwKHRtcCwgbV9iYXNl
KTsKLQotI2lmIE9TKFdJTkNFKQotICAgIGlmIChjb21taXR0ZWQpCi0gICAgICAgIFZpcnR1YWxG
cmVlKHRtcCwgbV9zaXplLCBNRU1fREVDT01NSVQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
Y29tbWl0dGVkKTsKLSNlbmRpZgotICAgIFZpcnR1YWxGcmVlKHRtcCwgMCwgTUVNX1JFTEVBU0Up
OyAKLX0KLQogaW5saW5lIHNpemVfdCBQYWdlQWxsb2NhdGlvbjo6c3lzdGVtUGFnZVNpemUoKQog
ewogICAgIHN0YXRpYyBzaXplX3Qgc2l6ZSA9IDA7CkBAIC0zMjgsMjUgKzI0NSw2IEBAIGlubGlu
ZSBzaXplX3QgUGFnZUFsbG9jYXRpb246OnN5c3RlbVBhZ2UKICNlbGlmIE9TKFNZTUJJQU4pCiAK
IAotaW5saW5lIFBhZ2VBbGxvY2F0aW9uIFBhZ2VBbGxvY2F0aW9uOjpzeXN0ZW1BbGxvY2F0ZShz
aXplX3Qgc2l6ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkK
LXsKLSAgICBSQ2h1bmsqIHJjaHVuayA9IG5ldyBSQ2h1bmsoKTsKLSAgICBpZiAoZXhlY3V0YWJs
ZSkKLSAgICAgICAgcmNodW5rLT5DcmVhdGVMb2NhbENvZGUoc2l6ZSwgc2l6ZSk7Ci0gICAgZWxz
ZQotICAgICAgICByY2h1bmstPkNyZWF0ZUxvY2FsKHNpemUsIHNpemUpOwotICAgIHJldHVybiBQ
YWdlQWxsb2NhdGlvbihyY2h1bmstPkJhc2UoKSwgc2l6ZSwgcmNodW5rKTsKLX0KLQotaW5saW5l
IHZvaWQgUGFnZUFsbG9jYXRpb246OnN5c3RlbURlYWxsb2NhdGUoYm9vbCkKLXsKLSAgICB2b2lk
KiB0bXAgPSAwOwotICAgIHN0ZDo6c3dhcCh0bXAsIG1fYmFzZSk7Ci0KLSAgICBtX2NodW5rLT5D
bG9zZSgpOwotICAgIGRlbGV0ZSBtX2NodW5rOwotfQotCiBpbmxpbmUgc2l6ZV90IFBhZ2VBbGxv
Y2F0aW9uOjpzeXN0ZW1QYWdlU2l6ZSgpCiB7CiAgICAgc3RhdGljIFRJbnQgcGFnZV9zaXplID0g
MDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGFnZVJlc2VydmF0aW9uLmgJKHJldmlzaW9uIDczNDcz
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VSZXNlcnZhdGlvbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw5ICs1Miw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIE1lbW9yeSBwcm90ZWN0aW9u
IHNob3VsZCBub3QgYmUgY2hhbmdlZCBvbiBkZWNvbW1pdHRlZCBtZW1vcnksIGFuZCBpZiBwcm90
ZWN0aW9uCiAgICAgaXMgY2hhbmdlZCBvbiBtZW1vcnkgd2hpbGUgaXQgaXMgY29tbWl0dGVkIGl0
IHNob3VsZCBiZSByZXR1cm5lZCB0byB0aGUgb3JpZ25hbAogICAgIHByb3RlY3Rpb24gYmVmb3Jl
IGRlY29tbWl0IGlzIGNhbGxlZC4KLQotICAgIE5vdGU6IEluaGVyaXRzIGZyb20gUGFnZUFsbG9j
YXRpb24gcHJpdmF0ZWx5IHRvIHByZXZlbnQgY2xpZW50cyBhY2NpZGVudGFsbHkKLSAgICBjYWxs
aW5nIFBhZ2VBbGxvY2F0aW9uOjpkZWFsbG9jYXRlIG9uIGEgUGFnZVJlc2VydmF0aW9uLgogKi8K
IGNsYXNzIFBhZ2VSZXNlcnZhdGlvbiA6IHByaXZhdGUgUGFnZUFsbG9jYXRpb24gewogcHVibGlj
OgpAQCAtNjYsMTkgKzYzLDE4IEBAIHB1YmxpYzoKICAgICB1c2luZyBQYWdlQWxsb2NhdGlvbjo6
YmFzZTsKICAgICB1c2luZyBQYWdlQWxsb2NhdGlvbjo6c2l6ZTsKIAotICAgIGJvb2wgY29tbWl0
KHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZSkKKyAgICB2b2lkIGNvbW1pdCh2b2lkKiBzdGFydCwg
c2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBBU1NFUlQobV9iYXNlKTsKICAgICAgICAgQVNT
RVJUKGlzUGFnZUFsaWduZWQoc3RhcnQpKTsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQo
c2l6ZSkpOwogCi0gICAgICAgIGJvb2wgY29tbWl0ZWQgPSBzeXN0ZW1Db21taXQoc3RhcnQsIHNp
emUpOwogI2lmbmRlZiBOREVCVUcKLSAgICAgICAgaWYgKGNvbW1pdGVkKQotICAgICAgICAgICAg
bV9jb21taXR0ZWQgKz0gc2l6ZTsKKyAgICAgICAgbV9jb21taXR0ZWQgKz0gc2l6ZTsKICNlbmRp
ZgotICAgICAgICByZXR1cm4gY29tbWl0ZWQ7CisgICAgICAgIE9TQWxsb2NhdG9yOjpjb21taXQo
c3RhcnQsIHNpemUsIG1fd3JpdGFibGUsIG1fZXhlY3V0YWJsZSk7CiAgICAgfQorCiAgICAgdm9p
ZCBkZWNvbW1pdCh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9iYXNlKTsKQEAgLTg4LDE0OSArODQsNDQgQEAgcHVibGljOgogI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgbV9jb21taXR0ZWQgLT0gc2l6ZTsKICNlbmRpZgotICAgICAgICBzeXN0ZW1EZWNv
bW1pdChzdGFydCwgc2l6ZSk7CisgICAgICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdChzdGFydCwg
c2l6ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhZ2VSZXNlcnZhdGlvbiByZXNlcnZlKHNpemVf
dCBzaXplLCBVc2FnZSB1c2FnZSA9IFVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUs
IGJvb2wgZXhlY3V0YWJsZSA9IGZhbHNlKQorICAgIHN0YXRpYyBQYWdlUmVzZXJ2YXRpb24gcmVz
ZXJ2ZShzaXplX3Qgc2l6ZSwgT1NBbGxvY2F0b3I6OlVzYWdlIHVzYWdlID0gT1NBbGxvY2F0b3I6
OlVua25vd25Vc2FnZSwgYm9vbCB3cml0YWJsZSA9IHRydWUsIGJvb2wgZXhlY3V0YWJsZSA9IGZh
bHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUGFnZUFsaWduZWQoc2l6ZSkpOwotICAgICAg
ICByZXR1cm4gc3lzdGVtUmVzZXJ2ZShzaXplLCB1c2FnZSwgd3JpdGFibGUsIGV4ZWN1dGFibGUp
OworICAgICAgICByZXR1cm4gUGFnZVJlc2VydmF0aW9uKE9TQWxsb2NhdG9yOjpyZXNlcnZlKHNp
emUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSksIHNpemUsIHdyaXRhYmxlLCBleGVjdXRh
YmxlKTsKICAgICB9CiAKICAgICB2b2lkIGRlYWxsb2NhdGUoKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fYmFzZSk7CiAgICAgICAgIEFTU0VSVCghbV9jb21taXR0ZWQpOwotICAgICAgICBzeXN0
ZW1EZWFsbG9jYXRlKGZhbHNlKTsKKyAgICAgICAgUGFnZUFsbG9jYXRpb246OmRlYWxsb2NhdGUo
KTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgdXNpbmcgUGFnZUFsbG9jYXRpb246Omxh
c3RFcnJvcjsKLSNlbmRpZgotCiBwcml2YXRlOgogI2lmIE9TKFNZTUJJQU4pCiAgICAgUGFnZVJl
c2VydmF0aW9uKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplLCBSQ2h1bmsqIGNodW5rKQogICAgICAg
ICA6IFBhZ2VBbGxvY2F0aW9uKGJhc2UsIHNpemUsIGNodW5rKQogI2Vsc2UKLSAgICBQYWdlUmVz
ZXJ2YXRpb24odm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCisgICAgUGFnZVJlc2VydmF0aW9uKHZv
aWQqIGJhc2UsIHNpemVfdCBzaXplLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCiAg
ICAgICAgIDogUGFnZUFsbG9jYXRpb24oYmFzZSwgc2l6ZSkKICNlbmRpZgogI2lmbmRlZiBOREVC
VUcKICAgICAgICAgLCBtX2NvbW1pdHRlZCgwKQogI2VuZGlmCisgICAgICAgICwgbV93cml0YWJs
ZSh3cml0YWJsZSkKKyAgICAgICAgLCBtX2V4ZWN1dGFibGUoZXhlY3V0YWJsZSkKICAgICB7CiAg
ICAgfQogCi0gICAgYm9vbCBzeXN0ZW1Db21taXQodm9pZCosIHNpemVfdCk7Ci0gICAgdm9pZCBz
eXN0ZW1EZWNvbW1pdCh2b2lkKiwgc2l6ZV90KTsKLSAgICBzdGF0aWMgUGFnZVJlc2VydmF0aW9u
IHN5c3RlbVJlc2VydmUoc2l6ZV90LCBVc2FnZSwgYm9vbCwgYm9vbCk7Ci0KLSNpZiBIQVZFKFZJ
UlRVQUxBTExPQykKLSAgICBEV09SRCBtX3Byb3RlY3Rpb247Ci0jZW5kaWYKICNpZm5kZWYgTkRF
QlVHCiAgICAgc2l6ZV90IG1fY29tbWl0dGVkOwogI2VuZGlmCisgICAgYm9vbCBtX3dyaXRhYmxl
OworICAgIGJvb2wgbV9leGVjdXRhYmxlOwogfTsKIAotCi0jaWYgSEFWRShNTUFQKQotCi0KLWlu
bGluZSBib29sIFBhZ2VSZXNlcnZhdGlvbjo6c3lzdGVtQ29tbWl0KHZvaWQqIHN0YXJ0LCBzaXpl
X3Qgc2l6ZSkKLXsKLSNpZiBIQVZFKE1BRFZfRlJFRV9SRVVTRSkKLSAgICB3aGlsZSAobWFkdmlz
ZShzdGFydCwgc2l6ZSwgTUFEVl9GUkVFX1JFVVNFKSA9PSAtMSAmJiBlcnJubyA9PSBFQUdBSU4p
IHsgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc3RhcnQpOwotICAgIFVOVVNFRF9QQVJBTShz
aXplKTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCi1pbmxpbmUgdm9pZCBQYWdlUmVz
ZXJ2YXRpb246OnN5c3RlbURlY29tbWl0KHZvaWQqIHN0YXJ0LCBzaXplX3Qgc2l6ZSkKLXsKLSNp
ZiBIQVZFKE1BRFZfRlJFRV9SRVVTRSkKLSAgICB3aGlsZSAobWFkdmlzZShzdGFydCwgc2l6ZSwg
TUFEVl9GUkVFX1JFVVNBQkxFKSA9PSAtMSAmJiBlcnJubyA9PSBFQUdBSU4pIHsgfQotI2VsaWYg
SEFWRShNQURWX0ZSRUUpCi0gICAgd2hpbGUgKG1hZHZpc2Uoc3RhcnQsIHNpemUsIE1BRFZfRlJF
RSkgPT0gLTEgJiYgZXJybm8gPT0gRUFHQUlOKSB7IH0KLSNlbGlmIEhBVkUoTUFEVl9ET05UTkVF
RCkKLSAgICB3aGlsZSAobWFkdmlzZShzdGFydCwgc2l6ZSwgTUFEVl9ET05UTkVFRCkgPT0gLTEg
JiYgZXJybm8gPT0gRUFHQUlOKSB7IH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHN0YXJ0KTsK
LSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0jZW5kaWYKLX0KLQotaW5saW5lIFBhZ2VSZXNlcnZh
dGlvbiBQYWdlUmVzZXJ2YXRpb246OnN5c3RlbVJlc2VydmUoc2l6ZV90IHNpemUsIFVzYWdlIHVz
YWdlLCBib29sIHdyaXRhYmxlLCBib29sIGV4ZWN1dGFibGUpCi17Ci0gICAgdm9pZCogYmFzZSA9
IHN5c3RlbUFsbG9jYXRlKHNpemUsIHVzYWdlLCB3cml0YWJsZSwgZXhlY3V0YWJsZSkuYmFzZSgp
OwotI2lmIEhBVkUoTUFEVl9GUkVFX1JFVVNFKQotICAgIC8vIFdoZW4gdXNpbmcgTUFEVl9GUkVF
X1JFVVNFIHdlIGtlZXAgYWxsIGRlY29tbWl0dGVkIG1lbW9yeSBtYXJrZWQgYXMgUkVVU0FCTEUu
Ci0gICAgLy8gV2UgY2FsbCBSRVVTRSBvbiBjb21taXQsIGFuZCBSRVVTQUJMRSBvbiBkZWNvbW1p
dC4KLSAgICBpZiAoYmFzZSkKLSAgICAgICAgd2hpbGUgKG1hZHZpc2UoYmFzZSwgc2l6ZSwgTUFE
Vl9GUkVFX1JFVVNBQkxFKSA9PSAtMSAmJiBlcnJubyA9PSBFQUdBSU4pIHsgfQotI2VuZGlmCi0g
ICAgcmV0dXJuIFBhZ2VSZXNlcnZhdGlvbihiYXNlLCBzaXplKTsKLX0KLQotCi0jZWxpZiBIQVZF
KFZJUlRVQUxBTExPQykKLQotCi1pbmxpbmUgYm9vbCBQYWdlUmVzZXJ2YXRpb246OnN5c3RlbUNv
bW1pdCh2b2lkKiBzdGFydCwgc2l6ZV90IHNpemUpCi17Ci0gICAgcmV0dXJuIFZpcnR1YWxBbGxv
YyhzdGFydCwgc2l6ZSwgTUVNX0NPTU1JVCwgbV9wcm90ZWN0aW9uKSA9PSBzdGFydDsKLX0KLQot
aW5saW5lIHZvaWQgUGFnZVJlc2VydmF0aW9uOjpzeXN0ZW1EZWNvbW1pdCh2b2lkKiBzdGFydCwg
c2l6ZV90IHNpemUpCi17Ci0gICAgVmlydHVhbEZyZWUoc3RhcnQsIHNpemUsIE1FTV9ERUNPTU1J
VCk7Ci19Ci0KLWlubGluZSBQYWdlUmVzZXJ2YXRpb24gUGFnZVJlc2VydmF0aW9uOjpzeXN0ZW1S
ZXNlcnZlKHNpemVfdCBzaXplLCBVc2FnZSB1c2FnZSwgYm9vbCB3cml0YWJsZSwgYm9vbCBleGVj
dXRhYmxlKQotewotICAgIC8vIFJlY29yZCB0aGUgcHJvdGVjdGlvbiBmb3IgdXNlIGR1cmluZyBj
b21taXQuCi0gICAgRFdPUkQgcHJvdGVjdGlvbiA9IGV4ZWN1dGFibGUgPwotICAgICAgICAod3Jp
dGFibGUgPyBQQUdFX0VYRUNVVEVfUkVBRFdSSVRFIDogUEFHRV9FWEVDVVRFX1JFQUQpIDoKLSAg
ICAgICAgKHdyaXRhYmxlID8gUEFHRV9SRUFEV1JJVEUgOiBQQUdFX1JFQURPTkxZKTsKLSAgICBQ
YWdlUmVzZXJ2YXRpb24gcmVzZXJ2YXRpb24oVmlydHVhbEFsbG9jKDAsIHNpemUsIE1FTV9SRVNF
UlZFLCBwcm90ZWN0aW9uKSwgc2l6ZSk7Ci0gICAgcmVzZXJ2YXRpb24ubV9wcm90ZWN0aW9uID0g
cHJvdGVjdGlvbjsKLSAgICByZXR1cm4gcmVzZXJ2YXRpb247Ci19Ci0KLQotI2VsaWYgT1MoU1lN
QklBTikKLQotCi1pbmxpbmUgYm9vbCBQYWdlUmVzZXJ2YXRpb246OnN5c3RlbUNvbW1pdCh2b2lk
KiBzdGFydCwgc2l6ZV90IHNpemUpCi17Ci0gICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oc3RhcnQpIC0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9i
YXNlKTsKLSAgICBtX2NodW5rLT5Db21taXQob2Zmc2V0LCBzaXplKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotaW5saW5lIHZvaWQgUGFnZVJlc2VydmF0aW9uOjpzeXN0ZW1EZWNvbW1pdCh2b2lk
KiBzdGFydCwgc2l6ZV90IHNpemUpCi17Ci0gICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxpbnRwdHJfdD4oc3RhcnQpIC0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4obV9i
YXNlKTsKLSAgICBtX2NodW5rLT5EZWNvbW1pdChvZmZzZXQsIHNpemUpOwotfQotCi1pbmxpbmUg
UGFnZVJlc2VydmF0aW9uIFBhZ2VSZXNlcnZhdGlvbjo6c3lzdGVtUmVzZXJ2ZShzaXplX3Qgc2l6
ZSwgVXNhZ2UgdXNhZ2UsIGJvb2wgd3JpdGFibGUsIGJvb2wgZXhlY3V0YWJsZSkKLXsKLSAgICBS
Q2h1bmsqIHJjaHVuayA9IG5ldyBSQ2h1bmsoKTsKLSAgICBpZiAoZXhlY3V0YWJsZSkKLSAgICAg
ICAgcmNodW5rLT5DcmVhdGVMb2NhbENvZGUoMCwgc2l6ZSk7Ci0gICAgZWxzZQotICAgICAgICBy
Y2h1bmstPkNyZWF0ZURpc2Nvbm5lY3RlZExvY2FsKDAsIDAsIHNpemUpOwotICAgIHJldHVybiBQ
YWdlUmVzZXJ2YXRpb24ocmNodW5rLT5CYXNlKCksIHNpemUsIHJjaHVuayk7Ci19Ci0KLQotI2Vu
ZGlmCi0KLQogfQogCiB1c2luZyBXVEY6OlBhZ2VSZXNlcnZhdGlvbjsK
</data>
<flag name="review"
          id="66699"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>