<?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>96231</bug_id>
          
          <creation_ts>2012-09-09 22:57:14 -0700</creation_ts>
          <short_desc>Refactored op_tear_off* to support activations that don&apos;t allocate space for &apos;arguments&apos;</short_desc>
          <delta_ts>2012-09-10 16:13:50 -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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715731</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-09 22:57:14 -0700</bug_when>
    <thetext>Refactored op_tear_off* to support activations that don&apos;t allocate space for &apos;arguments&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715738</commentid>
    <comment_count>1</comment_count>
      <attachid>163044</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-09 23:22:09 -0700</bug_when>
    <thetext>Created attachment 163044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715810</commentid>
    <comment_count>2</comment_count>
      <attachid>163044</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-09-10 01:14:04 -0700</bug_when>
    <thetext>Comment on attachment 163044
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1116
&gt; +    // We can&apos;t hash JSValue(), so just return a non-uniqued value.

We could cache this separately from the hashtable (remember the first added in a separate var).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716425</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-10 13:23:17 -0700</bug_when>
    <thetext>Committed r128096: &lt;http://trac.webkit.org/changeset/128096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716638</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-10 16:13:50 -0700</bug_when>
    <thetext>Windows (32-bit) fix: &lt;http://trac.webkit.org/changeset/128122&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163044</attachid>
            <date>2012-09-09 23:22:09 -0700</date>
            <delta_ts>2012-09-10 01:14:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96231-20120909232148.patch</filename>
            <type>text/plain</type>
            <size>37843</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4MDE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDEyLTA5LTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVmYWN0b3JlZCBvcF90ZWFyX29mZiogdG8gc3VwcG9ydCBhY3RpdmF0aW9ucyB0aGF0IGRv
