<?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>63957</bug_id>
          
          <creation_ts>2011-07-05 15:15:22 -0700</creation_ts>
          <short_desc>JSC JIT has code duplication for the handling of call and construct</short_desc>
          <delta_ts>2011-07-05 16:18:40 -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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>432429</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-05 15:15:22 -0700</bug_when>
    <thetext>The JSC JIT compiles code differently depending on whether it&apos;s used for a normal call or an object construction.  However, even in cases where the compilation code path would be almost entirely identical for the two cases, there is code duplication, particularly in JITStubs.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432441</commentid>
    <comment_count>1</comment_count>
      <attachid>99754</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-05 15:29:46 -0700</bug_when>
    <thetext>Created attachment 99754
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432443</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 15:31:57 -0700</bug_when>
    <thetext>Attachment 99754 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/jit/JIT.h:249:  The parameter name &quot;kind&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432444</commentid>
    <comment_count>3</comment_count>
      <attachid>99755</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-07-05 15:33:54 -0700</bug_when>
    <thetext>Created attachment 99755
the patch (fix style)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432466</commentid>
    <comment_count>4</comment_count>
      <attachid>99755</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 16:18:35 -0700</bug_when>
    <thetext>Comment on attachment 99755
the patch (fix style)

Clearing flags on attachment: 99755

Committed r90414: &lt;http://trac.webkit.org/changeset/90414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432467</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 16:18:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99754</attachid>
            <date>2011-07-05 15:29:46 -0700</date>
            <delta_ts>2011-07-05 15:33:54 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>callconstruct_patch_1.diff</filename>
            <type>text/plain</type>
            <size>18283</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTEtMDctMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgSklUIGhhcyBjb2RlIGR1cGxpY2F0aW9uIGZvciB0aGUgaGFuZGxpbmcgb2YgY2FsbCBhbmQg
