<?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>140093</bug_id>
          
          <creation_ts>2015-01-05 13:07:04 -0800</creation_ts>
          <short_desc>Argument object created by &quot;Function dot arguments&quot; should use a clone of argument values</short_desc>
          <delta_ts>2015-01-15 11:21:03 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>139827</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058783</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-05 13:07:04 -0800</bug_when>
    <thetext>After https://bugs.webkit.org/show_bug.cgi?id=139827, a few test failures will start failing.  One of them is dfg-tear-off-arguments-not-activation.js, which can be run this way:

$ jsc --useFTLJIT\=false --enableFunctionDotArguments\=true --testTheFTL\=true --useFTLJIT\=true resources/standalone-pre.js dfg-tear-off-arguments-not-activation.js resources/standalone-post.js

The relevant code is as follows:

    function bar() {
        return foo.arguments;
    }

    function foo(p) {
        var x = 42;
        if (p)
            return (function() { return x; });
        else
            return bar();
    }

In this case, foo() has no knowledge of bar() needing the LexicalEnvironment and has dead code eliminated the SetLocal that stores it into its designated local.  In bar(), the factory for the Arguments object (for creating foo.arguments) tries to read foo&apos;s LexicalEnvironment from its designated lexicalEnvironment local, but instead, finds it to be uninitialized.  This results in a null pointer access which causes a crash.

