<?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>61651</bug_id>
          
          <creation_ts>2011-05-27 11:16:02 -0700</creation_ts>
          <short_desc>Try to release unused executable memory when the FixedVMPool allocator is under pressure</short_desc>
          <delta_ts>2011-05-27 11:30:28 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>411560</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-05-27 11:16:02 -0700</bug_when>
    <thetext>Try to release unused executable memory when the FixedVMPool allocator is under pressure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411572</commentid>
    <comment_count>1</comment_count>
      <attachid>95199</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-05-27 11:26:33 -0700</bug_when>
    <thetext>Created attachment 95199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411576</commentid>
    <comment_count>2</comment_count>
      <attachid>95199</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-05-27 11:28:53 -0700</bug_when>
    <thetext>Comment on attachment 95199
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411579</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-05-27 11:30:28 -0700</bug_when>
    <thetext>Committed r87527: &lt;http://trac.webkit.org/changeset/87527&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95199</attachid>
            <date>2011-05-27 11:26:33 -0700</date>
            <delta_ts>2011-05-27 11:28:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61651-20110527112632.patch</filename>
            <type>text/plain</type>
            <size>37157</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc1MjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFm
Njk2NzAyMzhlYjY1YmIwNTkxODZjOWMwZjJhN2EyMTJlZDViN2IuLjk0NWU4ZmNhZDBkNjZhYzEw
Mzg2MTNiMTA3YmI4YjkxMWI1ZDkyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDg3IEBACisyMDExLTA1LTI3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJ5IHRvIHJl
bGVhc2UgdW51c2VkIGV4ZWN1dGFibGUgbWVtb3J5IHdoZW4gdGhlIEZpeGVkVk1Qb29sIGFsbG9j
YXRvciBpcyB1bmRlciBwcmVzc3VyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjE2NTEKKworICAgICAgICBSYXRoZXIgdGhhbiBjcmFzaGluZyB3aGVu
IGZ1bGwgdGhlIEZpeGVkVk1Qb29sIGFsbG9jYXRvciBub3cgcmV0dXJucyBhIG51bGwKKyAgICAg
ICAgYWxsb2NhdGlvbi4gIFdlIHJlcGxhY2UgdGhlIGNvZGUgdGhhdCB1c2VkIHRvIENSQVNIKCkg
b24gbnVsbCBhbGxvY2F0aW9ucworICAgICAgICB3aXRoIGxvZ2ljIHRoYXQgYXNrcyB0aGUgcHJv
dmlkZWQgZ2xvYmFsRGF0YSB0byByZWxlYXNlIGFueSBleGVjdXRhYmxlIG1lbW9yeQorICAgICAg
ICB0aGF0IGl0IGNhbi4gIEN1cnJlbnRseSB0aGlzIGp1c3QgbWVhbnMgdGhyb3dpbmcgYXdheSBh
bGwgcmVnZXhwIGNvZGUsIGJ1dAorICAgICAgICBpbiBmdXR1cmUgd2UnbGwgdHJ5IHRvIGJlIG1v
cmUgYWdncmVzc2l2ZS4KKworICAgICAgICAqIGFzc2VtYmxlci9BUk1Bc3NlbWJsZXIuY3BwOgor
ICAgICAgICAoSlNDOjpBUk1Bc3NlbWJsZXI6OmV4ZWN1dGFibGVDb3B5KToKKyAgICAgICAgKiBh
c3NlbWJsZXIvQVJNQXNzZW1ibGVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL0Fzc2VtYmxlckJ1
ZmZlci5oOgorICAgICAgICAoSlNDOjpBc3NlbWJsZXJCdWZmZXI6OmV4ZWN1dGFibGVDb3B5KToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oOgor
ICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZm
ZXI6OkxpbmtCdWZmZXIpOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpsaW5rQ29kZSk6Cisg
ICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6ZXhlY3V0YWJsZUNvcHkpOgorICAgICAgICAqIGFzc2VtYmxlci9TSDRBc3NlbWJs
ZXIuaDoKKyAgICAgICAgKEpTQzo6U0g0QXNzZW1ibGVyOjpleGVjdXRhYmxlQ29weSk6CisgICAg
ICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OmV4ZWN1dGFibGVDb3B5KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0
cnVjdGlvbkZvcm1hdHRlcjo6ZXhlY3V0YWJsZUNvcHkpOgorICAgICAgICAqIGRmZy9ERkdKSVRD
b21waWxlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmNvbXBpbGVGdW5j
dGlvbik6CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpT
Qzo6RXhlY3V0YWJsZVBvb2w6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVQb29s
OjphbGxvYyk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OkV4ZWN1dGFibGVB
bGxvY2F0b3IpOgorICAgICAgICAoSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpwb29sRm9yU2l6
ZSk6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVQb29sOjpFeGVjdXRhYmxlUG9vbCk6CisgICAg
ICAgIChKU0M6OkV4ZWN1dGFibGVQb29sOjpwb29sQWxsb2NhdGUpOgorICAgICAgICAqIGppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwOgorICAgICAgICAoSlNDOjpGaXhlZFZN
UG9vbEFsbG9jYXRvcjo6YWxsb2MpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMp
OgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKToKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZUNUSU5hdGl2ZUNhbGwpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9u
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgp
OgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6c3RyaW5nR2V0QnlWYWxTdHViR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW9uKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5n
dGgpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdCk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG9MaXN0KToKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QpOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKiBqaXQvU3BlY2lhbGl6
ZWRUaHVua0pJVC5oOgorICAgICAgICAoSlNDOjpTcGVjaWFsaXplZFRodW5rSklUOjpmaW5hbGl6
ZSk6CisgICAgICAgICogaml0L1RodW5rR2VuZXJhdG9ycy5jcHA6CisgICAgICAgIChKU0M6OmNo
YXJDb2RlQXRUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OmNoYXJBdFRodW5rR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6ZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpzcXJ0VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpwb3dUaHVua0dlbmVy
YXRvcik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlND
OjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkpOgorICAgICAgICAoSlNDOjpyZWxlYXNlRXhlY3V0
YWJsZU1lbW9yeSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAg
KiBydW50aW1lL1JlZ0V4cENhY2hlLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwQ2FjaGU6Omlu
dmFsaWRhdGVDb2RlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENhY2hlLmg6CisgICAgICAg
ICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyckdlbmVyYXRvcjo6
Y29tcGlsZSk6CisKIDIwMTEtMDUtMjYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmNwcAppbmRleCBkN2Y1NTZiYTU0ZGFl
OTY3NmJlNTRkNjI4NWJiYzE5ZTZlZDhmZjU0Li5mODY0NDRkMDhiNjJkODE5YTdkZTc2N2QxZDI0
Nzk2NDJhYWVmOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTUFzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Uk1Bc3NlbWJsZXIuY3BwCkBAIC0zNDMsMTQgKzM0MywxNCBAQCB2b2lkIEFSTUFzc2VtYmxlcjo6
ZG91YmxlVHJhbnNmZXIoYm9vbCBpc0xvYWQsIEZQUmVnaXN0ZXJJRCBzcmNEc3QsIFJlZ2lzdGVy
SUQgYgogICAgIGZkdHJfdShpc0xvYWQsIHNyY0RzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CiB9
CiAKLXZvaWQqIEFSTUFzc2VtYmxlcjo6ZXhlY3V0YWJsZUNvcHkoRXhlY3V0YWJsZVBvb2wqIGFs
bG9jYXRvcikKK3ZvaWQqIEFSTUFzc2VtYmxlcjo6ZXhlY3V0YWJsZUNvcHkoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxlUG9vbCogYWxsb2NhdG9yKQogewogICAgIC8vIDY0LWJp
dCBhbGlnbm1lbnQgaXMgcmVxdWlyZWQgZm9yIG5leHQgY29uc3RhbnQgcG9vbCBhbmQgSklUIGNv
ZGUgYXMgd2VsbAogICAgIG1fYnVmZmVyLmZsdXNoV2l0aG91dEJhcnJpZXIodHJ1ZSk7CiAgICAg
aWYgKCFtX2J1ZmZlci5pc0FsaWduZWQoOCkpCiAgICAgICAgIGJrcHQoMCk7CiAKLSAgICBjaGFy
KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9idWZmZXIuZXhlY3V0YWJsZUNvcHko
YWxsb2NhdG9yKSk7CisgICAgY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1f
YnVmZmVyLmV4ZWN1dGFibGVDb3B5KGdsb2JhbERhdGEsIGFsbG9jYXRvcikpOwogCiAgICAgZm9y
IChKdW1wczo6SXRlcmF0b3IgaXRlciA9IG1fanVtcHMuYmVnaW4oKTsgaXRlciAhPSBtX2p1bXBz
LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgLy8gVGhlIGxhc3QgYml0IGlzIHNldCBpZiB0aGUg
Y29uc3RhbnQgbXVzdCBiZSBwbGFjZWQgb24gY29uc3RhbnQgcG9vbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCmluZGV4IDMyNTExNjk0NmViNTg5
ZDMzYjQ1N2U5MzlkMjQwNDVjOGNlNWM4ZTYuLjJkNjdhNWE1YzM1NjlhZTNhZjA3ZDk2ZmExNWUx
OGQ0Y2JmMmNkYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
QVJNQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk1B
c3NlbWJsZXIuaApAQCAtNjg2LDcgKzY4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIGxvYWRCcmFuY2hUYXJnZXQoQVJNUmVnaXN0ZXJzOjpwYywgY2MsIHVzZUNvbnN0
YW50UG9vbCk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkKiBleGVjdXRhYmxlQ29weShFeGVj
dXRhYmxlUG9vbCogYWxsb2NhdG9yKTsKKyAgICAgICAgdm9pZCogZXhlY3V0YWJsZUNvcHkoSlNH
bG9iYWxEYXRhJiwgRXhlY3V0YWJsZVBvb2wqIGFsbG9jYXRvcik7CiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIuZGVidWdP
ZmZzZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
c3NlbWJsZXJCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1i
bGVyQnVmZmVyLmgKaW5kZXggNWFjYzUxZDdiNjg3MWZmNzE1MDY2MzkzZDE2NTMzOGM4ZGRlMDAx
MC4uYjk4NTAzZDA4NzZlOTZiZWM4MTgxZWI5YzI2MWVlZGIwN2UwNTljNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCkBAIC0xMjgs
MTIgKzEyOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBBc3NlbWJs
ZXJMYWJlbChtX2luZGV4KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQqIGV4ZWN1dGFibGVD
b3B5KEV4ZWN1dGFibGVQb29sKiBhbGxvY2F0b3IpCisgICAgICAgIHZvaWQqIGV4ZWN1dGFibGVD
b3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVBvb2wqIGFsbG9jYXRvcikK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2luZGV4KQogICAgICAgICAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgICAgICAgICB2b2lkKiByZXN1bHQgPSBhbGxvY2F0b3ItPmFsbG9jKG1f
aW5kZXgpOworICAgICAgICAgICAgdm9pZCogcmVzdWx0ID0gYWxsb2NhdG9yLT5hbGxvYyhnbG9i
YWxEYXRhLCBtX2luZGV4KTsKIAogICAgICAgICAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0Fzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFudFBvb2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oCmluZGV4IDI5
MzJkNjljOGNhNzA1ZGExYzQ5YTZhMjVjMDAxODRmNzc5ZTQ2YjUuLmNkOWZmOWMwZWY0M2FhY2Q1
OTJlOTMzZmExOWFmMTVkM2M2Yjc1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9vbC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyV2l0aENvbnN0YW50UG9v
bC5oCkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHB1dEludGVncmFsVW5j
aGVja2VkKHZhbHVlLmxvdyk7CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUNvcHkoRXhl
Y3V0YWJsZVBvb2wqIGFsbG9jYXRvcikKKyAgICB2b2lkKiBleGVjdXRhYmxlQ29weShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEV4ZWN1dGFibGVQb29sKiBhbGxvY2F0b3IpCiAgICAgewogICAg
ICAgICBmbHVzaENvbnN0YW50UG9vbChmYWxzZSk7Ci0gICAgICAgIHJldHVybiBBc3NlbWJsZXJC
dWZmZXI6OmV4ZWN1dGFibGVDb3B5KGFsbG9jYXRvcik7CisgICAgICAgIHJldHVybiBBc3NlbWJs
ZXJCdWZmZXI6OmV4ZWN1dGFibGVDb3B5KGdsb2JhbERhdGEsIGFsbG9jYXRvcik7CiAgICAgfQog
CiAgICAgdm9pZCBwdXRTaG9ydFdpdGhDb25zdGFudEludCh1aW50MTZfdCBpbnNuLCB1aW50MzJf
dCBjb25zdGFudCwgYm9vbCBpc1JldXNhYmxlID0gZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCmluZGV4IDExYzM1OTI5NGQxNmRkMTVkNjM2NGFj
NTAxZGY0OGM5NDAxMTkyNjAuLjVjMWQ1NWQzYjA1ODAwMWNhZTQ0ZmZhMDliOWQ1NzFjNzlmZWMy
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCkBA
IC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU0dsb2JhbERhdGE7
CisKIC8vIExpbmtCdWZmZXI6CiAvLwogLy8gVGhpcyBjbGFzcyBhc3Npc3RzIGluIGxpbmtpbmcg
Y29kZSBnZW5lcmF0ZWQgYnkgdGhlIG1hY3JvIGFzc2VtYmxlciwgb25jZSBjb2RlIGdlbmVyYXRp
b24KQEAgLTY3LDExICs2OSwxMiBAQCBjbGFzcyBMaW5rQnVmZmVyIHsKICNlbmRpZgogCiBwdWJs
aWM6Ci0gICAgTGlua0J1ZmZlcihNYWNyb0Fzc2VtYmxlciogbWFzbSwgUGFzc1JlZlB0cjxFeGVj
dXRhYmxlUG9vbD4gZXhlY3V0YWJsZVBvb2wpCisgICAgTGlua0J1ZmZlcihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIE1hY3JvQXNzZW1ibGVyKiBtYXNtLCBQYXNzUmVmUHRyPEV4ZWN1dGFibGVQ
b29sPiBleGVjdXRhYmxlUG9vbCkKICAgICAgICAgOiBtX2V4ZWN1dGFibGVQb29sKGV4ZWN1dGFi
bGVQb29sKQogICAgICAgICAsIG1fc2l6ZSgwKQogICAgICAgICAsIG1fY29kZSgwKQogICAgICAg
ICAsIG1fYXNzZW1ibGVyKG1hc20pCisgICAgICAgICwgbV9nbG9iYWxEYXRhKCZnbG9iYWxEYXRh
KQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLCBtX2NvbXBsZXRlZChmYWxzZSkKICNlbmRpZgpA
QCAtNzksMTEgKzgyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbGlua0NvZGUoKTsKICAgICB9CiAK
LSAgICBMaW5rQnVmZmVyKE1hY3JvQXNzZW1ibGVyKiBtYXNtLCBFeGVjdXRhYmxlQWxsb2NhdG9y
JiBhbGxvY2F0b3IpCi0gICAgICAgIDogbV9leGVjdXRhYmxlUG9vbChhbGxvY2F0b3IucG9vbEZv
clNpemUobWFzbS0+bV9hc3NlbWJsZXIuY29kZVNpemUoKSkpCisgICAgTGlua0J1ZmZlcihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIE1hY3JvQXNzZW1ibGVyKiBtYXNtLCBFeGVjdXRhYmxlQWxs
b2NhdG9yJiBhbGxvY2F0b3IpCisgICAgICAgIDogbV9leGVjdXRhYmxlUG9vbChhbGxvY2F0b3Iu
cG9vbEZvclNpemUoZ2xvYmFsRGF0YSwgbWFzbS0+bV9hc3NlbWJsZXIuY29kZVNpemUoKSkpCiAg
ICAgICAgICwgbV9zaXplKDApCiAgICAgICAgICwgbV9jb2RlKDApCiAgICAgICAgICwgbV9hc3Nl
bWJsZXIobWFzbSkKKyAgICAgICAgLCBtX2dsb2JhbERhdGEoJmdsb2JhbERhdGEpCiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICAsIG1fY29tcGxldGVkKGZhbHNlKQogI2VuZGlmCkBAIC0yMjMsNyAr
MjI3LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9jb2RlKTsKICNpZiAh
RU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQotICAgICAgICBtX2NvZGUgPSBtX2Fzc2VtYmxlci0+
bV9hc3NlbWJsZXIuZXhlY3V0YWJsZUNvcHkobV9leGVjdXRhYmxlUG9vbC5nZXQoKSk7CisgICAg
ICAgIG1fY29kZSA9IG1fYXNzZW1ibGVyLT5tX2Fzc2VtYmxlci5leGVjdXRhYmxlQ29weSgqbV9n
bG9iYWxEYXRhLCBtX2V4ZWN1dGFibGVQb29sLmdldCgpKTsKICAgICAgICAgbV9zaXplID0gbV9h
c3NlbWJsZXItPm1fYXNzZW1ibGVyLmNvZGVTaXplKCk7CiAgICAgICAgIEFTU0VSVChtX2NvZGUp
OwogI2Vsc2UKQEAgLTM1NCw2ICszNTgsNyBAQCBwcml2YXRlOgogICAgIHNpemVfdCBtX3NpemU7
CiAgICAgdm9pZCogbV9jb2RlOwogICAgIE1hY3JvQXNzZW1ibGVyKiBtX2Fzc2VtYmxlcjsKKyAg
ICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBt
X2NvbXBsZXRlZDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01JUFNBc3NlbWJsZXIuaAppbmRleCAzOTVlMWNlYzVkMDIwODY5NmFlMjI0YjhjNDk1ODc1YjJi
MTY3ZTJlLi44N2ViZjI4MjdlZDQ1ZmFhZGNlYTQzODU1YjA2ODUwNmZhMTllZWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtNjQ1
LDkgKzY0NSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmNvZGVTaXplKCk7
CiAgICAgfQogCi0gICAgdm9pZCogZXhlY3V0YWJsZUNvcHkoRXhlY3V0YWJsZVBvb2wqIGFsbG9j
YXRvcikKKyAgICB2b2lkKiBleGVjdXRhYmxlQ29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEV4ZWN1dGFibGVQb29sKiBhbGxvY2F0b3IpCiAgICAgewotICAgICAgICB2b2lkICpyZXN1bHQg
PSBtX2J1ZmZlci5leGVjdXRhYmxlQ29weShhbGxvY2F0b3IpOworICAgICAgICB2b2lkICpyZXN1
bHQgPSBtX2J1ZmZlci5leGVjdXRhYmxlQ29weShnbG9iYWxEYXRhLCBhbGxvY2F0b3IpOwogICAg
ICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaAppbmRleCA1N2Y3YTQyN2Q1YWVk
ZjgwMjBiMjg3Y2IxNmVlZDI3Y2Q3MWI4Y2VhLi5kYmI1NzM1NzUwNzNmNThmOTg2OTVlMmUyNDNj
MzUyMzM5ZmIwNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1NINEFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0
QXNzZW1ibGVyLmgKQEAgLTE0NzQsOSArMTQ3NCw5IEBAIHB1YmxpYzoKICAgICAgICAgY2hhbmdl
UENyZWxhdGl2ZUFkZHJlc3MoKCoocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGNvZGUpKSAm
IDB4ZmYpLCByZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oY29kZSksIHZhbHVlKTsKICAgICB9
CiAKLSAgICB2b2lkKiBleGVjdXRhYmxlQ29weShFeGVjdXRhYmxlUG9vbCogYWxsb2NhdG9yKQor
ICAgIHZvaWQqIGV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXhlY3V0
YWJsZVBvb2wqIGFsbG9jYXRvcikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5leGVj
dXRhYmxlQ29weShhbGxvY2F0b3IpOworICAgICAgICByZXR1cm4gbV9idWZmZXIuZXhlY3V0YWJs
ZUNvcHkoZ2xvYmFsRGF0YSwgYWxsb2NhdG9yKTsKICAgICB9CiAKICAgICB2b2lkIHByZWZpeCh1
aW50MTZfdCBwcmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaAppbmRleCBjODcyM2M4YjYyZjhiY2U1NmIxNWVkNjVmYjUxY2VjZWM5Y2Q4YmU5Li44
ZDljNTc2OTk3MGE3ZmUyZTUyZjMyNTQwZDNlOTFhZWY1MDlhNWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTE1ODMsOSArMTU4Myw5
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGIubV9vZmZzZXQgLSBhLm1fb2Zmc2V0OwogICAg
IH0KICAgICAKLSAgICB2b2lkKiBleGVjdXRhYmxlQ29weShFeGVjdXRhYmxlUG9vbCogYWxsb2Nh
dG9yKQorICAgIHZvaWQqIGV4ZWN1dGFibGVDb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RXhlY3V0YWJsZVBvb2wqIGFsbG9jYXRvcikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2Zvcm1h
dHRlci5leGVjdXRhYmxlQ29weShhbGxvY2F0b3IpOworICAgICAgICByZXR1cm4gbV9mb3JtYXR0
ZXIuZXhlY3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgYWxsb2NhdG9yKTsKICAgICB9CiAKICAgICB2
b2lkIHJld2luZFRvTGFiZWwoQXNzZW1ibGVyTGFiZWwgcmV3aW5kVG8pIHsgbV9mb3JtYXR0ZXIu
cmV3aW5kVG9MYWJlbChyZXdpbmRUbyk7IH0KQEAgLTE5MTksOSArMTkxOSw5IEBAIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgaXNBbGlnbmVkKGludCBhbGlnbm1lbnQpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyLmlzQWxpZ25lZChhbGlnbm1lbnQpOyB9CiAgICAgICAgIHZvaWQqIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2J1ZmZlci5kYXRhKCk7IH0KIAotICAgICAgICB2b2lkKiBleGVjdXRhYmxl
Q29weShFeGVjdXRhYmxlUG9vbCogYWxsb2NhdG9yKQorICAgICAgICB2b2lkKiBleGVjdXRhYmxl
Q29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4ZWN1dGFibGVQb29sKiBhbGxvY2F0b3Ip
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2J1ZmZlci5leGVjdXRhYmxlQ29weShh
bGxvY2F0b3IpOworICAgICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmV4ZWN1dGFibGVDb3B5KGds
b2JhbERhdGEsIGFsbG9jYXRvcik7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHJld2luZFRv
TGFiZWwoQXNzZW1ibGVyTGFiZWwgcmV3aW5kVG8pIHsgbV9idWZmZXIucmV3aW5kVG9MYWJlbChy
ZXdpbmRUbyk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAKaW5kZXggODA4YjJlNjc5ZDM5M2FkOTM3ODg0MjE0ZGViODkxMWFmYjIyYzY5Mi4uNzdjYjY1
ZjY4OTM2MGFiYTI1YjBjN2U4NDFjMDE4MzFiZWIyYjY0OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRnVuY3Rpb24oSklUQ29kZSYgZW50cnksIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciYgZW50cnlXaQogICAgIC8vCiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUg
ZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVzLgogCi0gICAgTGlua0J1ZmZlciBsaW5r
QnVmZmVyKHRoaXMsIG1fZ2xvYmFsRGF0YS0+ZXhlY3V0YWJsZUFsbG9jYXRvcik7CisgICAgTGlu
a0J1ZmZlciBsaW5rQnVmZmVyKCptX2dsb2JhbERhdGEsIHRoaXMsIG1fZ2xvYmFsRGF0YS0+ZXhl
Y3V0YWJsZUFsbG9jYXRvcik7CiAKICNpZiBERkdfREVCVUdfVkVSQk9TRQogICAgIGZwcmludGYo
c3RkZXJyLCAiSklUIGNvZGUgc3RhcnQgYXQgJXBcbiIsIGxpbmtCdWZmZXIuZGVidWdBZGRyZXNz
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aAppbmRleCA0OWNkNmNmZWJkMjBiMTczZGQ4MjEyOTY4YWUyMDg0ZTNmZmUyNGNiLi4yMzg5ODEz
Yjk1MDA0ZjE0ZmUxODVjODA2MWY5OWE2ODI4ZWM3NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaApAQCAtOTYsNiArOTYsOSBAQCBpbmxp
bmUgc2l6ZV90IHJvdW5kVXBBbGxvY2F0aW9uU2l6ZShzaXplX3QgcmVxdWVzdCwgc2l6ZV90IGdy
YW51bGFyaXR5KQogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNHbG9iYWxEYXRhOwordm9p
ZCByZWxlYXNlRXhlY3V0YWJsZU1lbW9yeShKU0dsb2JhbERhdGEmKTsKKwogY2xhc3MgRXhlY3V0
YWJsZVBvb2wgOiBwdWJsaWMgUmVmQ291bnRlZDxFeGVjdXRhYmxlUG9vbD4gewogcHVibGljOgog
I2lmIEVOQUJMRShFWEVDVVRBQkxFX0FMTE9DQVRPUl9ERU1BTkQpCkBAIC0xMTksMTIgKzEyMiwx
MiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB0eXBlZGVmIFZlY3RvcjxBbGxvY2F0aW9uLCAyPiBB
bGxvY2F0aW9uTGlzdDsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV4ZWN1dGFibGVQb29sPiBj
cmVhdGUoc2l6ZV90IG4pCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RXhlY3V0YWJsZVBvb2w+IGNy
ZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNpemVfdCBuKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBFeGVjdXRhYmxlUG9vbChuKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgRXhlY3V0YWJsZVBvb2woZ2xvYmFsRGF0YSwgbikpOwogICAgIH0KIAotICAg
IHZvaWQqIGFsbG9jKHNpemVfdCBuKQorICAgIHZvaWQqIGFsbG9jKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgc2l6ZV90IG4pCiAgICAgewogICAgICAgICBBU1NFUlQobV9mcmVlUHRyIDw9IG1f
ZW5kKTsKIApAQCAtMTQwLDcgKzE0Myw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBJbnN1ZmZp
Y2llbnQgc3BhY2UgdG8gYWxsb2NhdGUgaW4gdGhlIGV4aXN0aW5nIHBvb2wKICAgICAgICAgLy8g
c28gd2UgbmVlZCBhbGxvY2F0ZSBpbnRvIGEgbmV3IHBvb2wKLSAgICAgICAgcmV0dXJuIHBvb2xB
bGxvY2F0ZShuKTsKKyAgICAgICAgcmV0dXJuIHBvb2xBbGxvY2F0ZShnbG9iYWxEYXRhLCBuKTsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCB0cnlTaHJpbmsodm9pZCogYWxsb2NhdGlvbiwgc2l6ZV90
IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQpAQCAtMTYzLDkgKzE2Niw5IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIEFsbG9jYXRpb24gc3lzdGVtQWxsb2Moc2l6ZV90IG4pOwogICAgIHN0YXRpYyB2
b2lkIHN5c3RlbVJlbGVhc2UoQWxsb2NhdGlvbiYgYWxsb2MpOwogCi0gICAgRXhlY3V0YWJsZVBv
b2woc2l6ZV90IG4pOworICAgIEV4ZWN1dGFibGVQb29sKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBu
KTsKIAotICAgIHZvaWQqIHBvb2xBbGxvY2F0ZShzaXplX3Qgbik7CisgICAgdm9pZCogcG9vbEFs
bG9jYXRlKEpTR2xvYmFsRGF0YSYsIHNpemVfdCBuKTsKIAogICAgIGNoYXIqIG1fZnJlZVB0cjsK
ICAgICBjaGFyKiBtX2VuZDsKQEAgLTE3NiwxMCArMTc5LDEwIEBAIGNsYXNzIEV4ZWN1dGFibGVB
bGxvY2F0b3IgewogICAgIGVudW0gUHJvdGVjdGlvblNldHRpbmcgeyBXcml0YWJsZSwgRXhlY3V0
YWJsZSB9OwogCiBwdWJsaWM6Ci0gICAgRXhlY3V0YWJsZUFsbG9jYXRvcigpCisgICAgRXhlY3V0
YWJsZUFsbG9jYXRvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgewogICAgICAgICBp
ZiAoaXNWYWxpZCgpKQotICAgICAgICAgICAgbV9zbWFsbEFsbG9jYXRpb25Qb29sID0gRXhlY3V0
YWJsZVBvb2w6OmNyZWF0ZShKSVRfQUxMT0NBVE9SX0xBUkdFX0FMTE9DX1NJWkUpOworICAgICAg
ICAgICAgbV9zbWFsbEFsbG9jYXRpb25Qb29sID0gRXhlY3V0YWJsZVBvb2w6OmNyZWF0ZShnbG9i
YWxEYXRhLCBKSVRfQUxMT0NBVE9SX0xBUkdFX0FMTE9DX1NJWkUpOwogI2lmICFFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIENSQVNIKCk7CkBAIC0xOTAsNyAr
MTkzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgdW5kZXJNZW1vcnlQcmVzc3VyZSgp
OwogCi0gICAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlUG9vbD4gcG9vbEZvclNpemUoc2l6ZV90IG4p
CisgICAgUGFzc1JlZlB0cjxFeGVjdXRhYmxlUG9vbD4gcG9vbEZvclNpemUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBzaXplX3QgbikKICAgICB7CiAgICAgICAgIC8vIFRyeSB0byBmaXQgaW4g
dGhlIGV4aXN0aW5nIHNtYWxsIGFsbG9jYXRvcgogICAgICAgICBBU1NFUlQobV9zbWFsbEFsbG9j
YXRpb25Qb29sKTsKQEAgLTE5OSwxMCArMjAyLDEwIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBJ
ZiB0aGUgcmVxdWVzdCBpcyBsYXJnZSwgd2UganVzdCBwcm92aWRlIGEgdW5zaGFyZWQgYWxsb2Nh
dG9yCiAgICAgICAgIGlmIChuID4gSklUX0FMTE9DQVRPUl9MQVJHRV9BTExPQ19TSVpFKQotICAg
ICAgICAgICAgcmV0dXJuIEV4ZWN1dGFibGVQb29sOjpjcmVhdGUobik7CisgICAgICAgICAgICBy
ZXR1cm4gRXhlY3V0YWJsZVBvb2w6OmNyZWF0ZShnbG9iYWxEYXRhLCBuKTsKIAogICAgICAgICAv
LyBDcmVhdGUgYSBuZXcgYWxsb2NhdG9yCi0gICAgICAgIFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4g
cG9vbCA9IEV4ZWN1dGFibGVQb29sOjpjcmVhdGUoSklUX0FMTE9DQVRPUl9MQVJHRV9BTExPQ19T
SVpFKTsKKyAgICAgICAgUmVmUHRyPEV4ZWN1dGFibGVQb29sPiBwb29sID0gRXhlY3V0YWJsZVBv
b2w6OmNyZWF0ZShnbG9iYWxEYXRhLCBKSVRfQUxMT0NBVE9SX0xBUkdFX0FMTE9DX1NJWkUpOwog
CiAgICAgICAgIC8vIElmIHRoZSBuZXcgYWxsb2NhdG9yIHdpbGwgcmVzdWx0IGluIG1vcmUgZnJl
ZSBzcGFjZSB0aGFuIGluCiAgICAgICAgIC8vIHRoZSBjdXJyZW50IHNtYWxsIGFsbG9jYXRvciwg
dGhlbiB3ZSB3aWxsIHVzZSBpdCBpbnN0ZWFkCkBAIC0zMzYsMTAgKzMzOSwxNCBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4gbV9zbWFsbEFsbG9jYXRpb25Qb29sOwogfTsK
IAotaW5saW5lIEV4ZWN1dGFibGVQb29sOjpFeGVjdXRhYmxlUG9vbChzaXplX3QgbikKK2lubGlu
ZSBFeGVjdXRhYmxlUG9vbDo6RXhlY3V0YWJsZVBvb2woSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBzaXplX3QgbikKIHsKICAgICBzaXplX3QgYWxsb2NTaXplID0gcm91bmRVcEFsbG9jYXRpb25T
aXplKG4sIHBhZ2VTaXplKCkpOwogICAgIEFsbG9jYXRpb24gbWVtID0gc3lzdGVtQWxsb2MoYWxs
b2NTaXplKTsKKyAgICBpZiAoIW1lbS5iYXNlKCkpIHsKKyAgICAgICAgcmVsZWFzZUV4ZWN1dGFi
bGVNZW1vcnkoZ2xvYmFsRGF0YSk7CisgICAgICAgIG1lbSA9IHN5c3RlbUFsbG9jKGFsbG9jU2l6
ZSk7CisgICAgfQogICAgIG1fcG9vbHMuYXBwZW5kKG1lbSk7CiAgICAgbV9mcmVlUHRyID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KG1lbS5iYXNlKCkpOwogICAgIGlmICghbV9mcmVlUHRyKQpAQCAtMzQ3
LDEzICszNTQsMTcgQEAgaW5saW5lIEV4ZWN1dGFibGVQb29sOjpFeGVjdXRhYmxlUG9vbChzaXpl
X3QgbikKICAgICBtX2VuZCA9IG1fZnJlZVB0ciArIGFsbG9jU2l6ZTsKIH0KIAotaW5saW5lIHZv
aWQqIEV4ZWN1dGFibGVQb29sOjpwb29sQWxsb2NhdGUoc2l6ZV90IG4pCitpbmxpbmUgdm9pZCog
RXhlY3V0YWJsZVBvb2w6OnBvb2xBbGxvY2F0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHNp
emVfdCBuKQogewogICAgIHNpemVfdCBhbGxvY1NpemUgPSByb3VuZFVwQWxsb2NhdGlvblNpemUo
biwgcGFnZVNpemUoKSk7CiAgICAgCiAgICAgQWxsb2NhdGlvbiByZXN1bHQgPSBzeXN0ZW1BbGxv
YyhhbGxvY1NpemUpOwotICAgIGlmICghcmVzdWx0LmJhc2UoKSkKLSAgICAgICAgQ1JBU0goKTsg
Ly8gRmFpbGVkIHRvIGFsbG9jYXRlCisgICAgaWYgKCFyZXN1bHQuYmFzZSgpKSB7CisgICAgICAg
IHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KGdsb2JhbERhdGEpOworICAgICAgICByZXN1bHQgPSBz
eXN0ZW1BbGxvYyhhbGxvY1NpemUpOworICAgICAgICBpZiAoIXJlc3VsdC5iYXNlKCkpCisgICAg
ICAgICAgICBDUkFTSCgpOyAvLyBGYWlsZWQgdG8gYWxsb2NhdGUKKyAgICB9CiAgICAgCiAgICAg
QVNTRVJUKG1fZW5kID49IG1fZnJlZVB0cik7CiAgICAgaWYgKChhbGxvY1NpemUgLSBuKSA+IHN0
YXRpY19jYXN0PHNpemVfdD4obV9lbmQgLSBtX2ZyZWVQdHIpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9v
bC5jcHAKaW5kZXggZDI1MjU1ODFmZDQwYjNhMTQ3OTYwOTJjNmFjZGZkOGNhNDE5YzMwOS4uMDMw
MTg0NTRlMGIyNmRkNWE1YjgzMTVmNzliMjgwZDY1ZGVjN2VhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Q
b29sLmNwcApAQCAtNDI0LDEzICs0MjQsMTMgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoc2l6
ZSk7CiAKICAgICAgICAgaWYgKHNpemUgPj0gRml4ZWRWTVBvb2xQYWdlVGFibGVzOjpzaXplKCkp
Ci0gICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgcmV0dXJuIEV4ZWN1dGFibGVQb29s
OjpBbGxvY2F0aW9uKDAsIDApOwogICAgICAgICBpZiAobV9wYWdlcy5pc0Z1bGwoKSkKLSAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICByZXR1cm4gRXhlY3V0YWJsZVBvb2w6OkFsbG9j
YXRpb24oMCwgMCk7CiAKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1fcGFnZXMuYWxsb2NhdGUo
c2l6ZUNsYXNzKTsKICAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKLSAgICAgICAgICAg
IENSQVNIKCk7CisgICAgICAgICAgICByZXR1cm4gRXhlY3V0YWJsZVBvb2w6OkFsbG9jYXRpb24o
MCwgMCk7CiAKICAgICAgICAgdm9pZCogcG9pbnRlciA9IG9mZnNldFRvUG9pbnRlcihvZmZzZXQp
OwogICAgICAgICBtX3Jlc2VydmF0aW9uLmNvbW1pdChwb2ludGVyLCBzaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAppbmRleCA4YWQ1YmE3NmRjNGU1MGQzOWQyNjk0OWZmMDI5MjNiM2E1
YTdkYjA5Li4xYjc2ZTdmNTQyZWJhNTc4YTBkYTliY2Y2OGFlMDBlNjg5ZmFlODVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC01MTksNyArNTE5LDcgQEAgSklUQ29kZSBKSVQ6OnBy
aXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNrKQogCiAgICAgQVNT
RVJUKG1fam1wVGFibGUuaXNFbXB0eSgpKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
dGhpcywgbV9nbG9iYWxEYXRhLT5leGVjdXRhYmxlQWxsb2NhdG9yKTsKKyAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCptX2dsb2JhbERhdGEsIHRoaXMsIG1fZ2xvYmFsRGF0YS0+ZXhlY3V0YWJs
ZUFsbG9jYXRvcik7CiAKICAgICAvLyBUcmFuc2xhdGUgdlBDIG9mZnNldHMgaW50byBhZGRyZXNz
ZXMgaW4gSklUIGdlbmVyYXRlZCBjb2RlLCBmb3Igc3dpdGNoIHRhYmxlcy4KICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9zd2l0Y2hlcy5zaXplKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZjRjNDE2ZGU3ZmZkMjk2MTk5ZDcxMmI2
Y2JhOWNiZDQ0N2RkYzQ4NC4uZTM0YTBhMzZkMDI1ZTAzN2I4YzcyYzI1NTE0ODVlYzIwOWE0MmY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKFJl
ZlB0cjxFeGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFibGUKICNlbmRpZgogCiAgICAgLy8gQWxsIHRy
YW1wb2xpbmVzIGNvbnN0cnVjdGVkISBjb3B5IHRoZSBjb2RlLCBsaW5rIHVwIGNhbGxzLCBhbmQg
c2V0IHRoZSBwb2ludGVycyBvbiB0aGUgTWFjaGluZSBvYmplY3QuCi0gICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcih0aGlzLCBtX2dsb2JhbERhdGEtPmV4ZWN1dGFibGVBbGxvY2F0b3IpOworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9nbG9iYWxEYXRh
LT5leGVjdXRhYmxlQWxsb2NhdG9yKTsKIAogI2lmIEVOQUJMRShKSVRfT1BUSU1JWkVfUFJPUEVS
VFlfQUNDRVNTKQogICAgIHBhdGNoQnVmZmVyLmxpbmsoc3RyaW5nX2ZhaWx1cmVDYXNlczFDYWxs
LCBGdW5jdGlvblB0cihjdGlfb3BfZ2V0X2J5X2lkX3N0cmluZ19mYWlsKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMmY2NTdlN2Q2NTIw
MDU0YzZmOTNmYjI2NTFmOGM4ZTBmNGI3Nzc2ZC4uZTI5NDQwZTE1ODMzOGIyNzE4MzAzMTVhZDI3
Mjk3ZjU1Y2MzNzZiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNU
SU1hY2hpbmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAj
ZW5kaWYKIAogICAgIC8vIEFsbCB0cmFtcG9saW5lcyBjb25zdHJ1Y3RlZCEgY29weSB0aGUgY29k
ZSwgbGluayB1cCBjYWxscywgYW5kIHNldCB0aGUgcG9pbnRlcnMgb24gdGhlIE1hY2hpbmUgb2Jq
ZWN0LgotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9nbG9iYWxEYXRhLT5leGVj
dXRhYmxlQWxsb2NhdG9yKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX2dsb2JhbERh
dGEsIHRoaXMsIG1fZ2xvYmFsRGF0YS0+ZXhlY3V0YWJsZUFsbG9jYXRvcik7CiAKICNpZiBFTkFC
TEUoSklUX09QVElNSVpFX1BST1BFUlRZX0FDQ0VTUykKICAgICBwYXRjaEJ1ZmZlci5saW5rKHN0
cmluZ19mYWlsdXJlQ2FzZXMxQ2FsbCwgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9pZF9zdHJp
bmdfZmFpbCkpOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIEpJVDo6Q29kZVB0ciBKSVQ6OnByaXZhdGVD
b21waWxlQ1RJTmF0aXZlQ2FsbChQYXNzUmVmUHRyPEV4ZWN1dGFibGVQb29sPiBleGVjdXRhCiAg
ICAgcmV0KCk7CiAKICAgICAvLyBBbGwgdHJhbXBvbGluZXMgY29uc3RydWN0ZWQhIGNvcHkgdGhl
IGNvZGUsIGxpbmsgdXAgY2FsbHMsIGFuZCBzZXQgdGhlIHBvaW50ZXJzIG9uIHRoZSBNYWNoaW5l
IG9iamVjdC4KLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIGV4ZWN1dGFibGVQb29s
KTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX2dsb2JhbERhdGEsIHRoaXMsIGV4ZWN1
dGFibGVQb29sKTsKIAogICAgIHBhdGNoQnVmZmVyLmxpbmsobmF0aXZlQ2FsbCwgRnVuY3Rpb25Q
dHIoZnVuYykpOwogICAgIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCBiYWY5NDAxMGU3
MDFjNTZiZmRmODYxNDUxZWI3NmM3ZGYyMzIxMjIzLi4wOTg2YTVjYWIzYTA5Y2JjMTY2NzJjM2E0
NzdmY2ZiNmZhYjBhNzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtNzcsNyArNzcsNyBAQCBKSVQ6OkNvZGVQdHIgSklUOjpzdHJp
bmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjdXRh
YgogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIGppdC5yZXQoKTsK
ICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCZqaXQsIHBvb2wpOworICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIHBvb2wpOwogICAgIHJldHVybiBw
YXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKS5tX2NvZGU7CiB9CiAKQEAgLTU5NCw3ICs1OTQsNyBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZQogICAgIHJlc3RvcmVBcmd1bWVudFJlZmVyZW5jZUZv
clRyYW1wb2xpbmUoKTsKICAgICBDYWxsIGZhaWx1cmVDYWxsID0gdGFpbFJlY3Vyc2l2ZUNhbGwo
KTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1
dGFibGVQb29sKCkpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0YSwg
dGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOwogCiAgICAgcGF0Y2hCdWZmZXIu
bGluayhmYWlsdXJlQ2FsbCwgRnVuY3Rpb25QdHIoZGlyZWN0ID8gY3RpX29wX3B1dF9ieV9pZF9k
aXJlY3RfZmFpbCA6IGN0aV9vcF9wdXRfYnlfaWRfZmFpbCkpOwogCkBAIC02NzIsNyArNjcyLDcg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhy
ZWdUMiwgcmVnVDApOwogICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsKIAotICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOworICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2st
PmV4ZWN1dGFibGVQb29sKCkpOwogCiAgICAgLy8gVXNlIHRoZSBwYXRjaCBpbmZvcm1hdGlvbiB0
byBsaW5rIHRoZSBmYWlsdXJlIGNhc2VzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHNsb3cgY2FzZSBy
b3V0aW5lLgogICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlQmVnaW4gPSBzdHViSW5mby0+
Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoLXBhdGNoT2Zmc2V0R2V0QnlJZFNsb3dD
YXNlQ2FsbCk7CkBAIC03MzAsNyArNzMwLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0
QnlJZFByb3RvKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgU3RydWN0dXJlKiBzdHIKICAg
ICB9IGVsc2UKICAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChwcm90b09iamVjdCwgcmVn
VDAsIGNhY2hlZE9mZnNldCk7CiAgICAgSnVtcCBzdWNjZXNzID0ganVtcCgpOwotICAgIExpbmtC
dWZmZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOwor
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxv
Y2stPmV4ZWN1dGFibGVQb29sKCkpOwogCiAgICAgLy8gVXNlIHRoZSBwYXRjaCBpbmZvcm1hdGlv
biB0byBsaW5rIHRoZSBmYWlsdXJlIGNhc2VzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHNsb3cgY2Fz
ZSByb3V0aW5lLgogICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dDYXNlQmVnaW4gPSBzdHViSW5m
by0+Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoLXBhdGNoT2Zmc2V0R2V0QnlJZFNs
b3dDYXNlQ2FsbCk7CkBAIC03ODMsNyArNzgzLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFNlbGZMaXN0KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgUG9seW1vcnBoaWMK
ICAgICAgICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDAsIHN0cnVjdHVyZSwg
Y2FjaGVkT2Zmc2V0KTsKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAKLSAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKKyAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX2dsb2JhbERhdGEsIHRoaXMsIG1fY29kZUJsb2Nr
LT5leGVjdXRhYmxlUG9vbCgpKTsKIAogICAgIGlmIChuZWVkc1N0dWJMaW5rKSB7CiAgICAgICAg
IGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBpdGVyID0gbV9jYWxscy5iZWdpbigp
OyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgewpAQCAtODQ4LDcgKzg0OCw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90b0xpc3QoU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAKLSAg
ICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9v
bCgpKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX2dsb2JhbERhdGEsIHRoaXMsIG1f
Y29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKIAogICAgIGlmIChuZWVkc1N0dWJMaW5rKSB7
CiAgICAgICAgIGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+OjppdGVyYXRvciBpdGVyID0gbV9jYWxs
cy5iZWdpbigpOyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsraXRlcikgewpAQCAtOTE0LDcgKzkx
NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbkxpc3QoU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvLCBQb2x5bW9ycGhpCiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RP
ZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QwLCBjYWNoZWRPZmZzZXQpOwogICAgIEp1bXAgc3VjY2Vz
cyA9IGp1bXAoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9jb2RlQmxv
Y2stPmV4ZWN1dGFibGVQb29sKCkpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xv
YmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOwogICAgIAogICAg
IGlmIChuZWVkc1N0dWJMaW5rKSB7CiAgICAgICAgIGZvciAoVmVjdG9yPENhbGxSZWNvcmQ+Ojpp
dGVyYXRvciBpdGVyID0gbV9jYWxscy5iZWdpbigpOyBpdGVyICE9IG1fY2FsbHMuZW5kKCk7ICsr
aXRlcikgewpAQCAtOTgyLDcgKzk4Miw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5
SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAgICAg
ICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocHJvdG9PYmplY3QsIHJlZ1QwLCBjYWNoZWRPZmZz
ZXQpOwogICAgIEp1bXAgc3VjY2VzcyA9IGp1bXAoKTsKIAotICAgIExpbmtCdWZmZXIgcGF0Y2hC
dWZmZXIodGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOworICAgIExpbmtCdWZm
ZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0YSwgdGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFi
bGVQb29sKCkpOwogCiAgICAgaWYgKG5lZWRzU3R1YkxpbmspIHsKICAgICAgICAgZm9yIChWZWN0
b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIgIT0g
bV9jYWxscy5lbmQoKTsgKytpdGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCAxOWRiNzk2ODc3NGMwNjVmNjlh
YjY3NmVlNTI4NTBkYWQ3NmEzM2IxLi5iNzE0MmExZWUzZWM5MWZjMTZmMjBlZjAxYzM0YzM0Y2U5
OWNkMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKQEAgLTI4OSw3ICsyODksNyBAQCBKSVQ6OkNvZGVQdHIgSklUOjpz
dHJpbmdHZXRCeVZhbFN0dWJHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVj
dXRhYgogICAgIGppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVnVDApOwogICAgIGppdC5yZXQo
KTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCZqaXQsIHBvb2wpOworICAgIExp
bmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIHBvb2wpOwogICAgIHJldHVy
biBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKS5tX2NvZGU7CiB9CiAKQEAgLTYxNiw3ICs2MTYs
NyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YkluZm8sIFN0cnVjdHVyZQogICAgIHJlc3RvcmVBcmd1bWVudFJlZmVyZW5j
ZUZvclRyYW1wb2xpbmUoKTsKICAgICBDYWxsIGZhaWx1cmVDYWxsID0gdGFpbFJlY3Vyc2l2ZUNh
bGwoKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fY29kZUJsb2Nr
LT5leGVjdXRhYmxlUG9vbCgpKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCptX2dsb2Jh
bERhdGEsIHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKICAgICAKICAgICBw
YXRjaEJ1ZmZlci5saW5rKGZhaWx1cmVDYWxsLCBGdW5jdGlvblB0cihkaXJlY3QgPyBjdGlfb3Bf
cHV0X2J5X2lkX2RpcmVjdF9mYWlsIDogY3RpX29wX3B1dF9ieV9pZF9mYWlsKSk7CiAgICAgCkBA
IC02OTgsNyArNjk4LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxl
bmd0aChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCiAgICAgbW92ZShUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpLCByZWdUMSk7CiAgICAgSnVtcCBzdWNjZXNzID0ganVtcCgp
OwogICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9jb2RlQmxvY2stPmV4
ZWN1dGFibGVQb29sKCkpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0
YSwgdGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOwogICAgIAogICAgIC8vIFVz
ZSB0aGUgcGF0Y2ggaW5mb3JtYXRpb24gdG8gbGluayB0aGUgZmFpbHVyZSBjYXNlcyBiYWNrIHRv
IHRoZSBvcmlnaW5hbCBzbG93IGNhc2Ugcm91dGluZS4KICAgICBDb2RlTG9jYXRpb25MYWJlbCBz
bG93Q2FzZUJlZ2luID0gc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0
KC1wYXRjaE9mZnNldEdldEJ5SWRTbG93Q2FzZUNhbGwpOwpAQCAtNzU4LDcgKzc1OCw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFN0cnVjdHVyZSogc3RyCiAgICAgCiAgICAgSnVtcCBzdWNjZXNzID0ganVtcCgpOwog
ICAgIAotICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIodGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1
dGFibGVQb29sKCkpOworICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKm1fZ2xvYmFsRGF0YSwg
dGhpcywgbV9jb2RlQmxvY2stPmV4ZWN1dGFibGVQb29sKCkpOwogICAgIAogICAgIC8vIFVzZSB0
aGUgcGF0Y2ggaW5mb3JtYXRpb24gdG8gbGluayB0aGUgZmFpbHVyZSBjYXNlcyBiYWNrIHRvIHRo
ZSBvcmlnaW5hbCBzbG93IGNhc2Ugcm91dGluZS4KICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93
Q2FzZUJlZ2luID0gc3R1YkluZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbi5sYWJlbEF0T2Zmc2V0KC1w
YXRjaE9mZnNldEdldEJ5SWRTbG93Q2FzZUNhbGwpOwpAQCAtODE1LDcgKzgxNSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIFBvbHltb3JwaGljCiAKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAgICAgCi0g
ICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBv
b2woKSk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV9nbG9iYWxEYXRhLCB0aGlzLCBt
X2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBvb2woKSk7CiAgICAgaWYgKG5lZWRzU3R1YkxpbmspIHsK
ICAgICAgICAgZm9yIChWZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhbGxz
LmJlZ2luKCk7IGl0ZXIgIT0gbV9jYWxscy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBp
ZiAoaXRlci0+dG8pCkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
R2V0QnlJZFByb3RvTGlzdChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkK
ICAgICAKICAgICBKdW1wIHN1Y2Nlc3MgPSBqdW1wKCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcih0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBvb2woKSk7CisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcigqbV9nbG9iYWxEYXRhLCB0aGlzLCBtX2NvZGVCbG9jay0+ZXhl
Y3V0YWJsZVBvb2woKSk7CiAgICAgaWYgKG5lZWRzU3R1YkxpbmspIHsKICAgICAgICAgZm9yIChW
ZWN0b3I8Q2FsbFJlY29yZD46Oml0ZXJhdG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIg
IT0gbV9jYWxscy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+dG8pCkBA
IC05NDYsNyArOTQ2LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluTGlz
dChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIFBvbHltb3JwaGkKIAogICAgIEp1bXAgc3Vj
Y2VzcyA9IGp1bXAoKTsKICAgICAKLSAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1f
Y29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KCptX2dsb2JhbERhdGEsIHRoaXMsIG1fY29kZUJsb2NrLT5leGVjdXRhYmxlUG9vbCgpKTsKICAg
ICBpZiAobmVlZHNTdHViTGluaykgewogICAgICAgICBmb3IgKFZlY3RvcjxDYWxsUmVjb3JkPjo6
aXRlcmF0b3IgaXRlciA9IG1fY2FsbHMuYmVnaW4oKTsgaXRlciAhPSBtX2NhbGxzLmVuZCgpOyAr
K2l0ZXIpIHsKICAgICAgICAgICAgIGlmIChpdGVyLT50bykKQEAgLTEwMTMsNyArMTAxMyw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1Y3R1cmVTdHViSW5mbyog
c3R1YkluZm8sIFN0cnVjdHVyZSogc3RyCiAgICAgICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQo
cHJvdG9PYmplY3QsIHJlZ1QxLCByZWdUMCwgY2FjaGVkT2Zmc2V0KTsKICAgICBKdW1wIHN1Y2Nl
c3MgPSBqdW1wKCk7CiAgICAgCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih0aGlzLCBtX2Nv
ZGVCbG9jay0+ZXhlY3V0YWJsZVBvb2woKSk7CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
bV9nbG9iYWxEYXRhLCB0aGlzLCBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZVBvb2woKSk7CiAgICAg
aWYgKG5lZWRzU3R1YkxpbmspIHsKICAgICAgICAgZm9yIChWZWN0b3I8Q2FsbFJlY29yZD46Oml0
ZXJhdG9yIGl0ZXIgPSBtX2NhbGxzLmJlZ2luKCk7IGl0ZXIgIT0gbV9jYWxscy5lbmQoKTsgKytp
dGVyKSB7CiAgICAgICAgICAgICBpZiAoaXRlci0+dG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCmluZGV4IDczZDA4NDgyZTMxZjc1ZmVkZWYw
YWM4NDBkNDJmNzY2OTliNDQ4OTkuLjEzYTVjMmVlZTZlOWFmZTMxZTg4OTY1NzFiNDkyYzAxZGJi
NzYwNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVu
a0pJVC5oCkBAIC0xMjMsOSArMTIzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXQoKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGZpbmFsaXplKE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBmYWxsYmFjaykKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGZpbmFsaXplKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGZhbGxiYWNrKQogICAgICAgICB7Ci0gICAgICAgICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKHRoaXMsIG1fcG9vbC5nZXQoKSk7CisgICAgICAgICAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKGdsb2JhbERhdGEsIHRoaXMsIG1fcG9vbC5nZXQoKSk7CiAgICAgICAg
ICAgICBwYXRjaEJ1ZmZlci5saW5rKG1fZmFpbHVyZXMsIENvZGVMb2NhdGlvbkxhYmVsKGZhbGxi
YWNrKSk7CiAgICAgICAgICAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCkubV9j
b2RlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAKaW5kZXggMTIwMTY5NmJmZDZhNTNiOWEzZmQ2MTQxZDBlNTQ1YmE2ZTViMDMxZi4u
ZDYwZmQ0ZDlmNmNjNTk3MTU1MGRiZTM0NmVlNTk2MWJjYzZhY2YyNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAtNjgsNyArNjgsNyBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhlY3V0YQogICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KDEsIGds
b2JhbERhdGEsIHBvb2wpOwogICAgIHN0cmluZ0NoYXJMb2FkKGppdCk7CiAgICAgaml0LnJldHVy
bkludDMyKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFs
aXplKGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOworICAgIHJldHVybiBq
aXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRpdmVD
YWxsKCkpOwogfQogCiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY2hhckF0VGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxlUG9vbCogcG9vbCkKQEAgLTc3LDcg
Kzc3LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNoYXJBdFRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVAKICAgICBzdHJpbmdDaGFyTG9hZChqaXQp
OwogICAgIGNoYXJUb1N0cmluZyhqaXQsIGdsb2JhbERhdGEsIFNwZWNpYWxpemVkVGh1bmtKSVQ6
OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDEpOwogICAgIGppdC5yZXR1cm5KU0NlbGwoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAp
OwotICAgIHJldHVybiBqaXQuZmluYWxpemUoZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aU5hdGl2
ZUNhbGwoKSk7CisgICAgcmV0dXJuIGppdC5maW5hbGl6ZSgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0
YS0+aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwoKSk7CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
ZWN1dGFibGVQb29sKiBwb29sKQpAQCAtODcsNyArODcsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eGVjdQogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CiAgICAgY2hhclRvU3RyaW5nKGppdCwgZ2xvYmFsRGF0YSwgU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5r
SklUOjpyZWdUMSk7CiAgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZShnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3Rp
TmF0aXZlQ2FsbCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpKTsKIH0KIAogTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIHNxcnRUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWN1
dGFibGVQb29sKiBwb29sKQpAQCAtOTksNyArOTksNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
c3FydFRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY3V0YWJsZVBv
bwogICAgIGppdC5sb2FkRG91YmxlQXJndW1lbnQoMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBS
ZWdUMCwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIGppdC5zcXJ0RG91YmxlKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDAp
OwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0g
ICAgcmV0dXJuIGppdC5maW5hbGl6ZShnbG9iYWxEYXRhLT5qaXRTdHVicy0+Y3RpTmF0aXZlQ2Fs
bCgpKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5q
aXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCgpKTsKIH0KIAogc3RhdGljIGNvbnN0IGRvdWJsZSBvbmVD
b25zdGFudCA9IDEuMDsKQEAgLTE1NCw3ICsxNTQsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
cG93VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjdXRhYmxlUG9v
bAogICAgIH0gZWxzZQogICAgICAgICBqaXQuYXBwZW5kRmFpbHVyZShub25JbnRFeHBvbmVudCk7
CiAKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKGdsb2JhbERhdGEtPmppdFN0dWJzLT5jdGlOYXRp
dmVDYWxsKCkpOworICAgIHJldHVybiBqaXQuZmluYWxpemUoKmdsb2JhbERhdGEsIGdsb2JhbERh
dGEtPmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCA1MGFkNTU4MWY5MGU4YjIw
YjQ3YTQwODk3MTNjNTM2NDM3YjEwYTUzLi4xNzg1OTY1MzM3NTk2N2FiMjMwOTY0MzNhNjgzODVk
Yjc4ZWYxNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAKQEAgLTE3OCw2ICsxNzgsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShH
bG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlIHRocmVhZAogICAg
ICwgaWRlbnRpZmllclRhYmxlKGdsb2JhbERhdGFUeXBlID09IERlZmF1bHQgPyB3dGZUaHJlYWRE
YXRhKCkuY3VycmVudElkZW50aWZpZXJUYWJsZSgpIDogY3JlYXRlSWRlbnRpZmllclRhYmxlKCkp
CiAgICAgLCBwcm9wZXJ0eU5hbWVzKG5ldyBDb21tb25JZGVudGlmaWVycyh0aGlzKSkKICAgICAs
IGVtcHR5TGlzdChuZXcgTWFya2VkQXJndW1lbnRCdWZmZXIpCisgICAgLCBleGVjdXRhYmxlQWxs
b2NhdG9yKCp0aGlzKQorICAgICwgcmVnZXhBbGxvY2F0b3IoKnRoaXMpCiAgICAgLCBsZXhlcihu
ZXcgTGV4ZXIodGhpcykpCiAgICAgLCBwYXJzZXIobmV3IFBhcnNlcikKICAgICAsIGludGVycHJl
dGVyKDApCkBAIC00NDgsNiArNDUwLDE4IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpyZWNvbXBpbGVB
bGxKU0Z1bmN0aW9ucygpCiAgICAgaGVhcC5mb3JFYWNoKHJlY29tcGlsZXIpOwogfQogCit2b2lk
IEpTR2xvYmFsRGF0YTo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKQoreworICAgIGlmICghZHlu
YW1pY0dsb2JhbE9iamVjdCkKKyAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKKyAg
ICBtX3JlZ0V4cENhY2hlLT5pbnZhbGlkYXRlQ29kZSgpOworfQorICAgIAordm9pZCByZWxlYXNl
RXhlY3V0YWJsZU1lbW9yeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgZ2xvYmFs
RGF0YS5yZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpOworfQorCiAjaWYgRU5BQkxFKFJFR0VYUF9U
UkFDSU5HKQogdm9pZCBKU0dsb2JhbERhdGE6OmFkZFJlZ0V4cFRvVHJhY2UoUmVnRXhwKiByZWdF
eHApCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmlu
ZGV4IGFmNTM4MzYyZGEzMGE0YmJiMjlmNDI3OGIzMWVhNTgxZDZkMjRhZjAuLjVjNWE5MDljNmZj
MTZhY2ZlMTc3ZTc5YzhmOWM2NmIxYWZhY2I3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0yODEsNiArMjgxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgY2xlYXJCdWlsdGluU3RydWN0dXJlcygpOwogCiAgICAgICAgIGJv
b2wgaXNDb2xsZWN0b3JCdXN5KCkgeyByZXR1cm4gaGVhcC5pc0J1c3koKTsgfQorICAgICAgICB2
b2lkIHJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBK
U0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRleCA2NDc1NDI5Y2Q1YTVmMDEyMjEwYWM0
NjhiNmMyM2VmZDU4NGRkZGMyLi5lMDFkMDgxMjQwYmMzNzY2MmZjZGY4ZmQwMTQ0NWUxYTE3ZTIx
ZmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTQ1Miw2
ICs0NTIsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAKIGlubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKIHsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0
Q2hpbGRyZW4oKSA9PSBtX3N0cnVjdHVyZS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxk
cmVuKCkpOwogICAgIG1fc3RydWN0dXJlLnNldChnbG9iYWxEYXRhLCB0aGlzLCBzdHJ1Y3R1cmUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBD
YWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5jcHAK
aW5kZXggYzkyYzJhZDcwZmE5YjE2MGRiZTNjM2ZlNTU4NDRlMjcwMDYyY2JkNS4uOTdkNjQ0N2Iw
NjRmYWRkNDFjNjRhZThkYzk0NGNhYWE5ZTVlNGViZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcApAQCAtNzMsNCArNzMsMTQgQEAgdm9pZCBSZWdF
eHBDYWNoZTo6YWRkVG9TdHJvbmdDYWNoZShSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgbV9uZXh0
RW50cnlJblN0cm9uZ0NhY2hlID0gMDsKIH0KIAordm9pZCBSZWdFeHBDYWNoZTo6aW52YWxpZGF0
ZUNvZGUoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4U3Ryb25nQ2FjaGVhYmxl
RW50cmllczsgaSsrKQorICAgICAgICBtX3N0cm9uZ0NhY2hlW2ldLmNsZWFyKCk7CisgICAgbV9u
ZXh0RW50cnlJblN0cm9uZ0NhY2hlID0gMDsKKyAgICBSZWdFeHBDYWNoZU1hcDo6aXRlcmF0b3Ig
ZW5kID0gbV93ZWFrQ2FjaGUuZW5kKCk7CisgICAgZm9yIChSZWdFeHBDYWNoZU1hcDo6aXRlcmF0
b3IgcHRyID0gbV93ZWFrQ2FjaGUuYmVnaW4oKTsgcHRyICE9IGVuZDsgKytwdHIpCisgICAgICAg
IHB0ci0+c2Vjb25kLT5pbnZhbGlkYXRlQ29kZSgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaAppbmRleCBmYzk5MGViNGIyMTNkYzk0ZDI4ODM1
Mjk0OTY2NTE0MTU5MmZhMGQyLi40ZjNlYTE1MzZhNGVhZTEwZDlkY2JlYjc5NGVjZDc1MTBjMmE2
MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNo
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgdHlwZWRlZiBIYXNoTWFwPFJlZ0V4cEtleSwgV2VhazxSZWdFeHA+ID4g
UmVnRXhwQ2FjaGVNYXA7CiAKIHB1YmxpYzoKICAgICBSZWdFeHBDYWNoZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpOworICAgIHZvaWQgaW52YWxpZGF0ZUNvZGUoKTsKIAogcHJpdmF0ZToKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKaW5kZXggZjMzNTZiMThlY2M3
MjE1MWYzOTdiNzM3NWMzN2IxZTYwMDA1MzgzYi4uYTgyNGM2ZjI4MWFjMTUxNzFiZmRkZDg5NDI0
M2Y3YmNkODQ1ZDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAg
LTIzNTMsNyArMjM1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgYmFja3RyYWNrKCk7CiAKICAgICAg
ICAgLy8gTGluayAmIGZpbmFsaXplIHRoZSBjb2RlLgotICAgICAgICBMaW5rQnVmZmVyIGxpbmtC
dWZmZXIodGhpcywgZ2xvYmFsRGF0YS0+cmVnZXhBbGxvY2F0b3IpOworICAgICAgICBMaW5rQnVm
ZmVyIGxpbmtCdWZmZXIoKmdsb2JhbERhdGEsIHRoaXMsIGdsb2JhbERhdGEtPnJlZ2V4QWxsb2Nh
dG9yKTsKICAgICAgICAgbV9iYWNrdHJhY2tpbmdTdGF0ZS5saW5rRGF0YUxhYmVscyhsaW5rQnVm
ZmVyKTsKICAgICAgICAgaml0T2JqZWN0LnNldChsaW5rQnVmZmVyLmZpbmFsaXplQ29kZSgpKTsK
ICAgICAgICAgaml0T2JqZWN0LnNldEZhbGxCYWNrKG1fc2hvdWxkRmFsbEJhY2spOwo=
</data>
<flag name="review"
          id="88645"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>