<?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>24623</bug_id>
          
          <creation_ts>2009-03-16 09:51:22 -0700</creation_ts>
          <short_desc>Refactor ConsoleMessage to use ScriptFunctionCall</short_desc>
          <delta_ts>2009-03-17 09:18:13 -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>Web Inspector (Deprecated)</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>
          <dependson>24524</dependson>
          <blocked>25063</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>113888</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-03-16 09:51:22 -0700</bug_when>
    <thetext>Following up on bug 24524, do the same for ConsoleMessage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113940</commentid>
    <comment_count>1</comment_count>
      <attachid>28662</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-03-16 16:09:01 -0700</bug_when>
    <thetext>Created attachment 28662
Use ScriptFuncitonCall with ConsoleMessage, v1

 WebCore/ChangeLog                              |   28 ++++++
 WebCore/bindings/js/ScriptFunctionCall.cpp     |   12 +++
 WebCore/bindings/js/ScriptFunctionCall.h       |    3 +
 WebCore/bindings/js/ScriptObjectQuarantine.cpp |    7 ++
 WebCore/bindings/js/ScriptObjectQuarantine.h   |    5 +
 WebCore/bindings/js/ScriptValue.cpp            |   11 ++
 WebCore/bindings/js/ScriptValue.h              |    1 +
 WebCore/inspector/ConsoleMessage.cpp           |  119 ++++++++++++++----------
 WebCore/inspector/ConsoleMessage.h             |   29 +++---
 WebCore/inspector/InspectorController.cpp      |   59 +-----------
 WebCore/inspector/InspectorController.h        |    1 -
 11 files changed, 154 insertions(+), 121 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113973</commentid>
    <comment_count>2</comment_count>
      <attachid>28662</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-03-16 20:32:47 -0700</bug_when>
    <thetext>Comment on attachment 28662
Use ScriptFuncitonCall with ConsoleMessage, v1

Why did you pick &quot;quarantineValue&quot; when you picked &quot;getQuarantinedScriptObject&quot; for the ScriptObject version? I prefer the &quot;quarantineValue&quot;, maybe rename &quot;getQuarantinedScriptObject&quot; to &quot;quarantineObject&quot;. Or maybe &quot;quarantine&quot; is a better name for all of these functions, and let C++ do it&apos;s magic?

Why does &quot;getQuarantinedScriptObject&quot; have a bool return type and &quot;quarantineValue&quot; not?

The ConsoleMessage::addToScript name bother(ed|es) me, maybe addToConsole is better? What do you think?

 87     if (!m_frames.isEmpty())
 88         for (unsigned i = 0; i &lt; m_frames.size(); ++i)
 89             messageConstructor.appendArgument(m_frames[i]);
 90     else if (!m_wrappedArguments.isEmpty())
 91         for (unsigned i = 0; i &lt; m_wrappedArguments.size(); ++i)
 92             messageConstructor.appendArgument(m_wrappedArguments[i]);
 93     else
 94         messageConstructor.appendArgument(m_message);

The first two if statements bodies need braces since they are multi-line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113974</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-03-16 20:55:43 -0700</bug_when>
    <thetext>(In reply to comment #2)

Thank you for reviewing so promptly! :)

&gt; (From update of attachment 28662 [review])
&gt; Why did you pick &quot;quarantineValue&quot; when you picked &quot;getQuarantinedScriptObject&quot;
&gt; for the ScriptObject version? I prefer the &quot;quarantineValue&quot;, maybe rename
&gt; &quot;getQuarantinedScriptObject&quot; to &quot;quarantineObject&quot;. Or maybe &quot;quarantine&quot; is a
&gt; better name for all of these functions, and let C++ do it&apos;s magic?

The getXXX methods take a WebCore instance and turn it into a ScriptObject, as opposed to this simple helper, which takes a ScriptValue and returns a ScriptValue. So, I though the difference justified a name change. Also, I can&apos;t use the quarantine name for all of them, because the return types differ (ScriptObject/ScriptValue).

&gt; Why does &quot;getQuarantinedScriptObject&quot; have a bool return type and
&gt; &quot;quarantineValue&quot; not?

Since at least one of the getQuarantinedScriptObject methods can fail, I did the bool getName(Type&amp; ref) convention. The quarantineValue doesn&apos;t fail, so it doesn&apos;t need to be in this convention.

&gt; The ConsoleMessage::addToScript name bother(ed|es) me, maybe addToConsole is
&gt; better? What do you think?

I ain&apos;t too hot about addToScript myself, and wrecked my brain trying to find a better name. For now, I&apos;ll go with addToConsole.

Ideally we need a name that says &quot;create a mirror object on JS side of the Inspector&quot;, but in one word :)

&gt;  87     if (!m_frames.isEmpty())
&gt;  88         for (unsigned i = 0; i &lt; m_frames.size(); ++i)
&gt;  89             messageConstructor.appendArgument(m_frames[i]);
&gt;  90     else if (!m_wrappedArguments.isEmpty())
&gt;  91         for (unsigned i = 0; i &lt; m_wrappedArguments.size(); ++i)
&gt;  92             messageConstructor.appendArgument(m_wrappedArguments[i]);
&gt;  93     else
&gt;  94         messageConstructor.appendArgument(m_message);
&gt; 
&gt; The first two if statements bodies need braces since they are multi-line.

Ooh, I didn&apos;t know that. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113975</commentid>
    <comment_count>4</comment_count>
      <attachid>28662</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-03-16 21:02:34 -0700</bug_when>
    <thetext>Comment on attachment 28662
Use ScriptFuncitonCall with ConsoleMessage, v1