Y29uc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mzk1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6bGlua0Zvcik6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6Ompp
dENvbXBpbGVGb3IpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgIChKU0M6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoSlNDOjpsYXp5TGlua0Zvcik6Cisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVC
YXNlOjpnZW5lcmF0ZWRKSVRDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjppc0dl
bmVyYXRlZEZvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmdlbmVyYXRl
ZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcik6CisKIDIwMTEtMDctMDUgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb2xsb3dp
bmcgbGFzdCBwYXRjaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9u
IDkwNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDksNyArNjA5LDcgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQ
dHIqIGZ1bgogICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKIH0KIAotdm9p
ZCBKSVQ6OmxpbmtDYWxsKEpTRnVuY3Rpb24qIGNhbGxlZSwgQ29kZUJsb2NrKiBjYWxsZXJDb2Rl
QmxvY2ssIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBKSVQ6OkNvZGVQdHIgY29kZSwgQ2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8sIGludCBjYWxsZXJBcmdDb3VudCwgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQordm9pZCBKSVQ6OmxpbmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2Rl
QmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIEpJVDo6
Q29kZVB0ciBjb2RlLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgaW50IGNhbGxlckFyZ0Nv
dW50LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsK
IApAQCAtNjIyLDIyICs2MjIsMTIgQEAgdm9pZCBKSVQ6OmxpbmtDYWxsKEpTRnVuY3Rpb24qIGNh
bGxlZSwgQwogICAgIH0KIAogICAgIC8vIHBhdGNoIHRoZSBjYWxsIHNvIHdlIGRvIG5vdCBjb250
aW51ZSB0byB0cnkgdG8gbGluay4KLSAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0lu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aVZpcnR1YWxD
YWxsKCkpOwotfQotCi12b2lkIEpJVDo6bGlua0NvbnN0cnVjdChKU0Z1bmN0aW9uKiBjYWxsZWUs
IENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywg
SklUOjpDb2RlUHRyIGNvZGUsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvLCBpbnQgY2FsbGVy
QXJnQ291bnQsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKLXsKLSAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsKLQotICAgIC8vIEN1cnJlbnRseSB3ZSBv
bmx5IGxpbmsgY2FsbHMgd2l0aCB0aGUgZXhhY3QgbnVtYmVyIG9mIGFyZ3VtZW50cy4KLSAgICAv
LyBJZiB0aGlzIGlzIGEgbmF0aXZlIGNhbGwgY2FsbGVlQ29kZUJsb2NrIGlzIG51bGwgc28gdGhl
IG51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIHVuaW1wb3J0YW50Ci0gICAgaWYgKCFjYWxsZWVDb2Rl
QmxvY2sgfHwgKGNhbGxlckFyZ0NvdW50ID09IGNhbGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0
ZXJzKSkgewotICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby0+aXNMaW5rZWQoKSk7Ci0gICAg
ICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldCgqZ2xvYmFsRGF0YSwgY2FsbExpbmtJbmZvLT5o
b3RQYXRoQmVnaW4sIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+aG90UGF0aE90aGVy
LCBjb2RlKTsKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICByZXBhdGNo
QnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0
YS0+aml0U3R1YnMtPmN0aVZpcnR1YWxDYWxsKCkpOworICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gcGF0Y2ggdGhlIGNhbGwgc28gd2UgZG8gbm90IGNvbnRpbnVlIHRvIHRyeSB0byBs
aW5rLgorICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBnbG9iYWxEYXRh
LT5qaXRTdHVicy0+Y3RpVmlydHVhbENvbnN0cnVjdCgpKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MDQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw4ICsyNDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBqaXQucHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKHJldHVybkFkZHJlc3MpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgbGlu
a0NhbGwoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29k
ZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5rSW5mbyosIGludCBjYWxs
ZXJBcmdDb3VudCwgSlNHbG9iYWxEYXRhKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtDb25z
dHJ1Y3QoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29k
ZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5rSW5mbyosIGludCBjYWxs
ZXJBcmdDb3VudCwgSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRpYyB2b2lkIGxpbmtGb3Io
SlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2Nr
KiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5rSW5mbyosIGludCBjYWxsZXJBcmdD
b3VudCwgSlNHbG9iYWxEYXRhKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHN0cnVjdCBKU1JJbmZvIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiA5MDQwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTAyLDIwICsxOTAy
LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfbmV3X2YKICAgICByZXR1
cm4gc3RhY2tGcmFtZS5hcmdzWzBdLmZ1bmN0aW9uKCktPm1ha2Uoc3RhY2tGcmFtZS5jYWxsRnJh
bWUsIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5zY29wZUNoYWluKCkpOwogfQogCi1ERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9qaXRDb21waWxlKQoraW5saW5lIHZvaWQqIGppdENv
bXBpbGVGb3IoSklUU3RhY2tGcmFtZSYgc3RhY2tGcmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQogewotICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKLQotI2lm
ICFBU1NFUlRfRElTQUJMRUQKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBBU1NFUlQoc3Rh
Y2tGcmFtZS5jYWxsRnJhbWUtPmNhbGxlZSgpLT5nZXRDYWxsRGF0YShjYWxsRGF0YSkgPT0gQ2Fs
bFR5cGVKUyk7Ci0jZW5kaWYKLQogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gYXNGdW5jdGlv
bihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VSVCghZnVuY3Rpb24t
PmlzSG9zdEZ1bmN0aW9uKCkpOwogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKICAgICBTY29wZUNoYWluTm9kZSogY2FsbERhdGFT
Y29wZUNoYWluID0gZnVuY3Rpb24tPnNjb3BlKCk7Ci0gICAgSlNPYmplY3QqIGVycm9yID0gZXhl
Y3V0YWJsZS0+Y29tcGlsZUZvckNhbGwoc3RhY2tGcmFtZS5jYWxsRnJhbWUsIGNhbGxEYXRhU2Nv
cGVDaGFpbik7CisgICAgSlNPYmplY3QqIGVycm9yID0gZXhlY3V0YWJsZS0+Y29tcGlsZUZvcihz
dGFja0ZyYW1lLmNhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluLCBraW5kKTsKICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNl
cHRpb24gPSBlcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTIzLDYgKzE5MTYsMTggQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfaml0QwogICAgIHJldHVybiBmdW5j
dGlvbjsKIH0KIAorREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfaml0Q29tcGls
ZSkKK3sKKyAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CisKKyNpZiAhQVNT
RVJUX0RJU0FCTEVECisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQVNTRVJUKHN0YWNrRnJh
bWUuY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpID09IENhbGxUeXBl
SlMpOworI2VuZGlmCisgICAgCisgICAgcmV0dXJuIGppdENvbXBpbGVGb3Ioc3RhY2tGcmFtZSwg
Q29kZUZvckNhbGwpOworfQorCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3Ry
dWN0X2ppdENvbXBpbGUpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OwpAQCAtMTkzMSwyNyArMTkzNiwxNiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3Bf
Y29uc3RydWN0CiAgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwogICAgIEFTU0VSVChh
c0Z1bmN0aW9uKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxsZWUoKSktPmdldENvbnN0cnVjdERh
dGEoY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKICNlbmRpZgotCi0gICAgSlNG
dW5jdGlvbiogZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxs
ZWUoKSk7Ci0gICAgQVNTRVJUKCFmdW5jdGlvbi0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwot
ICAgIFNjb3BlQ2hhaW5Ob2RlKiBjYWxsRGF0YVNjb3BlQ2hhaW4gPSBmdW5jdGlvbi0+c2NvcGUo
KTsKLSAgICBKU09iamVjdCogZXJyb3IgPSBleGVjdXRhYmxlLT5jb21waWxlRm9yQ29uc3RydWN0
KHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBjYWxsRGF0YVNjb3BlQ2hhaW4pOwotICAgIGlmIChlcnJv
cikgewotICAgICAgICBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlv
biA9IGVycm9yOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGZ1bmN0aW9u
OworICAgIAorICAgIHJldHVybiBqaXRDb21waWxlRm9yKHN0YWNrRnJhbWUsIENvZGVGb3JDb25z
dHJ1Y3QpOwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0eUNo
ZWNrKQoraW5saW5lIHZvaWQqIGFyaXR5Q2hlY2tGb3IoSklUU3RhY2tGcmFtZSYgc3RhY2tGcmFt
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBSZXR1cm5BZGRyZXNzUHRyJiBzdHViUmV0
dXJuQWRkcmVzcykKIHsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0K
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7CiAgICAg
QVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29k
ZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yQ2Fs
bCgpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwogICAgIGludCBhcmdDb3VudCA9IGNhbGxG
cmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKICAgICBSZXR1cm5BZGRyZXNzUHRy
IHBjID0gY2FsbEZyYW1lLT5yZXR1cm5QQygpOwogCkBAIC0xOTY4LDcgKzE5NjIsNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0CiAgICAgICAgICAgICAvLyBSZXdp
bmQgdG8gdGhlIHByZXZpb3VzIGNhbGwgZnJhbWUgYmVjYXVzZSBvcF9jYWxsIGFscmVhZHkgb3B0
aW1pc3RpY2FsbHkKICAgICAgICAgICAgIC8vIG1vdmVkIHRoZSBjYWxsIGZyYW1lIGZvcndhcmQu
CiAgICAgICAgICAgICBFeGNlcHRpb25IYW5kbGVyIGhhbmRsZXIgPSBqaXRUaHJvdyhzdGFja0Zy
YW1lLmdsb2JhbERhdGEsIG9sZENhbGxGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG9s
ZENhbGxGcmFtZSksIHBjKTsKLSAgICAgICAgICAgIFNUVUJfU0VUX1JFVFVSTl9BRERSRVNTKGhh
bmRsZXIuY2F0Y2hSb3V0aW5lKTsKKyAgICAgICAgICAgIHN0dWJSZXR1cm5BZGRyZXNzID0gUmV0
dXJuQWRkcmVzc1B0cihoYW5kbGVyLmNhdGNoUm91dGluZSk7CiAgICAgICAgICAgICByZXR1cm4g
aGFuZGxlci5jYWxsRnJhbWU7CiAgICAgICAgIH0KIApAQCAtMTk4Myw3ICsxOTc3LDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdAogICAgICAgICAgICAgLy8gUmV3
aW5kIHRvIHRoZSBwcmV2aW91cyBjYWxsIGZyYW1lIGJlY2F1c2Ugb3BfY2FsbCBhbHJlYWR5IG9w
dGltaXN0aWNhbGx5CiAgICAgICAgICAgICAvLyBtb3ZlZCB0aGUgY2FsbCBmcmFtZSBmb3J3YXJk
LgogICAgICAgICAgICAgRXhjZXB0aW9uSGFuZGxlciBoYW5kbGVyID0gaml0VGhyb3coc3RhY2tG
cmFtZS5nbG9iYWxEYXRhLCBvbGRDYWxsRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihv
bGRDYWxsRnJhbWUpLCBwYyk7Ci0gICAgICAgICAgICBTVFVCX1NFVF9SRVRVUk5fQUREUkVTUyho
YW5kbGVyLmNhdGNoUm91dGluZSk7CisgICAgICAgICAgICBzdHViUmV0dXJuQWRkcmVzcyA9IFJl
dHVybkFkZHJlc3NQdHIoaGFuZGxlci5jYXRjaFJvdXRpbmUpOwogICAgICAgICAgICAgcmV0dXJu
IGhhbmRsZXIuY2FsbEZyYW1lOwogICAgICAgICB9CiAKQEAgLTIwMDMsNjggKzE5OTcsMjIgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdAogICAgIHJldHVybiBjYWxs
RnJhbWU7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3RfYXJp
dHlDaGVjaykKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2sp
CiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworICAgIAorICAgIHJl
dHVybiBhcml0eUNoZWNrRm9yKHN0YWNrRnJhbWUsIENvZGVGb3JDYWxsLCBTVFVCX1JFVFVSTl9B
RERSRVNTKTsKK30KIAotICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxs
RnJhbWU7Ci0gICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNh
bGxlZSgpKTsKLSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29k
ZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3JDb25zdHJ1Y3QoKTsKLSAgICBpbnQgYXJnQ291bnQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgUmV0dXJuQWRkcmVzc1B0ciBwYyA9IGNh
bGxGcmFtZS0+cmV0dXJuUEMoKTsKLQotICAgIEFTU0VSVChhcmdDb3VudCAhPSBuZXdDb2RlQmxv
Y2stPm1fbnVtUGFyYW1ldGVycyk7Ci0KLSAgICBDYWxsRnJhbWUqIG9sZENhbGxGcmFtZSA9IGNh
bGxGcmFtZS0+Y2FsbGVyRnJhbWUoKTsKLQotICAgIFJlZ2lzdGVyKiByOwotICAgIGlmIChhcmdD
b3VudCA+IG5ld0NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSB7Ci0gICAgICAgIHNpemVfdCBu
dW1QYXJhbWV0ZXJzID0gbmV3Q29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnM7Ci0gICAgICAgIHIg
PSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbnVtUGFyYW1ldGVyczsKLSAgICAgICAgUmVnaXN0
ZXIqIG5ld0VuZCA9IHIgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwotICAg
ICAgICBpZiAoIXN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLT5ncm93KG5ld0VuZCkpIHsKLSAgICAg
ICAgICAgIC8vIFJld2luZCB0byB0aGUgcHJldmlvdXMgY2FsbCBmcmFtZSBiZWNhdXNlIG9wX2Nh
bGwgYWxyZWFkeSBvcHRpbWlzdGljYWxseQotICAgICAgICAgICAgLy8gbW92ZWQgdGhlIGNhbGwg
ZnJhbWUgZm9yd2FyZC4KLSAgICAgICAgICAgIEV4Y2VwdGlvbkhhbmRsZXIgaGFuZGxlciA9IGpp
dFRocm93KHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgb2xkQ2FsbEZyYW1lLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3Iob2xkQ2FsbEZyYW1lKSwgcGMpOwotICAgICAgICAgICAgU1RVQl9TRVRfUkVU
VVJOX0FERFJFU1MoaGFuZGxlci5jYXRjaFJvdXRpbmUpOwotICAgICAgICAgICAgcmV0dXJuIGhh
bmRsZXIuY2FsbEZyYW1lOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVnaXN0ZXIqIGFyZ3YgPSBy
IC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gbnVtUGFyYW1ldGVycyAtIGFy
Z0NvdW50OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVBhcmFtZXRlcnM7ICsr
aSkKLSAgICAgICAgICAgIGFyZ3ZbaSArIGFyZ0NvdW50XSA9IGFyZ3ZbaV07Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgc2l6ZV90IG9taXR0ZWRBcmdDb3VudCA9IG5ld0NvZGVCbG9jay0+bV9udW1Q
YXJhbWV0ZXJzIC0gYXJnQ291bnQ7Ci0gICAgICAgIHIgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygp
ICsgb21pdHRlZEFyZ0NvdW50OwotICAgICAgICBSZWdpc3RlciogbmV3RW5kID0gciArIG5ld0Nv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7Ci0gICAgICAgIGlmICghc3RhY2tGcmFtZS5y
ZWdpc3RlckZpbGUtPmdyb3cobmV3RW5kKSkgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHRo
ZSBwcmV2aW91cyBjYWxsIGZyYW1lIGJlY2F1c2Ugb3BfY2FsbCBhbHJlYWR5IG9wdGltaXN0aWNh
bGx5Ci0gICAgICAgICAgICAvLyBtb3ZlZCB0aGUgY2FsbCBmcmFtZSBmb3J3YXJkLgotICAgICAg
ICAgICAgRXhjZXB0aW9uSGFuZGxlciBoYW5kbGVyID0gaml0VGhyb3coc3RhY2tGcmFtZS5nbG9i
YWxEYXRhLCBvbGRDYWxsRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihvbGRDYWxsRnJh
bWUpLCBwYyk7Ci0gICAgICAgICAgICBTVFVCX1NFVF9SRVRVUk5fQUREUkVTUyhoYW5kbGVyLmNh
dGNoUm91dGluZSk7Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlci5jYWxsRnJhbWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBSZWdpc3RlciogYXJndiA9IHIgLSBSZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemUgLSBvbWl0dGVkQXJnQ291bnQ7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb21pdHRlZEFyZ0NvdW50OyArK2kpCi0gICAgICAgICAgICBhcmd2W2ldID0ganNV
bmRlZmluZWQoKTsKLSAgICB9Ci0KLSAgICBjYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShy
KTsKLSAgICBjYWxsRnJhbWUtPnNldENhbGxlckZyYW1lKG9sZENhbGxGcmFtZSk7Ci0gICAgY2Fs
bEZyYW1lLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhhcmdDb3VudCk7Ci0gICAgY2Fs
bEZyYW1lLT5zZXRDYWxsZWUoY2FsbGVlKTsKLSAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4o
Y2FsbGVlLT5zY29wZSgpKTsKLSAgICBjYWxsRnJhbWUtPnNldFJldHVyblBDKHBjLnZhbHVlKCkp
OworREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdF9hcml0eUNoZWNrKQor
eworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAotICAgIEFTU0VSVCgo
dm9pZCopY2FsbEZyYW1lIDw9IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAg
cmV0dXJuIGNhbGxGcmFtZTsKKyAgICByZXR1cm4gYXJpdHlDaGVja0ZvcihzdGFja0ZyYW1lLCBD
b2RlRm9yQ29uc3RydWN0LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKIH0KIAotREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIHZtX2xhenlMaW5rQ2FsbCkKK2lubGluZSB2b2lkKiBsYXp5TGlua0Zv
cihKSVRTdGFja0ZyYW1lJiBzdGFja0ZyYW1lLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CiB7Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKICAgICBFeGVjdXRhYmxlQmFz
ZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwpAQCAtMjA3Miw2MiArMjAyMCw0
MiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgdm1fbGF6eUxpbmtDCiAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOwog
ICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICBjb2RlUHRyID0g
ZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKS5hZGRyZXNzRm9yQ2FsbCgpOwor
ICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5h
ZGRyZXNzRm9yQ2FsbCgpOwogICAgIGVsc2UgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4
ZWN1dGFibGUpOwotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUt
PmNvbXBpbGVGb3JDYWxsKGNhbGxGcmFtZSwgY2FsbGVlLT5zY29wZSgpKTsKKyAgICAgICAgSlNP
YmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGNhbGxGcmFtZSwg
Y2FsbGVlLT5zY29wZSgpLCBraW5kKTsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAg
ICBjYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAg
ICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
Q2FsbCgpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bV9udW1Q
YXJhbWV0ZXJzKSkKLSAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdl
bmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICAgICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRk
cmVzc0ZvckNhbGwoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaygpOwor
ICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOwogICAgIH0KICAgICBDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbyA9ICZzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2Nr
KCktPmdldENhbGxMaW5rSW5mbyhjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogCiAgICAgaWYgKCFj
YWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCiAgICAgICAgIGNhbGxMaW5rSW5mby0+c2V0U2Vlbigp
OwogICAgIGVsc2UKLSAgICAgICAgSklUOjpsaW5rQ2FsbChjYWxsZWUsIHN0YWNrRnJhbWUuY2Fs
bEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKSwgY29kZUJsb2NrLCBjb2RlUHRyLCBj
YWxsTGlua0luZm8sIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSwgc3Rh
Y2tGcmFtZS5nbG9iYWxEYXRhKTsKKyAgICAgICAgSklUOjpsaW5rRm9yKGNhbGxlZSwgc3RhY2tG
cmFtZS5jYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLCBjb2RlQmxvY2ssIGNv
ZGVQdHIsIGNhbGxMaW5rSW5mbywgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpLCBzdGFja0ZyYW1lLmdsb2JhbERhdGEsIGtpbmQpOwogCiAgICAgcmV0dXJuIGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZt
X2xhenlMaW5rQ29uc3RydWN0KQorREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX2xhenlM
aW5rQ2FsbCkKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0gICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7Ci0KLSAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7
Ci0gICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCi0gICAgICAgIGNvZGVQdHIg
PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkuYWRkcmVzc0ZvckNh
bGwoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4
ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsK
LSAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9y
Q29uc3RydWN0KGNhbGxGcmFtZSwgY2FsbGVlLT5zY29wZSgpKTsKLSAgICAgICAgaWYgKGVycm9y
KSB7Ci0gICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHN0YWNr
RnJhbWUuZ2xvYmFsRGF0YSwgUmV0dXJuQWRkcmVzc1B0cihjYWxsRnJhbWUtPnJldHVyblBDKCkp
LCBTVFVCX1JFVFVSTl9BRERSRVNTKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9
Ci0gICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yQ29uc3RydWN0KCk7Ci0gICAgICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm1fbnVtUGFy
YW1ldGVycykpCi0gICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5l
cmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCkuYWRkcmVzc0ZvckNhbGwoKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrKCk7Ci0gICAgfQotICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gJnN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5j
b2RlQmxvY2soKS0+Z2V0Q2FsbExpbmtJbmZvKGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7Ci0KLSAg
ICBpZiAoIWNhbGxMaW5rSW5mby0+c2Vlbk9uY2UoKSkKLSAgICAgICAgY2FsbExpbmtJbmZvLT5z
ZXRTZWVuKCk7Ci0gICAgZWxzZQotICAgICAgICBKSVQ6OmxpbmtDb25zdHJ1Y3QoY2FsbGVlLCBz
dGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCksIGNvZGVCbG9j
aywgY29kZVB0ciwgY2FsbExpbmtJbmZvLCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCksIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSk7CisgICAgCisgICAgcmV0dXJuIGxhenlM
aW5rRm9yKHN0YWNrRnJhbWUsIENvZGVGb3JDYWxsKTsKK30KIAotICAgIHJldHVybiBjb2RlUHRy
LmV4ZWN1dGFibGVBZGRyZXNzKCk7CitERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgdm1fbGF6
eUxpbmtDb25zdHJ1Y3QpCit7CisgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUp
OworICAgIAorICAgIHJldHVybiBsYXp5TGlua0ZvcihzdGFja0ZyYW1lLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9wdXNoX2FjdGl2
YXRpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CShyZXZpc2lvbiA5MDQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVjdCBFeGNlcHRpb25JbmZvOwor
ICAgIAorICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2Rl
Rm9yQ29uc3RydWN0IH07CiAKICAgICBjbGFzcyBFeGVjdXRhYmxlQmFzZSA6IHB1YmxpYyBKU0Nl
bGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTEsNiArOTMsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQobV9qaXRDb2RlRm9yQ29uc3RydWN0KTsKICAg
ICAgICAgICAgIHJldHVybiBtX2ppdENvZGVGb3JDb25zdHJ1Y3Q7CiAgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIEpJVENvZGUmIGdlbmVyYXRlZEpJVENvZGVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkSklUQ29kZUZvckNhbGwoKTsK
KyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAg
ICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3QoKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIHZvaWQgY2xlYXJFeGVjdXRhYmxlQ29kZSgpCiAgICAgICAgIHsKQEAgLTM4Nyw2ICsz
OTcsMzAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQobV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QpOwogICAgICAgICAgICAgcmV0dXJuICptX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dDsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVGb3IoRXhl
Y1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVGb3JDYWxsKGV4ZWMsIHNj
b3BlQ2hhaW5Ob2RlKTsKKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYywgc2NvcGVD
aGFpbk5vZGUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGlzR2VuZXJhdGVk
Rm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIGlzR2VuZXJh
dGVkRm9yQ2FsbCgpOworICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVj
dCk7CisgICAgICAgICAgICByZXR1cm4gaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgRnVuY3Rpb25Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVj
b2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVy
YXRlZEJ5dGVjb2RlRm9yQ2FsbCgpOworICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkQnl0ZWNvZGVGb3JDb25z
dHJ1Y3QoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSB7
IHJldHVybiBtX25hbWU7IH0KICAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXplKCk7IH0KQEAgLTQzNyw2ICs0NzEsMTQgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQobV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0
aEFyaXR5Q2hlY2spOwogICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgZ2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZv
ckNhbGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsV2l0
aEFyaXR5Q2hlY2soKTsKKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDb25zdHJ1Y3RXaXRo
QXJpdHlDaGVjaygpOworICAgICAgICB9CiAjZW5kaWYKICAgICB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99755</attachid>
            <date>2011-07-05 15:33:54 -0700</date>
            <delta_ts>2011-07-05 16:18:35 -0700</delta_ts>
            <desc>the patch (fix style)</desc>
            <filename>callconstruct_patch_2.diff</filename>
            <type>text/plain</type>
            <size>18278</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTEtMDctMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0MgSklUIGhhcyBjb2RlIGR1cGxpY2F0aW9uIGZvciB0aGUgaGFuZGxpbmcgb2YgY2FsbCBhbmQg
