<?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>20823</bug_id>
          
          <creation_ts>2008-09-12 18:12:56 -0700</creation_ts>
          <short_desc>op_eq_null and op_neq_null are slow</short_desc>
          <delta_ts>2008-09-22 11:14:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>20813</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91011</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-12 18:12:56 -0700</bug_when>
    <thetext>op_eq_null and op_neq_null take up 1.9% and 1.8% of the total Shark time on the V8 Richards benchmark. It should be possible to optimize them further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91224</commentid>
    <comment_count>1</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-09-15 12:20:15 -0700</bug_when>
    <thetext>Once Darin finishes giving StructureIDs to all DOM objects, we can move the masqueradesAsUndefined() bit into the StructureID, instead of a virtual function. Then, op_eq_null and op_neq_null can be completely inlined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92114</commentid>
    <comment_count>2</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-22 06:31:23 -0700</bug_when>
    <thetext>*** Bug 20984 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92115</commentid>
    <comment_count>3</comment_count>
      <attachid>23649</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-22 06:37:00 -0700</bug_when>
    <thetext>Created attachment 23649
path that speeds up eq_nul / neq_null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92116</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-22 06:39:39 -0700</bug_when>
    <thetext>Don&apos;t you need to add the new file in WebCore to the other project files?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92117</commentid>
    <comment_count>5</comment_count>
      <attachid>23649</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-22 06:46:42 -0700</bug_when>
    <thetext>Comment on attachment 23649
path that speeds up eq_nul / neq_null

r=me, but please patch all project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92123</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2008-09-22 07:27:36 -0700</bug_when>
    <thetext>Landed (w/ fixes to other project files).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92160</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-09-22 11:14:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Landed (w/ fixes to other project files).

r36764

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23649</attachid>
            <date>2008-09-22 06:37:00 -0700</date>
            <delta_ts>2008-09-22 06:46:42 -0700</delta_ts>
            <desc>path that speeds up eq_nul / neq_null</desc>
            <filename>masquerade-bit.patch.txt</filename>
            <type>text/plain</type>
            <size>24551</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2NzYxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMDgtMDktMjIgIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEJhc2VkIG9uIGluaXRpYWwgd29yayBieSBEYXJp
