<?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>24907</bug_id>
          
          <creation_ts>2009-03-27 20:07:25 -0700</creation_ts>
          <short_desc>Improve performance of Function.prototype.call</short_desc>
          <delta_ts>2009-03-27 20:51:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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="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>115650</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-27 20:07:25 -0700</bug_when>
    <thetext>bug exists for patch review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115651</commentid>
    <comment_count>1</comment_count>
      <attachid>29034</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-27 20:08:50 -0700</bug_when>
    <thetext>Created attachment 29034
yay improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115652</commentid>
    <comment_count>2</comment_count>
      <attachid>29034</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-03-27 20:17:09 -0700</bug_when>
    <thetext>Comment on attachment 29034
yay improvement.

Evil whitespace in JavaScriptCore/runtime/JSGlobalObject.cpp shouldn&apos;t be there.
r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115653</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-27 20:51:34 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/bytecode/CodeBlock.cpp
	M	JavaScriptCore/bytecode/Opcode.h
	M	JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
	M	JavaScriptCore/bytecompiler/BytecodeGenerator.h
	M	JavaScriptCore/interpreter/Interpreter.cpp
	M	JavaScriptCore/jit/JIT.cpp
	M	JavaScriptCore/parser/Grammar.y
	M	JavaScriptCore/parser/Nodes.cpp
	M	JavaScriptCore/parser/Nodes.h
	M	JavaScriptCore/runtime/FunctionPrototype.cpp
	M	JavaScriptCore/runtime/FunctionPrototype.h
	M	JavaScriptCore/runtime/JSGlobalObject.cpp
	M	JavaScriptCore/runtime/JSGlobalObject.h
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/js/function-call-aliased-expected.txt
	A	LayoutTests/fast/js/function-call-aliased.html
	A	LayoutTests/fast/js/resources/function-call-aliased.js
	M	LayoutTests/fast/profiler/call-expected.txt
Committed r42065
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29034</attachid>
            <date>2009-03-27 20:08:50 -0700</date>
            <delta_ts>2009-03-27 20:17:09 -0700</delta_ts>
            <desc>yay improvement.</desc>
            <filename>call-improvement.patch</filename>
            <type>text/plain</type>
            <size>21480</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCA1NjFiMzRkLi5mMGNkNjU5IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMDktMDMtMjcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXByb3ZlIHBlcmZvcm1h