Y29uc3RydWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mzk1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6bGlua0Zvcik6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6Ompp
dENvbXBpbGVGb3IpOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgIChKU0M6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoSlNDOjpsYXp5TGlua0Zvcik6Cisg
ICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVC
YXNlOjpnZW5lcmF0ZWRKSVRDb2RlRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjppc0dl
bmVyYXRlZEZvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmdlbmVyYXRl
ZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcik6CisKIDIwMTEtMDctMDUgIEdhdmluIEJhcnJhY2xv
dWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb2xsb3dp
bmcgbGFzdCBwYXRjaC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9u
IDkwNDA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDksNyArNjA5LDcgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQ
dHIqIGZ1bgogICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKIH0KIAotdm9p
ZCBKSVQ6OmxpbmtDYWxsKEpTRnVuY3Rpb24qIGNhbGxlZSwgQ29kZUJsb2NrKiBjYWxsZXJDb2Rl
QmxvY2ssIENvZGVCbG9jayogY2FsbGVlQ29kZUJsb2NrLCBKSVQ6OkNvZGVQdHIgY29kZSwgQ2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8sIGludCBjYWxsZXJBcmdDb3VudCwgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQordm9pZCBKSVQ6OmxpbmtGb3IoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2Rl
QmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIEpJVDo6
Q29kZVB0ciBjb2RlLCBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbywgaW50IGNhbGxlckFyZ0Nv
dW50LCBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKIHsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsK
IApAQCAtNjIyLDIyICs2MjIsMTIgQEAgdm9pZCBKSVQ6OmxpbmtDYWxsKEpTRnVuY3Rpb24qIGNh
bGxlZSwgQwogICAgIH0KIAogICAgIC8vIHBhdGNoIHRoZSBjYWxsIHNvIHdlIGRvIG5vdCBjb250
aW51ZSB0byB0cnkgdG8gbGluay4KLSAgICByZXBhdGNoQnVmZmVyLnJlbGluayhjYWxsTGlua0lu
Zm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0YS0+aml0U3R1YnMtPmN0aVZpcnR1YWxD
YWxsKCkpOwotfQotCi12b2lkIEpJVDo6bGlua0NvbnN0cnVjdChKU0Z1bmN0aW9uKiBjYWxsZWUs
IENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrLCBDb2RlQmxvY2sqIGNhbGxlZUNvZGVCbG9jaywg
SklUOjpDb2RlUHRyIGNvZGUsIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvLCBpbnQgY2FsbGVy
QXJnQ291bnQsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKLXsKLSAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIoY2FsbGVyQ29kZUJsb2NrKTsKLQotICAgIC8vIEN1cnJlbnRseSB3ZSBv
bmx5IGxpbmsgY2FsbHMgd2l0aCB0aGUgZXhhY3QgbnVtYmVyIG9mIGFyZ3VtZW50cy4KLSAgICAv
LyBJZiB0aGlzIGlzIGEgbmF0aXZlIGNhbGwgY2FsbGVlQ29kZUJsb2NrIGlzIG51bGwgc28gdGhl
IG51bWJlciBvZiBwYXJhbWV0ZXJzIGlzIHVuaW1wb3J0YW50Ci0gICAgaWYgKCFjYWxsZWVDb2Rl
QmxvY2sgfHwgKGNhbGxlckFyZ0NvdW50ID09IGNhbGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0
ZXJzKSkgewotICAgICAgICBBU1NFUlQoIWNhbGxMaW5rSW5mby0+aXNMaW5rZWQoKSk7Ci0gICAg
ICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldCgqZ2xvYmFsRGF0YSwgY2FsbExpbmtJbmZvLT5o
b3RQYXRoQmVnaW4sIGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7
Ci0gICAgICAgIHJlcGF0Y2hCdWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+aG90UGF0aE90aGVy
LCBjb2RlKTsKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICByZXBhdGNo
QnVmZmVyLnJlbGluayhjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbiwgZ2xvYmFsRGF0
YS0+aml0U3R1YnMtPmN0aVZpcnR1YWxDYWxsKCkpOworICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gcGF0Y2ggdGhlIGNhbGwgc28gd2UgZG8gbm90IGNvbnRpbnVlIHRvIHRyeSB0byBs
aW5rLgorICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIHJlcGF0Y2hC
dWZmZXIucmVsaW5rKGNhbGxMaW5rSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLCBnbG9iYWxEYXRh
LT5qaXRTdHVicy0+Y3RpVmlydHVhbENvbnN0cnVjdCgpKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiA5MDQwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw4ICsyNDYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBqaXQucHJpdmF0ZUNvbXBpbGVQYXRjaEdldEFycmF5TGVu
Z3RoKHJldHVybkFkZHJlc3MpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgbGlu
a0NhbGwoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29k
ZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5rSW5mbyosIGludCBjYWxs
ZXJBcmdDb3VudCwgSlNHbG9iYWxEYXRhKik7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxpbmtDb25z
dHJ1Y3QoSlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29k
ZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5rSW5mbyosIGludCBjYWxs
ZXJBcmdDb3VudCwgSlNHbG9iYWxEYXRhKik7CisgICAgICAgIHN0YXRpYyB2b2lkIGxpbmtGb3Io
SlNGdW5jdGlvbiogY2FsbGVlLCBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jaywgQ29kZUJsb2Nr
KiBjYWxsZWVDb2RlQmxvY2ssIENvZGVQdHIsIENhbGxMaW5rSW5mbyosIGludCBjYWxsZXJBcmdD
b3VudCwgSlNHbG9iYWxEYXRhKiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBzdHJ1Y3QgSlNSSW5mbyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gOTA0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwMiwyMCArMTkwMiwxMyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTihKU09iamVjdCosIG9wX25ld19mCiAgICAgcmV0dXJuIHN0
YWNrRnJhbWUuYXJnc1swXS5mdW5jdGlvbigpLT5tYWtlKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBz
dGFja0ZyYW1lLmNhbGxGcmFtZS0+c2NvcGVDaGFpbigpKTsKIH0KIAotREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCosIG9wX2NhbGxfaml0Q29tcGlsZSkKK2lubGluZSB2b2lkKiBqaXRDb21waWxl
Rm9yKEpJVFN0YWNrRnJhbWUmIHN0YWNrRnJhbWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKIHsKLSAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7Ci0KLSNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgQVNTRVJUKHN0YWNrRnJh
bWUuY2FsbEZyYW1lLT5jYWxsZWUoKS0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpID09IENhbGxUeXBl
SlMpOwotI2VuZGlmCi0KICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGFzRnVuY3Rpb24oc3Rh
Y2tGcmFtZS5jYWxsRnJhbWUtPmNhbGxlZSgpKTsKICAgICBBU1NFUlQoIWZ1bmN0aW9uLT5pc0hv
c3RGdW5jdGlvbigpKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5j
dGlvbi0+anNFeGVjdXRhYmxlKCk7CiAgICAgU2NvcGVDaGFpbk5vZGUqIGNhbGxEYXRhU2NvcGVD
aGFpbiA9IGZ1bmN0aW9uLT5zY29wZSgpOwotICAgIEpTT2JqZWN0KiBlcnJvciA9IGV4ZWN1dGFi
bGUtPmNvbXBpbGVGb3JDYWxsKHN0YWNrRnJhbWUuY2FsbEZyYW1lLCBjYWxsRGF0YVNjb3BlQ2hh
aW4pOworICAgIEpTT2JqZWN0KiBlcnJvciA9IGV4ZWN1dGFibGUtPmNvbXBpbGVGb3Ioc3RhY2tG
cmFtZS5jYWxsRnJhbWUsIGNhbGxEYXRhU2NvcGVDaGFpbiwga2luZCk7CiAgICAgaWYgKGVycm9y
KSB7CiAgICAgICAgIHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9u
ID0gZXJyb3I7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTkyMyw2ICsxOTE2LDE4IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2ppdEMKICAgICByZXR1cm4gZnVuY3Rpb247
CiB9CiAKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2ppdENvbXBpbGUpCit7
CisgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOworCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIEFTU0VSVChzdGFja0ZyYW1lLmNh
bGxGcmFtZS0+Y2FsbGVlKCktPmdldENhbGxEYXRhKGNhbGxEYXRhKSA9PSBDYWxsVHlwZUpTKTsK
KyNlbmRpZgorICAgIAorICAgIHJldHVybiBqaXRDb21waWxlRm9yKHN0YWNrRnJhbWUsIENvZGVG
b3JDYWxsKTsKK30KKwogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdF9q
aXRDb21waWxlKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKQEAg
LTE5MzEsMjcgKzE5MzYsMTYgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0
cnVjdAogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBBU1NFUlQoYXNGdW5j
dGlvbihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCkpLT5nZXRDb25zdHJ1Y3REYXRhKGNv
bnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5kaWYKLQotICAgIEpTRnVuY3Rp
b24qIGZ1bmN0aW9uID0gYXNGdW5jdGlvbihzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVlKCkp
OwotICAgIEFTU0VSVCghZnVuY3Rpb24tPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5qc0V4ZWN1dGFibGUoKTsKLSAgICBT
Y29wZUNoYWluTm9kZSogY2FsbERhdGFTY29wZUNoYWluID0gZnVuY3Rpb24tPnNjb3BlKCk7Ci0g
ICAgSlNPYmplY3QqIGVycm9yID0gZXhlY3V0YWJsZS0+Y29tcGlsZUZvckNvbnN0cnVjdChzdGFj
a0ZyYW1lLmNhbGxGcmFtZSwgY2FsbERhdGFTY29wZUNoYWluKTsKLSAgICBpZiAoZXJyb3IpIHsK
LSAgICAgICAgc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBl
cnJvcjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIHJldHVybiBmdW5jdGlvbjsKKyAg
ICAKKyAgICByZXR1cm4gaml0Q29tcGlsZUZvcihzdGFja0ZyYW1lLCBDb2RlRm9yQ29uc3RydWN0
KTsKIH0KIAotREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykK
K2lubGluZSB2b2lkKiBhcml0eUNoZWNrRm9yKEpJVFN0YWNrRnJhbWUmIHN0YWNrRnJhbWUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgUmV0dXJuQWRkcmVzc1B0ciYgc3R1YlJldHVybkFk
ZHJlc3MpCiB7Ci0gICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKICAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwogICAgIEFTU0VS
VCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9j
ayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwoKTsK
KyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5n
ZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKICAgICBpbnQgYXJnQ291bnQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CiAgICAgUmV0dXJuQWRkcmVzc1B0ciBwYyA9
IGNhbGxGcmFtZS0+cmV0dXJuUEMoKTsKIApAQCAtMTk2OCw3ICsxOTYyLDcgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdAogICAgICAgICAgICAgLy8gUmV3aW5kIHRv
IHRoZSBwcmV2aW91cyBjYWxsIGZyYW1lIGJlY2F1c2Ugb3BfY2FsbCBhbHJlYWR5IG9wdGltaXN0
aWNhbGx5CiAgICAgICAgICAgICAvLyBtb3ZlZCB0aGUgY2FsbCBmcmFtZSBmb3J3YXJkLgogICAg
ICAgICAgICAgRXhjZXB0aW9uSGFuZGxlciBoYW5kbGVyID0gaml0VGhyb3coc3RhY2tGcmFtZS5n
bG9iYWxEYXRhLCBvbGRDYWxsRnJhbWUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihvbGRDYWxs
RnJhbWUpLCBwYyk7Ci0gICAgICAgICAgICBTVFVCX1NFVF9SRVRVUk5fQUREUkVTUyhoYW5kbGVy
LmNhdGNoUm91dGluZSk7CisgICAgICAgICAgICBzdHViUmV0dXJuQWRkcmVzcyA9IFJldHVybkFk
ZHJlc3NQdHIoaGFuZGxlci5jYXRjaFJvdXRpbmUpOwogICAgICAgICAgICAgcmV0dXJuIGhhbmRs
ZXIuY2FsbEZyYW1lOwogICAgICAgICB9CiAKQEAgLTE5ODMsNyArMTk3Nyw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXQKICAgICAgICAgICAgIC8vIFJld2luZCB0
byB0aGUgcHJldmlvdXMgY2FsbCBmcmFtZSBiZWNhdXNlIG9wX2NhbGwgYWxyZWFkeSBvcHRpbWlz
dGljYWxseQogICAgICAgICAgICAgLy8gbW92ZWQgdGhlIGNhbGwgZnJhbWUgZm9yd2FyZC4KICAg
ICAgICAgICAgIEV4Y2VwdGlvbkhhbmRsZXIgaGFuZGxlciA9IGppdFRocm93KHN0YWNrRnJhbWUu
Z2xvYmFsRGF0YSwgb2xkQ2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Iob2xkQ2Fs
bEZyYW1lKSwgcGMpOwotICAgICAgICAgICAgU1RVQl9TRVRfUkVUVVJOX0FERFJFU1MoaGFuZGxl
ci5jYXRjaFJvdXRpbmUpOworICAgICAgICAgICAgc3R1YlJldHVybkFkZHJlc3MgPSBSZXR1cm5B
ZGRyZXNzUHRyKGhhbmRsZXIuY2F0Y2hSb3V0aW5lKTsKICAgICAgICAgICAgIHJldHVybiBoYW5k
bGVyLmNhbGxGcmFtZTsKICAgICAgICAgfQogCkBAIC0yMDAzLDY4ICsxOTk3LDIyIEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXQKICAgICByZXR1cm4gY2FsbEZyYW1l
OwogfQogCi1ERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0X2FyaXR5Q2hl
Y2spCitERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewog
ICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAgICAKKyAgICByZXR1cm4g
YXJpdHlDaGVja0ZvcihzdGFja0ZyYW1lLCBDb2RlRm9yQ2FsbCwgU1RVQl9SRVRVUk5fQUREUkVT
Uyk7Cit9CiAKLSAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1l
OwotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUo
KSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9j
ayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yQ29uc3RydWN0KCk7Ci0gICAgaW50IGFyZ0NvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpOwotICAgIFJldHVybkFkZHJlc3NQdHIgcGMgPSBjYWxsRnJh
bWUtPnJldHVyblBDKCk7Ci0KLSAgICBBU1NFUlQoYXJnQ291bnQgIT0gbmV3Q29kZUJsb2NrLT5t
X251bVBhcmFtZXRlcnMpOwotCi0gICAgQ2FsbEZyYW1lKiBvbGRDYWxsRnJhbWUgPSBjYWxsRnJh
bWUtPmNhbGxlckZyYW1lKCk7Ci0KLSAgICBSZWdpc3RlciogcjsKLSAgICBpZiAoYXJnQ291bnQg
PiBuZXdDb2RlQmxvY2stPm1fbnVtUGFyYW1ldGVycykgewotICAgICAgICBzaXplX3QgbnVtUGFy
YW1ldGVycyA9IG5ld0NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzOwotICAgICAgICByID0gY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKSArIG51bVBhcmFtZXRlcnM7Ci0gICAgICAgIFJlZ2lzdGVyKiBu
ZXdFbmQgPSByICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVyczsKLSAgICAgICAg
aWYgKCFzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZS0+Z3JvdyhuZXdFbmQpKSB7Ci0gICAgICAgICAg
ICAvLyBSZXdpbmQgdG8gdGhlIHByZXZpb3VzIGNhbGwgZnJhbWUgYmVjYXVzZSBvcF9jYWxsIGFs
cmVhZHkgb3B0aW1pc3RpY2FsbHkKLSAgICAgICAgICAgIC8vIG1vdmVkIHRoZSBjYWxsIGZyYW1l
IGZvcndhcmQuCi0gICAgICAgICAgICBFeGNlcHRpb25IYW5kbGVyIGhhbmRsZXIgPSBqaXRUaHJv
dyhzdGFja0ZyYW1lLmdsb2JhbERhdGEsIG9sZENhbGxGcmFtZSwgY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKG9sZENhbGxGcmFtZSksIHBjKTsKLSAgICAgICAgICAgIFNUVUJfU0VUX1JFVFVSTl9B
RERSRVNTKGhhbmRsZXIuY2F0Y2hSb3V0aW5lKTsKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVy
LmNhbGxGcmFtZTsKLSAgICAgICAgfQotCi0gICAgICAgIFJlZ2lzdGVyKiBhcmd2ID0gciAtIFJl
Z2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIG51bVBhcmFtZXRlcnMgLSBhcmdDb3Vu
dDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1QYXJhbWV0ZXJzOyArK2kpCi0g
ICAgICAgICAgICBhcmd2W2kgKyBhcmdDb3VudF0gPSBhcmd2W2ldOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIHNpemVfdCBvbWl0dGVkQXJnQ291bnQgPSBuZXdDb2RlQmxvY2stPm1fbnVtUGFyYW1l
dGVycyAtIGFyZ0NvdW50OwotICAgICAgICByID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIG9t
aXR0ZWRBcmdDb3VudDsKLSAgICAgICAgUmVnaXN0ZXIqIG5ld0VuZCA9IHIgKyBuZXdDb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzOwotICAgICAgICBpZiAoIXN0YWNrRnJhbWUucmVnaXN0
ZXJGaWxlLT5ncm93KG5ld0VuZCkpIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byB0aGUgcHJl
dmlvdXMgY2FsbCBmcmFtZSBiZWNhdXNlIG9wX2NhbGwgYWxyZWFkeSBvcHRpbWlzdGljYWxseQot
ICAgICAgICAgICAgLy8gbW92ZWQgdGhlIGNhbGwgZnJhbWUgZm9yd2FyZC4KLSAgICAgICAgICAg
IEV4Y2VwdGlvbkhhbmRsZXIgaGFuZGxlciA9IGppdFRocm93KHN0YWNrRnJhbWUuZ2xvYmFsRGF0
YSwgb2xkQ2FsbEZyYW1lLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Iob2xkQ2FsbEZyYW1lKSwg
cGMpOwotICAgICAgICAgICAgU1RVQl9TRVRfUkVUVVJOX0FERFJFU1MoaGFuZGxlci5jYXRjaFJv
dXRpbmUpOwotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIuY2FsbEZyYW1lOwotICAgICAgICB9
Ci0KLSAgICAgICAgUmVnaXN0ZXIqIGFyZ3YgPSByIC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVI
ZWFkZXJTaXplIC0gb21pdHRlZEFyZ0NvdW50OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG9taXR0ZWRBcmdDb3VudDsgKytpKQotICAgICAgICAgICAgYXJndltpXSA9IGpzVW5kZWZp
bmVkKCk7Ci0gICAgfQotCi0gICAgY2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUocik7Ci0g
ICAgY2FsbEZyYW1lLT5zZXRDYWxsZXJGcmFtZShvbGRDYWxsRnJhbWUpOwotICAgIGNhbGxGcmFt
ZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoYXJnQ291bnQpOwotICAgIGNhbGxGcmFt
ZS0+c2V0Q2FsbGVlKGNhbGxlZSk7Ci0gICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNhbGxl
ZS0+c2NvcGUoKSk7Ci0gICAgY2FsbEZyYW1lLT5zZXRSZXR1cm5QQyhwYy52YWx1ZSgpKTsKK0RF
RklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAg
ICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKLSAgICBBU1NFUlQoKHZvaWQq
KWNhbGxGcmFtZSA8PSBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVy
biBjYWxsRnJhbWU7CisgICAgcmV0dXJuIGFyaXR5Q2hlY2tGb3Ioc3RhY2tGcmFtZSwgQ29kZUZv
ckNvbnN0cnVjdCwgU1RVQl9SRVRVUk5fQUREUkVTUyk7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQqLCB2bV9sYXp5TGlua0NhbGwpCitpbmxpbmUgdm9pZCogbGF6eUxpbmtGb3IoSklU
U3RhY2tGcmFtZSYgc3RhY2tGcmFtZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewot
ICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7CiAgICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKQEAgLTIwNzIsNjIgKzIwMjAsNDIgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX2xhenlMaW5rQwogICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBjb2RlUHRyOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKICAgICBp
ZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKLSAgICAgICAgY29kZVB0ciA9IGV4ZWN1
dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICAg
ICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVz
c0ZvckNhbGwoKTsKICAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKTsKLSAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21w
aWxlRm9yQ2FsbChjYWxsRnJhbWUsIGNhbGxlZS0+c2NvcGUoKSk7CisgICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihjYWxsRnJhbWUsIGNhbGxl
ZS0+c2NvcGUoKSwga2luZCk7CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgY2Fs
bEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBj
b2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvckNhbGwo
KTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3Ioa2luZCk7CiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm1fbnVtUGFyYW1l
dGVycykpCi0gICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yQ2FsbCgpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgICAgICAgICBjb2RlUHRy
ID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NG
b3JDYWxsKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2soKTsKKyAgICAg
ICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRo
QXJpdHlDaGVja0ZvcihraW5kKTsKICAgICB9CiAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSAmc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5n
ZXRDYWxsTGlua0luZm8oY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKIAogICAgIGlmICghY2FsbExp
bmtJbmZvLT5zZWVuT25jZSgpKQogICAgICAgICBjYWxsTGlua0luZm8tPnNldFNlZW4oKTsKICAg
ICBlbHNlCi0gICAgICAgIEpJVDo6bGlua0NhbGwoY2FsbGVlLCBzdGFja0ZyYW1lLmNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCksIGNvZGVCbG9jaywgY29kZVB0ciwgY2FsbExp
bmtJbmZvLCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCksIHN0YWNrRnJh
bWUuZ2xvYmFsRGF0YSk7CisgICAgICAgIEpJVDo6bGlua0ZvcihjYWxsZWUsIHN0YWNrRnJhbWUu
Y2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKSwgY29kZUJsb2NrLCBjb2RlUHRy
LCBjYWxsTGlua0luZm8sIGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSwg
c3RhY2tGcmFtZS5nbG9iYWxEYXRhLCBraW5kKTsKIAogICAgIHJldHVybiBjb2RlUHRyLmV4ZWN1
dGFibGVBZGRyZXNzKCk7CiB9CiAKLURFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV9sYXp5
TGlua0NvbnN0cnVjdCkKK0RFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV9sYXp5TGlua0Nh
bGwpCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwotICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKLSAgICBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwotCi0gICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIGNvZGVQdHI7Ci0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOwotICAg
IGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQotICAgICAgICBjb2RlUHRyID0gZXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvckNvbnN0cnVjdCgpLmFkZHJlc3NGb3JDYWxsKCk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Ci0gICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvckNvbnN0
cnVjdChjYWxsRnJhbWUsIGNhbGxlZS0+c2NvcGUoKSk7Ci0gICAgICAgIGlmIChlcnJvcikgewot
ICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1l
Lmdsb2JhbERhdGEsIFJldHVybkFkZHJlc3NQdHIoY2FsbEZyYW1lLT5yZXR1cm5QQygpKSwgU1RV
Ql9SRVRVUk5fQUREUkVTUyk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAg
ICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZv
ckNvbnN0cnVjdCgpOwotICAgICAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpID09IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5tX251bVBhcmFtZXRl
cnMpKQotICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZUZvckNvbnN0cnVjdCgpLmFkZHJlc3NGb3JDYWxsKCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVG
b3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaygpOwotICAgIH0KLSAgICBDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbyA9ICZzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJs
b2NrKCktPmdldENhbGxMaW5rSW5mbyhjYWxsRnJhbWUtPnJldHVyblBDKCkpOwotCi0gICAgaWYg
KCFjYWxsTGlua0luZm8tPnNlZW5PbmNlKCkpCi0gICAgICAgIGNhbGxMaW5rSW5mby0+c2V0U2Vl
bigpOwotICAgIGVsc2UKLSAgICAgICAgSklUOjpsaW5rQ29uc3RydWN0KGNhbGxlZSwgc3RhY2tG
cmFtZS5jYWxsRnJhbWUtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLCBjb2RlQmxvY2ssIGNv
ZGVQdHIsIGNhbGxMaW5rSW5mbywgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpLCBzdGFja0ZyYW1lLmdsb2JhbERhdGEpOworICAgIAorICAgIHJldHVybiBsYXp5TGlua0Zv
cihzdGFja0ZyYW1lLCBDb2RlRm9yQ2FsbCk7Cit9CiAKLSAgICByZXR1cm4gY29kZVB0ci5leGVj
dXRhYmxlQWRkcmVzcygpOworREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX2xhenlMaW5r
Q29uc3RydWN0KQoreworICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKKyAg
ICAKKyAgICByZXR1cm4gbGF6eUxpbmtGb3Ioc3RhY2tGcmFtZSwgQ29kZUZvckNvbnN0cnVjdCk7
CiB9CiAKIERFRklORV9TVFVCX0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfcHVzaF9hY3RpdmF0aW9u
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2
aXNpb24gOTA0MDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKKyAgICAK
KyAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNv
bnN0cnVjdCB9OwogCiAgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2UgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTkxLDYgKzkzLDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgQVNTRVJUKG1faml0Q29kZUZvckNvbnN0cnVjdCk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9qaXRDb2RlRm9yQ29uc3RydWN0OwogICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBKSVRDb2RlJiBnZW5lcmF0ZWRKSVRDb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEpJVENvZGVGb3JDYWxsKCk7CisgICAg
ICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIHJl
dHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0KCk7CisgICAgICAgIH0KIAogICAgICAg
ICB2b2lkIGNsZWFyRXhlY3V0YWJsZUNvZGUoKQogICAgICAgICB7CkBAIC0zODcsNiArMzk3LDMw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0KTsKICAgICAgICAgICAgIHJldHVybiAqbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Q7CiAg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpTT2JqZWN0KiBjb21waWxlRm9yKEV4ZWNTdGF0
ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlRm9yQ2FsbChleGVjLCBzY29wZUNo
YWluTm9kZSk7CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICAgICAgICAgIHJldHVybiBjb21waWxlRm9yQ29uc3RydWN0KGV4ZWMsIHNjb3BlQ2hhaW5O
b2RlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChr
aW5kID09IENvZGVGb3JDYWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBpc0dlbmVyYXRlZEZv
ckNhbGwoKTsKKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwor
ICAgICAgICAgICAgcmV0dXJuIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIEZ1bmN0aW9uQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZUZv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRC
eXRlY29kZUZvckNhbGwoKTsKKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlZEJ5dGVjb2RlRm9yQ29uc3RydWN0
KCk7CisgICAgICAgIH0KIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lKCkgeyByZXR1
cm4gbV9uYW1lOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC00MzcsNiArNDcxLDE0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrKTsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJp
dHlDaGVjazsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxs
KQorICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrKCk7CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZWRKSVRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2soKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>