bid0IGFsbG9jYXRlIHNwYWNlIGZvciAnYXJndW1lbnRzJworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYyMzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmQgc21hbGxlciBh
Y3RpdmF0aW9ucy4KKworICAgICAgICBBcyBhIHNpZGUtZWZmZWN0LCB0aGlzIHBhdGNoIGVsaW1p
bmF0ZXMgYSBsb2FkIGFuZCBicmFuY2ggZnJvbSB0aGUgaG90IHBhdGgKKyAgICAgICAgb2YgYWN0
aXZhdGlvbiB0ZWFyLW9mZiBieSBtb3ZpbmcgaXQgdG8gdGhlIGNvbGQgcGF0aCBvZiBhcmd1bWVu
dHMgdGVhci1vZmYuIE91cgorICAgICAgICBvcHRpbWl6aW5nIGFzc3VtcHRpb25zIGFyZSB0aGF0
IGFjdGl2YXRpb25zIGFyZSBjb21tb24gYW5kIHRoYXQgcmVpZnlpbmcgdGhlCisgICAgICAgIGFy
Z3VtZW50cyBvYmplY3QgaXMgbGVzcyBjb21tb24uCisKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAqIGJ5
dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDOjpwYWRPcGNvZGVOYW1lKTogVXBkYXRlZCBm
b3IgbmV3IG9wY29kZSBsZW5ndGhzLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENvbnN0YW50
VmFsdWUpOiBBZGRlZCBzdXBwb3J0IGZvciBKU1ZhbHVlKCkKKyAgICAgICAgaW4gdGhlIGJ5dGVj
b2RlLCB3aGljaCB3ZSB1c2Ugd2hlbiB3ZSBoYXZlICdhcmd1bWVudHMnIGJ1dCBubyBhY3RpdmF0
aW9uLgorCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmV0dXJuKTogQWx3
YXlzIGVtaXQgdGVhcl9vZmZfYXJndW1lbnRzCisgICAgICAgIGlmIHdlJ3ZlIGFsbG9jYXRlZCB0
aGUgYXJndW1lbnRzIHJlZ2lzdGVycy4gVGhpcyBhbGxvd3MgdGVhcl9vZmZfYWN0aXZhdGlvbgor
ICAgICAgICBub3QgdG8gd29ycnkgYWJvdXQgdGhlIGFyZ3VtZW50cyBvYmplY3QgYW55bW9yZS4K
KworICAgICAgICBBbHNvLCBwYXNzIHRoZSBhY3RpdmF0aW9uIGFuZCBhcmd1bWVudHMgdmFsdWVz
IGRpcmVjdGx5IHRvIHRoZXNlIG9wY29kZXMKKyAgICAgICAgaW5zdGVhZCBvZiByZXF1aXJpbmcg
dGhlIG9wY29kZXMgdG8gaW5mZXIgdGhlIHZhbHVlcyB0aHJvdWdoIHNwZWNpYWwKKyAgICAgICAg
cmVnaXN0ZXJzLiBUaGlzIGdpdmVzIHVzIG1vcmUgZmxleGliaWxpdHkgdG8gbW92ZSBvciBlbGlt
aW5hdGUgcmVnaXN0ZXJzLgorCisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKE5vZGUpOiBVcGRhdGVkIGZvciBuZXcgb3Bjb2RlIGxlbmd0
aHMuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6IEFjdGl2YXRpb24gdGVhci1v
ZmYgZG9lc24ndCB3b3JyeSBhYm91dCB0aGUKKyAgICAgICAgYXJndW1lbnRzIG9iamVjdCBhbnlt
b3JlLiBJZiAnYXJndW1lbnRzJyBpcyBpbiB1c2UgYW5kIHJlaWZpZWQsIGl0J3MKKyAgICAgICAg
cmVzcG9uc2libGUgZm9yIGFsaWFzaW5nIGJhY2sgdG8gdGhlIGFjdGl2YXRpb24gb2JqZWN0IGlu
IHRlYXJfb2ZmX2FyZ3VtZW50cy4KKworICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KTogRG9uJ3QgcGFzcyB0aGUgYXJndW1lbnRzIG9iamVjdCB0bworICAgICAgICBhY3RpdmF0aW9u
IHRlYXItb2ZmOyBkbyBwYXNzIHRoZSBhY3RpdmF0aW9uIG9iamVjdCB0byBhcmd1bWVudHMgdGVh
ci1vZmYuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6IERpdHRvLgorCisgICAgICAgICog
aml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdGVhcl9vZmZf
YWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVu
dHMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF90ZWFyX29mZl9hcmd1bWVudHMpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6Cisg
ICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTElu
dFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVD
TCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOiBTYW1lIGNoYW5nZSBpbiBhIGZl
dyBtb3JlIGV4ZWN1dGlvbiBlbmdpbmVzLgorCiAyMDEyLTA5LTA5ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBhIGZldyBsbGludCBDKysgaW50ZXJwcmV0
ZXIgYnVncy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCShyZXZpc2lvbiAxMjgwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwNiwxNCArMTQwNiwxNCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGVhcl9vZmZfYWN0aXZhdGlvblx0ICVzLCAl
cyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCkpOworICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gdGVhcl9vZmZf
YWN0aXZhdGlvblx0ICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
KTsKICAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfdGVhcl9vZmZf
YXJndW1lbnRzOiB7CiAgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJfb2ZmX2FyZ3VtZW50cyAlcyIsIGxvY2F0aW9u
LCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSk7CisgICAgICAgICAgICBpbnQgcjEgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGRhdGFMb2coIlslNGRdIHRlYXJfb2ZmX2Fy
Z3VtZW50cyAlcywgJXMiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpKTsKICAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lv
biAxMjgwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE3NCw4ICsxNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
bWFjcm8ob3BfY2FsbCwgNikgXAogICAgICAgICBtYWNybyhvcF9jYWxsX2V2YWwsIDYpIFwKICAg
ICAgICAgbWFjcm8ob3BfY2FsbF92YXJhcmdzLCA1KSBcCi0gICAgICAgIG1hY3JvKG9wX3RlYXJf
b2ZmX2FjdGl2YXRpb24sIDMpIFwKLSAgICAgICAgbWFjcm8ob3BfdGVhcl9vZmZfYXJndW1lbnRz
LCAyKSBcCisgICAgICAgIG1hY3JvKG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24sIDIpIFwKKyAgICAg
ICAgbWFjcm8ob3BfdGVhcl9vZmZfYXJndW1lbnRzLCAzKSBcCiAgICAgICAgIG1hY3JvKG9wX3Jl
dCwgMikgXAogICAgICAgICBtYWNybyhvcF9jYWxsX3B1dF9yZXN1bHQsIDMpIC8qIGhhcyB2YWx1
ZSBwcm9maWxpbmcgKi8gXAogICAgICAgICBtYWNybyhvcF9yZXRfb2JqZWN0X29yX3RoaXMsIDMp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMjgwMTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzg2LDggKzM4Niw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihGdW4KICAgICAgICAgbV9jb2RlQmxvY2stPnNldEFjdGl2YXRpb25SZWdpc3RlcihtX2Fj
dGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CiAgICAgfQogCi0gICAgLy8gQm90aCBvcF90ZWFy
X29mZl9hY3RpdmF0aW9uIGFuZCBvcF90ZWFyX29mZl9hcmd1bWVudHMgdGVhciBvZmYgdGhlICdh
cmd1bWVudHMnCi0gICAgLy8gb2JqZWN0LCBpZiBjcmVhdGVkLgogICAgIGlmIChtX2NvZGVCbG9j
ay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpIHx8IGZ1bmN0aW9uQm9keS0+dXNlc0FyZ3VtZW50cygp
KSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciA9IGFk
ZFZhcigpOyAvLyBBbm9ueW1vdXMsIHNvIGl0IGNhbid0IGJlIG1vZGlmaWVkIGJ5IHVzZXIgY29k
ZS4KICAgICAgICAgUmVnaXN0ZXJJRCogYXJndW1lbnRzUmVnaXN0ZXIgPSBhZGRWYXIocHJvcGVy
dHlOYW1lcygpLmFyZ3VtZW50cywgZmFsc2UpOyAvLyBDYW4gYmUgY2hhbmdlZCBieSBhc3NpZ25p
bmcgdG8gJ2FyZ3VtZW50cycuCkBAIC0xMTE1LDE0ICsxMTEzLDIxIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjphZGRDb25zdGEKIHsKICAgICBpbnQgaW5kZXggPSBtX25leHRDb25z
dGFudE9mZnNldDsKIAorICAgIC8vIFdlIGNhbid0IGhhc2ggSlNWYWx1ZSgpLCBzbyBqdXN0IHJl
dHVybiBhIG5vbi11bmlxdWVkIHZhbHVlLgorICAgIGlmICghdikgeworICAgICAgICBtX2NvbnN0
YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBtX25l
eHRDb25zdGFudE9mZnNldCk7CisgICAgICAgICsrbV9uZXh0Q29uc3RhbnRPZmZzZXQ7CisgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudCh2KTsKKyAgICAgICAgcmV0dXJuICZtX2NvbnN0
YW50UG9vbFJlZ2lzdGVyc1tpbmRleF07CisgICAgfQorCiAgICAgSlNWYWx1ZU1hcDo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1fanNWYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHYpLCBtX25leHRD
b25zdGFudE9mZnNldCk7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIG1f
Y29uc3RhbnRQb29sUmVnaXN0ZXJzLmFwcGVuZChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCAr
IG1fbmV4dENvbnN0YW50T2Zmc2V0KTsKICAgICAgICAgKyttX25leHRDb25zdGFudE9mZnNldDsK
LSAgICAgICAgbV9jb2RlQmxvY2stPmFkZENvbnN0YW50KEpTVmFsdWUodikpOworICAgICAgICBt
X2NvZGVCbG9jay0+YWRkQ29uc3RhbnQodik7CiAgICAgfSBlbHNlCiAgICAgICAgIGluZGV4ID0g
cmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQ7Ci0KICAgICByZXR1cm4gJm1fY29uc3RhbnRQb29sUmVn
aXN0ZXJzW2luZGV4XTsKIH0KIApAQCAtMjA0NiwxMCArMjA1MSwxMiBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJldHVyCiAgICAgaWYgKG1fY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkpIHsKICAgICAgICAgZW1pdE9wY29kZShvcF90ZWFyX29mZl9hY3RpdmF0
aW9uKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVy
LT5pbmRleCgpKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5h
cmd1bWVudHNSZWdpc3RlcigpKTsKLSAgICB9IGVsc2UgaWYgKG1fY29kZUJsb2NrLT51c2VzQXJn
dW1lbnRzKCkgJiYgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAhPSAxICYmICFtX2NvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpIHsKKyAgICB9CisKKyAgICBpZiAobV9jb2RlQmxvY2stPnVz
ZXNBcmd1bWVudHMoKSAmJiBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICE9IDEgJiYgIW1f
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX3RlYXJf
b2ZmX2FyZ3VtZW50cyk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9j
ay0+YXJndW1lbnRzUmVnaXN0ZXIoKSk7CisgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCht
X2FjdGl2YXRpb25SZWdpc3RlciA/IG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpIDogZW1p
dExvYWQoMCwgSlNWYWx1ZSgpKS0+aW5kZXgoKSk7CiAgICAgfQogCiAgICAgLy8gQ29uc3RydWN0
b3JzIHVzZSBvcF9yZXRfb2JqZWN0X29yX3RoaXMgdG8gY2hlY2sgdGhlIHJlc3VsdCBpcyBhbgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMjgwMTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MTYsNiArNjE2LDcgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRPcEFuZERlZmF1bHRGbGFncyhO
b3ApOwogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDEobm9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguY2xlYXJBbmREZXJlZkNoaWxkMihub2Rl
KTsKICAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRSZWZDb3VudCgwKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyODAxNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODU1LDEzICsyODU1LDEzIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ug
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbjogewotICAgICAgICAgICAgYWRkVG9HcmFwaChUZWFyT2Zm
QWN0aXZhdGlvbiwgT3BJbmZvKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSksIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSwgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoVGVhck9mZkFjdGl2YXRpb24sIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90ZWFyX29mZl9hY3RpdmF0
aW9uKTsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgY2FzZSBvcF90ZWFyX29m
Zl9hcmd1bWVudHM6IHsKICAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNBcmd1bWVudHMgPSB0cnVl
OwotICAgICAgICAgICAgYWRkVG9HcmFwaChUZWFyT2ZmQXJndW1lbnRzLCBnZXQodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKSk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKFRlYXJPZmZBcmd1bWVudHMsIGdldCh1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpLCBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKICAgICAgICAgfQogICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTI4MDE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNywxMiAr
MzM3LDYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRh
KCktPmxvY2FsKCk7CiAgICAgfQogICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9wKCkgPT0gVGVhck9m
ZkFjdGl2YXRpb24pOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVy
PihtX29wSW5mbyk7Ci0gICAgfQotICAgIAogICAgIFZpcnR1YWxSZWdpc3RlciB1bmxpbmtlZExv
Y2FsKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChvcCgpID09IEdldExvY2FsVW5saW5rZWQpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxMjgwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY1LDQwICsxMTY1LDI4IEBAIEpTQ2VsbCogREZHX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVJbmwKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVj
LCBKU0NlbGwqIGFjdGl2YXRpb25DZWxsLCBpbnQzMl90IHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcikKK3ZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogYWN0aXZhdGlvbkNlbGwpCiB7CiAgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4ZWMpOwotICAgIGlmICghYWN0aXZhdGlvbkNlbGwp
IHsKLSAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGlmICghZXhlYy0+Y29k
ZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQotICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYp
LT50ZWFyT2ZmKGV4ZWMpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
SlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0ganNDYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2YXRp
b25DZWxsKTsKLSAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7Ci0g
ICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKS5qc1ZhbHVlKCkpCi0gICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0
aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIGpzQ2FzdDxKU0Fj
dGl2YXRpb24qPihhY3RpdmF0aW9uQ2VsbCktPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsK
IH0KIAotCi12b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFyZ3VtZW50cyhFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2VsbCogYXJndW1lbnRzQ2VsbCkKK3ZvaWQgREZHX09QRVJBVElPTiBv
cGVyYXRpb25UZWFyT2ZmQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBhcmd1bWVu
dHNDZWxsLCBKU0NlbGwqIGFjdGl2YXRpb25DZWxsKQogewogICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+dXNlc0FyZ3VtZW50cygpKTsKLSAgICBBU1NFUlQoIWV4ZWMtPmNvZGVCbG9jaygp
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOwotICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50c0NlbGwp
LT50ZWFyT2ZmKGV4ZWMpOworICAgIGlmIChhY3RpdmF0aW9uQ2VsbCkgeworICAgICAgICBqc0Nh
c3Q8QXJndW1lbnRzKj4oYXJndW1lbnRzQ2VsbCktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwganNDYXN0PEpTQWN0aXZhdGlvbio+KGFjdGl2YXRpb25DZWxsKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAganNDYXN0PEFyZ3VtZW50cyo+KGFyZ3VtZW50c0Nl
bGwpLT50ZWFyT2ZmKGV4ZWMpOwogfQogCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVh
ck9mZklubGluZWRBcmd1bWVudHMoCi0gICAgRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGFyZ3Vt
ZW50c0NlbGwsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQorICAgIEV4ZWNTdGF0
ZSogZXhlYywgSlNDZWxsKiBhcmd1bWVudHNDZWxsLCBKU0NlbGwqIGFjdGl2YXRpb25DZWxsLCBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKIHsKLSAgICAvLyBUaGlzIHNob3VsZCBv
bmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBpbmxpbmUgY29kZSBibG9jayB1c2VzIGFyZ3VtZW50cyBi
dXQgZG9lcyBub3QKLSAgICAvLyBuZWVkIGEgZnVsbCBzY29wZSBjaGFpbi4gV2UgY291bGQgYXNz
ZXJ0IGl0LCBleGNlcHQgdGhhdCB0aGUgYXNzZXJ0aW9uIHdvdWxkIGJlCi0gICAgLy8gcmF0aGVy
IGV4cGVuc2l2ZSBhbmQgbWF5IGNhdXNlIHNpZGUgZWZmZWN0cyB0aGF0IHdvdWxkIGdyZWF0bHkg
ZGl2ZXJnZSBkZWJ1Zy1tb2RlCi0gICAgLy8gYmVoYXZpb3IgZnJvbSByZWxlYXNlLW1vZGUgYmVo
YXZpb3IsIHNpbmNlIGdldHRpbmcgdGhlIGNvZGUgYmxvY2sgb2YgYW4gaW5saW5lCi0gICAgLy8g
Y2FsbCBmcmFtZSBpbXBsaWVzIGNhbGwgZnJhbWUgcmVpZmljYXRpb24uCi0gICAgYXNBcmd1bWVu
dHMoYXJndW1lbnRzQ2VsbCktPnRlYXJPZmYoZXhlYywgaW5saW5lQ2FsbEZyYW1lKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGFjdGl2YXRpb25DZWxsLCAhYWN0aXZhdGlvbkNlbGwpOyAvLyBDdXJyZW50
bHksIHdlIGRvbid0IGlubGluZSBmdW5jdGlvbnMgd2l0aCBhY3RpdmF0aW9ucy4KKyAgICBqc0Nh
c3Q8QXJndW1lbnRzKj4oYXJndW1lbnRzQ2VsbCktPnRlYXJPZmYoZXhlYywgaW5saW5lQ2FsbEZy
YW1lKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRBcmd1
bWVudHNMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBpbnQzMl90IGFyZ3VtZW50c1JlZ2lzdGVyKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9u
IDEyODAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC05OCw4ICs5OCwxMCBAQCB0eXBlZGVmIHNpemVfdCBERkdfT1BFUkFU
SU9OICgqU19ERkdPcGVyCiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0
aW9uX0VBWkopKEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7
CiB0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VDKShFeGVjU3Rh
dGUqLCBKU0NlbGwqKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRp
b25fRUNJY2YpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopOwordHlwZWRl
ZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FQ0NJY2YpKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopOwogdHlwZWRlZiB2b2lkIERGR19P
UEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FQ0pKKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04g
KCpWX0RGR09wZXJhdGlvbl9FQ1opKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwordHlw
ZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIEpTQ2VsbCopOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09w
ZXJhdGlvbl9FSkNJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKiwgSWRlbnRp
ZmllciopOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FSkpK
KShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpQUCko
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CkBAIC0x
NzMsOSArMTc1LDkgQEAgY2hhciogREZHX09QRVJBVElPTiBvcGVyYXRpb25MaW5rQ29uc3RydQog
SlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb24oRXhlY1N0YXRl
KikgV1RGX0lOVEVSTkFMOwogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFy
Z3VtZW50cyhFeGVjU3RhdGUqKSBXVEZfSU5URVJOQUw7CiBKU0NlbGwqIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBJbmxpbmVDYWxsRnJh
bWUqKSBXVEZfSU5URVJOQUw7Ci12b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFj
dGl2YXRpb24oRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIpIFdURl9JTlRFUk5BTDsKLXZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25UZWFy
T2ZmQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEpTQ2VsbCopIFdURl9JTlRFUk5BTDsKLXZvaWQgREZH
X09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmSW5saW5lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBK
U0NlbGwqLCBJbmxpbmVDYWxsRnJhbWUqKSBXVEZfSU5URVJOQUw7Cit2b2lkIERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiwgSlNDZWxsKikgV1RGX0lO
VEVSTkFMOwordm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZBcmd1bWVudHMoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwordm9pZCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvblRlYXJPZmZJbmxpbmVkQXJndW1lbnRzKEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QXJndW1lbnRzTGVuZ3RoKEV4ZWNTdGF0ZSosIGlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uR2V0SW5saW5lZEFyZ3VtZW50QnlWYWwoRXhlY1N0YXRlKiwgaW50MzJfdCwgSW5saW5lQ2Fs
bEZyYW1lKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBvcGVyYXRpb25HZXRBcmd1bWVudEJ5VmFsKEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMy
X3QpIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTI4MDE3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDAyMyw0MyArNDAyMywzOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgVGVhck9mZkFjdGl2YXRpb246IHsK
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYWN0aXZhdGlvblZhbHVlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1bWVudHNWYWx1ZSh0aGlzLCBub2RlLmNo
aWxkMigpKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBhY3RpdmF0aW9uVmFsdWVUYWdHUFIg
PSBhY3RpdmF0aW9uVmFsdWUudGFnR1BSKCk7CiAgICAgICAgIEdQUlJlZyBhY3RpdmF0aW9uVmFs
dWVQYXlsb2FkR1BSID0gYWN0aXZhdGlvblZhbHVlLnBheWxvYWRHUFIoKTsKLSAgICAgICAgR1BS
UmVnIGFyZ3VtZW50c1ZhbHVlVGFnR1BSID0gYXJndW1lbnRzVmFsdWUudGFnR1BSKCk7Ci0gICAg
ICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3QgY3JlYXRlZDsKLSAgICAgICAgY3Jl
YXRlZC5hcHBlbmQobV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBhY3RpdmF0
aW9uVmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSkpOwot
ICAgICAgICBjcmVhdGVkLmFwcGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6Tm90RXF1
YWwsIGFyZ3VtZW50c1ZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1
ZVRhZykpKTsKLSAgICAgICAgCisKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgY3JlYXRlZCA9
IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYWN0aXZhdGlvblZhbHVlVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOworCiAgICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAg
ICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvblRlYXJPZmZBY3RpdmF0aW9uLCBOb1Jlc3Vs
dCwgYWN0aXZhdGlvblZhbHVlUGF5bG9hZEdQUiwKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQzMl90Pihub2RlLnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcigpKSkpOworICAgICAg
ICAgICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvblRlYXJPZmZBY3RpdmF0aW9uLCBOb1Jl
c3VsdCwgYWN0aXZhdGlvblZhbHVlUGF5bG9hZEdQUikpOwogICAgICAgICAKICAgICAgICAgbm9S
ZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgVGVhck9mZkFyZ3VtZW50czogewotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmd1
bWVudHNWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgR1BSUmVnIGFyZ3VtZW50
c1ZhbHVlVGFnR1BSID0gYXJndW1lbnRzVmFsdWUudGFnR1BSKCk7Ci0gICAgICAgIEdQUlJlZyBh
cmd1bWVudHNWYWx1ZVBheWxvYWRHUFIgPSBhcmd1bWVudHNWYWx1ZS5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHVubW9kaWZpZWRBcmd1bWVudHNWYWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYWN0aXZhdGlvblZhbHVlKHRoaXMs
IG5vZGUuY2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdW5tb2RpZmllZEFyZ3VtZW50c1ZhbHVl
UGF5bG9hZEdQUiA9IHVubW9kaWZpZWRBcmd1bWVudHNWYWx1ZS5wYXlsb2FkR1BSKCk7CisgICAg
ICAgIEdQUlJlZyBhY3RpdmF0aW9uVmFsdWVQYXlsb2FkR1BSID0gYWN0aXZhdGlvblZhbHVlLnBh
eWxvYWRHUFIoKTsKICAgICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0ZWQg
PSBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgYXJn
dW1lbnRzVmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0ZWQgPSBtX2ppdC5icmFuY2hUZXN0MzIo
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgdW5tb2RpZmllZEFyZ3VtZW50c1Zh
bHVlUGF5bG9hZEdQUik7CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS5jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLCB0
aGlzLCBvcGVyYXRpb25UZWFyT2ZmSW5saW5lZEFyZ3VtZW50cywgTm9SZXN1bHQsCi0gICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50c1ZhbHVlUGF5bG9hZEdQUiwgbm9kZS5jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkpOworICAgICAgICAgICAgICAgICAgICB1bm1vZGlmaWVkQXJndW1lbnRz
VmFsdWVQYXlsb2FkR1BSLCBhY3RpdmF0aW9uVmFsdWVQYXlsb2FkR1BSLCBub2RlLmNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRT
bG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCiAgICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvblRlYXJPZmZBcmd1bWVudHMsIE5v
UmVzdWx0LAotICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNWYWx1ZVBheWxvYWRHUFIpKTsK
KyAgICAgICAgICAgICAgICAgICAgdW5tb2RpZmllZEFyZ3VtZW50c1ZhbHVlUGF5bG9hZEdQUiwg
YWN0aXZhdGlvblZhbHVlUGF5bG9hZEdQUikpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEyODAxNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5NzIsNDMgKzM5NzIsNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxl
SW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBUZWFy
T2ZmQWN0aXZhdGlvbjogewogICAgICAgICBBU1NFUlQoIW5vZGUuY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUpOwogCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFjdGl2YXRpb25WYWx1ZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1lbnRzVmFsdWUo
dGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlJlZyBhY3RpdmF0aW9uVmFsdWVHUFIg
PSBhY3RpdmF0aW9uVmFsdWUuZ3ByKCk7Ci0gICAgICAgIEdQUlJlZyBhcmd1bWVudHNWYWx1ZUdQ
UiA9IGFyZ3VtZW50c1ZhbHVlLmdwcigpOwotICAgICAgICAKLSAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IGNyZWF0ZWQ7Ci0gICAgICAgIGNyZWF0ZWQuYXBwZW5kKG1faml0LmJyYW5jaFRl
c3RQdHIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGFjdGl2YXRpb25WYWx1ZUdQUikpOwotICAgICAg
ICBjcmVhdGVkLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpOb25aZXJv
LCBhcmd1bWVudHNWYWx1ZUdQUikpOworCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0
ZWQgPSBtX2ppdC5icmFuY2hUZXN0UHRyKEpJVENvbXBpbGVyOjpOb25aZXJvLCBhY3RpdmF0aW9u
VmFsdWVHUFIpOwogICAgICAgICAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAg
ICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAgICAgICAgY3JlYXRlZCwgdGhpcywgb3Bl
cmF0aW9uVGVhck9mZkFjdGl2YXRpb24sIE5vUmVzdWx0LCBhY3RpdmF0aW9uVmFsdWVHUFIsCi0g
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50MzJfdD4obm9kZS51bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIoKSkpKTsKKyAgICAgICAgICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRp
b25UZWFyT2ZmQWN0aXZhdGlvbiwgTm9SZXN1bHQsIGFjdGl2YXRpb25WYWx1ZUdQUikpOwogICAg
ICAgICAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsK
ICAgICB9Ci0gICAgICAgIAorCiAgICAgY2FzZSBUZWFyT2ZmQXJndW1lbnRzOiB7Ci0gICAgICAg
IEpTVmFsdWVPcGVyYW5kIGFyZ3VtZW50c1ZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAg
ICAgICBHUFJSZWcgYXJndW1lbnRzVmFsdWVHUFIgPSBhcmd1bWVudHNWYWx1ZS5ncHIoKTsKLSAg
ICAgICAgCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0ZWQgPSBtX2ppdC5icmFuY2hU
ZXN0UHRyKEpJVENvbXBpbGVyOjpOb25aZXJvLCBhcmd1bWVudHNWYWx1ZUdQUik7Ci0gICAgICAg
IAorICAgICAgICBKU1ZhbHVlT3BlcmFuZCB1bm1vZGlmaWVkQXJndW1lbnRzVmFsdWUodGhpcywg
bm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFjdGl2YXRpb25WYWx1ZSh0
aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHVubW9kaWZpZWRBcmd1bWVudHNW
YWx1ZUdQUiA9IHVubW9kaWZpZWRBcmd1bWVudHNWYWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IGFjdGl2YXRpb25WYWx1ZUdQUiA9IGFjdGl2YXRpb25WYWx1ZS5ncHIoKTsKKworICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxl
cjo6Tm9uWmVybywgdW5tb2RpZmllZEFyZ3VtZW50c1ZhbHVlR1BSKTsKKwogICAgICAgICBpZiAo
bm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgewogICAgICAgICAgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAogICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmSW5saW5lZEFyZ3VtZW50cywg
Tm9SZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1ZhbHVlR1BSLCBub2RlLmNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIHVubW9kaWZp
ZWRBcmd1bWVudHNWYWx1ZUdQUiwgYWN0aXZhdGlvblZhbHVlR1BSLCBub2RlLmNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvblRlYXJPZmZBcmd1bWVudHMsIE5vUmVz
dWx0LCBhcmd1bWVudHNWYWx1ZUdQUikpOworICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLCB0
aGlzLCBvcGVyYXRpb25UZWFyT2ZmQXJndW1lbnRzLCBOb1Jlc3VsdCwgdW5tb2RpZmllZEFyZ3Vt
ZW50c1ZhbHVlR1BSLCBhY3RpdmF0aW9uVmFsdWVHUFIpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTI4MDE3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzUzLDYgKzEzNTMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNDSWNm
IG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGFy
ZzMpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgVHJ1c3RlZEltbVB0cihhcmczKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgdm9pZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHBvaW50
ZXIpKTsKQEAgLTEzODgsNiArMTM5MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tMzIoYXJnMikpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwogICAgIH0K
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDQyBv
cGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9XIG9wZXJhdGlvbiwg
V2F0Y2hwb2ludFNldCogd2F0Y2hwb2ludFNldCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzKFRydXN0ZWRJbW1QdHIod2F0Y2hwb2ludFNldCkpOwpAQCAtMTY1MSw2ICsxNjYx
LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZyYW1lKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRpb25fRUNDSWNmIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxG
cmFtZSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOworICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VKUFAgb3BlcmF0
aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMiwgdm9p
ZCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMiwgVHJ1
c3RlZEltbVB0cihwb2ludGVyKSk7CkBAIC0xNjcxLDYgKzE2ODYsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMy
KGFyZzIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3Bl
cmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0RG
R09wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAg
eworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7
CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVyYXRp
b25fRVBaSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzNU
YWcsIEdQUlJlZyBhcmczUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmczUGF5
bG9hZCwgYXJnM1RhZyk7CkBAIC0xNjk2LDYgKzE3MTYsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBhcmcxLCBhcmcyKTsKICAgICB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlLCB0eXBlbmFtZSBBcmd1bWVudFR5
cGUxLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUyLCB0eXBlbmFtZSBBcmd1bWVudFR5cGUzPgorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRnVuY3Rpb25UeXBlIG9wZXJhdGlvbiwg
Tm9SZXN1bHRUYWcsIEFyZ3VtZW50VHlwZTEgYXJnMSwgQXJndW1lbnRUeXBlMiBhcmcyLCBBcmd1
bWVudFR5cGUzIGFyZzMpCisgICAgeworICAgICAgICByZXR1cm4gY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdGlvblR5cGUsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTEsIHR5cGVuYW1lIEFyZ3VtZW50VHlw
ZTIsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTMsIHR5cGVuYW1lIEFyZ3VtZW50VHlwZTQ+CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGdW5jdGlvblR5cGUgb3BlcmF0aW9uLCBO
b1Jlc3VsdFRhZywgQXJndW1lbnRUeXBlMSBhcmcxLCBBcmd1bWVudFR5cGUyIGFyZzIsIEFyZ3Vt
ZW50VHlwZTMgYXJnMywgQXJndW1lbnRUeXBlNCBhcmc0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNp
b24gMTI4MDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ3NSw1MCArNDQ3NSw0MyBAQCBza2lwX2lkX2N1
c3RvbV9zZWxmOgogICAgICAgICBnb3RvIHZtX3Rocm93OwogICAgIH0KICAgICBERUZJTkVfT1BD
T0RFKG9wX3RlYXJfb2ZmX2FjdGl2YXRpb24pIHsKLSAgICAgICAgLyogdGVhcl9vZmZfYWN0aXZh
dGlvbiBhY3RpdmF0aW9uKHIpIGFyZ3VtZW50cyhyKQorICAgICAgICAvKiB0ZWFyX29mZl9hY3Rp
dmF0aW9uIGFjdGl2YXRpb24ocikKIAogICAgICAgICAgICBDb3B5IGxvY2FscyBhbmQgbmFtZWQg
cGFyYW1ldGVycyBmcm9tIHRoZSByZWdpc3RlciBmaWxlIHRvIHRoZSBoZWFwLgotICAgICAgICAg
ICBQb2ludCB0aGUgYmluZGluZ3MgaW4gJ2FjdGl2YXRpb24nIGFuZCAnYXJndW1lbnRzJyB0byB0
aGlzIG5ldyBiYWNraW5nCi0gICAgICAgICAgIHN0b3JlLiAoTm90ZSB0aGF0ICdhcmd1bWVudHMn
IG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQuIElmIGNyZWF0ZWQsCi0gICAgICAgICAgICdhcmd1
bWVudHMnIGFscmVhZHkgaG9sZHMgYSBjb3B5IG9mIGFueSBleHRyYSAvIHVubmFtZWQgcGFyYW1l
dGVycy4pCisgICAgICAgICAgIFBvaW50IHRoZSBiaW5kaW5ncyBpbiAnYWN0aXZhdGlvbicgdG8g
dGhpcyBuZXcgYmFja2luZyBzdG9yZS4KIAogICAgICAgICAgICBUaGlzIG9wY29kZSBhcHBlYXJz
IGJlZm9yZSBvcF9yZXQgaW4gZnVuY3Rpb25zIHRoYXQgcmVxdWlyZSBmdWxsIHNjb3BlIGNoYWlu
cy4KICAgICAgICAgKi8KIAogICAgICAgICBpbnQgYWN0aXZhdGlvbiA9IHZQQ1sxXS51Lm9wZXJh
bmQ7Ci0gICAgICAgIGludCBhcmd1bWVudHMgPSB2UENbMl0udS5vcGVyYW5kOwogICAgICAgICBB
U1NFUlQoY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOwogICAgICAgICBKU1ZhbHVl
IGFjdGl2YXRpb25WYWx1ZSA9IGNhbGxGcmFtZS0+cihhY3RpdmF0aW9uKS5qc1ZhbHVlKCk7Ci0g
ICAgICAgIGlmIChhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKGFjdGl2YXRpb25WYWx1
ZSkKICAgICAgICAgICAgIGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpLT50ZWFyT2ZmKCpn
bG9iYWxEYXRhKTsKIAotICAgICAgICAgICAgaWYgKEpTVmFsdWUgYXJndW1lbnRzVmFsdWUgPSBj
YWxsRnJhbWUtPnIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGFyZ3VtZW50cykpLmpzVmFs
dWUoKSkKLSAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSktPmRpZFRl
YXJPZmZBY3RpdmF0aW9uKCpnbG9iYWxEYXRhLCBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVl
KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoSlNWYWx1ZSBhcmd1bWVudHNWYWx1ZSA9IGNhbGxGcmFt
ZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzKSkuanNWYWx1ZSgpKSB7
Ci0gICAgICAgICAgICBpZiAoIWNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAg
ICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzVmFsdWUpLT50ZWFyT2ZmKGNhbGxGcmFtZSk7Ci0g
ICAgICAgIH0KLQogICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF90ZWFyX29mZl9hY3Rp
dmF0aW9uKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KICAgICBERUZJTkVf
T1BDT0RFKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cykgewotICAgICAgICAvKiB0ZWFyX29mZl9hcmd1
bWVudHMgYXJndW1lbnRzKHIpCisgICAgICAgIC8qIHRlYXJfb2ZmX2FyZ3VtZW50cyBhcmd1bWVu
dHMocikgYWN0aXZhdGlvbihyKQogCiAgICAgICAgICAgIENvcHkgbmFtZWQgcGFyYW1ldGVycyBm
cm9tIHRoZSByZWdpc3RlciBmaWxlIHRvIHRoZSBoZWFwLiBQb2ludCB0aGUKLSAgICAgICAgICAg
YmluZGluZ3MgaW4gJ2FyZ3VtZW50cycgdG8gdGhpcyBuZXcgYmFja2luZyBzdG9yZS4gKE5vdGUg
dGhhdAotICAgICAgICAgICAnYXJndW1lbnRzJyBtYXkgbm90IGhhdmUgYmVlbiBjcmVhdGVkLiBJ
ZiBjcmVhdGVkLCAnYXJndW1lbnRzJyBhbHJlYWR5Ci0gICAgICAgICAgIGhvbGRzIGEgY29weSBv
ZiBhbnkgZXh0cmEgLyB1bm5hbWVkIHBhcmFtZXRlcnMuKQorICAgICAgICAgICBiaW5kaW5ncyBp
biAnYXJndW1lbnRzJyB0byB0aGlzIG5ldyBiYWNraW5nIHN0b3JlLiAoSWYgJ2FjdGl2YXRpb24n
CisgICAgICAgICAgIHdhcyBhbHNvIGNvcGllZCB0byB0aGUgaGVhcCwgJ2FyZ3VtZW50cycgd2ls
bCBwb2ludCB0byBpdHMgc3RvcmFnZS4pCiAKICAgICAgICAgICAgVGhpcyBvcGNvZGUgYXBwZWFy
cyBiZWZvcmUgb3BfcmV0IGluIGZ1bmN0aW9ucyB0aGF0IGRvbid0IHJlcXVpcmUgZnVsbAogICAg
ICAgICAgICBzY29wZSBjaGFpbnMsIGJ1dCBkbyB1c2UgJ2FyZ3VtZW50cycuCiAgICAgICAgICov
CiAKLSAgICAgICAgaW50IHNyYzEgPSB2UENbMV0udS5vcGVyYW5kOwotICAgICAgICBBU1NFUlQo
IWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYmIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPnVzZXNBcmd1bWVudHMoKSk7Ci0KLSAgICAgICAgaWYgKEpTVmFsdWUgYXJndW1l
bnRzID0gY2FsbEZyYW1lLT5yKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihzcmMxKSkuanNW
YWx1ZSgpKQotICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+dGVhck9mZihjYWxs
RnJhbWUpOworICAgICAgICBpbnQgYXJndW1lbnRzID0gdlBDWzFdLnUub3BlcmFuZDsKKyAgICAg
ICAgaW50IGFjdGl2YXRpb24gPSB2UENbMl0udS5vcGVyYW5kOworICAgICAgICBBU1NFUlQoY29k
ZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpOworICAgICAgICBpZiAoSlNWYWx1ZSBhcmd1bWVudHNW
YWx1ZSA9IGNhbGxGcmFtZS0+cih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRz
KSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUg
PSBjYWxsRnJhbWUtPnIoYWN0aXZhdGlvbikuanNWYWx1ZSgpKQorICAgICAgICAgICAgICAgIGFz
QXJndW1lbnRzKGFyZ3VtZW50c1ZhbHVlKS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHNWYWx1ZSktPnRl
YXJPZmYoY2FsbEZyYW1lKTsKKyAgICAgICAgfQogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVO
R1RIKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CiAgICAgICAgIE5FWFRfSU5TVFJVQ1RJT04oKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJ
KHJldmlzaW9uIDEyODAxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
czMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAzLDI0ICs3MDMsMjIgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfc3RyaW5nKEluc3RydWN0aW9uKgogdm9pZCBKSVQ6OmVtaXRfb3BfdGVhcl9v
ZmZfYWN0aXZhdGlvbihJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIHVu
c2lnbmVkIGFjdGl2YXRpb24gPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAg
IHVuc2lnbmVkIGFyZ3VtZW50cyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0g
ICAgSnVtcCBhY3RpdmF0aW9uQ3JlYXRlZCA9IGJyYW5jaDMyKE5vdEVxdWFsLCB0YWdGb3IoYWN0
aXZhdGlvbiksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7Ci0gICAgSnVt
cCBhcmd1bWVudHNOb3RDcmVhdGVkID0gYnJhbmNoMzIoRXF1YWwsIHRhZ0Zvcihhcmd1bWVudHMp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwotICAgIGFjdGl2YXRpb25D
cmVhdGVkLmxpbmsodGhpcyk7CisgICAgSnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZCA9IGJyYW5j
aDMyKEVxdWFsLCB0YWdGb3IoYWN0aXZhdGlvbiksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0
eVZhbHVlVGFnKSk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RlYXJf
b2ZmX2FjdGl2YXRpb24pOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAg
c3R1YkNhbGwuYWRkQXJndW1lbnQoYWN0aXZhdGlvbik7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwot
ICAgIGFyZ3VtZW50c05vdENyZWF0ZWQubGluayh0aGlzKTsKKyAgICBhY3RpdmF0aW9uTm90Q3Jl
YXRlZC5saW5rKHRoaXMpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVu
dHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgYWN0aXZhdGlvbiA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBKdW1wIGFyZ3NOb3RDcmVhdGVkID0g
YnJhbmNoMzIoRXF1YWwsIHRhZ0Zvcih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoZHN0KSks
IFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgSklUU3R1YkNhbGwg
c3R1YkNhbGwodGhpcywgY3RpX29wX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CiAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGRzdCkpOworICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KGFjdGl2YXRpb24pOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICAgICBh
cmdzTm90Q3JlYXRlZC5saW5rKHRoaXMpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxMjgwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTksMjUgKzU1OSwy
MyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jb25zdHJ1Y3QoSW5zdHJ1Y3Rpb24qCiAKIHZvaWQgSklU
OjplbWl0X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICB1bnNpZ25lZCBhY3RpdmF0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBhcmd1bWVudHMgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwotICAgIEp1bXAgYWN0aXZhdGlvbkNyZWF0ZWQgPSBicmFuY2hUZXN0UHRy
KE5vblplcm8sIGFkZHJlc3NGb3IoYWN0aXZhdGlvbikpOwotICAgIEp1bXAgYXJndW1lbnRzTm90
Q3JlYXRlZCA9IGJyYW5jaFRlc3RQdHIoWmVybywgYWRkcmVzc0Zvcihhcmd1bWVudHMpKTsKLSAg
ICBhY3RpdmF0aW9uQ3JlYXRlZC5saW5rKHRoaXMpOworICAgIGludCBhY3RpdmF0aW9uID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBKdW1wIGFjdGl2YXRpb25Ob3RDcmVh
dGVkID0gYnJhbmNoVGVzdFB0cihaZXJvLCBhZGRyZXNzRm9yKGFjdGl2YXRpb24pKTsKICAgICBK
SVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbik7CiAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoYWN0aXZhdGlvbiwgcmVnVDIpOwotICAgIHN0dWJDYWxs
LmFkZEFyZ3VtZW50KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVudHMpLCByZWdU
Mik7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwotICAgIGFyZ3VtZW50c05vdENyZWF0ZWQubGluayh0
aGlzKTsKKyAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5saW5rKHRoaXMpOwogfQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF90ZWFyX29mZl9hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICB1bnNpZ25lZCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
IGludCBhY3RpdmF0aW9uID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKIAogICAg
IEp1bXAgYXJnc05vdENyZWF0ZWQgPSBicmFuY2hUZXN0UHRyKFplcm8sIEFkZHJlc3MoY2FsbEZy
YW1lUmVnaXN0ZXIsIHNpemVvZihSZWdpc3RlcikgKiAodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKGRzdCkpKSk7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3RlYXJf
b2ZmX2FyZ3VtZW50cyk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKGRzdCksIHJlZ1QyKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChhY3Rp
dmF0aW9uLCByZWdUMik7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogICAgIGFyZ3NOb3RDcmVhdGVk
LmxpbmsodGhpcyk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAkocmV2aXNpb24gMTI4MDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMTEsMjAgKzIzMTEsOCBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwogCi0gICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZTsKLSAgICBBU1NFUlQoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2Nv
cGVDaGFpbigpKTsKLSAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCk7Ci0gICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKLSAgICAgICAgaWYg
KEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCkpIHsKLSAgICAgICAgICAg
IGlmICghY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCi0gICAgICAgICAg
ICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoY2FsbEZyYW1lKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0
aXZhdGlvbihzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpKTsKLSAgICBhY3RpdmF0aW9uLT50
ZWFyT2ZmKCpzdGFja0ZyYW1lLmdsb2JhbERhdGEpOwotICAgIGlmIChKU1ZhbHVlIHYgPSBzdGFj
a0ZyYW1lLmFyZ3NbMV0uanNWYWx1ZSgpKQotICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVh
ck9mZkFjdGl2YXRpb24oKnN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgYWN0aXZhdGlvbik7CisgICAg
QVNTRVJUKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpKTsKKyAgICBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oc3RhY2tGcmFtZS5hcmdzWzBdLmpz
VmFsdWUoKSktPnRlYXJPZmYoKnN0YWNrRnJhbWUuZ2xvYmFsRGF0YSk7CiB9CiAKIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3RlYXJfb2ZmX2FyZ3VtZW50cykKQEAgLTIzMzIsOCArMjMy
MCwxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF90ZWFyX29mZl9hCiAgICAgU1RV
Ql9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBBU1NFUlQoY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkpOwotICAgIGFzQXJndW1lbnRzKHN0YWNrRnJhbWUuYXJnc1swXS5qc1Zh
bHVlKCkpLT50ZWFyT2ZmKGNhbGxGcmFtZSk7CisgICAgQVNTRVJUKGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPnVzZXNBcmd1bWVudHMoKSk7CisgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBqc0Nh
c3Q8QXJndW1lbnRzKj4oc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKSk7CisgICAgaWYgKEpT
VmFsdWUgYWN0aXZhdGlvblZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFsdWUoKSkgewor
ICAgICAgICBhcmd1bWVudHMtPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvblZhbHVlKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgYXJndW1lbnRzLT50ZWFyT2ZmKGNhbGxGcmFtZSk7CiB9CiAK
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAxMjgwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0
aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU0LDI2ICsxNDU0LDE5IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl8KIHsKICAgICBMTElOVF9CRUdJTigpOwogICAg
IEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKLSAgICBK
U1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKLSAgICBpZiAo
IWFjdGl2YXRpb25WYWx1ZSkgewotICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVj
a2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1
ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSkKLSAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKLSAgICAg
ICAgfQotICAgICAgICBMTElOVF9FTkQoKTsKLSAgICB9Ci0gICAgSlNBY3RpdmF0aW9uKiBhY3Rp
dmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7Ci0gICAgYWN0aXZhdGlvbi0+
dGVhck9mZihnbG9iYWxEYXRhKTsKLSAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2Vk
Uih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgp
KQotICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZ2xvYmFsRGF0
YSwgYWN0aXZhdGlvbik7CisgICAganNDYXN0PEpTQWN0aXZhdGlvbio+KExMSU5UX09QKDEpLmpz
VmFsdWUoKSktPnRlYXJPZmYoZ2xvYmFsRGF0YSk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKIExM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hcmd1bWVudHMpCiB7CiAgICAg
TExJTlRfQkVHSU4oKTsKLSAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVu
dHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7Ci0gICAg
YXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+dGVhck9mZihleGVjKTsKKyAgICBBU1NFUlQo
ZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSk7CisgICAgQXJndW1lbnRzKiBhcmd1
bWVudHMgPSBqc0Nhc3Q8QXJndW1lbnRzKj4oZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoSlNW
YWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkKKyAgICAgICAg
YXJndW1lbnRzLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihnbG9iYWxEYXRhLCBqc0Nhc3Q8SlNBY3Rp
dmF0aW9uKj4oYWN0aXZhdGlvblZhbHVlKSk7CisgICAgZWxzZQorICAgICAgICBhcmd1bWVudHMt
PnRlYXJPZmYoZXhlYyk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCShyZXZpc2lvbiAxMjgwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTYzOSwxMyArMTYz
OSwxMCBAQCBlbmQKIF9sbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uOgogICAgIHRyYWNlRXhl
Y3V0aW9uKCkKICAgICBsb2FkaSA0W1BDXSwgdDAKLSAgICBsb2FkaSA4W1BDXSwgdDEKLSAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3Rp
dmF0aW9uQ3JlYXRlZAotICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQKLS5vcFRlYXJPZmZBY3RpdmF0aW9u
Q3JlYXRlZDoKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfdGVhcl9vZmZfYWN0aXZhdGlvbikKIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3Jl
YXRlZDoKLSAgICBkaXNwYXRjaCgzKQorICAgIGRpc3BhdGNoKDIpCiAKIAogX2xsaW50X29wX3Rl
YXJfb2ZmX2FyZ3VtZW50czoKQEAgLTE2NTUsNyArMTY1Miw3IEBAIF9sbGludF9vcF90ZWFyX29m
Zl9hcmd1bWVudHM6CiAgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCiAgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzKQogLm9wVGVhck9mZkFyZ3VtZW50c05vdENy
ZWF0ZWQ6Ci0gICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgzKQogCiAKIF9sbGludF9vcF9y
ZXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMTI4MDE3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTE0ODMsMTMgKzE0ODMsMTAgQEAgZW5kCiBfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgbG9hZGlzIDhbUEIsIFBDLCA4XSwgdDAKLSAgICBs
b2FkaXMgMTZbUEIsIFBDLCA4XSwgdDEKLSAgICBidHBueiBbY2ZyLCB0MCwgOF0sIC5vcFRlYXJP
ZmZBY3RpdmF0aW9uQ3JlYXRlZAotICAgIGJ0cHogW2NmciwgdDEsIDhdLCAub3BUZWFyT2ZmQWN0
aXZhdGlvbk5vdENyZWF0ZWQKLS5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBidHB6
IFtjZnIsIHQwLCA4XSwgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfdGVhcl9vZmZfYWN0aXZhdGlvbikKIC5vcFRlYXJPZmZB
Y3RpdmF0aW9uTm90Q3JlYXRlZDoKLSAgICBkaXNwYXRjaCgzKQorICAgIGRpc3BhdGNoKDIpCiAK
IAogX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKQEAgLTE0OTksNyArMTQ5Niw3IEBAIF9s
bGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6CiAgICAgYnRweiBbY2ZyLCB0MCwgOF0sIC5vcFRl
YXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfdGVhcl9vZmZfYXJndW1lbnRzKQogLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6Ci0g
ICAgZGlzcGF0Y2goMikKKyAgICBkaXNwYXRjaCgzKQogCiAKIF9sbGludF9vcF9yZXQ6Cg==
</data>
<flag name="review"
          id="174348"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>