This can be resolved by having bar() instantiate a clone of the Arguments object instead, and populate its elements with values fetched directly from foo&apos;s frame.  There&apos;s no need to reference foo&apos;s LexicalEnvironment (whether present or not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058786</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-01-05 13:28:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/19377712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058793</commentid>
    <comment_count>2</comment_count>
      <attachid>243998</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-05 13:36:04 -0800</bug_when>
    <thetext>Created attachment 243998
the patch.

This patch is for keeping track of the work in progress.  Will finalize this fix once the remaining issues that fall out of &lt;https://webkit.org/b/139827&gt; become clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059895</commentid>
    <comment_count>3</comment_count>
      <attachid>244277</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-08 11:50:54 -0800</bug_when>
    <thetext>Created attachment 244277
patch 2: fixed a typo in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059997</commentid>
    <comment_count>4</comment_count>
      <attachid>244277</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-08 16:07:19 -0800</bug_when>
    <thetext>Comment on attachment 244277
patch 2: fixed a typo in the ChangeLog.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060002</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-08 16:10:11 -0800</bug_when>
    <thetext>You should also add a test, if one doesn&apos;t exist, that notes the change in behavior in this case:

function a(arg0)
{
    var unused = arguments;
    arg0 = &quot;changed&quot;;
    return function b()
    {
        var unused = arg0;
        return a.arguments[0];
    }
}

a(&quot;original&quot;)();

Before your patch, you&apos;ll get &quot;changed&quot;, and after you&apos;ll get &quot;original&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060005</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-08 16:12:24 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; You should also add a test, if one doesn&apos;t exist, that notes the change in
&gt; behavior in this case: ...

OK, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060016</commentid>
    <comment_count>7</comment_count>
      <attachid>244277</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-08 16:49:37 -0800</bug_when>
    <thetext>Comment on attachment 244277
patch 2: fixed a typo in the ChangeLog.

Clearing flags on attachment: 244277

Committed r178145: &lt;http://trac.webkit.org/changeset/178145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060017</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-08 16:49:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061028</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-13 18:48:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; You should also add a test, if one doesn&apos;t exist, that notes the change in
&gt; behavior in this case:
&gt; 
&gt; function a(arg0)
&gt; {
&gt;     var unused = arguments;
&gt;     arg0 = &quot;changed&quot;;
&gt;     return function b()
&gt;     {
&gt;         var unused = arg0;
&gt;         return a.arguments[0];
&gt;     }
&gt; }
&gt; 
&gt; a(&quot;original&quot;)();
&gt; 
&gt; Before your patch, you&apos;ll get &quot;changed&quot;, and after you&apos;ll get &quot;original&quot;.

Turns out this use of function dot argument does not do what we think it does.  The value of a.arguments in b turns out to be null.  This is consistently so in Safari, Chrome, and Firefox.

If b() was invoked while a() is still on the stack (invoked either directly or indirectly from inside a()), then a.arguments[0] will be &quot;changed&quot; (also consistently so across all 3 browsers).

With WebKit ToT, something appears to be broken.  The cases that should have returned &quot;changed&quot; is now returning undefined.  Will investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061242</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-14 11:08:48 -0800</bug_when>
    <thetext>&gt; Turns out this use of function dot argument does not do what we think it
&gt; does.  The value of a.arguments in b turns out to be null.  This is
&gt; consistently so in Safari, Chrome, and Firefox.

It does what we think it does -- I just wrote the test case incorrectly. Here is the correct test:

&gt; &gt; function a(arg0)
&gt; &gt; {
&gt; &gt;     var unused = arguments;
&gt; &gt;     arg0 = &quot;changed&quot;;
&gt; &gt;     return (function b()
&gt; &gt;     {
&gt; &gt;         var unused = arg0;
&gt; &gt;         return a.arguments[0];
&gt; &gt;     })();
&gt; &gt; }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061466</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-14 20:39:44 -0800</bug_when>
    <thetext>Reopened because we&apos;ve found that the previous patch is insufficient.  Will upload a follow up patch in a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061468</commentid>
    <comment_count>12</comment_count>
      <attachid>244676</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-14 20:40:27 -0800</bug_when>
    <thetext>Created attachment 244676
patch 2: fixed bugs from the previous patch + add needed tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061578</commentid>
    <comment_count>13</comment_count>
      <attachid>244676</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-01-15 10:40:41 -0800</bug_when>
    <thetext>Comment on attachment 244676
patch 2: fixed bugs from the previous patch + add needed tests.

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

r=me with comments

&gt; Source/JavaScriptCore/runtime/Arguments.cpp:389
&gt; +    if (isTornOff())
&gt; +        return;

This should be an ASSERT. Only non-cloned arguments is ambiguous about when it will be torn off.

&gt; Source/JavaScriptCore/runtime/Arguments.cpp:399
&gt; +    ASSERT(!m_slowArgumentData.get());

No need for .get() here.

&gt; Source/JavaScriptCore/runtime/Arguments.cpp:408
&gt; +    if (isTornOff())
&gt; +        return;

Ditto.

&gt; Source/JavaScriptCore/runtime/Arguments.cpp:415
&gt; +    ASSERT(!m_slowArgumentData.get());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061593</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-01-15 11:21:03 -0800</bug_when>
    <thetext>Thanks for the review.  The patch has been updated based on the feedback, and landed in r178517: &lt;http://trac.webkit.org/r178517&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243998</attachid>
            <date>2015-01-05 13:36:04 -0800</date>
            <delta_ts>2015-01-08 11:50:54 -0800</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-140093.patch</filename>
            <type>text/plain</type>
            <size>4342</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc3OTI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE1LTAxLTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cmd1bWVudCBvYmplY3QgY3JlYXRlZCBieSAiRnVuY3Rpb24gZG90IGFyZ3VtZW50cyIgc2hvdWxk
IHVzZSBhIGNsb25lIHRoZSBhcmd1bWVudCB2YWx1ZXMuCisgICAgICAgIDxodHRwczovL3dlYmtp
dC5vcmcvYi8xNDAwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWZ0ZXIgdGhlIGNoYW5nZSBpbiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM5ODI3
PiwgdGhlIGRmZy10ZWFyLW9mZi1hcmd1bWVudHMtbm90LWFjdGl2YXRpb24uanMKKyAgICAgICAg
dGVzdCB3aWxsIGNyYXNoLiAgVGhlIHJlbGV2YW50IGNvZGUgd2hpY2ggbWFuaWZlc3RzIHRoZSBp
c3N1ZSBpcyBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICBmdW5jdGlvbiBiYXIoKSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZvby5hcmd1bWVudHM7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGZvbyhwKSB7CisgICAgICAgICAgICAgICAgdmFyIHggPSA0MjsKKyAg
ICAgICAgICAgICAgICBpZiAocCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlv
bigpIHsgcmV0dXJuIHg7IH0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGJhcigpOworICAgICAgICAgICAgfQorCisgICAgICAgIEluIHRoaXMgY2Fz
ZSwgZm9vKCkgaGFzIG5vIGtub3dsZWRnZSBvZiBiYXIoKSBuZWVkaW5nIGl0cyBMZXhpY2FsRW52
aXJvbm1lbnQgYW5kCisgICAgICAgIGhhcyBkZWFkIGNvZGUgZWxpbWluYXRlZCB0aGUgU2V0TG9j
YWwgdGhhdCBzdG9yZXMgaXQgaW50byBpdHMgZGVzaWduYXRlZCBsb2NhbC4KKyAgICAgICAgSW4g
YmFyKCksIHRoZSBmYWN0b3J5IGZvciB0aGUgQXJndW1lbnRzIG9iamVjdCAoZm9yIGNyZWF0aW5n
IGZvby5hcmd1bWVudHMpIHRyaWVzCisgICAgICAgIHRvIHJlYWQgZm9vJ3MgTGV4aWNhbEVudmly
b25tZW50IGZyb20gaXRzIGRlc2lnbmF0ZWQgbGV4aWNhbEVudmlyb25tZW50IGxvY2FsLAorICAg
ICAgICBidXQgaW5zdGVhZCwgZmluZHMgaXQgdG8gYmUgdW5pbml0aWFsaXplZC4gIFRoaXMgcmVz
dWx0cyBpbiBhIG51bGwgcG9pbnRlciBhY2Nlc3MKKyAgICAgICAgd2hpY2ggY2F1c2VzIGEgY3Jh
c2guCisKKyAgICAgICAgVGhpcyBjYW4gYmUgcmVzb2x2ZWQgYnkgaGF2aW5nIGJhcigpIGluc3Rh
bnRpYXRlIGEgY2xvbmUgb2YgdGhlIEFyZ3VtZW50cyBvYmplY3QKKyAgICAgICAgaW5zdGVhZCwg
YW5kIHBvcHVsYXRlIGl0cyBlbGVtZW50cyB3aXRoIHZhbHVlcyBmZXRjaGVkIGRpcmVjdGx5IGZy
b20gZm9vJ3MgZnJhbWUuCisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byByZWZlcmVuY2UgZm9v
J3MgTGV4aWNhbEVudmlyb25tZW50ICh3aGV0aGVyIHByZXNlbnQgb3Igbm90KS4KKworICAgICAg
ICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNrVmlz
aXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVu
dHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbik6CisKIDIwMTUt
MDEtMDMgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jh
c2ggaW4gb3BlcmF0aW9uTmV3RnVuY3Rpb24gd2hlbiBzY3JvbGxpbmcgb24gR29vZ2xlKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAJKHJldmlzaW9uIDE3NzkxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYwLDcgQEAg
QXJndW1lbnRzKiBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjcmVhdGVBcgogICAgIEFyZ3VtZW50cyog
YXJndW1lbnRzOwogICAgIEFyZ3VtZW50c01vZGUgbW9kZTsKICAgICBpZiAoT3B0aW9uczo6ZW5h
YmxlRnVuY3Rpb25Eb3RBcmd1bWVudHMoKSkKLSAgICAgICAgbW9kZSA9IE5vcm1hbEFyZ3VtZW50
c0NyZWF0aW9uTW9kZTsKKyAgICAgICAgbW9kZSA9IENsb25lZEFyZ3VtZW50c0NyZWF0aW9uTW9k
ZTsKICAgICBlbHNlCiAgICAgICAgIG1vZGUgPSBGYWtlQXJndW1lbnRWYWx1ZXNDcmVhdGlvbk1v
ZGU7CiAjaWYgRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24gMTc3OTE0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gQXJndW1lbnRzTW9kZSB7CiAgICAgTm9ybWFsQXJndW1l
bnRzQ3JlYXRpb25Nb2RlLAorICAgIENsb25lZEFyZ3VtZW50c0NyZWF0aW9uTW9kZSwKICAgICBG
YWtlQXJndW1lbnRWYWx1ZXNDcmVhdGlvbk1vZGUKIH07CiAKQEAgLTMxMCw2ICszMTEsMTMgQEAg
aW5saW5lIHZvaWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihDYQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzQ3JlYXRpb25Nb2RlOiB7
CisgICAgICAgIG1fbnVtQXJndW1lbnRzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7Cisg
ICAgICAgIG1fcmVnaXN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+Kj4oY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSk7CisgICAgICAgIHRlYXJPZmYoY2FsbEZy
YW1lKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIEZha2VBcmd1
bWVudFZhbHVlc0NyZWF0aW9uTW9kZTogewogICAgICAgICBtX251bUFyZ3VtZW50cyA9IDA7CiAg
ICAgICAgIG1fcmVnaXN0ZXJzID0gbnVsbHB0cjsKQEAgLTM1MCw2ICszNTgsMjAgQEAgaW5saW5l
IHZvaWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihDYQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAorICAgIGNhc2UgQ2xvbmVkQXJndW1lbnRzQ3JlYXRpb25Nb2RlOiB7CisgICAg
ICAgIG1fbnVtQXJndW1lbnRzID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0g
MTsKKyAgICAgICAgaWYgKG1fbnVtQXJndW1lbnRzKSB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0
Rm9yQXJndW1lbnRPbmUgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVn
aXN0ZXIoKS5vZmZzZXQoKTsKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJzID0gcmVpbnRlcnByZXRf
Y2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkg
KyBvZmZzZXRGb3JBcmd1bWVudE9uZSAtIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEpLm9m
ZnNldCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fcmVnaXN0ZXJzID0gMDsKKyAg
ICAgICAgCisgICAgICAgIEFTU0VSVCghanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSktPnN5bWJvbFRhYmxlKGlubGluZUNhbGxGcmFt
ZS0+c3BlY2lhbGl6YXRpb25LaW5kKCkpLT5zbG93QXJndW1lbnRzKCkpOworICAgICAgICAKKyAg
ICAgICAgdGVhck9mZihjYWxsRnJhbWUsIGlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBGYWtlQXJndW1lbnRWYWx1ZXNDcmVhdGlvbk1v
ZGU6IHsKICAgICAgICAgbV9udW1Bcmd1bWVudHMgPSAwOwogICAgICAgICBtX3JlZ2lzdGVycyA9
IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244277</attachid>
            <date>2015-01-08 11:50:54 -0800</date>
            <delta_ts>2015-01-08 16:49:37 -0800</delta_ts>
            <desc>patch 2: fixed a typo in the ChangeLog.</desc>
            <filename>bug-140093.patch</filename>
            <type>text/plain</type>
            <size>4352</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MTIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDE1LTAxLTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
cmd1bWVudCBvYmplY3QgY3JlYXRlZCBieSAiRnVuY3Rpb24gZG90IGFyZ3VtZW50cyIgc2hvdWxk
IHVzZSBhIGNsb25lIG9mIHRoZSBhcmd1bWVudCB2YWx1ZXMuCisgICAgICAgIDxodHRwczovL3dl
YmtpdC5vcmcvYi8xNDAwOTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWZ0ZXIgdGhlIGNoYW5nZSBpbiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTM5
ODI3PiwgdGhlIGRmZy10ZWFyLW9mZi1hcmd1bWVudHMtbm90LWFjdGl2YXRpb24uanMKKyAgICAg
ICAgdGVzdCB3aWxsIGNyYXNoLiAgVGhlIHJlbGV2YW50IGNvZGUgd2hpY2ggbWFuaWZlc3RzIHRo
ZSBpc3N1ZSBpcyBhcyBmb2xsb3dzOgorCisgICAgICAgICAgICBmdW5jdGlvbiBiYXIoKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZvby5hcmd1bWVudHM7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGZvbyhwKSB7CisgICAgICAgICAgICAgICAgdmFyIHggPSA0MjsK
KyAgICAgICAgICAgICAgICBpZiAocCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5j
dGlvbigpIHsgcmV0dXJuIHg7IH0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGJhcigpOworICAgICAgICAgICAgfQorCisgICAgICAgIEluIHRoaXMg
Y2FzZSwgZm9vKCkgaGFzIG5vIGtub3dsZWRnZSBvZiBiYXIoKSBuZWVkaW5nIGl0cyBMZXhpY2Fs
RW52aXJvbm1lbnQgYW5kCisgICAgICAgIGhhcyBkZWFkIGNvZGUgZWxpbWluYXRlZCB0aGUgU2V0
TG9jYWwgdGhhdCBzdG9yZXMgaXQgaW50byBpdHMgZGVzaWduYXRlZCBsb2NhbC4KKyAgICAgICAg
SW4gYmFyKCksIHRoZSBmYWN0b3J5IGZvciB0aGUgQXJndW1lbnRzIG9iamVjdCAoZm9yIGNyZWF0
aW5nIGZvby5hcmd1bWVudHMpIHRyaWVzCisgICAgICAgIHRvIHJlYWQgZm9vJ3MgTGV4aWNhbEVu
dmlyb25tZW50IGZyb20gaXRzIGRlc2lnbmF0ZWQgbGV4aWNhbEVudmlyb25tZW50IGxvY2FsLAor
ICAgICAgICBidXQgaW5zdGVhZCwgZmluZHMgaXQgdG8gYmUgdW5pbml0aWFsaXplZC4gIFRoaXMg
cmVzdWx0cyBpbiBhIG51bGwgcG9pbnRlciBhY2Nlc3MKKyAgICAgICAgd2hpY2ggY2F1c2VzIGEg
Y3Jhc2guCisKKyAgICAgICAgVGhpcyBjYW4gYmUgcmVzb2x2ZWQgYnkgaGF2aW5nIGJhcigpIGlu
c3RhbnRpYXRlIGEgY2xvbmUgb2YgdGhlIEFyZ3VtZW50cyBvYmplY3QKKyAgICAgICAgaW5zdGVh
ZCwgYW5kIHBvcHVsYXRlIGl0cyBlbGVtZW50cyB3aXRoIHZhbHVlcyBmZXRjaGVkIGRpcmVjdGx5
IGZyb20gZm9vJ3MgZnJhbWUuCisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byByZWZlcmVuY2Ug
Zm9vJ3MgTGV4aWNhbEVudmlyb25tZW50ICh3aGV0aGVyIHByZXNlbnQgb3Igbm90KS4KKworICAg
ICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgIChKU0M6OlN0YWNr
VmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1
bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbik6CisKIDIw
MTUtMDEtMDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0
aGUgbGV4aWNhbEVudmlyb25tZW50IGFzIGFuIG9wZXJhbmQgdG8gb3BfZ2V0X2FyZ3VtZW50X2J5
X3ZhbC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCShyZXZpc2lvbiAxNzgxMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcg
KzI2MCw3IEBAIEFyZ3VtZW50cyogU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRlQXIKICAgICBB
cmd1bWVudHMqIGFyZ3VtZW50czsKICAgICBBcmd1bWVudHNNb2RlIG1vZGU7CiAgICAgaWYgKE9w
dGlvbnM6OmVuYWJsZUZ1bmN0aW9uRG90QXJndW1lbnRzKCkpCi0gICAgICAgIG1vZGUgPSBOb3Jt
YWxBcmd1bWVudHNDcmVhdGlvbk1vZGU7CisgICAgICAgIG1vZGUgPSBDbG9uZWRBcmd1bWVudHND
cmVhdGlvbk1vZGU7CiAgICAgZWxzZQogICAgICAgICBtb2RlID0gRmFrZUFyZ3VtZW50VmFsdWVz
Q3JlYXRpb25Nb2RlOwogI2lmIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHJldmlzaW9uIDE3ODEyMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIEFyZ3VtZW50c01vZGUgewogICAgIE5v
cm1hbEFyZ3VtZW50c0NyZWF0aW9uTW9kZSwKKyAgICBDbG9uZWRBcmd1bWVudHNDcmVhdGlvbk1v
ZGUsCiAgICAgRmFrZUFyZ3VtZW50VmFsdWVzQ3JlYXRpb25Nb2RlCiB9OwogCkBAIC0zMTAsNiAr
MzExLDEzIEBAIGlubGluZSB2b2lkIEFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24oQ2EKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIENsb25lZEFyZ3VtZW50c0NyZWF0
aW9uTW9kZTogeworICAgICAgICBtX251bUFyZ3VtZW50cyA9IGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpOworICAgICAgICBtX3JlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPio+KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpOworICAgICAgICB0ZWFy
T2ZmKGNhbGxGcmFtZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2Fz
ZSBGYWtlQXJndW1lbnRWYWx1ZXNDcmVhdGlvbk1vZGU6IHsKICAgICAgICAgbV9udW1Bcmd1bWVu
dHMgPSAwOwogICAgICAgICBtX3JlZ2lzdGVycyA9IG51bGxwdHI7CkBAIC0zNTAsNiArMzU4LDIw
IEBAIGlubGluZSB2b2lkIEFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24oQ2EKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIENsb25lZEFyZ3VtZW50c0NyZWF0aW9uTW9k
ZTogeworICAgICAgICBtX251bUFyZ3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKSAtIDE7CisgICAgICAgIGlmIChtX251bUFyZ3VtZW50cykgeworICAgICAgICAgICAg
aW50IG9mZnNldEZvckFyZ3VtZW50T25lID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV0u
dmlydHVhbFJlZ2lzdGVyKCkub2Zmc2V0KCk7CisgICAgICAgICAgICBtX3JlZ2lzdGVycyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkpICsgb2Zmc2V0Rm9yQXJndW1lbnRPbmUgLSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1
bWVudCgxKS5vZmZzZXQoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3JlZ2lzdGVy
cyA9IDA7CisgICAgICAgIAorICAgICAgICBBU1NFUlQoIWpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihpbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpLT5zeW1ib2xUYWJsZShpbmxp
bmVDYWxsRnJhbWUtPnNwZWNpYWxpemF0aW9uS2luZCgpKS0+c2xvd0FyZ3VtZW50cygpKTsKKyAg
ICAgICAgCisgICAgICAgIHRlYXJPZmYoY2FsbEZyYW1lLCBpbmxpbmVDYWxsRnJhbWUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgRmFrZUFyZ3VtZW50VmFsdWVz
Q3JlYXRpb25Nb2RlOiB7CiAgICAgICAgIG1fbnVtQXJndW1lbnRzID0gMDsKICAgICAgICAgbV9y
ZWdpc3RlcnMgPSBudWxscHRyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244676</attachid>
            <date>2015-01-14 20:40:27 -0800</date>
            <delta_ts>2015-01-15 10:40:41 -0800</delta_ts>
            <desc>patch 2: fixed bugs from the previous patch + add needed tests.</desc>
            <filename>bug-140093b.patch</filename>
            <type>text/plain</type>
            <size>22303</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4NDg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDE1LTAxLTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
UGFydCAyXSBBcmd1bWVudCBvYmplY3QgY3JlYXRlZCBieSAiRnVuY3Rpb24gZG90IGFyZ3VtZW50
cyIgc2hvdWxkIHVzZSBhIGNsb25lIG9mIGFyZ3VtZW50IHZhbHVlcy4KKyAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE0MDA5Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAg
IChKU0M6OlN0YWNrVmlzaXRvcjo6RnJhbWU6OmNyZWF0ZUFyZ3VtZW50cyk6CisgICAgICAgIC0g
V2Ugc2hvdWxkIG5vdCBmZXRjaGluZyB0aGUgbGV4aWNhbEVudmlyb25tZW50IGhlcmUuICBUaGUg
cmVhc29uIHdlJ3ZlCisgICAgICAgICAgaW50cm9kdWNlZCB0aGUgQ2xvbmVkQXJndW1lbnRzQ3Jl
YXRpb25Nb2RlIGlzIGJlY2F1c2UgdGhlIGxleGljYWxFbnZpcm9ubWVudAorICAgICAgICAgIG1h
eSBub3QgYmUgYXZhaWxhYmxlIHRvIHVzIGF0IHRoaXMgcG9pbnQuICBJbnN0ZWFkLCB3ZSdsbCBq
dXN0IHBhc3MgYSBudWxscHRyLgorCisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgor
ICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmZGb3JDbG9uaW5nKToKKyAgICAgICAgKiBy
dW50aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgLSBVc2UgdGhlIG5ldyB0ZWFyT2ZmRm9yQ2xvbmluZygpIHRvIHRlYXIg
b2ZmIGFyZ3VtZW50cyByaWdodCBvdXQgb2YgdGhlIHZhbHVlcworICAgICAgICAgIHBhc3NlZCBv
biB0aGUgc3RhY2suICB0ZWFyT2ZmKCkgaXMgbm90IGFwcHJvcHJpYXRlIGZvciB0aGlzIHB1cnBv
c2UgYmVjYXVzZQorICAgICAgICAgIGl0IHRha2VzIHNsb3dBcmd1bWVudHNEYXRhIGludG8gYWNj
b3VudC4KKwogMjAxNS0wMS0xNCAgTWF0dGhldyBNaXJtYW4gIDxtbWlybWFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmVkIGFjY2lkZW50YWwgY29tbWl0IG9mICJpbnZhbGlkX2FycmF5Lmpz
IiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCShyZXZpc2lvbiAxNzg0NDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDcgKzI3
Miw3IEBAIEFyZ3VtZW50cyogU3RhY2tWaXNpdG9yOjpGcmFtZTo6Y3JlYXRlQXIKICAgICB9IGVs
c2UgCiAjZW5kaWYKICAgICB7Ci0gICAgICAgIEpTTGV4aWNhbEVudmlyb25tZW50KiBsZXhpY2Fs
RW52aXJvbm1lbnQgPSBwaHlzaWNhbEZyYW1lLT5sZXhpY2FsRW52aXJvbm1lbnRPck51bGxwdHIo
KTsKKyAgICAgICAgSlNMZXhpY2FsRW52aXJvbm1lbnQqIGxleGljYWxFbnZpcm9ubWVudCA9IG51
bGxwdHI7CiAgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKHZtLCBwaHlzaWNh
bEZyYW1lLCBsZXhpY2FsRW52aXJvbm1lbnQsIG1vZGUpOwogICAgICAgICBhcmd1bWVudHMtPnRl
YXJPZmYocGh5c2ljYWxGcmFtZSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCShyZXZpc2lvbiAxNzg0NDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODMs
NiArMzgzLDQyIEBAIHZvaWQgQXJndW1lbnRzOjp0ZWFyT2ZmKENhbGxGcmFtZSogY2FsbEYKICAg
ICB9CiB9CiAgICAgCit2b2lkIEFyZ3VtZW50czo6dGVhck9mZkZvckNsb25pbmcoQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgaWYgKGlzVG9ybk9mZigpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgaWYgKCFtX251bUFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IC8vIE11c3QgYmUgY2FsbGVkIGZvciB0aGUgc2FtZSBjYWxsIGZyYW1lIGZyb20gd2hpY2ggaXQg
d2FzIGNyZWF0ZWQuCisgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93
bj4qPihjYWxsRnJhbWUpID09IG1fcmVnaXN0ZXJzKTsKKyAgICAKKyAgICBtX3JlZ2lzdGVycyA9
ICZyZWdpc3RlckFycmF5KCkgLSBDYWxsRnJhbWU6Om9mZnNldEZvcigxKSAtIDE7CisgICAgCisg
ICAgQVNTRVJUKCFtX3Nsb3dBcmd1bWVudERhdGEuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9udW1Bcmd1bWVudHM7ICsraSkKKyAgICAgICAgbV9yZWdpc3RlcnNbQ2FsbEZy
YW1lOjphcmd1bWVudE9mZnNldChpKV0uc2V0KGNhbGxGcmFtZS0+dm0oKSwgdGhpcywgY2FsbEZy
YW1lLT5hcmd1bWVudChpKSk7Cit9CisgICAgCit2b2lkIEFyZ3VtZW50czo6dGVhck9mZkZvckNs
b25pbmcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQoreworICAgIFJFTEVBU0VfQVNTRVJUKCFpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrKCktPm5lZWRzQWN0aXZhdGlvbigpKTsKKyAgICBpZiAoaXNUb3JuT2ZmKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIW1fbnVtQXJndW1lbnRzKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgbV9yZWdpc3RlcnMgPSAmcmVnaXN0ZXJBcnJheSgpIC0gQ2FsbEZyYW1l
OjpvZmZzZXRGb3IoMSkgLSAxOworICAgIAorICAgIEFTU0VSVCghbV9zbG93QXJndW1lbnREYXRh
LmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtQXJndW1lbnRzOyArK2kp
IHsKKyAgICAgICAgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBpbmxpbmVDYWxsRnJhbWUtPmFy
Z3VtZW50c1tpICsgMV07CisgICAgICAgIG1fcmVnaXN0ZXJzW0NhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXQoaSldLnNldChjYWxsRnJhbWUtPnZtKCksIHRoaXMsIHJlY292ZXJ5LnJlY292ZXIoY2Fs
bEZyYW1lKSk7CisgICAgfQorfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFyZ3Vt
ZW50c0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNPYmplY3QqIHRoaXNP
YmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSkudG9PYmplY3Qo
ZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAko
cmV2aXNpb24gMTc4NDQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1l
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDYgKzg3LDggQEAgcHVibGljOgogICAgIHZvaWQg
Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGNvcHlMZW5n
dGgsIGludDMyX3QgZmlyc3RBcmd1bWVudE9mZnNldCk7CiAgICAgdm9pZCB0ZWFyT2ZmKENhbGxG
cmFtZSopOwogICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqLCBJbmxpbmVDYWxsRnJhbWUqKTsK
KyAgICB2b2lkIHRlYXJPZmZGb3JDbG9uaW5nKENhbGxGcmFtZSopOworICAgIHZvaWQgdGVhck9m
ZkZvckNsb25pbmcoQ2FsbEZyYW1lKiwgSW5saW5lQ2FsbEZyYW1lKik7CiAgICAgYm9vbCBpc1Rv
cm5PZmYoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVycyA9PSAoJnJlZ2lzdGVyQXJyYXkoKSAt
IENhbGxGcmFtZTo6b2Zmc2V0Rm9yKDEpIC0gMSk7IH0KIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKSAKQEAgLTMxMCwxNCArMzEyLDE0IEBAIGlubGluZSB2b2lkIEFyZ3Vt
ZW50czo6ZmluaXNoQ3JlYXRpb24oQ2EKICAgICAgICAgICAgIHRlYXJPZmYoY2FsbEZyYW1lKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwogICAgIGNhc2UgQ2xvbmVkQXJndW1l
bnRzQ3JlYXRpb25Nb2RlOiB7CiAgICAgICAgIG1fbnVtQXJndW1lbnRzID0gY2FsbEZyYW1lLT5h
cmd1bWVudENvdW50KCk7CiAgICAgICAgIG1fcmVnaXN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSk7Ci0gICAg
ICAgIHRlYXJPZmYoY2FsbEZyYW1lKTsKKyAgICAgICAgdGVhck9mZkZvckNsb25pbmcoY2FsbEZy
YW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgICAgICAKKwogICAgIGNhc2UgRmFrZUFy
Z3VtZW50VmFsdWVzQ3JlYXRpb25Nb2RlOiB7CiAgICAgICAgIG1fbnVtQXJndW1lbnRzID0gMDsK
ICAgICAgICAgbV9yZWdpc3RlcnMgPSBudWxscHRyOwpAQCAtMzY4LDcgKzM3MCw3IEBAIGlubGlu
ZSB2b2lkIEFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24oQ2EKICAgICAgICAgCiAgICAgICAgIEFT
U0VSVCghanNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGlubGluZUNhbGxGcmFtZS0+ZXhlY3V0
YWJsZS5nZXQoKSktPnN5bWJvbFRhYmxlKGlubGluZUNhbGxGcmFtZS0+c3BlY2lhbGl6YXRpb25L
aW5kKCkpLT5zbG93QXJndW1lbnRzKCkpOwogICAgICAgICAKLSAgICAgICAgdGVhck9mZihjYWxs
RnJhbWUsIGlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIHRlYXJPZmZGb3JDbG9uaW5nKGNhbGxG
cmFtZSwgaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3ODQ4NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE1LTAxLTE0ICBNYXJrIExhbSAgPG1hcmsu
bGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbUGFydCAyXSBBcmd1bWVudCBvYmplY3QgY3JlYXRl
ZCBieSAiRnVuY3Rpb24gZG90IGFyZ3VtZW50cyIgc2hvdWxkIHVzZSBhIGNsb25lIG9mIGFyZ3Vt
ZW50IHZhbHVlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0MDA5Mz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Z1bmN0aW9u
LWRvdC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9m
dW5jdGlvbi1kb3QtYXJndW1lbnRzLmpzOgorICAgICAgICAoYXJyYXlpZnkpOgorICAgICAgICAo
aW5kaXJlY3RDYWxsKToKKyAgICAgICAgKC5pbm5lcik6CisgICAgICAgICh0ZWFyT2ZmVGVzdDMp
OgorICAgICAgICAodGVhck9mZlRlc3QzYik6CisgICAgICAgICh0ZWFyT2ZmVGVzdDNjKToKKyAg
ICAgICAgKHRlYXJPZmZUZXN0NEV4dGVybmFsKToKKyAgICAgICAgKHRlYXJPZmZUZXN0NCk6Cisg
ICAgICAgICh0ZWFyT2ZmVGVzdDRhRXh0ZXJuYWwpOgorICAgICAgICAodGVhck9mZlRlc3Q0YkV4
dGVybmFsKToKKyAgICAgICAgKHRlYXJPZmZUZXN0NGIpOgorICAgICAgICAodGVhck9mZlRlc3Q0
Y0V4dGVybmFsKToKKyAgICAgICAgKHRlYXJPZmZUZXN0NGMpOgorICAgICAgICAodGVhck9mZlRl
c3Q1KToKKyAgICAgICAgKHRlYXJPZmZUZXN0NWIpOgorICAgICAgICAodGVhck9mZlRlc3Q1Yyk6
CisgICAgICAgICh0ZWFyT2ZmVGVzdDZFeHRlcm5hbCk6CisgICAgICAgICh0ZWFyT2ZmVGVzdDYp
OgorICAgICAgICAodGVhck9mZlRlc3Q2YUV4dGVybmFsKToKKyAgICAgICAgKHRlYXJPZmZUZXN0
NmJFeHRlcm5hbCk6CisgICAgICAgICh0ZWFyT2ZmVGVzdDZiKToKKyAgICAgICAgKHRlYXJPZmZU
ZXN0NmNFeHRlcm5hbCk6CisgICAgICAgICh0ZWFyT2ZmVGVzdDZjKToKKyAgICAgICAgKHRlYXJP
ZmZUZXN0Nyk6CisgICAgICAgICh0ZWFyT2ZmVGVzdDdiKToKKyAgICAgICAgKHRlYXJPZmZUZXN0
N2MpOgorICAgICAgICAodGVhck9mZlRlc3Q4RXh0ZXJuYWwpOgorICAgICAgICAodGVhck9mZlRl
c3Q4KToKKyAgICAgICAgKHRlYXJPZmZUZXN0OGFFeHRlcm5hbCk6CisgICAgICAgICh0ZWFyT2Zm
VGVzdDhiRXh0ZXJuYWwpOgorICAgICAgICAodGVhck9mZlRlc3Q4Yik6CisgICAgICAgICh0ZWFy
T2ZmVGVzdDhjRXh0ZXJuYWwpOgorICAgICAgICAodGVhck9mZlRlc3Q4Yyk6CisgICAgICAgICh0
ZWFyT2ZmVGVzdDliKToKKyAgICAgICAgKHRlYXJPZmZUZXN0OWMpOgorICAgICAgICAodGVhck9m
ZlRlc3QxMEV4dGVybmFsKToKKyAgICAgICAgKHRlYXJPZmZUZXN0MTApOgorICAgICAgICAodGVh
ck9mZlRlc3QxMGFFeHRlcm5hbCk6CisgICAgICAgICh0ZWFyT2ZmVGVzdDEwYkV4dGVybmFsKToK
KyAgICAgICAgKHRlYXJPZmZUZXN0MTBiKToKKyAgICAgICAgKHRlYXJPZmZUZXN0MTBjRXh0ZXJu
YWwpOgorICAgICAgICAodGVhck9mZlRlc3QxMGMpOgorCiAyMDE1LTAxLTE0ICBBbmRyemVqIEJh
ZG93c2tpICA8YS5iYWRvd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDaGFuZ2Ug
ZXhwZWN0YXRpb25zIGZvciB0d28gbGF5b3V0IHRlc3RzLgpJbmRleDogTGF5b3V0VGVzdHMvanMv
ZnVuY3Rpb24tZG90LWFyZ3VtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvZnVuY3Rpb24tZG90LWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE3
ODQ0MykKKysrIExheW91dFRlc3RzL2pzL2Z1bmN0aW9uLWRvdC1hcmd1bWVudHMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCwzOCBAQCBQQVNTIHBhcmFtSW5pdFRlc3Qo
dHJ1ZSkudG9TdHJpbmcoKSBpcyAnCiBQQVNTIHBhcmFtRnVuY3Rpb25Db25zdHJ1Y3RvckluaXRU
ZXN0KHRydWUpLnRvU3RyaW5nKCkgaXMgJ1tvYmplY3QgQXJndW1lbnRzXScKIFBBU1MgdGVhck9m
ZlRlc3QoKVswXSBpcyB0cnVlCiBQQVNTIHRlYXJPZmZUZXN0Mih0cnVlKVswXSBpcyB0cnVlCitQ
QVNTIHRlYXJPZmZUZXN0MygxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BB
U1MgdGVhck9mZlRlc3QzYSgxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BB
U1MgdGVhck9mZlRlc3QzYigxLCAyLCAzLCBmYWxzZSkgaXMgWzEsIDIsIDMsIGZhbHNlXQorUEFT
UyB0ZWFyT2ZmVGVzdDNjKDEsIDIsIDMsIGZhbHNlKSBpcyBbMSwgMiwgMywgZmFsc2VdCitQQVNT
IHRlYXJPZmZUZXN0NCgxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1Mg
dGVhck9mZlRlc3Q0YSgxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1Mg
dGVhck9mZlRlc3Q0YigxLCAyLCAzLCBmYWxzZSkgaXMgWzEsIDIsIDMsIGZhbHNlXQorUEFTUyB0
ZWFyT2ZmVGVzdDRjKDEsIDIsIDMsIGZhbHNlKSBpcyBbMSwgMiwgMywgZmFsc2VdCitQQVNTIHRl
YXJPZmZUZXN0NSgxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVh
ck9mZlRlc3Q1YSgxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVh
ck9mZlRlc3Q1YigxLCAyLCAzLCBmYWxzZSkgaXMgWzEsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFy
T2ZmVGVzdDVjKDEsIDIsIDMsIGZhbHNlKSBpcyBbMSwgMiwgMywgZmFsc2VdCitQQVNTIHRlYXJP
ZmZUZXN0NigxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVhck9m
ZlRlc3Q2YSgxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVhck9m
ZlRlc3Q2YigxLCAyLCAzLCBmYWxzZSkgaXMgWzEsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFyT2Zm
VGVzdDZjKDEsIDIsIDMsIGZhbHNlKSBpcyBbMSwgMiwgMywgZmFsc2VdCitQQVNTIHRlYXJPZmZU
ZXN0NygxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVhck9mZlRl
c3Q3YSgxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVhck9mZlRl
c3Q3YigxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVhck9mZlRl
c3Q3YygxLCAyLCAzLCBmYWxzZSkgaXMgWzEwLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVhck9mZlRl
c3Q4KDEsIDIsIDMsIGZhbHNlKSBpcyBbMTAsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFyT2ZmVGVz
dDhhKDEsIDIsIDMsIGZhbHNlKSBpcyBbMTAsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFyT2ZmVGVz
dDhiKDEsIDIsIDMsIGZhbHNlKSBpcyBbMTAsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFyT2ZmVGVz
dDhjKDEsIDIsIDMsIGZhbHNlKSBpcyBbMTAsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFyT2ZmVGVz
dDkoMSwgMiwgMywgZmFsc2UpIGlzIFt1bmRlZmluZWQsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFy
T2ZmVGVzdDlhKDEsIDIsIDMsIGZhbHNlKSBpcyBbdW5kZWZpbmVkLCAyLCAzLCBmYWxzZV0KK1BB
U1MgdGVhck9mZlRlc3Q5YigxLCAyLCAzLCBmYWxzZSkgaXMgW3VuZGVmaW5lZCwgMiwgMywgZmFs
c2VdCitQQVNTIHRlYXJPZmZUZXN0OWMoMSwgMiwgMywgZmFsc2UpIGlzIFt1bmRlZmluZWQsIDIs
IDMsIGZhbHNlXQorUEFTUyB0ZWFyT2ZmVGVzdDEwKDEsIDIsIDMsIGZhbHNlKSBpcyBbdW5kZWZp
bmVkLCAyLCAzLCBmYWxzZV0KK1BBU1MgdGVhck9mZlRlc3QxMGEoMSwgMiwgMywgZmFsc2UpIGlz
IFt1bmRlZmluZWQsIDIsIDMsIGZhbHNlXQorUEFTUyB0ZWFyT2ZmVGVzdDEwYigxLCAyLCAzLCBm
YWxzZSkgaXMgW3VuZGVmaW5lZCwgMiwgMywgZmFsc2VdCitQQVNTIHRlYXJPZmZUZXN0MTBjKDEs
IDIsIDMsIGZhbHNlKSBpcyBbdW5kZWZpbmVkLCAyLCAzLCBmYWxzZV0KIFBBU1MgbGV4aWNhbEFy
Z3VtZW50c0xpdmVSZWFkMSgwLCAyLCAzKSBpcyAxCiBQQVNTIGxleGljYWxBcmd1bWVudHNMaXZl
UmVhZDIoMSwgMCwgMykgaXMgMgogUEFTUyBsZXhpY2FsQXJndW1lbnRzTGl2ZVJlYWQzKDEsIDIs
IDApIGlzIDMKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9mdW5jdGlvbi1kb3Qt
YXJndW1lbnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9m
dW5jdGlvbi1kb3QtYXJndW1lbnRzLmpzCShyZXZpc2lvbiAxNzg0NDMpCisrKyBMYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvZnVuY3Rpb24tZG90LWFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMjA2LDYgKzIwNiw1MzMgQEAgZnVuY3Rpb24gdGVhck9mZlRlc3QyKCkKIH0KIHNob3Vs
ZEJlVHJ1ZSgidGVhck9mZlRlc3QyKHRydWUpWzBdIik7CiAKKworLy8gU29tZSB1dGlsaXR5IGZ1
bmN0aW9ucy8KK2Z1bmN0aW9uIGFycmF5aWZ5KGFyZ3MpIHsKKyAgICBpZiAodHlwZW9mIGFyZ3Mg
IT0gIm9iamVjdCIpCisgICAgICAgIHJldHVybiBhcmdzOworICAgIGlmICh0eXBlb2YgYXJncy5s
ZW5ndGggPT0gInVuZGVmaW5lZCIgfHwgdHlwZW9mIGFyZ3MuY2FsbGVlID09ICJ1bmRlZmluZWQi
KQorICAgICAgICByZXR1cm4gYXJnczsKKyAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoYXJncyk7Cit9CisKK2Z1bmN0aW9uIGluZGlyZWN0Q2FsbChjYWxsZWUpCit7CisgICAg
cmV0dXJuIGNhbGxlZSgpOworfQorCisvLyBUZXN0IHJlYWRpbmcgZnJvbSBjYWxsZXIuYXJndW1l
bnRzIGZyb20gYW4gaW5uZXIgZnVuY3Rpb24uCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDMoYSwgYiwg
YywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgZnVuY3Rpb24gaW5uZXIoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRlYXJPZmZUZXN0My5hcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJuIGFy
cmF5aWZ5KGlubmVyKCkpOworfQorc2hvdWxkQmUoInRlYXJPZmZUZXN0MygxLCAyLCAzLCBmYWxz
ZSkiLCAiWzEwLCAyLCAzLCBmYWxzZV0iKTsKKworCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDNhKGEs
IGIsIGMsIGQpCit7CisgICAgdmFyIHggPSA0MjsKKyAgICBhID0gMTA7CisgICAgZnVuY3Rpb24g
aW5uZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRlYXJPZmZUZXN0M2EuYXJndW1lbnRzOwor
ICAgIH0KKworICAgIGlmIChkKSB7CisgICAgICAgIC8vIEZvcmNlIGEgbGV4aWNhbEVudmlyb25t
ZW50IHRvIGJlIGNyZWF0ZWQgaW4gdGhlIG91dGVyIGZ1bmN0aW9uLgorICAgICAgICByZXR1cm4g
ZnVuY3Rpb24oKSB7IHJldHVybiB4OyB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGFy
cmF5aWZ5KGlubmVyKCkpOworICAgIH0KK30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDNhKDEsIDIs
IDMsIGZhbHNlKSIsICJbMTAsIDIsIDMsIGZhbHNlXSIpOworCisKK2Z1bmN0aW9uIHRlYXJPZmZU
ZXN0M2IoYSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgZnVuY3Rpb24gaW5uZXIoKQor
ICAgIHsKKyAgICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9tIHRo
ZSBvdXRlciBmdW5jdGlvbi4KKyAgICAgICAgcmV0dXJuIHRlYXJPZmZUZXN0M2IuYXJndW1lbnRz
OworICAgIH0KKworICAgIHJldHVybiBhcnJheWlmeShpbm5lcigpKTsKK30KK3Nob3VsZEJlKCJ0
ZWFyT2ZmVGVzdDNiKDEsIDIsIDMsIGZhbHNlKSIsICJbMSwgMiwgMywgZmFsc2VdIik7CisKKwor
ZnVuY3Rpb24gdGVhck9mZlRlc3QzYyhhLCBiLCBjLCBkKQoreworICAgIGEgPSAxMDsKKyAgICBm
dW5jdGlvbiBpbm5lcigpCisgICAgeworICAgICAgICB2YXIgY2FwdHVyZSA9IGE7IC8vIENhcHR1
cmUgYW4gYXJnIGZyb20gdGhlIG91dGVyIGZ1bmN0aW9uLgorICAgICAgICByZXR1cm4gdGVhck9m
ZlRlc3QzYy5hcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJuIGFycmF5aWZ5KGluZGlyZWN0
Q2FsbChpbm5lcikpOworfQorc2hvdWxkQmUoInRlYXJPZmZUZXN0M2MoMSwgMiwgMywgZmFsc2Up
IiwgIlsxLCAyLCAzLCBmYWxzZV0iKTsKKworCisvLyBUZXN0IHJlYWRpbmcgZnJvbSBjYWxsZXIu
YXJndW1lbnRzIGZyb20gYW4gZXh0ZXJuYWwgZnVuY3Rpb24uCitmdW5jdGlvbiB0ZWFyT2ZmVGVz
dDRFeHRlcm5hbCgpCit7CisgICAgcmV0dXJuIHRlYXJPZmZUZXN0NC5hcmd1bWVudHM7Cit9Citm
dW5jdGlvbiB0ZWFyT2ZmVGVzdDQoYSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgcmV0
dXJuIGFycmF5aWZ5KHRlYXJPZmZUZXN0NEV4dGVybmFsKCkpOworfQorc2hvdWxkQmUoInRlYXJP
ZmZUZXN0NCgxLCAyLCAzLCBmYWxzZSkiLCAiWzEwLCAyLCAzLCBmYWxzZV0iKTsKKworCitmdW5j
dGlvbiB0ZWFyT2ZmVGVzdDRhRXh0ZXJuYWwoKQoreworICAgIHJldHVybiB0ZWFyT2ZmVGVzdDRh
LmFyZ3VtZW50czsKK30KK2Z1bmN0aW9uIHRlYXJPZmZUZXN0NGEoYSwgYiwgYywgZCkKK3sKKyAg
ICB2YXIgeCA9IDQyOworICAgIGEgPSAxMDsKKworICAgIGlmIChkKSB7CisgICAgICAgIC8vIEZv
cmNlIGEgbGV4aWNhbEVudmlyb25tZW50IHRvIGJlIGNyZWF0ZWQgaW4gdGhlIG91dGVyIGZ1bmN0
aW9uLgorICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiB4OyB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgcmV0dXJuIGFycmF5aWZ5KHRlYXJPZmZUZXN0NGFFeHRlcm5hbCgpKTsKKyAg
ICB9Cit9CitzaG91bGRCZSgidGVhck9mZlRlc3Q0YSgxLCAyLCAzLCBmYWxzZSkiLCAiWzEwLCAy
LCAzLCBmYWxzZV0iKTsKKworCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDRiRXh0ZXJuYWwoKQorewor
ICAgIHJldHVybiB0ZWFyT2ZmVGVzdDRiLmFyZ3VtZW50czsKK30KK2Z1bmN0aW9uIHRlYXJPZmZU
ZXN0NGIoYSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgZnVuY3Rpb24gaW5uZXIoKQor
ICAgIHsKKyAgICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9tIHRo
ZSBvdXRlciBmdW5jdGlvbi4KKyAgICAgICAgcmV0dXJuIGNhcHR1cmU7CisgICAgfQorCisgICAg
cmV0dXJuIGFycmF5aWZ5KHRlYXJPZmZUZXN0NGJFeHRlcm5hbCgpKTsKK30KK3Nob3VsZEJlKCJ0
ZWFyT2ZmVGVzdDRiKDEsIDIsIDMsIGZhbHNlKSIsICJbMSwgMiwgMywgZmFsc2VdIik7CisKKwor
ZnVuY3Rpb24gdGVhck9mZlRlc3Q0Y0V4dGVybmFsKCkKK3sKKyAgICByZXR1cm4gdGVhck9mZlRl
c3Q0Yy5hcmd1bWVudHM7Cit9CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDRjKGEsIGIsIGMsIGQpCit7
CisgICAgYSA9IDEwOworICAgIGZ1bmN0aW9uIGlubmVyKCkKKyAgICB7CisgICAgICAgIHZhciBj
YXB0dXJlID0gYTsgLy8gQ2FwdHVyZSBhbiBhcmcgZnJvbSB0aGUgb3V0ZXIgZnVuY3Rpb24uCisg
ICAgICAgIHJldHVybiB0ZWFyT2ZmVGVzdDRjLmFyZ3VtZW50czsKKyAgICB9CisKKyAgICByZXR1
cm4gYXJyYXlpZnkoaW5kaXJlY3RDYWxsKHRlYXJPZmZUZXN0NGNFeHRlcm5hbCkpOworfQorc2hv
dWxkQmUoInRlYXJPZmZUZXN0NGMoMSwgMiwgMywgZmFsc2UpIiwgIlsxLCAyLCAzLCBmYWxzZV0i
KTsKKworCisvLyBUZXN0IHJlYWRpbmcgZnJvbSBjYWxsZXIuYXJndW1lbnRzIHdoaWNoIGhhdmUg
RGVsZXRlZCBzbG93IGRhdGEgZnJvbSBhbiBpbm5lciBmdW5jdGlvbi4KK2Z1bmN0aW9uIHRlYXJP
ZmZUZXN0NShhLCBiLCBjLCBkKQoreworICAgIGEgPSAxMDsKKyAgICBkZWxldGUgYXJndW1lbnRz
WzBdOworICAgIGZ1bmN0aW9uIGlubmVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0ZWFyT2Zm
VGVzdDUuYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVybiBhcnJheWlmeShpbm5lcigpKTsK
K30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDUoMSwgMiwgMywgZmFsc2UpIiwgIlsxMCwgMiwgMywg
ZmFsc2VdIik7CisKKworZnVuY3Rpb24gdGVhck9mZlRlc3Q1YShhLCBiLCBjLCBkKQoreworICAg
IHZhciB4ID0gNDI7CisgICAgYSA9IDEwOworICAgIGRlbGV0ZSBhcmd1bWVudHNbMF07CisgICAg
ZnVuY3Rpb24gaW5uZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRlYXJPZmZUZXN0NWEuYXJn
dW1lbnRzOworICAgIH0KKworICAgIGlmIChkKSB7CisgICAgICAgIC8vIEZvcmNlIGEgbGV4aWNh
bEVudmlyb25tZW50IHRvIGJlIGNyZWF0ZWQgaW4gdGhlIG91dGVyIGZ1bmN0aW9uLgorICAgICAg
ICByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiB4OyB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
cmV0dXJuIGFycmF5aWZ5KGlubmVyKCkpOworICAgIH0KK30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVz
dDVhKDEsIDIsIDMsIGZhbHNlKSIsICJbMTAsIDIsIDMsIGZhbHNlXSIpOworCisKK2Z1bmN0aW9u
IHRlYXJPZmZUZXN0NWIoYSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgZGVsZXRlIGFy
Z3VtZW50c1swXTsKKyAgICBmdW5jdGlvbiBpbm5lcigpCisgICAgeworICAgICAgICB2YXIgY2Fw
dHVyZSA9IGE7IC8vIENhcHR1cmUgYW4gYXJnIGZyb20gdGhlIG91dGVyIGZ1bmN0aW9uLgorICAg
ICAgICByZXR1cm4gdGVhck9mZlRlc3Q1Yi5hcmd1bWVudHM7CisgICAgfQorCisgICAgcmV0dXJu
IGFycmF5aWZ5KGlubmVyKCkpOworfQorc2hvdWxkQmUoInRlYXJPZmZUZXN0NWIoMSwgMiwgMywg
ZmFsc2UpIiwgIlsxLCAyLCAzLCBmYWxzZV0iKTsKKworCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDVj
KGEsIGIsIGMsIGQpCit7CisgICAgYSA9IDEwOworICAgIGRlbGV0ZSBhcmd1bWVudHNbMF07Cisg
ICAgZnVuY3Rpb24gaW5uZXIoKQorICAgIHsKKyAgICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBD
YXB0dXJlIGFuIGFyZyBmcm9tIHRoZSBvdXRlciBmdW5jdGlvbi4KKyAgICAgICAgcmV0dXJuIHRl
YXJPZmZUZXN0NWMuYXJndW1lbnRzOworICAgIH0KKworICAgIHJldHVybiBhcnJheWlmeShpbmRp
cmVjdENhbGwoaW5uZXIpKTsKK30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDVjKDEsIDIsIDMsIGZh
bHNlKSIsICJbMSwgMiwgMywgZmFsc2VdIik7CisKKworLy8gVGVzdCByZWFkaW5nIGZyb20gY2Fs
bGVyLmFyZ3VtZW50cyB3aGljaCBoYXZlIERlbGV0ZWQgc2xvdyBkYXRhIGZyb20gYW4gZXh0ZXJu
YWwgZnVuY3Rpb24uCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDZFeHRlcm5hbCgpCit7CisgICAgcmV0
dXJuIHRlYXJPZmZUZXN0Ni5hcmd1bWVudHM7Cit9CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDYoYSwg
YiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgZGVsZXRlIGFyZ3VtZW50c1swXTsKKyAgICBy
ZXR1cm4gYXJyYXlpZnkodGVhck9mZlRlc3Q2RXh0ZXJuYWwoKSk7Cit9CitzaG91bGRCZSgidGVh
ck9mZlRlc3Q2KDEsIDIsIDMsIGZhbHNlKSIsICJbMTAsIDIsIDMsIGZhbHNlXSIpOworCisKK2Z1
bmN0aW9uIHRlYXJPZmZUZXN0NmFFeHRlcm5hbCgpCit7CisgICAgcmV0dXJuIHRlYXJPZmZUZXN0
NmEuYXJndW1lbnRzOworfQorZnVuY3Rpb24gdGVhck9mZlRlc3Q2YShhLCBiLCBjLCBkKQorewor
ICAgIHZhciB4ID0gNDI7CisgICAgYSA9IDEwOworICAgIGRlbGV0ZSBhcmd1bWVudHNbMF07CisK
KyAgICBpZiAoZCkgeworICAgICAgICAvLyBGb3JjZSBhIGxleGljYWxFbnZpcm9ubWVudCB0byBi
ZSBjcmVhdGVkIGluIHRoZSBvdXRlciBmdW5jdGlvbi4KKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
KCkgeyByZXR1cm4geDsgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBhcnJheWlmeSh0
ZWFyT2ZmVGVzdDZhRXh0ZXJuYWwoKSk7CisgICAgfQorfQorc2hvdWxkQmUoInRlYXJPZmZUZXN0
NmEoMSwgMiwgMywgZmFsc2UpIiwgIlsxMCwgMiwgMywgZmFsc2VdIik7CisKKworZnVuY3Rpb24g
dGVhck9mZlRlc3Q2YkV4dGVybmFsKCkKK3sKKyAgICByZXR1cm4gdGVhck9mZlRlc3Q2Yi5hcmd1
bWVudHM7Cit9CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDZiKGEsIGIsIGMsIGQpCit7CisgICAgYSA9
IDEwOworICAgIGRlbGV0ZSBhcmd1bWVudHNbMF07CisgICAgZnVuY3Rpb24gaW5uZXIoKQorICAg
IHsKKyAgICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9tIHRoZSBv
dXRlciBmdW5jdGlvbi4KKyAgICAgICAgcmV0dXJuIGNhcHR1cmU7CisgICAgfQorCisgICAgcmV0
dXJuIGFycmF5aWZ5KHRlYXJPZmZUZXN0NmJFeHRlcm5hbCgpKTsKK30KK3Nob3VsZEJlKCJ0ZWFy
T2ZmVGVzdDZiKDEsIDIsIDMsIGZhbHNlKSIsICJbMSwgMiwgMywgZmFsc2VdIik7CisKKworZnVu
Y3Rpb24gdGVhck9mZlRlc3Q2Y0V4dGVybmFsKCkKK3sKKyAgICByZXR1cm4gdGVhck9mZlRlc3Q2
Yy5hcmd1bWVudHM7Cit9CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDZjKGEsIGIsIGMsIGQpCit7Cisg
ICAgYSA9IDEwOworICAgIGRlbGV0ZSBhcmd1bWVudHNbMF07CisgICAgZnVuY3Rpb24gaW5uZXIo
KQorICAgIHsKKyAgICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9t
IHRoZSBvdXRlciBmdW5jdGlvbi4KKyAgICAgICAgcmV0dXJuIHRlYXJPZmZUZXN0NmMuYXJndW1l
bnRzOworICAgIH0KKworICAgIHJldHVybiBhcnJheWlmeShpbmRpcmVjdENhbGwodGVhck9mZlRl
c3Q2Y0V4dGVybmFsKSk7Cit9CitzaG91bGRCZSgidGVhck9mZlRlc3Q2YygxLCAyLCAzLCBmYWxz
ZSkiLCAiWzEsIDIsIDMsIGZhbHNlXSIpOworCisKKy8vIFRlc3Qgd3JpdGluZyB0byBjYWxsZXIu
YXJndW1lbnRzIGZyb20gYW4gaW5uZXIgZnVuY3Rpb24uCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDco
YSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgKGZ1bmN0aW9uIGlubmVyKCkgeworICAg
ICAgICB0ZWFyT2ZmVGVzdDcuYXJndW1lbnRzWzBdID0gMTAwOworICAgIH0pKCk7CisKKyAgICBy
ZXR1cm4gYXJyYXlpZnkoYXJndW1lbnRzKTsKK30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDcoMSwg
MiwgMywgZmFsc2UpIiwgIlsxMCwgMiwgMywgZmFsc2VdIik7CisKKworZnVuY3Rpb24gdGVhck9m
ZlRlc3Q3YShhLCBiLCBjLCBkKQoreworICAgIHZhciB4ID0gNDI7CisgICAgYSA9IDEwOworCisg
ICAgaWYgKGQpIHsKKyAgICAgICAgLy8gRm9yY2UgYSBsZXhpY2FsRW52aXJvbm1lbnQgdG8gYmUg
Y3JlYXRlZCBpbiB0aGUgb3V0ZXIgZnVuY3Rpb24uCisgICAgICAgIHJldHVybiBmdW5jdGlvbigp
IHsgcmV0dXJuIHg7IH0KKyAgICB9IGVsc2UgeworICAgICAgICAoZnVuY3Rpb24gaW5uZXIoKSB7
CisgICAgICAgICAgICB0ZWFyT2ZmVGVzdDdhLmFyZ3VtZW50c1swXSA9IDEwMDsKKyAgICAgICAg
fSkgKCk7CisKKyAgICAgICAgcmV0dXJuIGFycmF5aWZ5KGFyZ3VtZW50cyk7CisgICAgfQorfQor
c2hvdWxkQmUoInRlYXJPZmZUZXN0N2EoMSwgMiwgMywgZmFsc2UpIiwgIlsxMCwgMiwgMywgZmFs
c2VdIik7CisKKworZnVuY3Rpb24gdGVhck9mZlRlc3Q3YihhLCBiLCBjLCBkKQoreworICAgIGEg
PSAxMDsKKyAgICAoZnVuY3Rpb24gaW5uZXIoKSB7CisgICAgICAgIHZhciBjYXB0dXJlID0gYTsg
Ly8gQ2FwdHVyZSBhbiBhcmcgZnJvbSB0aGUgb3V0ZXIgZnVuY3Rpb24uCisgICAgICAgIHRlYXJP
ZmZUZXN0N2IuYXJndW1lbnRzWzBdID0gMTAwOworICAgIH0pKCk7CisKKyAgICByZXR1cm4gYXJy
YXlpZnkoYXJndW1lbnRzKTsKK30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDdiKDEsIDIsIDMsIGZh
bHNlKSIsICJbMTAsIDIsIDMsIGZhbHNlXSIpOworCisKK2Z1bmN0aW9uIHRlYXJPZmZUZXN0N2Mo
YSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgZnVuY3Rpb24gaW5uZXIoKSB7CisgICAg
ICAgIHZhciBjYXB0dXJlID0gYTsgLy8gQ2FwdHVyZSBhbiBhcmcgZnJvbSB0aGUgb3V0ZXIgZnVu
Y3Rpb24uCisgICAgICAgIHRlYXJPZmZUZXN0N2MuYXJndW1lbnRzWzBdID0gMTAwOworICAgIH0K
KyAgICBpbmRpcmVjdENhbGwoaW5uZXIpOworICAgIHJldHVybiBhcnJheWlmeShhcmd1bWVudHMp
OworfQorc2hvdWxkQmUoInRlYXJPZmZUZXN0N2MoMSwgMiwgMywgZmFsc2UpIiwgIlsxMCwgMiwg
MywgZmFsc2VdIik7CisKKworLy8gVGVzdCB3cml0aW5nIHRvIGNhbGxlci5hcmd1bWVudHMgZnJv
bSBhbiBleHRlcm5hbCBmdW5jdGlvbi4KK2Z1bmN0aW9uIHRlYXJPZmZUZXN0OEV4dGVybmFsKCkg
eworICAgIHRlYXJPZmZUZXN0OC5hcmd1bWVudHNbMF0gPSAxMDA7Cit9CitmdW5jdGlvbiB0ZWFy
T2ZmVGVzdDgoYSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7CisgICAgdGVhck9mZlRlc3Q4RXh0
ZXJuYWwoKTsKKworICAgIHJldHVybiBhcnJheWlmeShhcmd1bWVudHMpOworfQorc2hvdWxkQmUo
InRlYXJPZmZUZXN0OCgxLCAyLCAzLCBmYWxzZSkiLCAiWzEwLCAyLCAzLCBmYWxzZV0iKTsKKwor
CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDhhRXh0ZXJuYWwoKSB7CisgICAgdGVhck9mZlRlc3Q4YS5h
cmd1bWVudHNbMF0gPSAxMDA7Cit9CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDhhKGEsIGIsIGMsIGQp
Cit7CisgICAgdmFyIHggPSA0MjsKKyAgICBhID0gMTA7CisKKyAgICBpZiAoZCkgeworICAgICAg
ICAvLyBGb3JjZSBhIGxleGljYWxFbnZpcm9ubWVudCB0byBiZSBjcmVhdGVkIGluIHRoZSBvdXRl
ciBmdW5jdGlvbi4KKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeyByZXR1cm4geDsgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIHRlYXJPZmZUZXN0OGFFeHRlcm5hbCgpOworICAgICAgICByZXR1
cm4gYXJyYXlpZnkoYXJndW1lbnRzKTsKKyAgICB9Cit9CitzaG91bGRCZSgidGVhck9mZlRlc3Q4
YSgxLCAyLCAzLCBmYWxzZSkiLCAiWzEwLCAyLCAzLCBmYWxzZV0iKTsKKworCitmdW5jdGlvbiB0
ZWFyT2ZmVGVzdDhiRXh0ZXJuYWwoKSB7CisgICAgdGVhck9mZlRlc3Q4Yi5hcmd1bWVudHNbMF0g
PSAxMDA7Cit9CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDhiKGEsIGIsIGMsIGQpCit7CisgICAgYSA9
IDEwOworICAgIGZ1bmN0aW9uIGlubmVyKCkgeworICAgICAgICB2YXIgY2FwdHVyZSA9IGE7IC8v
IENhcHR1cmUgYW4gYXJnIGZyb20gdGhlIG91dGVyIGZ1bmN0aW9uLgorICAgIH0KKyAgICB0ZWFy
T2ZmVGVzdDhiRXh0ZXJuYWwoKTsKKworICAgIHJldHVybiBhcnJheWlmeShhcmd1bWVudHMpOwor
fQorc2hvdWxkQmUoInRlYXJPZmZUZXN0OGIoMSwgMiwgMywgZmFsc2UpIiwgIlsxMCwgMiwgMywg
ZmFsc2VdIik7CisKKworZnVuY3Rpb24gdGVhck9mZlRlc3Q4Y0V4dGVybmFsKCkgeworICAgIHRl
YXJPZmZUZXN0OGMuYXJndW1lbnRzWzBdID0gMTAwOworfQorZnVuY3Rpb24gdGVhck9mZlRlc3Q4
YyhhLCBiLCBjLCBkKQoreworICAgIGEgPSAxMDsKKyAgICBmdW5jdGlvbiBpbm5lcigpIHsKKyAg
ICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9tIHRoZSBvdXRlciBm
dW5jdGlvbi4KKyAgICB9CisgICAgaW5kaXJlY3RDYWxsKHRlYXJPZmZUZXN0OGNFeHRlcm5hbCk7
CisgICAgcmV0dXJuIGFycmF5aWZ5KGFyZ3VtZW50cyk7Cit9CitzaG91bGRCZSgidGVhck9mZlRl
c3Q4YygxLCAyLCAzLCBmYWxzZSkiLCAiWzEwLCAyLCAzLCBmYWxzZV0iKTsKKworCisvLyBUZXN0
IGRlbGV0aW5nIGFuIGFyZyBpbiBjYWxsZXIuYXJndW1lbnRzIGZyb20gYW4gaW5uZXIgZnVuY3Rp
b24uCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDkoYSwgYiwgYywgZCkKK3sKKyAgICBhID0gMTA7Cisg
ICAgZGVsZXRlIGFyZ3VtZW50c1swXTsKKyAgICAoZnVuY3Rpb24gaW5uZXIoKSB7CisgICAgICAg
IGRlbGV0ZSB0ZWFyT2ZmVGVzdDkuYXJndW1lbnRzWzFdOworICAgIH0pKCk7CisKKyAgICByZXR1
cm4gYXJyYXlpZnkoYXJndW1lbnRzKTsKK30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDkoMSwgMiwg
MywgZmFsc2UpIiwgIlt1bmRlZmluZWQsIDIsIDMsIGZhbHNlXSIpOworCisKK2Z1bmN0aW9uIHRl
YXJPZmZUZXN0OWEoYSwgYiwgYywgZCkKK3sKKyAgICB2YXIgeCA9IDQyOworICAgIGRlbGV0ZSBh
cmd1bWVudHNbMF07CisKKyAgICBpZiAoZCkgeworICAgICAgICAvLyBGb3JjZSBhIGxleGljYWxF
bnZpcm9ubWVudCB0byBiZSBjcmVhdGVkIGluIHRoZSBvdXRlciBmdW5jdGlvbi4KKyAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKCkgeyByZXR1cm4geDsgfQorICAgIH0gZWxzZSB7CisgICAgICAgIChm
dW5jdGlvbiBpbm5lcigpIHsKKyAgICAgICAgICAgIGRlbGV0ZSB0ZWFyT2ZmVGVzdDlhLmFyZ3Vt
ZW50c1sxXTsKKyAgICAgICAgfSkgKCk7CisKKyAgICAgICAgcmV0dXJuIGFycmF5aWZ5KGFyZ3Vt
ZW50cyk7CisgICAgfQorfQorc2hvdWxkQmUoInRlYXJPZmZUZXN0OWEoMSwgMiwgMywgZmFsc2Up
IiwgIlt1bmRlZmluZWQsIDIsIDMsIGZhbHNlXSIpOworCisKK2Z1bmN0aW9uIHRlYXJPZmZUZXN0
OWIoYSwgYiwgYywgZCkKK3sKKyAgICBkZWxldGUgYXJndW1lbnRzWzBdOworICAgIChmdW5jdGlv
biBpbm5lcigpIHsKKyAgICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBm
cm9tIHRoZSBvdXRlciBmdW5jdGlvbi4KKyAgICAgICAgZGVsZXRlIHRlYXJPZmZUZXN0OWIuYXJn
dW1lbnRzWzFdOworICAgIH0pKCk7CisKKyAgICByZXR1cm4gYXJyYXlpZnkoYXJndW1lbnRzKTsK
K30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDliKDEsIDIsIDMsIGZhbHNlKSIsICJbdW5kZWZpbmVk
LCAyLCAzLCBmYWxzZV0iKTsKKworCitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDljKGEsIGIsIGMsIGQp
Cit7CisgICAgZGVsZXRlIGFyZ3VtZW50c1swXTsKKyAgICBmdW5jdGlvbiBpbm5lcigpIHsKKyAg
ICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9tIHRoZSBvdXRlciBm
dW5jdGlvbi4KKyAgICAgICAgZGVsZXRlIHRlYXJPZmZUZXN0OWMuYXJndW1lbnRzWzFdOworICAg
IH0KKyAgICBpbmRpcmVjdENhbGwoaW5uZXIpOworICAgIHJldHVybiBhcnJheWlmeShhcmd1bWVu
dHMpOworfQorc2hvdWxkQmUoInRlYXJPZmZUZXN0OWMoMSwgMiwgMywgZmFsc2UpIiwgIlt1bmRl
ZmluZWQsIDIsIDMsIGZhbHNlXSIpOworCisKKy8vIFRlc3QgZGVsZXRpbmcgYSBhcmcgaW4gY2Fs
bGVyLmFyZ3VtZW50cyBmcm9tIGFuIGV4dGVybmFsIGZ1bmN0aW9uLgorCitmdW5jdGlvbiB0ZWFy
T2ZmVGVzdDEwRXh0ZXJuYWwoKSB7CisgICAgZGVsZXRlIHRlYXJPZmZUZXN0MTAuYXJndW1lbnRz
WzFdOworfQorZnVuY3Rpb24gdGVhck9mZlRlc3QxMChhLCBiLCBjLCBkKQoreworICAgIGRlbGV0
ZSBhcmd1bWVudHNbMF07CisgICAgdGVhck9mZlRlc3QxMEV4dGVybmFsKCk7CisKKyAgICByZXR1
cm4gYXJyYXlpZnkoYXJndW1lbnRzKTsKK30KK3Nob3VsZEJlKCJ0ZWFyT2ZmVGVzdDEwKDEsIDIs
IDMsIGZhbHNlKSIsICJbdW5kZWZpbmVkLCAyLCAzLCBmYWxzZV0iKTsKKworCitmdW5jdGlvbiB0
ZWFyT2ZmVGVzdDEwYUV4dGVybmFsKCkgeworICAgIGRlbGV0ZSB0ZWFyT2ZmVGVzdDEwYS5hcmd1
bWVudHNbMV07Cit9CitmdW5jdGlvbiB0ZWFyT2ZmVGVzdDEwYShhLCBiLCBjLCBkKQoreworICAg
IHZhciB4ID0gNDI7CisgICAgZGVsZXRlIGFyZ3VtZW50c1swXTsKKworICAgIGlmIChkKSB7Cisg
ICAgICAgIC8vIEZvcmNlIGEgbGV4aWNhbEVudmlyb25tZW50IHRvIGJlIGNyZWF0ZWQgaW4gdGhl
IG91dGVyIGZ1bmN0aW9uLgorICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiB4OyB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGVhck9mZlRlc3QxMGFFeHRlcm5hbCgpOworICAgICAg
ICByZXR1cm4gYXJyYXlpZnkoYXJndW1lbnRzKTsKKyAgICB9Cit9CitzaG91bGRCZSgidGVhck9m
ZlRlc3QxMGEoMSwgMiwgMywgZmFsc2UpIiwgIlt1bmRlZmluZWQsIDIsIDMsIGZhbHNlXSIpOwor
CisKK2Z1bmN0aW9uIHRlYXJPZmZUZXN0MTBiRXh0ZXJuYWwoKSB7CisgICAgZGVsZXRlIHRlYXJP
ZmZUZXN0MTBiLmFyZ3VtZW50c1sxXTsKK30KK2Z1bmN0aW9uIHRlYXJPZmZUZXN0MTBiKGEsIGIs
IGMsIGQpCit7CisgICAgZGVsZXRlIGFyZ3VtZW50c1swXTsKKyAgICBmdW5jdGlvbiBpbm5lcigp
IHsKKyAgICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9tIHRoZSBv
dXRlciBmdW5jdGlvbi4KKyAgICB9CisgICAgdGVhck9mZlRlc3QxMGJFeHRlcm5hbCgpOworCisg
ICAgcmV0dXJuIGFycmF5aWZ5KGFyZ3VtZW50cyk7Cit9CitzaG91bGRCZSgidGVhck9mZlRlc3Qx
MGIoMSwgMiwgMywgZmFsc2UpIiwgIlt1bmRlZmluZWQsIDIsIDMsIGZhbHNlXSIpOworCisKK2Z1
bmN0aW9uIHRlYXJPZmZUZXN0MTBjRXh0ZXJuYWwoKSB7CisgICAgZGVsZXRlIHRlYXJPZmZUZXN0
MTBjLmFyZ3VtZW50c1sxXTsKK30KK2Z1bmN0aW9uIHRlYXJPZmZUZXN0MTBjKGEsIGIsIGMsIGQp
Cit7CisgICAgZGVsZXRlIGFyZ3VtZW50c1swXTsKKyAgICBmdW5jdGlvbiBpbm5lcigpIHsKKyAg
ICAgICAgdmFyIGNhcHR1cmUgPSBhOyAvLyBDYXB0dXJlIGFuIGFyZyBmcm9tIHRoZSBvdXRlciBm
dW5jdGlvbi4KKyAgICB9CisgICAgaW5kaXJlY3RDYWxsKHRlYXJPZmZUZXN0MTBjRXh0ZXJuYWwp
OworICAgIHJldHVybiBhcnJheWlmeShhcmd1bWVudHMpOworfQorc2hvdWxkQmUoInRlYXJPZmZU
ZXN0MTBjKDEsIDIsIDMsIGZhbHNlKSIsICJbdW5kZWZpbmVkLCAyLCAzLCBmYWxzZV0iKTsKKwor
CiBmdW5jdGlvbiBsZXhpY2FsQXJndW1lbnRzTGl2ZVJlYWQxKGEsIGIsIGMpCiB7CiAgICAgdmFy
IG8gPSBhcmd1bWVudHM7Cg==
</data>
<flag name="review"
          id="269609"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="269610"
          type_id="3"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>