r+ with the changes we talked about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114033</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-03-17 09:18:13 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/41765.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28662</attachid>
            <date>2009-03-16 16:09:01 -0700</date>
            <delta_ts>2009-03-16 21:02:34 -0700</delta_ts>
            <desc>Use ScriptFuncitonCall with ConsoleMessage, v1</desc>
            <filename>Use-ScriptFuncitonCall-with-ConsoleMessage-v1.patch</filename>
            <type>text/plain</type>
            <size>18911</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZTE3NDZmZjZjYWYxMDUyMTdjZDYyZGM5ZDA1MTQ4Yjk0YmJhZGMwZApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMTRlMWU3Li4wZDc5M2I2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDMzIEBACiAyMDA5LTAzLTE2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0NjIzCisgICAg
ICAgIFJlZmFjdG9yIENvbnNvbGVNZXNzYWdlIHRvIHVzZSBTY3JpcHRGdW5jaXRvbkNhbGwgYW5k
IGVsaW1pbmF0ZSBKU0MKKyAgICAgICAgZGVwZW5kZW5jaWVzLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEZ1
bmN0aW9uQ2FsbDo6YXBwZW5kQXJndW1lbnQpOiBBZGRlZCB1aW50IGFuZCBTY3JpcHRTdHJpbmct
dGFraW5nIG1ldGhvZHMuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxs
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpxdWFyYW50aW5lVmFsdWUpOiBBZGRlZCBnZW5lcmljIFNjcmlwdFZh
bHVlIHF1YXJhbnRpbmUgaGVscGVyLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dFF1YXJhbnRpbmUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6aXNFcXVhbCk6IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnNvbGVN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGVNZXNzYWdlOjpDb25zb2xlTWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlTWVzc2FnZTo6YWRkVG9TY3JpcHQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3NhZ2U6OmlzRXF1YWwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9Db25zb2xlTWVzc2FnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uc29sZU1lc3Nh
Z2U6OmluY3JlbWVudENvdW50KTogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
YWRkQ29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oOgorCisyMDA5LTAzLTE2ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBj
aHJvbWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgogCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDU5MApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuY3BwCmluZGV4IDMyMjNhYTkuLjVk
OTI4YzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxs
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTY3JpcHRGdW5jdGlvbkNhbGwuaCIKIAogI2luY2x1
ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIlNjcmlwdFN0cmluZy5oIgogI2luY2x1ZGUg
IlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KIApAQCAtNTEsNiAr
NTIsMTEgQEAgdm9pZCBTY3JpcHRGdW5jdGlvbkNhbGw6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFNj
cmlwdE9iamVjdCYgYXJndW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGFyZ3VtZW50Lmpz
T2JqZWN0KCkpOwogfQogCit2b2lkIFNjcmlwdEZ1bmN0aW9uQ2FsbDo6YXBwZW5kQXJndW1lbnQo
Y29uc3QgU2NyaXB0U3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQo
anNTdHJpbmcobV9leGVjLCBhcmd1bWVudCkpOworfQorCiB2b2lkIFNjcmlwdEZ1bmN0aW9uQ2Fs
bDo6YXBwZW5kQXJndW1lbnQoY29uc3QgU2NyaXB0VmFsdWUmIGFyZ3VtZW50KQogewogICAgIG1f
YXJndW1lbnRzLmFwcGVuZChhcmd1bWVudC5qc1ZhbHVlKCkpOwpAQCAtNjIsNiArNjgsMTIgQEAg
dm9pZCBTY3JpcHRGdW5jdGlvbkNhbGw6OmFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYgYXJn
dW1lbnQpCiAgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzU3RyaW5nKG1fZXhlYywgYXJndW1lbnQp
KTsKIH0KIAordm9pZCBTY3JpcHRGdW5jdGlvbkNhbGw6OmFwcGVuZEFyZ3VtZW50KHVuc2lnbmVk
IGludCBhcmd1bWVudCkKK3sKKyAgICBKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgbV9hcmd1bWVu
dHMuYXBwZW5kKGpzTnVtYmVyKG1fZXhlYywgYXJndW1lbnQpKTsKK30KKwogdm9pZCBTY3JpcHRG
dW5jdGlvbkNhbGw6OmFwcGVuZEFyZ3VtZW50KGJvb2wgYXJndW1lbnQpCiB7CiAgICAgbV9hcmd1
bWVudHMuYXBwZW5kKGpzQm9vbGVhbihhcmd1bWVudCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RnVuY3Rpb25DYWxsLmgKaW5kZXggZGQ3N2UzNC4uMGIwMTcxNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5oCkBAIC0zOSw2ICszOSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRWYWx1ZTsKKyAgICBjbGFzcyBTY3JpcHRTdHJp
bmc7CiAKICAgICBjbGFzcyBTY3JpcHRGdW5jdGlvbkNhbGwgewogICAgIHB1YmxpYzoKQEAgLTQ2
LDggKzQ3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U2NyaXB0
RnVuY3Rpb25DYWxsKCkge307CiAKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBT
Y3JpcHRPYmplY3QmKTsKKyAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRT
dHJpbmcmKTsKICAgICAgICAgdm9pZCBhcHBlbmRBcmd1bWVudChjb25zdCBTY3JpcHRWYWx1ZSYp
OwogICAgICAgICB2b2lkIGFwcGVuZEFyZ3VtZW50KGNvbnN0IFN0cmluZyYpOworICAgICAgICB2
b2lkIGFwcGVuZEFyZ3VtZW50KHVuc2lnbmVkIGludCk7CiAgICAgICAgIHZvaWQgYXBwZW5kQXJn
dW1lbnQoYm9vbCk7CiAgICAgICAgIFNjcmlwdFZhbHVlIGNhbGwoYm9vbCYgaGFkRXhjZXB0aW9u
KTsKICAgICAgICAgU2NyaXB0T2JqZWN0IGNvbnN0cnVjdChib29sJiBoYWRFeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3RRdWFyYW50aW5lLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5jcHAKaW5kZXgg
OGNiM2QyNS4uOTMxMTczNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRP
YmplY3RRdWFyYW50aW5lLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE9iamVj
dFF1YXJhbnRpbmUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCiAjaW5jbHVkZSAiSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAogI2luY2x1ZGUgPHJ1bnRp
bWUvSlNMb2NrLmg+CiAKQEAgLTQ2LDYgKzQ3LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorU2NyaXB0VmFsdWUgcXVhcmFudGluZVZhbHVlKFNjcmlw
dFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIHZhbHVlKQoreworICAgIEpT
TG9jayBsb2NrKGZhbHNlKTsKKyAgICByZXR1cm4gU2NyaXB0VmFsdWUoSlNJbnNwZWN0ZWRPYmpl
Y3RXcmFwcGVyOjp3cmFwKHNjcmlwdFN0YXRlLCB2YWx1ZS5qc1ZhbHVlKCkpKTsKK30KKwogYm9v
bCBnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChEYXRhYmFzZSogZGF0YWJhc2UsIFNjcmlwdE9i
amVjdCYgcXVhcmFudGluZWRPYmplY3QpCiB7CiAgICAgQVNTRVJUKGRhdGFiYXNlKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0T2JqZWN0UXVhcmFudGluZS5oIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3RRdWFyYW50aW5lLmgKaW5kZXggMDY2OWZhNi4u
YTNhYzdmMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3RRdWFy
YW50aW5lLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRPYmplY3RRdWFyYW50aW5l
LmgKQEAgLTMxLDEzICszMSwxOCBAQAogI2lmbmRlZiBTY3JpcHRPYmplY3RRdWFyYW50aW5lX2gK
ICNkZWZpbmUgU2NyaXB0T2JqZWN0UXVhcmFudGluZV9oCiAKKyNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBEYXRhYmFzZTsKICAgICBj
bGFzcyBGcmFtZTsKICAgICBjbGFzcyBTY3JpcHRPYmplY3Q7CisgICAgY2xhc3MgU2NyaXB0VmFs
dWU7CiAgICAgY2xhc3MgU3RvcmFnZTsKIAorICAgIFNjcmlwdFZhbHVlIHF1YXJhbnRpbmVWYWx1
ZShTY3JpcHRTdGF0ZSosIGNvbnN0IFNjcmlwdFZhbHVlJik7CisKICAgICBib29sIGdldFF1YXJh
bnRpbmVkU2NyaXB0T2JqZWN0KERhdGFiYXNlKiBkYXRhYmFzZSwgU2NyaXB0T2JqZWN0JiBxdWFy
YW50aW5lZE9iamVjdCk7CiAgICAgYm9vbCBnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVjdChGcmFt
ZSogZnJhbWUsIFN0b3JhZ2UqIHN0b3JhZ2UsIFNjcmlwdE9iamVjdCYgcXVhcmFudGluZWRPYmpl
Y3QpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDQyMTMxNTkuLmM0YTc1
NzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwCkBAIC0yOSw2ICsyOSw5IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKIAorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Zh
bHVlUmVmLmg+CisKICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvVVN0cmluZy5oPgpAQCAtNDksNiArNTIs
MTQgQEAgYm9vbCBTY3JpcHRWYWx1ZTo6Z2V0U3RyaW5nKFN0cmluZyYgcmVzdWx0KSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNjcmlwdFZhbHVlOjppc0VxdWFsKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0VmFsdWUmIGFub3RoZXJWYWx1ZSkgY29uc3QK
K3sKKyAgICBpZiAoaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm4gYW5vdGhlclZhbHVlLmhh
c05vVmFsdWUoKTsKKworICAgIHJldHVybiBKU1ZhbHVlSXNFcXVhbCh0b1JlZihzY3JpcHRTdGF0
ZSksIHRvUmVmKGpzVmFsdWUoKSksIHRvUmVmKGFub3RoZXJWYWx1ZS5qc1ZhbHVlKCkpLCAwKTsK
K30KKwogYm9vbCBTY3JpcHRWYWx1ZTo6aXNOdWxsKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdmFs
dWUpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXggYTRiNmY2NS4uZTZlN2NiMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaApAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAg
SlNDOjpKU1ZhbHVlUHRyIGpzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLmdldCgpOyB9
CiAgICAgYm9vbCBnZXRTdHJpbmcoU3RyaW5nJiByZXN1bHQpIGNvbnN0OwogICAgIFN0cmluZyB0
b1N0cmluZyhTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUu
Z2V0KCkudG9TdHJpbmcoc2NyaXB0U3RhdGUpOyB9CisgICAgYm9vbCBpc0VxdWFsKFNjcmlwdFN0
YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUmKSBjb25zdDsKICAgICBib29sIGlzTnVsbCgpIGNvbnN0
OwogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdDsKICAgICBib29sIGhhc05vVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlID09IEpTQzo6bm9WYWx1ZSgpOyB9CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9D
b25zb2xlTWVzc2FnZS5jcHAKaW5kZXggMmM0MjgyNS4uZTU3MzlmMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbnNvbGVNZXNzYWdlLmNwcApAQCAtMzIsODQgKzMyLDEwMyBAQAogI2luY2x1ZGUgIkNvbnNv
bGVNZXNzYWdlLmgiCiAKICNpbmNsdWRlICJKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIuaCIKLSNp
bmNsdWRlICJTY3JpcHRTdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNp
bmNsdWRlICJTY3JpcHRDYWxsRnJhbWUuaCIKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+Ci0jaW5jbHVk
ZSA8cnVudGltZS9KU0xvY2suaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKKyNpbmNsdWRlICJT
Y3JpcHRGdW5jdGlvbkNhbGwuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgi
CisjaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29u
c29sZU1lc3NhZ2U6OkNvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgcywgTWVzc2FnZUxldmVs
IGwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNvbnN0IFN0cmluZyYgdSwgdW5zaWdu
ZWQgZykKLSAgICA6IHNvdXJjZShzKQotICAgICwgbGV2ZWwobCkKLSAgICAsIG1lc3NhZ2UobSkK
LSAgICAsIGxpbmUobGkpCi0gICAgLCB1cmwodSkKLSAgICAsIGdyb3VwTGV2ZWwoZykKLSAgICAs
IHJlcGVhdENvdW50KDEpCisgICAgOiBtX3NvdXJjZShzKQorICAgICwgbV9sZXZlbChsKQorICAg
ICwgbV9tZXNzYWdlKG0pCisgICAgLCBtX2xpbmUobGkpCisgICAgLCBtX3VybCh1KQorICAgICwg
bV9ncm91cExldmVsKGcpCisgICAgLCBtX3JlcGVhdENvdW50KDEpCiB7CiB9CiAKIENvbnNvbGVN
ZXNzYWdlOjpDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHMsIE1lc3NhZ2VMZXZlbCBsLCBT
Y3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaywgdW5zaWduZWQgZywgYm9vbCBzdG9yZVRyYWNlKQot
ICAgIDogc291cmNlKHMpCi0gICAgLCBsZXZlbChsKQotICAgICwgd3JhcHBlZEFyZ3VtZW50cyhj
YWxsU3RhY2stPmF0KDApLmFyZ3VtZW50Q291bnQoKSkKLSAgICAsIGZyYW1lcyhzdG9yZVRyYWNl
ID8gY2FsbFN0YWNrLT5zaXplKCkgOiAwKQotICAgICwgZ3JvdXBMZXZlbChnKQotICAgICwgcmVw
ZWF0Q291bnQoMSkKKyAgICA6IG1fc291cmNlKHMpCisgICAgLCBtX2xldmVsKGwpCisgICAgLCBt
X3dyYXBwZWRBcmd1bWVudHMoY2FsbFN0YWNrLT5hdCgwKS5hcmd1bWVudENvdW50KCkpCisgICAg
LCBtX2ZyYW1lcyhzdG9yZVRyYWNlID8gY2FsbFN0YWNrLT5zaXplKCkgOiAwKQorICAgICwgbV9n
cm91cExldmVsKGcpCisgICAgLCBtX3JlcGVhdENvdW50KDEpCiB7CiAgICAgY29uc3QgU2NyaXB0
Q2FsbEZyYW1lJiBsYXN0Q2FsbGVyID0gY2FsbFN0YWNrLT5hdCgwKTsKLSAgICBsaW5lID0gbGFz
dENhbGxlci5saW5lTnVtYmVyKCk7Ci0gICAgdXJsID0gbGFzdENhbGxlci5zb3VyY2VVUkwoKS5z
dHJpbmcoKTsKKyAgICBtX2xpbmUgPSBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKTsKKyAgICBtX3Vy
bCA9IGxhc3RDYWxsZXIuc291cmNlVVJMKCkuc3RyaW5nKCk7CiAKICAgICAvLyBGSVhNRTogRm9y
IG5vdywganVzdCBzdG9yZSBmdW5jdGlvbiBuYW1lcyBhcyBzdHJpbmdzLgogICAgIC8vIEFzIFNj
cmlwdENhbGxTdGFjayBzdGFydCBzdG9yaW5nIGxpbmUgbnVtYmVyIGFuZCBzb3VyY2UgVVJMIGZv
ciBhbGwKICAgICAvLyBmcmFtZXMsIHJlZmFjdG9yIHRvIHVzZSB0aGF0LCBhcyB3ZWxsLgotICAg
IGlmIChzdG9yZVRyYWNlKSB7Ci0gICAgICAgIHVuc2lnbmVkIHN0YWNrU2l6ZSA9IGNhbGxTdGFj
ay0+c2l6ZSgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2tTaXplOyAr
K2kpCi0gICAgICAgICAgICBmcmFtZXNbaV0gPSBjYWxsU3RhY2stPmF0KGkpLmZ1bmN0aW9uTmFt
ZSgpOwotICAgIH0KLQotICAgIEpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICBpZiAoc3RvcmVUcmFj
ZSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxTdGFjay0+c2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBtX2ZyYW1lc1tpXSA9IGNhbGxTdGFjay0+YXQoaSkuZnVuY3Rpb25O
YW1lKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGFzdENhbGxlci5hcmd1bWVu
dENvdW50KCk7ICsraSkKLSAgICAgICAgd3JhcHBlZEFyZ3VtZW50c1tpXSA9IEpTSW5zcGVjdGVk
T2JqZWN0V3JhcHBlcjo6d3JhcChjYWxsU3RhY2stPnN0YXRlKCksIGxhc3RDYWxsZXIuYXJndW1l
bnRBdChpKS5qc1ZhbHVlKCkpOworICAgICAgICBtX3dyYXBwZWRBcmd1bWVudHNbaV0gPSBxdWFy
YW50aW5lVmFsdWUoY2FsbFN0YWNrLT5zdGF0ZSgpLCBsYXN0Q2FsbGVyLmFyZ3VtZW50QXQoaSkp
OwogfQogCi1ib29sIENvbnNvbGVNZXNzYWdlOjppc0VxdWFsKEV4ZWNTdGF0ZSogZXhlYywgQ29u
c29sZU1lc3NhZ2UqIG1zZykgY29uc3QKK3ZvaWQgQ29uc29sZU1lc3NhZ2U6OmFkZFRvU2NyaXB0
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0
b3IpCiB7Ci0gICAgaWYgKG1zZy0+d3JhcHBlZEFyZ3VtZW50cy5zaXplKCkgIT0gdGhpcy0+d3Jh
cHBlZEFyZ3VtZW50cy5zaXplKCkgfHwKLSAgICAgICAgKCFleGVjICYmIG1zZy0+d3JhcHBlZEFy
Z3VtZW50cy5zaXplKCkpKQorICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBtZXNzYWdlQ29uc3RydWN0
b3Ioc2NyaXB0U3RhdGUsIHdlYkluc3BlY3RvciwgIkNvbnNvbGVNZXNzYWdlIik7CisgICAgbWVz
c2FnZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
bV9zb3VyY2UpKTsKKyAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgaW50PihtX2xldmVsKSk7CisgICAgbWVzc2FnZUNvbnN0cnVjdG9yLmFw
cGVuZEFyZ3VtZW50KG1fbGluZSk7CisgICAgbWVzc2FnZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3Vt
ZW50KG1fdXJsKTsKKyAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9ncm91
cExldmVsKTsKKyAgICBtZXNzYWdlQ29uc3RydWN0b3IuYXBwZW5kQXJndW1lbnQobV9yZXBlYXRD
b3VudCk7CisKKyAgICBpZiAoIW1fZnJhbWVzLmlzRW1wdHkoKSkKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fZnJhbWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbWVzc2Fn
ZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50KG1fZnJhbWVzW2ldKTsKKyAgICBlbHNlIGlmICgh
bV93cmFwcGVkQXJndW1lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fd3JhcHBlZEFyZ3VtZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1lc3Nh
Z2VDb25zdHJ1Y3Rvci5hcHBlbmRBcmd1bWVudChtX3dyYXBwZWRBcmd1bWVudHNbaV0pOworICAg
IGVsc2UKKyAgICAgICAgbWVzc2FnZUNvbnN0cnVjdG9yLmFwcGVuZEFyZ3VtZW50KG1fbWVzc2Fn
ZSk7CisKKyAgICBib29sIGhhZEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIFNjcmlwdE9iamVjdCBt
ZXNzYWdlID0gbWVzc2FnZUNvbnN0cnVjdG9yLmNvbnN0cnVjdChoYWRFeGNlcHRpb24pOworICAg
IGlmIChoYWRFeGNlcHRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFNjcmlwdEZ1bmN0aW9u
Q2FsbCBhZGRNZXNzYWdlVG9Db25zb2xlKHNjcmlwdFN0YXRlLCB3ZWJJbnNwZWN0b3IsICJhZGRN
ZXNzYWdlVG9Db25zb2xlIik7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZS5hcHBlbmRBcmd1bWVu
dChtZXNzYWdlKTsKKyAgICBhZGRNZXNzYWdlVG9Db25zb2xlLmNhbGwoaGFkRXhjZXB0aW9uKTsK
K30KKworYm9vbCBDb25zb2xlTWVzc2FnZTo6aXNFcXVhbChTY3JpcHRTdGF0ZSogc3RhdGUsIENv
bnNvbGVNZXNzYWdlKiBtc2cpIGNvbnN0Cit7CisgICAgaWYgKG1zZy0+bV93cmFwcGVkQXJndW1l
bnRzLnNpemUoKSAhPSBtX3dyYXBwZWRBcmd1bWVudHMuc2l6ZSgpIHx8CisgICAgICAgICghc3Rh
dGUgJiYgbXNnLT5tX3dyYXBwZWRBcmd1bWVudHMuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtc2ctPndyYXBwZWRBcmd1bWVudHMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgQVNTRVJUX0FSRyhleGVjLCBleGVjKTsKLSAgICAgICAg
aWYgKCFKU1ZhbHVlSXNFcXVhbCh0b1JlZihleGVjKSwgdG9SZWYobXNnLT53cmFwcGVkQXJndW1l
bnRzW2ldLmdldCgpKSwgdG9SZWYodGhpcy0+d3JhcHBlZEFyZ3VtZW50c1tpXS5nZXQoKSksIDAp
KQorICAgIEFTU0VSVF9BUkcoc3RhdGUsIHN0YXRlKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbXNnLT5tX3dyYXBwZWRBcmd1bWVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGlmICgh
bV93cmFwcGVkQXJndW1lbnRzW2ldLmlzRXF1YWwoc3RhdGUsIG1zZy0+bV93cmFwcGVkQXJndW1l
bnRzW2ldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKLSAgICBzaXplX3Qg
ZnJhbWVDb3VudCA9IG1zZy0+ZnJhbWVzLnNpemUoKTsKLSAgICBpZiAoZnJhbWVDb3VudCAhPSB0
aGlzLT5mcmFtZXMuc2l6ZSgpKQorICAgIHNpemVfdCBmcmFtZUNvdW50ID0gbXNnLT5tX2ZyYW1l
cy5zaXplKCk7CisgICAgaWYgKGZyYW1lQ291bnQgIT0gbV9mcmFtZXMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZyYW1lQ291bnQ7
ICsraSkgewotICAgICAgICBjb25zdCBTY3JpcHRTdHJpbmcmIG15RnJhbWVGdW5jdGlvbk5hbWUg
PSB0aGlzLT5mcmFtZXNbaV07Ci0gICAgICAgIGlmIChteUZyYW1lRnVuY3Rpb25OYW1lICE9IG1z
Zy0+ZnJhbWVzW2ldKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsgKytp
KQorICAgICAgICBpZiAobV9mcmFtZXNbaV0gIT0gbXNnLT5tX2ZyYW1lc1tpXSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbXNnLT5zb3VyY2UgPT0gdGhp
cy0+c291cmNlCi0gICAgJiYgbXNnLT5sZXZlbCA9PSB0aGlzLT5sZXZlbAotICAgICYmIG1zZy0+
bWVzc2FnZSA9PSB0aGlzLT5tZXNzYWdlCi0gICAgJiYgbXNnLT5saW5lID09IHRoaXMtPmxpbmUK
LSAgICAmJiBtc2ctPnVybCA9PSB0aGlzLT51cmwKLSAgICAmJiBtc2ctPmdyb3VwTGV2ZWwgPT0g
dGhpcy0+Z3JvdXBMZXZlbDsKKworICAgIHJldHVybiBtc2ctPm1fc291cmNlID09IG1fc291cmNl
CisgICAgJiYgbXNnLT5tX2xldmVsID09IG1fbGV2ZWwKKyAgICAmJiBtc2ctPm1fbWVzc2FnZSA9
PSBtX21lc3NhZ2UKKyAgICAmJiBtc2ctPm1fbGluZSA9PSBtX2xpbmUKKyAgICAmJiBtc2ctPm1f
dXJsID09IG1fdXJsCisgICAgJiYgbXNnLT5tX2dyb3VwTGV2ZWwgPT0gbV9ncm91cExldmVsOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9Db25zb2xlTWVzc2FnZS5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuaApp
bmRleCAwM2UwY2IxLi5lNzJhNDg5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9Db25z
b2xlTWVzc2FnZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdlLmgKQEAg
LTMyLDE0ICszMiwxMiBAQAogI2RlZmluZSBDb25zb2xlTWVzc2FnZV9oCiAKICNpbmNsdWRlICJD
b25zb2xlLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0U3Rh
dGUuaCIKIAogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvdGVjdC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAotbmFtZXNwYWNlIEpTQyB7Ci0gICAgY2xhc3MgRXhlY1N0YXRlOwotfQotCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CkBAIC01MCwxNyAr
NDgsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbSwgdW5zaWduZWQgbGksIGNv
bnN0IFN0cmluZyYgdSwgdW5zaWduZWQgZyk7ICAgICAgICAKICAgICAgICAgQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqLCB1bnNpZ25l
ZCBnLCBib29sIHN0b3JlVHJhY2UgPSBmYWxzZSk7CiAKLSAgICAgICAgYm9vbCBpc0VxdWFsKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdDsKKyAgICAgICAg
dm9pZCBhZGRUb1NjcmlwdChTY3JpcHRTdGF0ZSosIGNvbnN0IFNjcmlwdE9iamVjdCYgd2ViSW5z
cGVjdG9yKTsKKyAgICAgICAgdm9pZCBpbmNyZW1lbnRDb3VudCgpIHsgKyttX3JlcGVhdENvdW50
OyB9OworICAgICAgICBib29sIGlzRXF1YWwoU2NyaXB0U3RhdGUqLCBDb25zb2xlTWVzc2FnZSog
bXNnKSBjb25zdDsKIAotICAgICAgICBNZXNzYWdlU291cmNlIHNvdXJjZTsKLSAgICAgICAgTWVz
c2FnZUxldmVsIGxldmVsOwotICAgICAgICBTdHJpbmcgbWVzc2FnZTsKLSAgICAgICAgVmVjdG9y
PEpTQzo6UHJvdGVjdGVkSlNWYWx1ZVB0cj4gd3JhcHBlZEFyZ3VtZW50czsKLSAgICAgICAgVmVj
dG9yPFNjcmlwdFN0cmluZz4gZnJhbWVzOwotICAgICAgICB1bnNpZ25lZCBsaW5lOwotICAgICAg
ICBTdHJpbmcgdXJsOwotICAgICAgICB1bnNpZ25lZCBncm91cExldmVsOwotICAgICAgICB1bnNp
Z25lZCByZXBlYXRDb3VudDsKKyAgICBwcml2YXRlOgorICAgICAgICBNZXNzYWdlU291cmNlIG1f
c291cmNlOworICAgICAgICBNZXNzYWdlTGV2ZWwgbV9sZXZlbDsKKyAgICAgICAgU3RyaW5nIG1f
bWVzc2FnZTsKKyAgICAgICAgVmVjdG9yPFNjcmlwdFZhbHVlPiBtX3dyYXBwZWRBcmd1bWVudHM7
CisgICAgICAgIFZlY3RvcjxTY3JpcHRTdHJpbmc+IG1fZnJhbWVzOworICAgICAgICB1bnNpZ25l
ZCBtX2xpbmU7CisgICAgICAgIFN0cmluZyBtX3VybDsKKyAgICAgICAgdW5zaWduZWQgbV9ncm91
cExldmVsOworICAgICAgICB1bnNpZ25lZCBtX3JlcGVhdENvdW50OwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggZTJkNTdmZS4uMTBhMjRiZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTUwMiw3ICs1MDIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmFkZENvbnNvbGVNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgQ29uc29sZU1lc3NhZ2UqIGNv
bgogICAgIEFTU0VSVF9BUkcoY29uc29sZU1lc3NhZ2UsIGNvbnNvbGVNZXNzYWdlKTsKIAogICAg
IGlmIChtX3ByZXZpb3VzTWVzc2FnZSAmJiBtX3ByZXZpb3VzTWVzc2FnZS0+aXNFcXVhbChleGVj
LCBjb25zb2xlTWVzc2FnZSkpIHsKLSAgICAgICAgKyttX3ByZXZpb3VzTWVzc2FnZS0+cmVwZWF0
Q291bnQ7CisgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5pbmNyZW1lbnRDb3VudCgpOwogICAg
ICAgICBkZWxldGUgY29uc29sZU1lc3NhZ2U7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcmV2
aW91c01lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZTsKQEAgLTUxMCw3ICs1MTAsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKEV4ZWNTdGF0ZSogZXhlYywgQ29u
c29sZU1lc3NhZ2UqIGNvbgogICAgIH0KIAogICAgIGlmICh3aW5kb3dWaXNpYmxlKCkpCi0gICAg
ICAgIGFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKG1fcHJldmlvdXNNZXNzYWdlKTsKKyAgICAgICAg
bV9wcmV2aW91c01lc3NhZ2UtPmFkZFRvU2NyaXB0KHRvSlMobV9zY3JpcHRDb250ZXh0KSwgU2Ny
aXB0T2JqZWN0KHRvSlMobV9zY3JpcHRPYmplY3QpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y2xlYXJDb25zb2xlTWVzc2FnZXMoKQpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKQogCiAgICAgdW5z
aWduZWQgbWVzc2FnZUNvdW50ID0gbV9jb25zb2xlTWVzc2FnZXMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7ICsraSkKLSAgICAgICAgYWRkU2NyaXB0
Q29uc29sZU1lc3NhZ2UobV9jb25zb2xlTWVzc2FnZXNbaV0pOworICAgICAgICBtX2NvbnNvbGVN
ZXNzYWdlc1tpXS0+YWRkVG9TY3JpcHQodG9KUyhtX3NjcmlwdENvbnRleHQpLCBTY3JpcHRPYmpl
Y3QodG9KUyhtX3NjcmlwdE9iamVjdCkpKTsKIAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICBE
YXRhYmFzZVJlc291cmNlc1NldDo6aXRlcmF0b3IgZGF0YWJhc2VzRW5kID0gbV9kYXRhYmFzZVJl
c291cmNlcy5lbmQoKTsKQEAgLTExOTYsNTkgKzExOTYsNiBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OnBvcHVsYXRlU2NyaXB0T2JqZWN0cygpCiAgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKG1f
c2NyaXB0Q29udGV4dCwgbV9zY3JpcHRPYmplY3QsICJwb3B1bGF0ZUludGVyZmFjZSIpOwogfQog
Ci12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0
IENvbnNvbGVNZXNzYWdlKiBtZXNzYWdlKQotewotICAgIEFTU0VSVF9BUkcobWVzc2FnZSwgbWVz
c2FnZSk7Ci0KLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0KLSAgICBKU1ZhbHVlUmVm
IG1lc3NhZ2VDb25zdHJ1Y3RvclByb3BlcnR5ID0gSlNPYmplY3RHZXRQcm9wZXJ0eShtX3Njcmlw
dENvbnRleHQsIG1fc2NyaXB0T2JqZWN0LCBqc1N0cmluZ1JlZigiQ29uc29sZU1lc3NhZ2UiKS5n
ZXQoKSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKEhBTkRMRV9FWENFUFRJT04obV9zY3JpcHRDb250
ZXh0LCBleGNlcHRpb24pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBKU09iamVjdFJlZiBtZXNz
YWdlQ29uc3RydWN0b3IgPSBKU1ZhbHVlVG9PYmplY3QobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdl
Q29uc3RydWN0b3JQcm9wZXJ0eSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKEhBTkRMRV9FWENFUFRJ
T04obV9zY3JpcHRDb250ZXh0LCBleGNlcHRpb24pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBK
U1ZhbHVlUmVmIHNvdXJjZVZhbHVlID0gSlNWYWx1ZU1ha2VOdW1iZXIobV9zY3JpcHRDb250ZXh0
LCBtZXNzYWdlLT5zb3VyY2UpOwotICAgIEpTVmFsdWVSZWYgbGV2ZWxWYWx1ZSA9IEpTVmFsdWVN
YWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4dCwgbWVzc2FnZS0+bGV2ZWwpOwotICAgIEpTVmFsdWVS
ZWYgbGluZVZhbHVlID0gSlNWYWx1ZU1ha2VOdW1iZXIobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdl
LT5saW5lKTsKLSAgICBKU1ZhbHVlUmVmIHVybFZhbHVlID0gSlNWYWx1ZU1ha2VTdHJpbmcobV9z
Y3JpcHRDb250ZXh0LCBqc1N0cmluZ1JlZihtZXNzYWdlLT51cmwpLmdldCgpKTsKLSAgICBKU1Zh
bHVlUmVmIGdyb3VwTGV2ZWxWYWx1ZSA9IEpTVmFsdWVNYWtlTnVtYmVyKG1fc2NyaXB0Q29udGV4
dCwgbWVzc2FnZS0+Z3JvdXBMZXZlbCk7Ci0gICAgSlNWYWx1ZVJlZiByZXBlYXRDb3VudFZhbHVl
ID0gSlNWYWx1ZU1ha2VOdW1iZXIobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdlLT5yZXBlYXRDb3Vu
dCk7Ci0KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bU1lc3NhZ2VBcmd1bWVudHMg
PSAyNTY7Ci0gICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbbWF4aW11bU1lc3NhZ2VBcmd1bWVudHNd
OwotICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQgPSAwOwotICAgIGFyZ3VtZW50c1thcmd1bWVu
dENvdW50KytdID0gc291cmNlVmFsdWU7Ci0gICAgYXJndW1lbnRzW2FyZ3VtZW50Q291bnQrK10g
PSBsZXZlbFZhbHVlOwotICAgIGFyZ3VtZW50c1thcmd1bWVudENvdW50KytdID0gbGluZVZhbHVl
OwotICAgIGFyZ3VtZW50c1thcmd1bWVudENvdW50KytdID0gdXJsVmFsdWU7Ci0gICAgYXJndW1l
bnRzW2FyZ3VtZW50Q291bnQrK10gPSBncm91cExldmVsVmFsdWU7Ci0gICAgYXJndW1lbnRzW2Fy
Z3VtZW50Q291bnQrK10gPSByZXBlYXRDb3VudFZhbHVlOwotCi0gICAgaWYgKCFtZXNzYWdlLT5m
cmFtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIHJlbWFpbmluZ1NwYWNlSW5Bcmd1
bWVudHMgPSBtYXhpbXVtTWVzc2FnZUFyZ3VtZW50cyAtIGFyZ3VtZW50Q291bnQ7Ci0gICAgICAg
IHVuc2lnbmVkIGFyZ3VtZW50c1RvQWRkID0gbWluKHJlbWFpbmluZ1NwYWNlSW5Bcmd1bWVudHMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtZXNzYWdlLT5mcmFtZXMuc2l6ZSgpKSk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmd1bWVudHNUb0FkZDsgKytpKQotICAgICAgICAg
ICAgYXJndW1lbnRzW2FyZ3VtZW50Q291bnQrK10gPSBKU1ZhbHVlTWFrZVN0cmluZyhtX3Njcmlw
dENvbnRleHQsIGpzU3RyaW5nUmVmKG1lc3NhZ2UtPmZyYW1lc1tpXSkuZ2V0KCkpOwotICAgIH0g
ZWxzZSBpZiAoIW1lc3NhZ2UtPndyYXBwZWRBcmd1bWVudHMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IHVuc2lnbmVkIHJlbWFpbmluZ1NwYWNlSW5Bcmd1bWVudHMgPSBtYXhpbXVtTWVzc2FnZUFyZ3Vt
ZW50cyAtIGFyZ3VtZW50Q291bnQ7Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50c1RvQWRkID0g
bWluKHJlbWFpbmluZ1NwYWNlSW5Bcmd1bWVudHMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtZXNz
YWdlLT53cmFwcGVkQXJndW1lbnRzLnNpemUoKSkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJndW1lbnRzVG9BZGQ7ICsraSkKLSAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1
bWVudENvdW50KytdID0gdG9SZWYobWVzc2FnZS0+d3JhcHBlZEFyZ3VtZW50c1tpXSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgSlNWYWx1ZVJlZiBtZXNzYWdlVmFsdWUgPSBKU1ZhbHVlTWFrZVN0
cmluZyhtX3NjcmlwdENvbnRleHQsIGpzU3RyaW5nUmVmKG1lc3NhZ2UtPm1lc3NhZ2UpLmdldCgp
KTsKLSAgICAgICAgYXJndW1lbnRzW2FyZ3VtZW50Q291bnQrK10gPSBtZXNzYWdlVmFsdWU7Ci0g
ICAgfQotCi0gICAgSlNPYmplY3RSZWYgbWVzc2FnZU9iamVjdCA9IEpTT2JqZWN0Q2FsbEFzQ29u
c3RydWN0b3IobV9zY3JpcHRDb250ZXh0LCBtZXNzYWdlQ29uc3RydWN0b3IsIGFyZ3VtZW50Q291
bnQsIGFyZ3VtZW50cywgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKEhBTkRMRV9FWENFUFRJT04obV9z
Y3JpcHRDb250ZXh0LCBleGNlcHRpb24pKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjYWxsRnVu
Y3Rpb24obV9zY3JpcHRDb250ZXh0LCBtX3NjcmlwdE9iamVjdCwgImFkZE1lc3NhZ2VUb0NvbnNv
bGUiLCAxLCAmbWVzc2FnZU9iamVjdCwgZXhjZXB0aW9uKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjphZGRTY3JpcHRQcm9maWxlKFByb2ZpbGUqIHByb2ZpbGUpCiB7CiAgICAgSlNM
b2NrIGxvY2soZmFsc2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmlu
ZGV4IGJhOWYxNDIuLjk2YjVlNmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKQEAgLTI2Nyw3ICsyNjcsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9jdXNOb2RlKCk7
CiAKICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKEpTQzo6RXhlY1N0YXRlKiwgQ29uc29sZU1l
c3NhZ2UqKTsKLSAgICB2b2lkIGFkZFNjcmlwdENvbnNvbGVNZXNzYWdlKGNvbnN0IENvbnNvbGVN
ZXNzYWdlKik7CiAKICAgICB2b2lkIGFkZFJlc291cmNlKEluc3BlY3RvclJlc291cmNlKik7CiAg
ICAgdm9pZCByZW1vdmVSZXNvdXJjZShJbnNwZWN0b3JSZXNvdXJjZSopOwo=
</data>
<flag name="review"
          id="14114"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>