biBBZGxlci4KKyAgICAgICAgCisgICAgICAgIC0gcmVwbGFjZSBtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkIHZpcnR1YWwgbWV0aG9kIHdpdGggYSBmbGFnIGluIFR5cGVJbmZvCisgICAgICAgIC0gdXNl
IHRoaXMgdG8gSklUIGlubGluZSBjb2RlIGZvciBlcV9udWxsIGFuZCBuZXFfbnVsbAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MjMKKworICAgICAg
ICAqIFZNL0NUSS5jcHA6CisgICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgICogVk0vTWFjaGluZS5jcHA6CisgICAgICAgIChKU0M6OmpzVHlwZVN0cmlu
Z0ZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6anNJc09iamVjdFR5cGUpOgorICAgICAgICAoSlND
OjpNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgIChKU0M6Ok1hY2hpbmU6OmN0aV9v
cF9pc191bmRlZmluZWQpOgorICAgICAgICAqIFZNL01hY2hpbmUuaDoKKyAgICAgICAgKiBranMv
SlNDZWxsLmg6CisgICAgICAgICoga2pzL0pTVmFsdWUuaDoKKyAgICAgICAgKiBranMvU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6
OlN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpjcmVhdGVTdHJ1Y3R1cmVJ
RCk6CisgICAgICAgICoga2pzL1N0cnVjdHVyZUlELmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZUlEOjptdXRhYmxlVHlwZUluZm8pOgorICAgICAgICAqIGtqcy9UeXBlSW5mby5oOgorICAgICAg
ICAoSlNDOjpUeXBlSW5mbzo6VHlwZUluZm8pOgorICAgICAgICAoSlNDOjpUeXBlSW5mbzo6bWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCk6CisgICAgICAgICoga2pzL29wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAoSlNDOjplcXVhbCk6CisgICAgICAgICogbWFzbS9YODZBc3NlbWJsZXIuaDoKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjopOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnNl
dG5lX3IpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnNldG56X3IpOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OnRlc3RsX2kzMm0pOgorCiAyMDA4LTA5LTIxICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICAtIGJsaW5kIGF0dGVtcHQgdG8gZml4IG5v
bi1hbGwtaW4tb25lIGJ1aWxkcwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9DVEkuY3BwCShyZXZpc2lvbiAzNjc2MSkKKysr
IEphdmFTY3JpcHRDb3JlL1ZNL0NUSS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OTAsMTYgKzE1
OTAsNjIgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9lcV9udWxsOiB7Ci0gICAgICAgICAg
ICBlbWl0R2V0UHV0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIDAsIFg4Njo6ZWN4
KTsKLSAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9lcV9udWxsKTsKLSAg
ICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBkc3QgPSBpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kOwor
ICAgICAgICAgICAgdW5zaWduZWQgc3JjMSA9IGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQ7
CisKKyAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjMSwgWDg2OjplYXgpOworICAgICAgICAgICAg
bV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgWDg2OjplYXgpOworICAgICAg
ICAgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgaXNJbW1lZGlhdGUgPSBtX2ppdC5lbWl0VW5saW5r
ZWRKbnooKTsKKworICAgICAgICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTQ2Vs
bCwgbV9zdHJ1Y3R1cmVJRCksIFg4Njo6ZWF4LCBYODY6OmVjeCk7CisgICAgICAgICAgICBtX2pp
dC50ZXN0bF9pMzJtKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIE9CSkVDVF9PRkZTRVQoU3RydWN0
dXJlSUQsIG1fdHlwZUluZm8ubV9mbGFncyksIFg4Njo6ZWN4KTsKKyAgICAgICAgICAgIG1faml0
LnNldG56X3IoWDg2OjplYXgpOworCisgICAgICAgICAgICBYODZBc3NlbWJsZXI6OkptcFNyYyB3
YXNOb3RJbW1lZGlhdGUgPSBtX2ppdC5lbWl0VW5saW5rZWRKbXAoKTsKKworICAgICAgICAgICAg
bV9qaXQubGluayhpc0ltbWVkaWF0ZSwgbV9qaXQubGFiZWwoKSk7CisKKyAgICAgICAgICAgIG1f
aml0Lm1vdmxfaTMycih+SlNJbW1lZGlhdGU6OkV4dGVuZGVkVGFnQml0VW5kZWZpbmVkLCBYODY6
OmVjeCk7CisgICAgICAgICAgICBtX2ppdC5hbmRsX3JyKFg4Njo6ZWF4LCBYODY6OmVjeCk7Cisg
ICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIoSlNJbW1lZGlhdGU6OkZ1bGxUYWdUeXBlTnVsbCwg
WDg2OjplY3gpOworICAgICAgICAgICAgbV9qaXQuc2V0ZV9yKFg4Njo6ZWF4KTsKKworICAgICAg
ICAgICAgbV9qaXQubGluayh3YXNOb3RJbW1lZGlhdGUsIG1faml0LmxhYmVsKCkpOworCisgICAg
ICAgICAgICBtX2ppdC5tb3Z6YmxfcnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyAgICAgICAgICAg
IGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUoWDg2OjplYXgpOworICAgICAgICAgICAgZW1pdFB1dFJl
c3VsdChkc3QpOworCiAgICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX25lcV9udWxsOiB7Ci0gICAgICAgICAgICBlbWl0R2V0
UHV0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIDAsIFg4Njo6ZWN4KTsKLSAgICAg
ICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9uZXFfbnVsbCk7Ci0gICAgICAgICAg
ICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgdW5zaWduZWQgZHN0ID0gaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHNyYzEgPSBpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kOworCisgICAg
ICAgICAgICBlbWl0R2V0QXJnKHNyYzEsIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnRl
c3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIFg4
NkFzc2VtYmxlcjo6Sm1wU3JjIGlzSW1tZWRpYXRlID0gbV9qaXQuZW1pdFVubGlua2VkSm56KCk7
CisKKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU0NlbGwsIG1fc3Ry
dWN0dXJlSUQpLCBYODY6OmVheCwgWDg2OjplY3gpOworICAgICAgICAgICAgbV9qaXQudGVzdGxf
aTMybShNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBPQkpFQ1RfT0ZGU0VUKFN0cnVjdHVyZUlELCBt
X3R5cGVJbmZvLm1fZmxhZ3MpLCBYODY6OmVjeCk7CisgICAgICAgICAgICBtX2ppdC5zZXR6X3Io
WDg2OjplYXgpOworCisgICAgICAgICAgICBYODZBc3NlbWJsZXI6OkptcFNyYyB3YXNOb3RJbW1l
ZGlhdGUgPSBtX2ppdC5lbWl0VW5saW5rZWRKbXAoKTsKKworICAgICAgICAgICAgbV9qaXQubGlu
ayhpc0ltbWVkaWF0ZSwgbV9qaXQubGFiZWwoKSk7CisKKyAgICAgICAgICAgIG1faml0Lm1vdmxf
aTMycih+SlNJbW1lZGlhdGU6OkV4dGVuZGVkVGFnQml0VW5kZWZpbmVkLCBYODY6OmVjeCk7Cisg
ICAgICAgICAgICBtX2ppdC5hbmRsX3JyKFg4Njo6ZWF4LCBYODY6OmVjeCk7CisgICAgICAgICAg
ICBtX2ppdC5jbXBsX2kzMnIoSlNJbW1lZGlhdGU6OkZ1bGxUYWdUeXBlTnVsbCwgWDg2OjplY3gp
OworICAgICAgICAgICAgbV9qaXQuc2V0bmVfcihYODY6OmVheCk7CisKKyAgICAgICAgICAgIG1f
aml0Lmxpbmsod2FzTm90SW1tZWRpYXRlLCBtX2ppdC5sYWJlbCgpKTsKKworICAgICAgICAgICAg
bV9qaXQubW92emJsX3JyKFg4Njo6ZWF4LCBYODY6OmVheCk7CisgICAgICAgICAgICBlbWl0VGFn
QXNCb29sSW1tZWRpYXRlKFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoZHN0
KTsKKwogICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCShyZXZpc2lvbiAzNjc2MSkKKysrIEphdmFTY3JpcHRD
b3JlL1ZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNyArMjQ2LDcgQEAgc3Rh
dGljIEpTVmFsdWUqIGpzVHlwZVN0cmluZ0ZvclZhbHVlKEV4ZQogICAgIGlmICh2LT5pc09iamVj
dCgpKSB7CiAgICAgICAgIC8vIFJldHVybiAidW5kZWZpbmVkIiBmb3Igb2JqZWN0cyB0aGF0IHNo
b3VsZCBiZSB0cmVhdGVkCiAgICAgICAgIC8vIGFzIG51bGwgd2hlbiBkb2luZyBjb21wYXJpc29u
cy4KLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odiktPm1hc3F1ZXJhZGVBc1Vu
ZGVmaW5lZCgpKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KS0+c3RydWN0
dXJlSUQoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJ1bmRlZmluZWQiKTsKICAgICAgICAg
Q2FsbERhdGEgY2FsbERhdGE7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxKU09iamVjdCo+KHYp
LT5nZXRDYWxsRGF0YShjYWxsRGF0YSkgIT0gQ2FsbFR5cGVOb25lKQpAQCAtMjY0LDcgKzI2NCw3
IEBAIHN0YXRpYyBib29sIGpzSXNPYmplY3RUeXBlKEpTVmFsdWUqIHYpCiAgICAgaWYgKHR5cGUg
PT0gTnVtYmVyVHlwZSB8fCB0eXBlID09IFN0cmluZ1R5cGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpZiAodHlwZSA9PSBPYmplY3RUeXBlKSB7Ci0gICAgICAgIGlmIChzdGF0aWNfY2Fz
dDxKU09iamVjdCo+KHYpLT5tYXNxdWVyYWRlQXNVbmRlZmluZWQoKSkKKyAgICAgICAgaWYgKHN0
YXRpY19jYXN0PEpTT2JqZWN0Kj4odiktPnN0cnVjdHVyZUlEKCktPnR5cGVJbmZvKCkubWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odikt
PmdldENhbGxEYXRhKGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCkBAIC0xNTY1LDcgKzE1NjUs
NyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpCiAgICAgICAgICAg
ICBORVhUX09QQ09ERTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgcltkc3RdID0ganNC
b29sZWFuKCFKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUoc3JjKSAmJiBzdGF0aWNfY2FzdDxKU0Nl
bGwqPihzcmMpLT5tYXNxdWVyYWRlQXNVbmRlZmluZWQoKSk7CisgICAgICAgIHJbZHN0XSA9IGpz
Qm9vbGVhbighSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHNyYykgJiYgc3JjLT5hc0NlbGwoKS0+
c3RydWN0dXJlSUQoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkpOwogICAg
ICAgICArK3ZQQzsKICAgICAgICAgTkVYVF9PUENPREU7CiAgICAgfQpAQCAtMTYwNSw3ICsxNjA1
LDcgQEAgSlNWYWx1ZSogTWFjaGluZTo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aQogICAgICAgICAg
ICAgTkVYVF9PUENPREU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHJbZHN0XSA9IGpz
Qm9vbGVhbihKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUoc3JjKSB8fCAhc3RhdGljX2Nhc3Q8SlND
ZWxsKj4oc3JjKS0+bWFzcXVlcmFkZUFzVW5kZWZpbmVkKCkpOworICAgICAgICByW2RzdF0gPSBq
c0Jvb2xlYW4oSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRlKHNyYykgfHwgIXN0YXRpY19jYXN0PEpT
Q2VsbCo+KHNyYyktPmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpLT50eXBlSW5mbygpLm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoKSk7CiAgICAgICAgICsrdlBDOwogICAgICAgICBORVhUX09QQ09ERTsK
ICAgICB9CkBAIC0yMTUxLDcgKzIxNTEsNyBAQCBKU1ZhbHVlKiBNYWNoaW5lOjpwcml2YXRlRXhl
Y3V0ZShFeGVjdXRpCiAgICAgICAgIGludCBkc3QgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgIGludCBzcmMgPSAoKyt2UEMpLT51Lm9wZXJhbmQ7CiAgICAgICAgIEpTVmFsdWUqIHYgPSBy
W3NyY10uanNWYWx1ZShleGVjKTsKLSAgICAgICAgcltkc3RdID0ganNCb29sZWFuKHYtPmlzVW5k
ZWZpbmVkKCkgfHwgKHYtPmlzT2JqZWN0KCkgJiYgc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2KS0+
bWFzcXVlcmFkZUFzVW5kZWZpbmVkKCkpKTsKKyAgICAgICAgcltkc3RdID0ganNCb29sZWFuKEpT
SW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh2KSA/IHYtPmlzVW5kZWZpbmVkKCkgOiB2LT5hc0NlbGwo
KS0+c3RydWN0dXJlSUQoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkpOwog
CiAgICAgICAgICsrdlBDOwogICAgICAgICBORVhUX09QQ09ERTsKQEAgLTUyNjQsNyArNTI2NCw3
IEBAIEpTVmFsdWUqIE1hY2hpbmU6OmN0aV9vcF90eXBlb2YoQ1RJX0FSR1MKIEpTVmFsdWUqIE1h
Y2hpbmU6OmN0aV9vcF9pc191bmRlZmluZWQoQ1RJX0FSR1MpCiB7CiAgICAgSlNWYWx1ZSogdiA9
IEFSR19zcmMxOwotICAgIHJldHVybiBqc0Jvb2xlYW4odi0+aXNVbmRlZmluZWQoKSB8fCAodi0+
aXNPYmplY3QoKSAmJiBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHYpLT5tYXNxdWVyYWRlQXNVbmRl
ZmluZWQoKSkpOworICAgIHJldHVybiBqc0Jvb2xlYW4oSlNJbW1lZGlhdGU6OmlzSW1tZWRpYXRl
KHYpID8gdi0+aXNVbmRlZmluZWQoKSA6IHYtPmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpLT50eXBl
SW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSk7CiB9CiAKIEpTVmFsdWUqIE1hY2hpbmU6
OmN0aV9vcF9pc19ib29sZWFuKENUSV9BUkdTKQpAQCAtNTUwNSwyNCArNTUwNSw2IEBAIHZvaWQg
TWFjaGluZTo6Y3RpX29wX2RlYnVnKENUSV9BUkdTKQogICAgIGV4ZWMtPm1hY2hpbmUoKS0+ZGVi
dWcoZXhlYywgY29kZUJsb2NrLCBzY29wZUNoYWluLCByLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJ
RD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKIH0KIAotSlNWYWx1ZSogTWFj
aGluZTo6Y3RpX29wX2VxX251bGwoQ1RJX0FSR1MpCi17Ci0gICAgSlNWYWx1ZSogc3JjID0gQVJH
X3NyYzE7Ci0gICAgaWYgKHNyYy0+aXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IGpzQm9vbGVhbih0cnVlKTsKLQotICAgIHJldHVybiBqc0Jvb2xlYW4oIUpTSW1tZWRpYXRlOjpp
c0ltbWVkaWF0ZShzcmMpICYmIHN0YXRpY19jYXN0PEpTQ2VsbCo+KHNyYyktPm1hc3F1ZXJhZGVB
c1VuZGVmaW5lZCgpKTsKLX0KLQotSlNWYWx1ZSogTWFjaGluZTo6Y3RpX29wX25lcV9udWxsKENU
SV9BUkdTKQotewotICAgIEpTVmFsdWUqIHNyYyA9IEFSR19zcmMxOwotICAgIGlmIChzcmMtPmlz
VW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwotCi0g
ICAgcmV0dXJuIGpzQm9vbGVhbihKU0ltbWVkaWF0ZTo6aXNJbW1lZGlhdGUoc3JjKSB8fCAhc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oc3JjKS0+bWFzcXVlcmFkZUFzVW5kZWZpbmVkKCkpOwotfQotCiB2
b2lkKiBNYWNoaW5lOjpjdGlfdm1fdGhyb3coQ1RJX0FSR1MpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gQVJHX2V4ZWM7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5oCShyZXZpc2lvbiAzNjc2MSkKKysr
IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDggKzIy
MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCBTRlhfQ0FMTCBjdGlf
b3BfcHV0X3NldHRlcihDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBTRlhfQ0FM
TCBjdGlfb3BfbmV3X2Vycm9yKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NB
TEwgY3RpX29wX2RlYnVnKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNGWF9D
QUxMIGN0aV9vcF9lcV9udWxsKENUSV9BUkdTKTsKLSAgICAgICAgc3RhdGljIEpTVmFsdWUqIFNG
WF9DQUxMIGN0aV9vcF9uZXFfbnVsbChDVElfQVJHUyk7CiAKICAgICAgICAgc3RhdGljIHZvaWQq
IFNGWF9DQUxMIGN0aV92bV90aHJvdyhDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyB2b2lkKiBT
RlhfQ0FMTCBjdGlfdm1fY29tcGlsZShDVElfQVJHUyk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTQ2VsbC5oCShy
ZXZpc2lvbiAzNjc2MSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0NlbGwuaAkod29ya2luZyBj
b3B5KQpAQCAtNzcsOSArNzcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBV
U3RyaW5nIHRvU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBK
U09iamVjdCogdG9PYmplY3QoRXhlY1N0YXRlKikgY29uc3QgPSAwOwogCi0gICAgICAgIC8vIFdl
YkNvcmUgdXNlcyB0aGlzIHRvIG1ha2UgZG9jdW1lbnQuYWxsIGFuZCBzdHlsZS5maWx0ZXIgdW5k
ZXRlY3RhYmxlCi0gICAgICAgIHZpcnR1YWwgYm9vbCBtYXNxdWVyYWRlQXNVbmRlZmluZWQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotCiAgICAgICAgIC8vIEdhcmJhZ2UgY29sbGVjdGlvbi4K
ICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgRXhlY1N0YXRlKik7CiAgICAgICAg
IHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHBsYWNlbWVudE5ld0Rlc3RpbmF0aW9u
KSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlvbjsgfQpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSlNWYWx1
ZS5oCShyZXZpc2lvbiAzNjc2MSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU1ZhbHVlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDggKzU2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICovCiAg
ICAgY2xhc3MgSlNWYWx1ZSA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpT
Q2VsbDsgLy8gc28gaXQgY2FuIGRlcml2ZSBmcm9tIHRoaXMgY2xhc3MKLSAgICAgICAgZnJpZW5k
IGNsYXNzIEhlYXA7IC8vIHNvIGl0IGNhbiBjYWxsIGFzQ2VsbCgpCi0gICAgICAgIGZyaWVuZCBj
bGFzcyBNYWNoaW5lOyAvLyBzbyBpdCBjYW4gY2FsbCBhc0NlbGwoKQogICAgIHByaXZhdGU6CiAg
ICAgICAgIEpTVmFsdWUoKTsKICAgICAgICAgdmlydHVhbCB+SlNWYWx1ZSgpOwpAQCAtMTQ1LDE1
ICsxNDMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNWYWx1ZSogZ2V0SlNOdW1i
ZXIoKTsgLy8gMCBpZiB0aGlzIGlzIG5vdCBhIEpTTnVtYmVyIG9yIG51bWJlciBvYmplY3QKIAor
ICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpOworICAgICAgICBjb25zdCBKU0NlbGwqIGFzQ2VsbCgp
IGNvbnN0OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsK
ICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgaW50MzJfdCB0b0ludDMyU2xvd0Nhc2Uo
RXhlY1N0YXRlKiwgYm9vbCYgb2spIGNvbnN0OwogICAgICAgICB1aW50MzJfdCB0b1VJbnQzMlNs
b3dDYXNlKEV4ZWNTdGF0ZSosIGJvb2wmIG9rKSBjb25zdDsKLQotICAgICAgICAvLyBJbXBsZW1l
bnRhdGlvbiBkZXRhaWxzLgotICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpOwotICAgICAgICBjb25z
dCBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwogICAgIH07CiAKICAgICBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZSgpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nT2JqZWN0VGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3Ry
aW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAkocmV2aXNpb24gMzY3NjEpCisr
KyBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBTdHJpbmdPYmpl
Y3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZF9oCiAjZGVmaW5lIFN0cmluZ09iamVjdFRoYXRN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkX2gKIAorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiU3RyaW5nT2JqZWN0LmgiCiAjaW5jbHVkZSAidXN0cmluZy5oIgogCkBAIC0yOSwx
MiArMzAsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gV2ViQ29yZSB1c2VzIHRoaXMgdG8g
bWFrZSBzdHlsZS5maWx0ZXIgdW5kZXRlY3RhYmxlCiAgICAgY2xhc3MgU3RyaW5nT2JqZWN0VGhh
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgOiBwdWJsaWMgU3RyaW5nT2JqZWN0IHsKICAgICBwdWJs
aWM6CisgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgc3RyaW5nKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IChleGVjKSBTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZChleGVjLAorICAgICAgICAgICAgICAgIGNyZWF0ZVN0cnVjdHVyZUlE
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+c3RyaW5nUHJvdG90eXBlKCkpLCBzdHJpbmcp
OworICAgICAgICB9CisKKyAgICBwcml2YXRlOgogICAgICAgICBTdHJpbmdPYmplY3RUaGF0TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZChFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJl
SUQ+IHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgc3RyaW5nKQogICAgICAgICAgICAgOiBTdHJp
bmdPYmplY3QoZXhlYywgc3RydWN0dXJlLCBzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBtYXNxdWVyYWRlQXNVbmRlZmluZWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZUlEPiBjcmVh
dGVTdHJ1Y3R1cmVJRChKU1ZhbHVlKiBwcm90bykgCisgICAgICAgIHsgCisgICAgICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlSUQ6OmNyZWF0ZShwcm90bywgVHlwZUluZm8oT2JqZWN0VHlwZSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCkpOyAKKyAgICAgICAgfQorCiAgICAgICAgIHZpcnR1YWwgYm9v
bCB0b0Jvb2xlYW4oRXhlY1N0YXRlKikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9Owog
IApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1N0cnVjdHVyZUlELmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL1N0cnVjdHVyZUlELmgJKHJldmlzaW9uIDM2NzYxKQorKysgSmF2
YVNjcmlwdENvcmUva2pzL1N0cnVjdHVyZUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsx
MDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX3R5cGVJbmZvOyB9CiAKKyAgICAgICAgLy8gRm9yIHVzZSB3
aGVuIGZpcnN0IGNyZWF0aW5nIGEgbmV3IHN0cnVjdHVyZS4KKyAgICAgICAgVHlwZUluZm8mIG11
dGFibGVUeXBlSW5mbygpIHsgcmV0dXJuIG1fdHlwZUluZm87IH0KKwogICAgICAgICBKU1ZhbHVl
KiBzdG9yZWRQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3Byb3RvdHlwZTsgfQogICAgICAg
ICBKU1ZhbHVlKiBwcm90b3R5cGVGb3JMb29rdXAoRXhlY1N0YXRlKik7IAogCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvVHlwZUluZm8uaAkocmV2aXNpb24gMzY3NjEpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvVHlw
ZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCisgICAgLy8gV2ViQ29yZSB1c2VzIHRoaXMgdG8gbWFrZSBkb2N1bWVudC5hbGwgYW5k
IHN0eWxlLmZpbHRlciB1bmRldGVjdGFibGUuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAweDE7CisKICAgICBjbGFzcyBUeXBlSW5mbyB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBDVEk7CiAgICAgcHVibGljOgotICAgICAgICBUeXBlSW5mbyhKU1R5
cGUgdHlwZSkgOiBtX3R5cGUodHlwZSkgeyB9Ci0gICAgICAgIAorICAgICAgICBUeXBlSW5mbyhK
U1R5cGUgdHlwZSwgdW5zaWduZWQgZmxhZ3MgPSAwKSA6IG1fdHlwZSh0eXBlKSwgbV9mbGFncyhm
bGFncykgeyB9CisKICAgICAgICAgSlNUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KIAorICAgICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzICYgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsgfQorCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSlNUeXBlIG1fdHlwZTsKKyAgICAgICAgdW5zaWduZWQgbV9mbGFnczsKICAgICB9Owog
CiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvb3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUva2pzL29wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAzNjc2MSkKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9vcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMs
MTUgKzUzLDE1IEBAIHN0YXJ0T3ZlcjoKICAgICBpZiAodjEtPmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKICAgICAgICAgaWYgKHYyLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIGlmICghdjItPmlzT2JqZWN0KCkpCisgICAgICAgIGlmIChKU0lt
bWVkaWF0ZTo6aXNJbW1lZGlhdGUodjIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2MiktPm1hc3F1ZXJhZGVBc1VuZGVm
aW5lZCgpOworICAgICAgICByZXR1cm4gdjItPmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpLT50eXBl
SW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICBpZiAodjItPmlz
VW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgaWYgKCF2MS0+aXNPYmplY3QoKSkKKyAgICAg
ICAgaWYgKEpTSW1tZWRpYXRlOjppc0ltbWVkaWF0ZSh2MSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHYxKS0+bWFzcXVl
cmFkZUFzVW5kZWZpbmVkKCk7CisgICAgICAgIHJldHVybiB2MS0+YXNDZWxsKCktPnN0cnVjdHVy
ZUlEKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpOwogICAgIH0KIAogICAg
IGlmICh2MS0+aXNPYmplY3QoKSkgewpJbmRleDogSmF2YVNjcmlwdENvcmUvbWFzbS9YODZBc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9tYXNtL1g4NkFzc2VtYmxlci5o
CShyZXZpc2lvbiAzNjc2MSkKKysrIEphdmFTY3JpcHRDb3JlL21hc20vWDg2QXNzZW1ibGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIE9QX0dS
T1VQMUFfRXYgICAgICAgICAgICAgICAgICAgPSAweDhGLAogICAgICAgICBPUF9DRFEgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gMHg5OSwKICAgICAgICAgT1BfU0VURSAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDB4OTQsCisgICAgICAgIE9QX1NFVE5FICAgICAgICAgICAgICAgICAgICAg
ICAgPSAweDk1LAogICAgICAgICBPUF9HUk9VUDJfRXZJYiAgICAgICAgICAgICAgICAgID0gMHhD
MSwKICAgICAgICAgT1BfUkVUICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4QzMsCiAgICAg
ICAgIE9QX0dST1VQMTFfRXZJeiAgICAgICAgICAgICAgICAgPSAweEM3LApAQCAtNDAwLDYgKzQw
MSwxOCBAQCBwdWJsaWM6CiAgICAgICAgIHNldGVfcihkc3QpOwogICAgIH0KIAorICAgIHZvaWQg
c2V0bmVfcihSZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRl
KE9QXzJCWVRFX0VTQ0FQRSk7CisgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE9QX1NFVE5FKTsK
KyAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoTU9EUk0oMywgMCwgZHN0KSk7CisgICAgfQorCisg
ICAgdm9pZCBzZXRuel9yKFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgc2V0bmVfcihk
c3QpOworICAgIH0KKwogICAgIHZvaWQgb3JsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE9QX09SX0V2R3YpOwpAQCAt
NDU0LDYgKzQ2NywyMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnVmZmVyLT5wdXRJbnRVbmNoZWNr
ZWQoaW1tKTsKICAgICB9CiAKKyAgICB2b2lkIHRlc3RsX2kzMm0oaW50IGltbSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9HUk9VUDNfRXZJeik7
CisgICAgICAgIGVtaXRNb2RSbV9vcG0oR1JPVVAzX09QX1RFU1QsIGRzdCk7CisgICAgICAgIG1f
YnVmZmVyLT5wdXRJbnQoaW1tKTsKKyAgICB9CisKKyAgICB2b2lkIHRlc3RsX2kzMm0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgeworICAgICAgICBtX2J1ZmZlci0+
cHV0Qnl0ZShPUF9HUk9VUDNfRXZJeik7CisgICAgICAgIGVtaXRNb2RSbV9vcG0oR1JPVVAzX09Q
X1RFU1QsIGRzdCwgb2Zmc2V0KTsKKyAgICAgICAgbV9idWZmZXItPnB1dEludChpbW0pOworICAg
IH0KKwogICAgIHZvaWQgdGVzdGxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfVEVTVF9Fdkd2KTsKSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAzNjc2MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMDgtMDktMjIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiBp
bml0aWFsIHdvcmsgYnkgRGFyaW4gQWRsZXIuCisgICAgICAgIAorICAgICAgICAtIHJlcGxhY2Ug
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB2aXJ0dWFsIG1ldGhvZCB3aXRoIGEgZmxhZyBpbiBUeXBl
SW5mbworICAgICAgICAtIHVzZSB0aGlzIHRvIEpJVCBpbmxpbmUgY29kZSBmb3IgZXFfbnVsbCBh
bmQgbmVxX251bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODIzCisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lR2V0
dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEFs
bENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rpb246OmNy
ZWF0ZVN0cnVjdHVyZUlEKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTEFsbENvbGxlY3Rpb246
OnRvQm9vbGVhbik6CisKIDIwMDgtMDktMjIgIFRvciBBcm5lIFZlc3Riw7ggIDx0YXZlc3Rib0B0
cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uLgpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM2NzYxKQorKysg
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE3NTMsNiArMTc1Myw3IEBACiAJCTkzNEY3MTQyMEQ1QTZGNDQwMDAxOEQ2OSAvKiBSZXNv
dXJjZUVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MzRGNzE0MTBENUE2RjQ0MDAwMThENjkgLyogUmVzb3VyY2VFcnJvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNEY3MTQ0MEQ1QTZGNTMw
MDAxOEQ2OSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0RjcxNDMwRDVBNkY1MzAwMDE4RDY5IC8qIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTM0RkU5RTUwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNEZF
OUU0MEI1Q0E1MzkwMDNFNEE3MyAvKiBGaWxlQ2hvb3Nlci5jcHAgKi87IH07CisJCTkzNTBFNzBE
MEU4NzUwMEIwMDE4OUZGRiAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNTBFNzBDMEU4NzUwMEIwMDE4OUZG
RiAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLzsgfTsKIAkJOTM1MjA3MTkwOUJEM0JBNTAw
RjIwMzhEIC8qIFN0YXRpY0NvbnN0cnVjdG9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1MjA3MTcwOUJEM0JBNTAwRjIwMzhEIC8qIFN0YXRpY0Nv
bnN0cnVjdG9ycy5oICovOyB9OwogCQk5MzUyMDdCRTA5QkQ0MTBBMDBGMjAzOEQgLyogTG9jYWxp
emVkU3RyaW5ncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLzsgfTsK
IAkJOTM1MjA3QzAwOUJENDEyMTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3NNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzUyMDdCRjA5QkQ0
MTIwMDBGMjAzOEQgLyogTG9jYWxpemVkU3RyaW5nc01hYy5tbSAqLzsgfTsKQEAgLTYzOTYsNiAr
NjM5Nyw3IEBACiAJCTkzNEY3MTQxMEQ1QTZGNDQwMDAxOEQ2OSAvKiBSZXNvdXJjZUVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUVycm9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNEY3MTQzMEQ1QTZGNTMwMDAxOEQ2OSAvKiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTM0RkU5RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVDaG9vc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTM1MEU3MEMwRTg3NTAwQjAwMTg5RkZGIC8qIEpTSFRNTEFsbENvbGxl
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQWxs
Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzNTIwNzE3MDlC
RDNCQTUwMEYyMDM4RCAvKiBTdGF0aWNDb25zdHJ1Y3RvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3RhdGljQ29uc3RydWN0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzNTIwN0JEMDlCRDQxMEEwMEYyMDM4RCAvKiBMb2NhbGl6ZWRTdHJpbmdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvY2FsaXplZFN0cmluZ3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1MjA3QkYwOUJENDEyMDAwRjIwMzhEIC8qIExv
Y2FsaXplZFN0cmluZ3NNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBMb2NhbGl6ZWRTdHJpbmdzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTI2NTIsNiArMTI2NTQsNyBAQAogCQkJCUJDRDlDMjZBMEMxN0FBODEwMDVDOTBBMiAvKiBK
U0V2ZW50VGFyZ2V0Tm9kZS5jcHAgKi8sCiAJCQkJQkNEOUMyNkIwQzE3QUE4MTAwNUM5MEEyIC8q
IEpTRXZlbnRUYXJnZXROb2RlLmggKi8sCiAJCQkJQkM2REM3QTAwQzFBNEJGQTAwNEUyMDE3IC8q
IEpTSFRNTEFsbENvbGxlY3Rpb24uaCAqLywKKwkJCQk5MzUwRTcwQzBFODc1MDBCMDAxODlGRkYg
LyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgKi8sCiAJCQkJQTgwRTdFNjQwQTFBODJFQzAwN0ZC
OEM1IC8qIEpTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwICovLAogCQkJCUE4MEU3RTYzMEExQTgy
RUMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmggKi8sCiAJCQkJQTgyNkU4QUQw
QTFBOEYyMzAwQ0QxQkI2IC8qIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgKi8s
CkBAIC0xNzY5MCw2ICsxNzY5Myw3IEBACiAJCQkJQjJGMzRGRTkwRTgyRjgyNzAwRjYyN0NEIC8q
IEROU0NGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUY4NjlGMEU4NDRFOUQwMEE4NUNE
NSAvKiBTY3JvbGxiYXJUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTA4OTU4MjU1MEU4
NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MzUw
RTcwRDBFODc1MDBCMDAxODlGRkYgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDM2NzYxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAs
OSArMTUwLDcgQEAgSlNWYWx1ZSogSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lR2V0dAogCiAg
ICAgLy8gTWFrZSB0aGUgU1ZHICdmaWx0ZXInIGF0dHJpYnV0ZSB1bmRldGVjdGFibGUsIHRvIGF2
b2lkIGNvbmZ1c2lvbiB3aXRoIHRoZSBJRSAnZmlsdGVyJyBhdHRyaWJ1dGUuCiAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSAiZmlsdGVyIikKLSAgICAgICAgcmV0dXJuIG5ldyAoZXhlYykgU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYywKLSAgICAgICAgICAgIFN0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOjpjcmVhdGVTdHJ1Y3R1cmVJRChleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnN0cmluZ1Byb3RvdHlwZSgpKSwKLSAgICAgICAgICAg
IHRoaXNPYmotPmltcGwoKS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wKSk7CisgICAgICAgIHJldHVy
biBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDo6Y3JlYXRlKGV4ZWMsIHRo
aXNPYmotPmltcGwoKS0+Z2V0UHJvcGVydHlWYWx1ZShwcm9wKSk7CiAKICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgdGhpc09iai0+aW1wbCgpLT5nZXRQcm9wZXJ0eVZhbHVlKHByb3ApKTsKIH0K
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmNwcAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU0hUTUxBbGxDb2xsZWN0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTSFRNTEFsbENv
bGxlY3Rpb246OnNfaW5mbyA9IHsgIkhUTUxBbGxDb2xsZWN0aW9uIiwgMCwgMCwgMCB9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFs
bENvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFs
bENvbGxlY3Rpb24uaAkocmV2aXNpb24gMzY3NjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTEFsbENvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBKU0hUTUxBbGxDb2xsZWN0aW9uX2gKICNkZWZpbmUgSlNIVE1MQWxsQ29sbGVjdGlvbl9o
CiAKKyNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkpTSFRNTENvbGxlY3Rp
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzksOCArNDAsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxKU0M6OlN0cnVjdHVyZUlEPiBjcmVhdGVTdHJ1Y3R1cmVJRChKU0M6OkpTVmFsdWUqIHBy
b3RvKSAKKyAgICAgICAgeyAKKyAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZUlEOjpj
cmVhdGUocHJvdG8sIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBKU0M6Ok1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQpKTsgCisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY29uc3QgSlND
OjpDbGFzc0luZm8gc19pbmZvOworCisgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBib29s
IHRvQm9vbGVhbihKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBtYXNxdWVyYWRlQXNVbmRlZmluZWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="10601"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>