bmNlIG9mIEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5MDc+CisKKyAgICAgICAgT3B0aW1pc3RpY2FsbHkg
YXNzdW1lIHRoYXQgZXhwcmVzc2lvbi5jYWxsKC4uKSBpcyBnb2luZyB0byBiZSBhIGNhbGwgdG8K
KyAgICAgICAgRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsIGFuZCBoYW5kbGUgaXQgc3BlY2lhbGx5
IHRvIGF0dGVtcHQgdG8gcmVkdWNlIHRoZQorICAgICAgICBkZWdyZWUgb2YgVk0gcmVlbnRyYW5j
eS4KKworICAgICAgICBXaGVuIGV2ZXJ5dGhpbmcgZ29lcyByaWdodCB0aGlzIHJlbW92ZXMgdGhl
IHZtIHJlZW50cnkgaW1wcm92aW5nIC5jYWxsKCkKKyAgICAgICAgYnkgYXJvdW5kIGEgZmFjdG9y
IG9mIDEwLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcyk6CisgICAgICAgICogcGFyc2VyL0dyYW1tYXIueToKKyAgICAgICAgKiBwYXJz
ZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpTQzo6Q2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6Oik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblBy
b3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om1hcmspOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKwogMjAwOS0wMy0yNyAgTGFzemxvIEdv
bWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBiZTA2
MGQwLi5iMGNkMTIxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTg4
OCwxMSArODg4LDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImCiAgICAgICAgICAgICBwcmlu
dENvbmRpdGlvbmFsSnVtcChiZWdpbiwgaXQsIGxvY2F0aW9uLCAiam5lcV9udWxsIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2pubGVzczogeworICAg
ICAgICBjYXNlIG9wX2puZXFfcHRyOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRm
KCJbJTRkXSBqbmxlc3NcdFx0ICVzLCAlcywgJWQoLT4lZClcbiIsIGxvY2F0aW9uLCByZWdpc3Rl
ck5hbWUocjApLmNfc3RyKCksIHJlZ2lzdGVyTmFtZShyMSkuY19zdHIoKSwgb2Zmc2V0LCBsb2Nh
dGlvbkZvck9mZnNldChiZWdpbiwgaXQsIG9mZnNldCkpOworICAgICAgICAgICAgcHJpbnRmKCJb
JTRkXSBqbmVxX3B0clx0XHQgJXMsICVzLCAlZCgtPiVkKVxuIiwgbG9jYXRpb24sIHJlZ2lzdGVy
TmFtZShyMCkuY19zdHIoKSwgcmVnaXN0ZXJOYW1lKHIxKS5jX3N0cigpLCBvZmZzZXQsIGxvY2F0
aW9uRm9yT2Zmc2V0KGJlZ2luLCBpdCwgb2Zmc2V0KSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX2pubGVzczogeworICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBKU1ZhbHVlUHRyIGZ1bmN0aW9uID0gSlNW
YWx1ZVB0cigoKytpdCktPnUuanNDZWxsKTsKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gam5sZXNzXHRcdCAlcywg
JXMsICVkKC0+JWQpXG4iLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKHIwKS5jX3N0cigpLCB2YWx1
ZVRvU291cmNlU3RyaW5nKGV4ZWMsIGZ1bmN0aW9uKS5hc2NpaSgpLCBvZmZzZXQsIGxvY2F0aW9u
Rm9yT2Zmc2V0KGJlZ2luLCBpdCwgb2Zmc2V0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2xvb3BfaWZfbGVzczogewpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAppbmRleCBkMDAxNzhiLi43YjUyZTJmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApA
QCAtMTI1LDYgKzEyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9qZmFs
c2UsIDMpIFwKICAgICAgICAgbWFjcm8ob3BfamVxX251bGwsIDMpIFwKICAgICAgICAgbWFjcm8o
b3Bfam5lcV9udWxsLCAzKSBcCisgICAgICAgIG1hY3JvKG9wX2puZXFfcHRyLCA0KSBcCiAgICAg
ICAgIG1hY3JvKG9wX2pubGVzcywgNCkgXAogICAgICAgICBtYWNybyhvcF9qbXBfc2NvcGVzLCAz
KSBcCiAgICAgICAgIG1hY3JvKG9wX2xvb3AsIDIpIFwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGM4M2NkYzcuLmIwNzM4ZDgg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtNjk1LDYgKzY5NSwxNSBAQCBQYXNzUmVmUHRyPExhYmVsPiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEp1bXBJZkZhbHNlKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsKiB0YQogICAgIHJl
dHVybiB0YXJnZXQ7CiB9CiAKK1Bhc3NSZWZQdHI8TGFiZWw+IEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKFJlZ2lzdGVySUQqIGNvbmQsIExhYmVsKiB0YXJnZXQp
Cit7CisgICAgZW1pdE9wY29kZShvcF9qbmVxX3B0cik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNvbmQtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX3Njb3BlQ2hh
aW4tPmdsb2JhbE9iamVjdCgpLT5kKCktPmNhbGxGdW5jdGlvbik7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHRhcmdldC0+b2Zmc2V0RnJvbShpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKKyAg
ICByZXR1cm4gdGFyZ2V0OworfQorCiB1bnNpZ25lZCBCeXRlY29kZUdlbmVyYXRvcjo6YWRkQ29u
c3RhbnQoRnVuY0RlY2xOb2RlKiBuKQogewogICAgIC8vIE5vIG5lZWQgdG8gZXhwbGljaXRseSB1
bmlxdWUgZnVuY3Rpb24gYm9keSBub2RlcyAtLSB0aGV5J3JlIHVuaXF1ZSBhbHJlYWR5LgpkaWZm
IC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBh
NmYyNDVkLi4zNzg1MjE0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaApAQCAtMjk4LDYgKzI5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBQYXNzUmVmUHRyPExhYmVsPiBlbWl0SnVtcChMYWJlbCogdGFyZ2V0KTsKICAgICAgICAg
UGFzc1JlZlB0cjxMYWJlbD4gZW1pdEp1bXBJZlRydWUoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwq
IHRhcmdldCk7CiAgICAgICAgIFBhc3NSZWZQdHI8TGFiZWw+IGVtaXRKdW1wSWZGYWxzZShSZWdp
c3RlcklEKiBjb25kLCBMYWJlbCogdGFyZ2V0KTsKKyAgICAgICAgUGFzc1JlZlB0cjxMYWJlbD4g
ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChSZWdpc3RlcklEKiBjb25kLCBMYWJlbCogdGFyZ2V0
KTsKICAgICAgICAgUGFzc1JlZlB0cjxMYWJlbD4gZW1pdEp1bXBTY29wZXMoTGFiZWwqIHRhcmdl
dCwgaW50IHRhcmdldFNjb3BlRGVwdGgpOwogCiAgICAgICAgIFBhc3NSZWZQdHI8TGFiZWw+IGVt
aXRKdW1wU3Vicm91dGluZShSZWdpc3RlcklEKiByZXRBZGRyRHN0LCBMYWJlbCopOwpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDVmZjNjMzUuLjQzMWEx
OWMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTI2
NjYsNiArMjY2NiwyNCBAQCBKU1ZhbHVlUHRyIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShF
eGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZQogICAgICAgICArK3ZQQzsK
ICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KKyAgICBERUZJTkVfT1BDT0RFKG9w
X2puZXFfcHRyKSB7CisgICAgICAgIC8qIGpuZXFfcHRyIHNyYyhyKSBwdHIoanNDZWxsKSB0YXJn
ZXQob2Zmc2V0KQorICAgICAgICAgCisgICAgICAgICAgIEp1bXBzIHRvIG9mZnNldCB0YXJnZXQg
ZnJvbSB0aGUgY3VycmVudCBpbnN0cnVjdGlvbiwgaWYgdGhlIHZhbHVlIHIgaXMgZXF1YWwKKyAg
ICAgICAgICAgdG8gcHRyLCB1c2luZyBwb2ludGVyIGVxdWFsaXR5LgorICAgICAgICAgKi8KKyAg
ICAgICAgaW50IHNyYyA9ICgrK3ZQQyktPnUub3BlcmFuZDsKKyAgICAgICAgSlNWYWx1ZVB0ciBw
dHIgPSBKU1ZhbHVlUHRyKCgrK3ZQQyktPnUuanNDZWxsKTsKKyAgICAgICAgaW50IHRhcmdldCA9
ICgrK3ZQQyktPnUub3BlcmFuZDsKKyAgICAgICAgSlNWYWx1ZVB0ciBzcmNWYWx1ZSA9IGNhbGxG
cmFtZVtzcmNdLmpzVmFsdWUoY2FsbEZyYW1lKTsKKyAgICAgICAgaWYgKHNyY1ZhbHVlICE9IHB0
cikgeworICAgICAgICAgICAgdlBDICs9IHRhcmdldDsKKyAgICAgICAgICAgIE5FWFRfSU5TVFJV
Q1RJT04oKTsKKyAgICAgICAgfQorCisgICAgICAgICsrdlBDOworICAgICAgICBORVhUX0lOU1RS
VUNUSU9OKCk7CisgICAgfQogICAgIERFRklORV9PUENPREUob3BfbG9vcF9pZl9sZXNzKSB7CiAg
ICAgICAgIC8qIGxvb3BfaWZfbGVzcyBzcmMxKHIpIHNyYzIocikgdGFyZ2V0KG9mZnNldCkKIApk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCBlNjExM2ZjLi4xMmVmMDAzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtODE5
LDYgKzgxOSwxNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
ICAgICBSRUNPUkRfSlVNUF9UQVJHRVQodGFyZ2V0ICsgMik7CiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9qbmVxX251bGwpOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6
IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHNyYyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBKU0NlbGwqIHB0ciA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LmpzQ2VsbDsKKyAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIoc3JjLCByZWdUMCk7CisgICAgICAgICAgICBhZGRKdW1wKGJyYW5jaFB0cihOb3RF
cXVhbCwgcmVnVDAsIEltbVB0cihKU1ZhbHVlUHRyOjplbmNvZGUoSlNWYWx1ZVB0cihwdHIpKSkp
LCB0YXJnZXQgKyAzKTsgICAgICAgICAgICAKKworICAgICAgICAgICAgUkVDT1JEX0pVTVBfVEFS
R0VUKHRhcmdldCArIDMpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfam5lcV9wdHIpOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcG9zdF9pbmM6IHsKICAgICAgICAgICAgIGNvbXBp
bGVGYXN0QXJpdGhfb3BfcG9zdF9pbmMoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwg
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wb3N0X2luYyk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvR3JhbW1h
ci55IGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0dyYW1tYXIueQppbmRleCBhZTc4N2Y2Li5hMGMy
ZTNjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvR3JhbW1hci55CisrKyBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9HcmFtbWFyLnkKQEAgLTE5MjUsNyArMTkyNSwxMSBAQCBzdGF0
aWMgRXhwcmVzc2lvbk5vZGVJbmZvIG1ha2VGdW5jdGlvbkNhbGxOb2RlKHZvaWQqIGdsb2JhbFB0
ciwgRXhwcmVzc2lvbk5vZGVJbgogICAgIH0KICAgICBBU1NFUlQoZnVuYy5tX25vZGUtPmlzRG90
QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8
RG90QWNjZXNzb3JOb2RlKj4oZnVuYy5tX25vZGUpOwotICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUq
IG5vZGUgPSBuZXcgRnVuY3Rpb25DYWxsRG90Tm9kZShHTE9CQUxfREFUQSwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLm1fbm9kZSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKKyAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOworICAgIGlmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBHTE9CQUxfREFUQS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKKyAgICAg
ICAgbm9kZSA9IG5ldyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShHTE9CQUxfREFUQSwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLm1fbm9kZSwgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUgPSBuZXcgRnVuY3Rpb25D
YWxsRG90Tm9kZShHTE9CQUxfREFUQSwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBh
cmdzLm1fbm9kZSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2Rl
LT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwog
ICAgIHJldHVybiBjcmVhdGVOb2RlSW5mbzxFeHByZXNzaW9uTm9kZSo+KG5vZGUsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpOwogfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggNTJhOGJhZi4u
ZjQ2MWJiZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC02OTQsNiArNjk0LDM4IEBAIFJl
Z2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKSwgZnVuY3Rpb24uZ2V0
KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgbV9hcmdzLmdldCgpLCBkaXZvdCgpLCBzdGFydE9mZnNl
dCgpLCBlbmRPZmZzZXQoKSk7CiB9CiAKK1JlZ2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQoreworICAgIFJlZlB0cjxMYWJlbD4gcmVhbENhbGwgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKKyAgICBSZWZQdHI8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZS5nZXQo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpIC0gbV9zdWJleHBy
ZXNzaW9uRGl2b3RPZmZzZXQsIHN0YXJ0T2Zmc2V0KCkgLSBtX3N1YmV4cHJlc3Npb25EaXZvdE9m
ZnNldCwgbV9zdWJleHByZXNzaW9uRW5kT2Zmc2V0KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
ZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZmlu
YWxEZXN0aW5hdGlvbiA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24u
Z2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9u
LmdldCgpLCByZWFsQ2FsbC5nZXQoKSk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlz
UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgIFJlZlB0cjxBcmd1
bWVudExpc3ROb2RlPiBvbGRMaXN0ID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgICAgICBpZiAo
bV9hcmdzLT5tX2xpc3ROb2RlICYmIG1fYXJncy0+bV9saXN0Tm9kZS0+bV9leHByKSB7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUodGhpc1JlZ2lzdGVyLmdldCgpLCBtX2FyZ3MtPm1f
bGlzdE5vZGUtPm1fZXhwci5nZXQoKSk7CisgICAgICAgICAgICBtX2FyZ3MtPm1fbGlzdE5vZGUg
PSBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TG9hZCh0aGlzUmVnaXN0ZXIuZ2V0KCksIGpzTnVsbCgpKTsKKyAg
ICAgICAgfQorICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZmluYWxEZXN0aW5hdGlvbi5nZXQo
KSwgcmVhbEZ1bmN0aW9uLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIG1fYXJncy5nZXQoKSwg
ZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXAoZW5kLmdldCgpKTsKKyAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gb2xkTGlz
dDsKKyAgICB9CisgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChyZWFsQ2FsbC5nZXQoKSk7CisgICAg
eworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXRNb3ZlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChmaW5hbERlc3RpbmF0aW9uLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwg
dGhpc1JlZ2lzdGVyLmdldCgpLCBtX2FyZ3MuZ2V0KCksIGRpdm90KCksIHN0YXJ0T2Zmc2V0KCks
IGVuZE9mZnNldCgpKTsKKyAgICB9CisgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChlbmQuZ2V0KCkp
OworICAgIHJldHVybiBmaW5hbERlc3RpbmF0aW9uLmdldCgpOworfQorCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gUG9zdGZpeFJlc29sdmVOb2RlIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRQcmVJbmNPckRlYyhC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzcmNEc3QsIE9wZXJhdG9y
IG9wZXIpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IGQ4NGRlZGIuLjdlOWEzOWMgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCkBAIC03NjMsMTIgKzc2MywyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgIHByaXZhdGU6CisgICAgcHJv
dGVjdGVkOgogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fYmFzZTsKICAgICAgICAg
SWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBSZWZQdHI8QXJndW1lbnRzTm9kZT4gbV9hcmdz
OwogICAgIH07CiAKKyAgICBjbGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBG
dW5jdGlvbkNhbGxEb3ROb2RlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1Rf
Q0FMTAorICAgICAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGdsb2JhbERhdGEsIGJhc2Us
IGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICAgICAgewor
ICAgICAgICB9CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgIH07CisK
ICAgICBjbGFzcyBQcmVQb3N0UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgogICAgICAgICBQcmVQ
b3N0UmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAKaW5kZXggMDFmYzU3Yy4uNDBlMTIzYiAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTQzLDExICs0MywxMiBAQCBGdW5j
dGlvblByb3RvdHlwZTo6RnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gc3RydQogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDApLCBEb250RGVsZXRlIHwg
UmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAKLXZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1
bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVu
Y3Rpb25TdHJ1Y3R1cmUpCit2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3Bl
cnRpZXMoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLCBQcm90b3R5cGVGdW5jdGlvbioqIGNhbGxGdW5jdGlvbikKIHsKICAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rp
b24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS50b1N0cmluZywgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJv
dG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSksIERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpLCBEb250
RW51bSk7CisgICAgKmNhbGxGdW5jdGlvbiA9IG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24o
ZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogfQogCiBzdGF0
aWMgSlNWYWx1ZVB0ciBjYWxsRnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBKU1ZhbHVlUHRyLCBjb25zdCBBcmdMaXN0JikKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuaAppbmRleCAzM2Q2OGI3Li42MTNmZDU2IDEwMDY0NAotLS0gYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCkBAIC0yNSwxMCArMjUsMTIgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBQcm90b3R5cGVGdW5jdGlvbjsKKwogICAgIGNsYXNz
IEZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogICAgIHB1Ymxp
YzoKICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUoRXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+KTsKLSAgICAgICAgdm9pZCBhZGRGdW5jdGlvblByb3BlcnRpZXMoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSk7CisgICAgICAgIHZvaWQgYWRk
RnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUsIFByb3RvdHlwZUZ1bmN0aW9uKiogY2FsbEZ1bmN0aW9uKTsKIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlUHRy
IHByb3RvKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGQ2YWQyOTUuLjYzMGM5MmEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC0yMDMsNyArMjAzLDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
cmVzZXQoSlNWYWx1ZVB0ciBwcm90b3R5cGUpCiAKICAgICBkKCktPmZ1bmN0aW9uUHJvdG90eXBl
ID0gbmV3IChleGVjKSBGdW5jdGlvblByb3RvdHlwZShleGVjLCBGdW5jdGlvblByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSk7IC8vIFRoZSByZWFsIHByb3RvdHlwZSB3aWxsIGJl
IHNldCBvbmNlIE9iamVjdFByb3RvdHlwZSBpcyBjcmVhdGVkLgogICAgIGQoKS0+cHJvdG90eXBl
RnVuY3Rpb25TdHJ1Y3R1cmUgPSBQcm90b3R5cGVGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGQo
KS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPmFkZEZ1
bmN0aW9uUHJvcGVydGllcyhleGVjLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdl
dCgpKTsKKyAgICBQcm90b3R5cGVGdW5jdGlvbiogY2FsbEZ1bmN0aW9uID0gMDsKKyAgICBkKCkt
PmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXMoZXhlYywgZCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbik7CisgICAgZCgpLT5j
YWxsRnVuY3Rpb24gPSBjYWxsRnVuY3Rpb247CiAgICAgZCgpLT5vYmplY3RQcm90b3R5cGUgPSBu
ZXcgKGV4ZWMpIE9iamVjdFByb3RvdHlwZShleGVjLCBPYmplY3RQcm90b3R5cGU6OmNyZWF0ZVN0
cnVjdHVyZShqc051bGwoKSksIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCkp
OwogICAgIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUtPnN0cnVjdHVyZSgpLT5zZXRQcm90b3R5cGVX
aXRob3V0VHJhbnNpdGlvbihkKCktPm9iamVjdFByb3RvdHlwZSk7CiAKQEAgLTM2OCw4ICszNzAs
OSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrKCkKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5z
eW50YXhFcnJvckNvbnN0cnVjdG9yKTsKICAgICBtYXJrSWZOZWVkZWQoZCgpLT50eXBlRXJyb3JD
b25zdHJ1Y3Rvcik7CiAgICAgbWFya0lmTmVlZGVkKGQoKS0+VVJJRXJyb3JDb25zdHJ1Y3Rvcik7
Ci0KKyAgICAKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5ldmFsRnVuY3Rpb24pOworICAgIG1hcmtJ
Zk5lZWRlZChkKCktPmNhbGxGdW5jdGlvbik7CiAKICAgICBtYXJrSWZOZWVkZWQoZCgpLT5vYmpl
Y3RQcm90b3R5cGUpOwogICAgIG1hcmtJZk5lZWRlZChkKCktPmZ1bmN0aW9uUHJvdG90eXBlKTsK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBjZWI3YmMyLi4xZWM5
NjQ2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MCw2ICs0
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdsb2JhbEV2YWxGdW5jdGlvbjsKICAg
ICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxv
Y2s7CisgICAgY2xhc3MgUHJvdG90eXBlRnVuY3Rpb247CiAgICAgY2xhc3MgUmVnRXhwQ29uc3Ry
dWN0b3I7CiAgICAgY2xhc3MgUmVnRXhwUHJvdG90eXBlOwogICAgIGNsYXNzIFJlZ2lzdGVyRmls
ZTsKQEAgLTEwNCw2ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIFVSSUVycm9yQ29uc3RydWN0b3I7CiAKICAgICAgICAgICAgIEds
b2JhbEV2YWxGdW5jdGlvbiogZXZhbEZ1bmN0aW9uOworICAgICAgICAgICAgUHJvdG90eXBlRnVu
Y3Rpb24qIGNhbGxGdW5jdGlvbjsKIAogICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmpl
Y3RQcm90b3R5cGU7CiAgICAgICAgICAgICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggN2ZhZTE1OC4uM2NhNmRlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDA5LTAzLTI3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgdG8gdmVyaWZ5IGJlaGF2
aW91ciBvZiBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbAorCisgICAgICAgICogZmFzdC9qcy9mdW5j
dGlvbi1jYWxsLWFsaWFzZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L2Z1bmN0aW9uLWNhbGwtYWxpYXNlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jl
c291cmNlcy9mdW5jdGlvbi1jYWxsLWFsaWFzZWQuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
cHJvZmlsZXIvY2FsbC1leHBlY3RlZC50eHQ6CisKIDIwMDktMDMtMjcgIERhdmlkIEh5YXR0ICA8
aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlcgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1jYWxsLWFsaWFzZWQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi1jYWxsLWFsaWFzZWQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZWM1ZjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLWNhbGwtYWxpYXNlZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBAQAorVGhpcyB0ZXN0cyB0aGF0IHdlIGNhbiBjb3Jy
ZWN0bHkgY2FsbCBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBteU9iamVjdC5jYWxsKCkgaXMgW215T2JqZWN0LCAibXlPYmplY3Qu
Y2FsbCJdCitQQVNTIG15RnVuY3Rpb24oJ2FyZzEnKSBpcyBbdGhpcywgIm15RnVuY3Rpb24iLCAi
YXJnMSJdCitQQVNTIG15RnVuY3Rpb24uY2FsbChteU9iamVjdCwgJ2FyZzEnKSBpcyBbbXlPYmpl
Y3QsICJteUZ1bmN0aW9uIiwgImFyZzEiXQorUEFTUyBteUZ1bmN0aW9uLmNhbGwoKSBpcyBbdGhp
cywgIm15RnVuY3Rpb24iLCB1bmRlZmluZWRdCitQQVNTIG15RnVuY3Rpb24uY2FsbChudWxsKSBp
cyBbdGhpcywgIm15RnVuY3Rpb24iLCB1bmRlZmluZWRdCitQQVNTIG15RnVuY3Rpb24uY2FsbCh1
bmRlZmluZWQpIGlzIFt0aGlzLCAibXlGdW5jdGlvbiIsIHVuZGVmaW5lZF0KK1BBU1MgbXlGdW5j
dGlvbi5hbGlhc2VkQ2FsbChteU9iamVjdCwgJ2FyZzEnKSBpcyBbbXlPYmplY3QsICJteUZ1bmN0
aW9uIiwgImFyZzEiXQorUEFTUyBteUZ1bmN0aW9uLmFsaWFzZWRDYWxsKCkgaXMgW3RoaXMsICJt
eUZ1bmN0aW9uIiwgdW5kZWZpbmVkXQorUEFTUyBteUZ1bmN0aW9uLmFsaWFzZWRDYWxsKG51bGwp
IGlzIFt0aGlzLCAibXlGdW5jdGlvbiIsIHVuZGVmaW5lZF0KK1BBU1MgbXlGdW5jdGlvbi5hbGlh
c2VkQ2FsbCh1bmRlZmluZWQpIGlzIFt0aGlzLCAibXlGdW5jdGlvbiIsIHVuZGVmaW5lZF0KK1BB
U1MgbXlGdW5jdGlvbldpdGhDYWxsLmNhbGwobXlPYmplY3QsICdhcmcxJykgaXMgW215RnVuY3Rp
b25XaXRoQ2FsbCwgIm15RnVuY3Rpb25XaXRoQ2FsbC5jYWxsIiwgbXlPYmplY3RdCitQQVNTIG15
RnVuY3Rpb25XaXRoQ2FsbC5hbGlhc2VkQ2FsbChteU9iamVjdCwgJ2FyZzEnKSBpcyBbbXlPYmpl
Y3QsICJteUZ1bmN0aW9uV2l0aENhbGwiLCAiYXJnMSJdCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9qcy9mdW5jdGlvbi1jYWxsLWFsaWFzZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvZnVu
Y3Rpb24tY2FsbC1hbGlhc2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uY2Q1YjZhMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rp
b24tY2FsbC1hbGlhc2VkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9mdW5jdGlvbi1jYWxsLWFsaWFzZWQuanMiIHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tY2FsbC1hbGlhc2Vk
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tY2FsbC1hbGlhc2Vk
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNjEwOWIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9mdW5jdGlvbi1jYWxsLWFs
aWFzZWQuanMKQEAgLTAsMCArMSwyNCBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0ZXN0cyB0aGF0
IHdlIGNhbiBjb3JyZWN0bHkgY2FsbCBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCIKKyk7CisKK3Zh
ciBteU9iamVjdCA9IHsgY2FsbDogZnVuY3Rpb24oKSB7IHJldHVybiBbbXlPYmplY3QsICJteU9i
amVjdC5jYWxsIl0gfSB9OwordmFyIG15RnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJnMSkgeyByZXR1
cm4gW3RoaXMsICJteUZ1bmN0aW9uIiwgYXJnMV0gfTsKK3ZhciBteUZ1bmN0aW9uV2l0aENhbGwg
PSBmdW5jdGlvbiAoYXJnMSkgeyByZXR1cm4gW3RoaXMsICJteUZ1bmN0aW9uV2l0aENhbGwiLCBh
cmcxXSB9OworbXlGdW5jdGlvbldpdGhDYWxsLmNhbGwgPSBmdW5jdGlvbiAoYXJnMSkgeyByZXR1
cm4gW3RoaXMsICJteUZ1bmN0aW9uV2l0aENhbGwuY2FsbCIsIGFyZzFdIH07CitGdW5jdGlvbi5w
cm90b3R5cGUuYWxpYXNlZENhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDsKKworc2hvdWxk
QmUoIm15T2JqZWN0LmNhbGwoKSIsICdbbXlPYmplY3QsICJteU9iamVjdC5jYWxsIl0nKTsKK3No
b3VsZEJlKCJteUZ1bmN0aW9uKCdhcmcxJykiLCAnW3RoaXMsICJteUZ1bmN0aW9uIiwgImFyZzEi
XScpOworc2hvdWxkQmUoIm15RnVuY3Rpb24uY2FsbChteU9iamVjdCwgJ2FyZzEnKSIsICdbbXlP
YmplY3QsICJteUZ1bmN0aW9uIiwgImFyZzEiXScpOworc2hvdWxkQmUoIm15RnVuY3Rpb24uY2Fs
bCgpIiwgJ1t0aGlzLCAibXlGdW5jdGlvbiIsIHVuZGVmaW5lZF0nKTsKK3Nob3VsZEJlKCJteUZ1
bmN0aW9uLmNhbGwobnVsbCkiLCAnW3RoaXMsICJteUZ1bmN0aW9uIiwgdW5kZWZpbmVkXScpOwor
c2hvdWxkQmUoIm15RnVuY3Rpb24uY2FsbCh1bmRlZmluZWQpIiwgJ1t0aGlzLCAibXlGdW5jdGlv
biIsIHVuZGVmaW5lZF0nKTsKK3Nob3VsZEJlKCJteUZ1bmN0aW9uLmFsaWFzZWRDYWxsKG15T2Jq
ZWN0LCAnYXJnMScpIiwgJ1tteU9iamVjdCwgIm15RnVuY3Rpb24iLCAiYXJnMSJdJyk7CitzaG91
bGRCZSgibXlGdW5jdGlvbi5hbGlhc2VkQ2FsbCgpIiwgJ1t0aGlzLCAibXlGdW5jdGlvbiIsIHVu
ZGVmaW5lZF0nKTsKK3Nob3VsZEJlKCJteUZ1bmN0aW9uLmFsaWFzZWRDYWxsKG51bGwpIiwgJ1t0
aGlzLCAibXlGdW5jdGlvbiIsIHVuZGVmaW5lZF0nKTsKK3Nob3VsZEJlKCJteUZ1bmN0aW9uLmFs
aWFzZWRDYWxsKHVuZGVmaW5lZCkiLCAnW3RoaXMsICJteUZ1bmN0aW9uIiwgdW5kZWZpbmVkXScp
Oworc2hvdWxkQmUoIm15RnVuY3Rpb25XaXRoQ2FsbC5jYWxsKG15T2JqZWN0LCAnYXJnMScpIiwg
J1tteUZ1bmN0aW9uV2l0aENhbGwsICJteUZ1bmN0aW9uV2l0aENhbGwuY2FsbCIsIG15T2JqZWN0
XScpOworc2hvdWxkQmUoIm15RnVuY3Rpb25XaXRoQ2FsbC5hbGlhc2VkQ2FsbChteU9iamVjdCwg
J2FyZzEnKSIsICdbbXlPYmplY3QsICJteUZ1bmN0aW9uV2l0aENhbGwiLCAiYXJnMSJdJyk7CisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvY2FsbC1leHBlY3RlZC50eHQKaW5kZXggOTYxZDVmYi4uZmMyYzMwMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9jYWxsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL2NhbGwtZXhwZWN0ZWQudHh0CkBAIC02LDggKzYsNyBAQCBQcm9m
aWxlIHRpdGxlOiBVc2luZyB0aGUgY2FsbCgpIG1ldGhvZAogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDApCiAgICBzdGFydFRlc3QgY2FsbC5odG1sIChsaW5lIDExKQogICAgICAgZmFrZU9iamVj
dCBjYWxsLmh0bWwgKGxpbmUgMjApCi0gICAgICAgICBjYWxsIChubyBmaWxlKSAobGluZSAwKQot
ICAgICAgICAgICAgZmFrZUludGVyaW9yRnVuY3Rpb24gY2FsbC5odG1sIChsaW5lIDI2KQorICAg
ICAgICAgZmFrZUludGVyaW9yRnVuY3Rpb24gY2FsbC5odG1sIChsaW5lIDI2KQogICAgICAgZW5k
VGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxKQogCiAK
</data>
<flag name="review"
          id="14375"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>