<?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>128850</bug_id>
          
          <creation_ts>2014-02-14 15:23:10 -0800</creation_ts>
          <short_desc>GetMyArgumentByVal in FTL</short_desc>
          <delta_ts>2014-03-20 13:39:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matthew Mirman">mmirman</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>mmirman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981011</commentid>
    <comment_count>0</comment_count>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-14 15:23:10 -0800</bug_when>
    <thetext>patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981013</commentid>
    <comment_count>1</comment_count>
      <attachid>224258</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-14 15:26:02 -0800</bug_when>
    <thetext>Created attachment 224258
Added GetMyArgumentByVal to FTL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981014</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-14 15:27:48 -0800</bug_when>
    <thetext>Attachment 224258 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2049:  Extra space after ( in function call  [whitespace/parens] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2052:  Extra space after ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 4 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>981019</commentid>
    <comment_count>3</comment_count>
      <attachid>224261</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-14 15:36:21 -0800</bug_when>
    <thetext>Created attachment 224261
Added GetMyArgumentByVal to FTL

Fixed whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981133</commentid>
    <comment_count>4</comment_count>
      <attachid>224261</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-15 00:29:12 -0800</bug_when>
    <thetext>Comment on attachment 224261
Added GetMyArgumentByVal to FTL

Clearing flags on attachment: 224261

Committed r164166: &lt;http://trac.webkit.org/changeset/164166&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981134</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-15 00:29:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981192</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-15 11:36:02 -0800</bug_when>
    <thetext>This broke three tests:

** The following JSC stress test failures have been introduced:
	regress/script-tests/variadic-closure-call.js.default-ftl
	regress/script-tests/variadic-closure-call.js.ftl-no-cjit-validate
	regress/script-tests/variadic-closure-call.js.ftl-no-cjit-osr-validation
	regress/script-tests/variadic-closure-call.js.ftl-eager
	regress/script-tests/variadic-closure-call.js.ftl-eager-no-cjit
	regress/script-tests/variadic-closure-call.js.ftl-eager-no-cjit-osr-validation
	jsc-layout-tests.yaml/js/script-tests/unmatching-argument-count.js.layout-ftl-eager-no-cjit
	regress/script-tests/direct-arguments-getbyval.js.ftl-eager-no-cjit
	regress/script-tests/direct-arguments-getbyval.js.ftl-eager-no-cjit-osr-validation

I was just doing run-javascriptcore-tests --release --ftl-jit

I&apos;ll roll this out and we can look at how to fix it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981194</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-15 11:41:10 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/164178</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981666</commentid>
    <comment_count>8</comment_count>
      <attachid>224432</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-17 15:30:45 -0800</bug_when>
    <thetext>Created attachment 224432
Added GetMyArgumentByVal to FTL

Fixed inverted speculation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981671</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 15:33:14 -0800</bug_when>
    <thetext>Attachment 224432 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2056:  Extra space after ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 4 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>981681</commentid>
    <comment_count>10</comment_count>
      <attachid>224439</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-17 15:41:52 -0800</bug_when>
    <thetext>Created attachment 224439
Added GetMyArgumentByVal to FTL

Ugh, spaces before newlines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981693</commentid>
    <comment_count>11</comment_count>
      <attachid>224439</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 15:59:48 -0800</bug_when>
    <thetext>Comment on attachment 224439
Added GetMyArgumentByVal to FTL

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2052
&gt; +        speculate(Uncountable, noValue(), 0, m_out.isNull(argsPtr.value()));

You&apos;re null-checking the address of the stack offset?  Sounds broken. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981695</commentid>
    <comment_count>12</comment_count>
      <attachid>224439</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 16:01:39 -0800</bug_when>
    <thetext>Comment on attachment 224439
Added GetMyArgumentByVal to FTL

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2050
&gt; +        speculate(Uncountable, noValue(), 0, 
&gt; +            m_out.aboveOrEqual(propPtr, 
&gt; +                addressFor(m_node-&gt;origin.semantic.stackOffset() + JSStack::ArgumentCount).value()));

This is also busted - the ArgumentCount is on the stack only for not-inlined code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981697</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 16:03:51 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 224439 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224439&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2052
&gt; &gt; +        speculate(Uncountable, noValue(), 0, m_out.isNull(argsPtr.value()));
&gt; 
&gt; You&apos;re null-checking the address of the stack offset?  Sounds broken. ;-)

Note that you should probably be doing something like:

- Check that the arguments object had not been allocated.
- Check that you&apos;re in bounds, by using either the non-constant length in the call frame (for not-inlined, i.e. outermost, code) or the length constant in the InlineCallFrame (for inlined code).
- If the function&apos;s symbol table has SlowArguments then do some other stuff (see DFGSpecualtiveJIT)

Note that the symbolTable having SlowArguments is not the same thing as Arguments having SlowArguments.  symbolTable having SlowArguments indicates that an argument was captured inside of an activation.  You could probably assert that this isn&apos;t the case for now since the FTL doesn&apos;t yet support activations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981704</commentid>
    <comment_count>14</comment_count>
      <attachid>224444</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-17 16:36:47 -0800</bug_when>
    <thetext>Created attachment 224444
Added GetMyArgumentByVal to FTL

Fixed both speculations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981712</commentid>
    <comment_count>15</comment_count>
      <attachid>224444</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-17 16:45:03 -0800</bug_when>
    <thetext>Comment on attachment 224444
Added GetMyArgumentByVal to FTL

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2047
&gt; +        TypedPointer argsPtr = addressFor(m_node-&gt;origin.semantic.stackOffset());

This is the address of the first bytecode local for the current inline call frame.  The first bytecode local has nothing to do with arguments.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2048
&gt; +        LValue args = argsPtr.value();

It&apos;s bad form to take the LValue directly out of the TypedPointer; it suggests that something is broken.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2052
&gt; +        speculate(Uncountable, noValue(), 0, 
&gt; +            m_out.aboveOrEqual(m_out.add(property, m_out.constInt32(1)), 
&gt; +                m_out.load32NonNegative(addressFor(m_node-&gt;origin.semantic.stackOffset() + JSStack::ArgumentCount))));

This is wrong for inlined code.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2056
&gt; +        speculate(Uncountable, noValue(), 0, 
&gt; +            m_out.isNull(m_out.loadPtr(addressFor(args, m_node-&gt;origin.semantic.stackOffset(), Arguments::offsetOfSlowArgumentData()))));
&gt; +

This is wrong.  You&apos;re loading from an address that you&apos;ve computed by taking the frame pointer, adding the stackOffset (on line 2047), then adding the stackOffset again (like 2055), and then adding the offset of the m_slowArguments field inside of Arguments to that.  This is a bogus pointer value that points to some random thing on the stack.  It&apos;s meaningless to load from this bogus location.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2060
&gt; +        setJSValue(m_out.load64(m_out.baseIndex(
&gt; +            argsPtr.heap(),
&gt; +            args, m_out.signExt(property, m_out.intPtr), ScaleEight, 
&gt; +            JSStack::ThisArgument * sizeof(Register) + sizeof(Register))));

This would have been an appropriate place to use the addressFor() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982166</commentid>
    <comment_count>16</comment_count>
      <attachid>224566</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-18 16:55:14 -0800</bug_when>
    <thetext>Created attachment 224566
Added GetMyArgumentByVal to FTL and fixed compileGetMyArgumentsLength

the fix for compileGetMyArgumentsLength was similar enough to the addition to GetMyArgumentByVal that I decided to include it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982167</commentid>
    <comment_count>17</comment_count>
      <attachid>224567</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-18 16:56:19 -0800</bug_when>
    <thetext>Created attachment 224567
Added GetMyArgumentByVal to FTL and fixed compileGetMyArgumentsLength

Whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982168</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-18 16:57:45 -0800</bug_when>
    <thetext>Attachment 224567 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1820:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2055:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2070:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 4 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>982169</commentid>
    <comment_count>19</comment_count>
      <attachid>224567</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-18 17:00:37 -0800</bug_when>
    <thetext>Comment on attachment 224567
Added GetMyArgumentByVal to FTL and fixed compileGetMyArgumentsLength

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1816
&gt; +        if (codeLocation.inlineCallFrame) {

You don&apos;t need enclosing { } for one-line control clauses.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:1819
&gt; +            TypedPointer reg = addressFor(JSStack::ArgumentCount); 

payloadFor()?  I think your code works for now because the payload is the low 32 bits.  But, it would break if we ever went big endian.  (Not that any sensible person would ever use big endian; little endian is way better.)

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2062
&gt; +                JSStack::ThisArgument * sizeof(Register) + sizeof(Register))));

You don&apos;t need this extra offset thingy, the &quot;JSStack::ThisArgument * sizeof...&quot;.  In fact, having that makes the code wrong.

Have you run-javascriptcore-tests btw? ;-)

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2069
&gt; +                  m_out.isNull(m_out.loadPtr(m_out.address(m_heaps.variables.atAnyIndex(), m_callFrame, Arguments::offsetOfSlowArgumentData()))));

Shouldn&apos;t you be exiting if the slow argument data is non-null, rather than when it&apos;s null?  Also, I don&apos;t understand what you&apos;re loading here.  You seem to be loading the frame pointer from the stack, which is indeed never null, and also has nothing to do with slow arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983371</commentid>
    <comment_count>20</comment_count>
      <attachid>224911</attachid>
    <who name="Matthew Mirman">mmirman</who>
    <bug_when>2014-02-21 14:36:16 -0800</bug_when>
    <thetext>Created attachment 224911
Added GetMyArgumentByVal to FTL

Ran run-javascriptcore-tests release --ftl-jit and got no failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983374</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-21 14:39:42 -0800</bug_when>
    <thetext>Attachment 224911 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2078:  Tab found; better to use spaces  [whitespace/tab] [1]
ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2079:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 2 in 4 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>983390</commentid>
    <comment_count>22</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-21 15:24:20 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Attachment 224911 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2078:  Tab found; better to use spaces  [whitespace/tab] [1]

You should definitely fix this and upload a new patch.

&gt; ERROR: Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2079:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Total errors found: 2 in 4 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983402</commentid>
    <comment_count>23</comment_count>
      <attachid>224911</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-21 15:33:53 -0800</bug_when>
    <thetext>Comment on attachment 224911
Added GetMyArgumentByVal to FTL

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

This looks good to me, but I would fix the indentation/style goofs.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2044
&gt; +		LValue property = lowInt32(m_node-&gt;child1());

Weird indentation.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2045
&gt; +        CodeOrigin&amp; codeLocation = m_node-&gt;origin.semantic;

I wouldn&apos;t use a reference here.  There&apos;s no point since it&apos;s a small struct and probably copying it from the heap is faster than having a pointer to it.  It&apos;s also somewhat safer in general.  I mean, in this particular case, nobody will delete the thing that m_node points to, but in general I like to pass-by-value when I can because it means I don&apos;t have to worry about object lifecycles as much.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2050
&gt; +        if (!isEmptySpeculation(m_state.variables().operand(m_graph.argumentsRegisterFor(codeLocation)).m_type))
&gt; +            speculate(ArgumentsEscaped, noValue(), 0,
&gt; +                m_out.notNull(m_out.loadPtr(addressFor(m_graph.machineArgumentsRegisterFor(codeLocation)))));

Multi-line control clauses need { }.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2059
&gt; +        if (inlineCallFrame)
&gt; +            speculate(Uncountable, noValue(), 0, 
&gt; +                m_out.aboveOrEqual(property,
&gt; +                    m_out.constInt32(inlineCallFrame-&gt;arguments.size() - 1)));
&gt; +        else 
&gt; +            speculate(Uncountable, noValue(), 0, 
&gt; +                m_out.aboveOrEqual(m_out.add(property, m_out.constInt32(1)), 
&gt; +                    m_out.load32NonNegative(payloadFor(JSStack::ArgumentCount))));

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2063
&gt; +            RELEASE_ASSERT(false); // TODO

RELEASE_ASSERT_NOT_REACHED().  Good form would be to file a bug on bugzilla for the part that needs to be done.  It can be a super terse bug, like title = &quot;FTL GetArgumentByVal should handle the slowArguments case&quot;, and description = &quot;...&quot; (I use that to have a non-empty string in the description to make bugzilla happy.)

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2070
&gt; +        setJSValue(m_out.load64(m_out.baseIndex(m_heaps.variables.atAnyIndex(),
&gt; +            inlineCallFrame ? addressFor(inlineCallFrame-&gt;arguments[0].virtualRegister()).value() : m_callFrame,
&gt; +            m_out.signExt(property, m_out.intPtr), ScaleEight, 
&gt; +            offsetOfArguments(inlineCallFrame))));
&gt; +    }

This looks suspicious in case of inlined code.  You&apos;re first getting the addressFor() arguments[0], and then you&apos;re putting in an offset which again calculates the offset of arguments[1].  Both of these calculations will contain almost the same offset.  This seems wrong.  It&apos;ll work for not-inlined code since you use m_callFrame as a base and then put in the argumentsOffset of the zero&apos;th argument.  But for inlined code you&apos;re adding something like that twice.  Also, inlineCallFrame-&gt;arguments[0] could be unset, leading to a crash.

I think that you should try to rearchitect this so that you&apos;re first computing the address of the zero&apos;th argument and then passing that as the base of baseIndex, and then you&apos;ll use zero as the offset (i.e. you won&apos;t pass the offset).  The helper should therefore be addressOfArguments rather than offsetOfArguments.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2081
&gt; +    int offsetOfArguments(InlineCallFrame* inlineCallFrame)
&gt; +    {
&gt; +        if (!inlineCallFrame)
&gt; +            return CallFrame::argumentOffset(0) * sizeof(Register);
&gt; +        if (inlineCallFrame-&gt;arguments.size() &lt;= 1)
&gt; +            return 0;
&gt; +        ValueRecovery recovery = inlineCallFrame-&gt;arguments[1];
&gt; +        RELEASE_ASSERT(recovery.technique() == DisplacedInJSStack);
&gt; +        return recovery.virtualRegister().offset() * sizeof(Register);
&gt; +    }

Move this below all of the compileBlahBlah method definitions.  Also, I think the convention we usually use is that we pass around VirtualRegisters right up until the bitter end.  So, you could call this registerOfBaseArgument or something.  It would be the same as what you did except it would return a VirtualRegister and it wouldn&apos;t be a multiple of sizeof(Register).  But, I think it would be even better if you just made a helper called addressOfArguments that returns a LValue that is the address of the zero&apos;th argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983404</commentid>
    <comment_count>24</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-21 15:38:37 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 224911 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=224911&amp;action=review
&gt; 
&gt; This looks good to me, but I would fix the indentation/style goofs.

Heh, correction, I did find a bug.  For inlined code you&apos;re adding the same offset twice.  Can you write a test for the inlining case and verify by looking at the IR that inlining happened?  It would probably be something like:

function foo(i) {
    return arguments[i];
}

function bar(i) {
    return foo(i, 89, 23, 54);
}

noInline(bar);

for (var i = 0; i &lt; 100000; ++i) {
    var result = bar(1 + (i % 3));
    if (result != [89, 23, 54][i % 3])
        throw &quot;Error: bad result for i = &quot; + i + &quot;: &quot; + result;
}

Notice how I use bar as the function that isn&apos;t inlined and that will ultimately be compiled by the FTL, but foo is the thing that uses arguments.

&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2044
&gt; &gt; +		LValue property = lowInt32(m_node-&gt;child1());
&gt; 
&gt; Weird indentation.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2045
&gt; &gt; +        CodeOrigin&amp; codeLocation = m_node-&gt;origin.semantic;
&gt; 
&gt; I wouldn&apos;t use a reference here.  There&apos;s no point since it&apos;s a small struct and probably copying it from the heap is faster than having a pointer to it.  It&apos;s also somewhat safer in general.  I mean, in this particular case, nobody will delete the thing that m_node points to, but in general I like to pass-by-value when I can because it means I don&apos;t have to worry about object lifecycles as much.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2050
&gt; &gt; +        if (!isEmptySpeculation(m_state.variables().operand(m_graph.argumentsRegisterFor(codeLocation)).m_type))
&gt; &gt; +            speculate(ArgumentsEscaped, noValue(), 0,
&gt; &gt; +                m_out.notNull(m_out.loadPtr(addressFor(m_graph.machineArgumentsRegisterFor(codeLocation)))));
&gt; 
&gt; Multi-line control clauses need { }.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2059
&gt; &gt; +        if (inlineCallFrame)
&gt; &gt; +            speculate(Uncountable, noValue(), 0, 
&gt; &gt; +                m_out.aboveOrEqual(property,
&gt; &gt; +                    m_out.constInt32(inlineCallFrame-&gt;arguments.size() - 1)));
&gt; &gt; +        else 
&gt; &gt; +            speculate(Uncountable, noValue(), 0, 
&gt; &gt; +                m_out.aboveOrEqual(m_out.add(property, m_out.constInt32(1)), 
&gt; &gt; +                    m_out.load32NonNegative(payloadFor(JSStack::ArgumentCount))));
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2063
&gt; &gt; +            RELEASE_ASSERT(false); // TODO
&gt; 
&gt; RELEASE_ASSERT_NOT_REACHED().  Good form would be to file a bug on bugzilla for the part that needs to be done.  It can be a super terse bug, like title = &quot;FTL GetArgumentByVal should handle the slowArguments case&quot;, and description = &quot;...&quot; (I use that to have a non-empty string in the description to make bugzilla happy.)
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2070
&gt; &gt; +        setJSValue(m_out.load64(m_out.baseIndex(m_heaps.variables.atAnyIndex(),
&gt; &gt; +            inlineCallFrame ? addressFor(inlineCallFrame-&gt;arguments[0].virtualRegister()).value() : m_callFrame,
&gt; &gt; +            m_out.signExt(property, m_out.intPtr), ScaleEight, 
&gt; &gt; +            offsetOfArguments(inlineCallFrame))));
&gt; &gt; +    }
&gt; 
&gt; This looks suspicious in case of inlined code.  You&apos;re first getting the addressFor() arguments[0], and then you&apos;re putting in an offset which again calculates the offset of arguments[1].  Both of these calculations will contain almost the same offset.  This seems wrong.  It&apos;ll work for not-inlined code since you use m_callFrame as a base and then put in the argumentsOffset of the zero&apos;th argument.  But for inlined code you&apos;re adding something like that twice.  Also, inlineCallFrame-&gt;arguments[0] could be unset, leading to a crash.
&gt; 
&gt; I think that you should try to rearchitect this so that you&apos;re first computing the address of the zero&apos;th argument and then passing that as the base of baseIndex, and then you&apos;ll use zero as the offset (i.e. you won&apos;t pass the offset).  The helper should therefore be addressOfArguments rather than offsetOfArguments.
&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:2081
&gt; &gt; +    int offsetOfArguments(InlineCallFrame* inlineCallFrame)
&gt; &gt; +    {
&gt; &gt; +        if (!inlineCallFrame)
&gt; &gt; +            return CallFrame::argumentOffset(0) * sizeof(Register);
&gt; &gt; +        if (inlineCallFrame-&gt;arguments.size() &lt;= 1)
&gt; &gt; +            return 0;
&gt; &gt; +        ValueRecovery recovery = inlineCallFrame-&gt;arguments[1];
&gt; &gt; +        RELEASE_ASSERT(recovery.technique() == DisplacedInJSStack);
&gt; &gt; +        return recovery.virtualRegister().offset() * sizeof(Register);
&gt; &gt; +    }
&gt; 
&gt; Move this below all of the compileBlahBlah method definitions.  Also, I think the convention we usually use is that we pass around VirtualRegisters right up until the bitter end.  So, you could call this registerOfBaseArgument or something.  It would be the same as what you did except it would return a VirtualRegister and it wouldn&apos;t be a multiple of sizeof(Register).  But, I think it would be even better if you just made a helper called addressOfArguments that returns a LValue that is the address of the zero&apos;th argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986127</commentid>
    <comment_count>25</comment_count>
      <attachid>225601</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-02 10:40:53 -0800</bug_when>
    <thetext>Created attachment 225601
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986143</commentid>
    <comment_count>26</comment_count>
      <attachid>225601</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-02 12:17:21 -0800</bug_when>
    <thetext>Comment on attachment 225601
the patch

This revealed bugs.  I will have a patch and more tests up shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986144</commentid>
    <comment_count>27</comment_count>
      <attachid>225604</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-02 12:18:47 -0800</bug_when>
    <thetext>Created attachment 225604
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986145</commentid>
    <comment_count>28</comment_count>
      <attachid>225604</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-02 12:19:06 -0800</bug_when>
    <thetext>Comment on attachment 225604
the patch

Not yet ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986407</commentid>
    <comment_count>29</comment_count>
      <attachid>225604</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-03 10:55:42 -0800</bug_when>
    <thetext>Comment on attachment 225604
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992694</commentid>
    <comment_count>30</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-03-20 13:39:27 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/165072</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224258</attachid>
            <date>2014-02-14 15:26:02 -0800</date>
            <delta_ts>2014-02-14 15:36:21 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>3345</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggOWQwNjAwNC4uZDdkZTQzYiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wMi0xNCAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwogMjAx
NC0wMi0xNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtB
U2FuXSBEaXNhYmxlIEpTU3RhY2s6OnNhbml0aXplU3RhY2soKSB0byBhdm9pZCBmYWxzZS1wb3Np
dGl2ZSBzdGFjay1idWZmZXItb3ZlcmZsb3cgZXJyb3JzCmRpZmYgLS1naXQgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NDA3M2UyLi41Zjg0MTE4IDEwMDY0NAotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBK
U0NvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50c0xlbmd0aDoKKyAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEdldExv
Y2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IDJjMzFiMGYuLmVjZjk4
OTcgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAK
QEAgLTI5OSw2ICsyOTksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRz
TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRzTGVuZ3RoKCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgICAg
ICAgICBjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgY29tcGlsZVpvbWJpZUhpbnQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAzMCw3ICsyMDM0LDI4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0gfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29t
cGlsZUdldE15QXJndW1lbnRCeVZhbCgpCisgICAgeworICAgICAgICBMVmFsdWUgcHJvcGVydHkg
PSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgVHlwZWRQb2ludGVyIGFyZ3NQ
dHIgPSBhZGRyZXNzRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCkpOwor
ICAgICAgICBMVmFsdWUgYXJncyA9IGFyZ3NQdHIudmFsdWUoKTsKKyAgICAgICAgTFZhbHVlIHBy
b3BQdHIgPSBtX291dC5zaWduRXh0KHByb3BlcnR5LCBtX291dC5pbnRQdHIpOworCisgICAgICAg
IHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAwLCAKKyAgICAgICAgICAgIG1fb3V0
LmFib3ZlT3JFcXVhbChwcm9wUHRyLCAKKyAgICAgICAgICAgICAgICBhZGRyZXNzRm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50
KS52YWx1ZSgpKSk7CisKKyAgICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCks
IDAsIAorICAgICAgICAgICAgbV9vdXQubm90TnVsbCggCisgICAgICAgICAgICAgICAgYWRkcmVz
c0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5zdGFja09mZnNldCgpKS52YWx1ZSgpKSk7IC8v
IFdoZXJlIGlzIFNsb3dBcmd1bWVudERhdGE/CisKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5s
b2FkNjQobV9vdXQuYmFzZUluZGV4KCAKKyAgICAgICAgICAgIGFyZ3NQdHIuaGVhcCgpLAorICAg
ICAgICAgICAgYXJncywgcHJvcFB0ciwgU2NhbGVFaWdodCAsIAorICAgICAgICAgICAgSlNTdGFj
azo6VGhpc0FyZ3VtZW50ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihSZWdpc3RlcikpKSk7
CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWwoKQogICAgIHsKICAgICAgICAgRWRn
ZSBjaGlsZDEgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CmRpZmYgLS1naXQgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtZ2V0Ynl2YWwtYXJndW1lbnRzLmpz
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFsLWFyZ3VtZW50
cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTAzZDMxCi0tLSAvZGV2
L251bGwKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFs
LWFyZ3VtZW50cy5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBmb28oYSl7CisgICAgcmV0
dXJuIGFyZ3VtZW50c1sxXTsKK30KK25vSW5saW5lKGZvbyk7CisKK3ZhciByID0gMDsKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgciA9IGZvbyg1MiwgNDIpOwor
fQorCitpZiAociAhPSA0MikgdGhyb3cgIkVycm9yOiAiK3I7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224261</attachid>
            <date>2014-02-14 15:36:21 -0800</date>
            <delta_ts>2014-02-17 15:30:45 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>3342</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggOWQwNjAwNC4uZDdkZTQzYiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wMi0xNCAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwogMjAx
NC0wMi0xNCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFtB
U2FuXSBEaXNhYmxlIEpTU3RhY2s6OnNhbml0aXplU3RhY2soKSB0byBhdm9pZCBmYWxzZS1wb3Np
dGl2ZSBzdGFjay1idWZmZXItb3ZlcmZsb3cgZXJyb3JzCmRpZmYgLS1naXQgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCA3NDA3M2UyLi41Zjg0MTE4IDEwMDY0NAotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBK
U0NvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50c0xlbmd0aDoKKyAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEdldExv
Y2FsOgogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IDJjMzFiMGYuLmVjZjk4
OTcgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAK
QEAgLTI5OSw2ICsyOTksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRz
TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRzTGVuZ3RoKCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgICAg
ICAgICBjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgY29tcGlsZVpvbWJpZUhpbnQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAzMCw3ICsyMDM0LDI4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0gfQogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29t
cGlsZUdldE15QXJndW1lbnRCeVZhbCgpCisgICAgeworICAgICAgICBMVmFsdWUgcHJvcGVydHkg
PSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgVHlwZWRQb2ludGVyIGFyZ3NQ
dHIgPSBhZGRyZXNzRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCkpOwor
ICAgICAgICBMVmFsdWUgYXJncyA9IGFyZ3NQdHIudmFsdWUoKTsKKyAgICAgICAgTFZhbHVlIHBy
b3BQdHIgPSBtX291dC5zaWduRXh0KHByb3BlcnR5LCBtX291dC5pbnRQdHIpOworCisgICAgICAg
IHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAwLCAKKyAgICAgICAgICAgIG1fb3V0
LmFib3ZlT3JFcXVhbChwcm9wUHRyLCAKKyAgICAgICAgICAgICAgICBhZGRyZXNzRm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50
KS52YWx1ZSgpKSk7CisKKyAgICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCks
IDAsIAorICAgICAgICAgICAgbV9vdXQubm90TnVsbCgKKyAgICAgICAgICAgICAgICBhZGRyZXNz
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCkpLnZhbHVlKCkpKTsgLy8g
V2hlcmUgaXMgU2xvd0FyZ3VtZW50RGF0YT8KKworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0Lmxv
YWQ2NChtX291dC5iYXNlSW5kZXgoCisgICAgICAgICAgICBhcmdzUHRyLmhlYXAoKSwKKyAgICAg
ICAgICAgIGFyZ3MsIHByb3BQdHIsIFNjYWxlRWlnaHQsIAorICAgICAgICAgICAgSlNTdGFjazo6
VGhpc0FyZ3VtZW50ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihSZWdpc3RlcikpKSk7Cisg
ICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWwoKQogICAgIHsKICAgICAgICAgRWRnZSBj
aGlsZDEgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CmRpZmYgLS1naXQgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtZ2V0Ynl2YWwtYXJndW1lbnRzLmpzIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTAzZDMxCi0tLSAvZGV2L251
bGwKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFsLWFy
Z3VtZW50cy5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBmb28oYSl7CisgICAgcmV0dXJu
IGFyZ3VtZW50c1sxXTsKK30KK25vSW5saW5lKGZvbyk7CisKK3ZhciByID0gMDsKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgciA9IGZvbyg1MiwgNDIpOworfQor
CitpZiAociAhPSA0MikgdGhyb3cgIkVycm9yOiAiK3I7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224432</attachid>
            <date>2014-02-17 15:30:45 -0800</date>
            <delta_ts>2014-02-17 15:41:52 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>3087</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNWU5ODM1Yy4uYWQwMWQ0MyAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMCArMSwxNSBAQAorMjAxNC0wMi0xNCAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwpkaWZm
IC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYTk2NWU4Yy4u
ZTlhYjgyNyAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CkBAIC00Niw2ICs0Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgSlNDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50Ogog
ICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlW
YWw6CiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgogICAgIGNhc2UgTW92
SGludDoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApp
bmRleCBiYTVmMjRhLi5jZGM2ODg1IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCkBAIC0yOTksNiArMjk5LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRNeUFyZ3Vt
ZW50c0xlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0TXlBcmd1
bWVudEJ5VmFsOgorICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAgIGNv
bXBpbGVab21iaWVIaW50KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMzMsNyArMjAzNywy
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IH0KICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIGNvbXBpbGVHZXRNeUFyZ3VtZW50QnlWYWwoKQorICAgIHsKKyAgICAg
ICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFR5cGVkUG9pbnRlciBhcmdzUHRyID0gYWRkcmVzc0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5zdGFja09mZnNldCgpKTsKKyAgICAgICAgTFZhbHVlIGFyZ3MgPSBhcmdzUHRyLnZhbHVlKCk7
CisgICAgICAgIExWYWx1ZSBwcm9wUHRyID0gbV9vdXQuc2lnbkV4dChwcm9wZXJ0eSwgbV9vdXQu
aW50UHRyKTsKKworICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwg
CisgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwocHJvcFB0ciwgCisgICAgICAgICAgICAg
ICAgYWRkcmVzc0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5zdGFja09mZnNldCgpICsgSlNT
dGFjazo6QXJndW1lbnRDb3VudCkudmFsdWUoKSkpOworCisgICAgICAgIHNwZWN1bGF0ZShVbmNv
dW50YWJsZSwgbm9WYWx1ZSgpLCAwLCBtX291dC5pc051bGwoYXJnc1B0ci52YWx1ZSgpKSk7CisK
KyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KCAKKyAgICAg
ICAgICAgIGFyZ3NQdHIuaGVhcCgpLAorICAgICAgICAgICAgYXJncywgcHJvcFB0ciwgU2NhbGVF
aWdodCAsIAorICAgICAgICAgICAgSlNTdGFjazo6VGhpc0FyZ3VtZW50ICogc2l6ZW9mKFJlZ2lz
dGVyKSArIHNpemVvZihSZWdpc3RlcikpKSk7CisgICAgfQorCiAgICAgdm9pZCBjb21waWxlUHV0
QnlWYWwoKQogICAgIHsKICAgICAgICAgRWRnZSBjaGlsZDEgPSBtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMCk7CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9mdGwtZ2V0Ynl2YWwtYXJndW1lbnRzLmpzIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5mNTAzZDMxCi0tLSAvZGV2L251bGwKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5qcwpAQCAtMCwwICsxLDEyIEBA
CitmdW5jdGlvbiBmb28oYSl7CisgICAgcmV0dXJuIGFyZ3VtZW50c1sxXTsKK30KK25vSW5saW5l
KGZvbyk7CisKK3ZhciByID0gMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsK
KyAgICB2YXIgciA9IGZvbyg1MiwgNDIpOworfQorCitpZiAociAhPSA0MikgdGhyb3cgIkVycm9y
OiAiK3I7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224439</attachid>
            <date>2014-02-17 15:41:52 -0800</date>
            <delta_ts>2014-02-17 16:36:47 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>3085</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNWU5ODM1Yy4uYWQwMWQ0MyAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMCArMSwxNSBAQAorMjAxNC0wMi0xNCAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwpkaWZm
IC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYTk2NWU4Yy4u
ZTlhYjgyNyAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CkBAIC00Niw2ICs0Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgSlNDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50Ogog
ICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlW
YWw6CiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgogICAgIGNhc2UgTW92
SGludDoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApp
bmRleCBiYTVmMjRhLi5jZGM2ODg1IDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCkBAIC0yOTksNiArMjk5LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRNeUFyZ3Vt
ZW50c0xlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0TXlBcmd1
bWVudEJ5VmFsOgorICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAgICAgICAgIGNv
bXBpbGVab21iaWVIaW50KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIwMzMsNyArMjAzNywy
NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IH0KICAgICB9Ci0g
ICAgCisKKyAgICB2b2lkIGNvbXBpbGVHZXRNeUFyZ3VtZW50QnlWYWwoKQorICAgIHsKKyAgICAg
ICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IFR5cGVkUG9pbnRlciBhcmdzUHRyID0gYWRkcmVzc0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yy5zdGFja09mZnNldCgpKTsKKyAgICAgICAgTFZhbHVlIGFyZ3MgPSBhcmdzUHRyLnZhbHVlKCk7
CisgICAgICAgIExWYWx1ZSBwcm9wUHRyID0gbV9vdXQuc2lnbkV4dChwcm9wZXJ0eSwgbV9vdXQu
aW50UHRyKTsKKworICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwg
CisgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwocHJvcFB0ciwgCisgICAgICAgICAgICAg
ICAgYWRkcmVzc0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5zdGFja09mZnNldCgpICsgSlNT
dGFjazo6QXJndW1lbnRDb3VudCkudmFsdWUoKSkpOworCisgICAgICAgIHNwZWN1bGF0ZShVbmNv
dW50YWJsZSwgbm9WYWx1ZSgpLCAwLCBtX291dC5pc051bGwoYXJnc1B0ci52YWx1ZSgpKSk7CisK
KyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KAorICAgICAg
ICAgICAgYXJnc1B0ci5oZWFwKCksCisgICAgICAgICAgICBhcmdzLCBwcm9wUHRyLCBTY2FsZUVp
Z2h0LCAKKyAgICAgICAgICAgIEpTU3RhY2s6OlRoaXNBcmd1bWVudCAqIHNpemVvZihSZWdpc3Rl
cikgKyBzaXplb2YoUmVnaXN0ZXIpKSkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVB1dEJ5
VmFsKCkKICAgICB7CiAgICAgICAgIEVkZ2UgY2hpbGQxID0gbV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDApOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
ZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5qcyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjUwM2QzMQotLS0gL2Rldi9udWxsCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanMKQEAgLTAsMCArMSwxMiBAQAor
ZnVuY3Rpb24gZm9vKGEpeworICAgIHJldHVybiBhcmd1bWVudHNbMV07Cit9Citub0lubGluZShm
b28pOworCit2YXIgciA9IDA7Citmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKSB7Cisg
ICAgdmFyIHIgPSBmb28oNTIsIDQyKTsKK30KKworaWYgKHIgIT0gNDIpIHRocm93ICJFcnJvcjog
IityOworCg==
</data>
<flag name="review"
          id="248526"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="248527"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224444</attachid>
            <date>2014-02-17 16:36:47 -0800</date>
            <delta_ts>2014-02-18 16:55:14 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>3530</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNWU5ODM1Yy4uYWQwMWQ0MyAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMCArMSwxNSBAQAorMjAxNC0wMi0xNCAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwpkaWZm
IC0tZ2l0IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggYTk2NWU4Yy4u
ZTlhYjgyNyAxMDA2NDQKLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CkBAIC00Niw2ICs0Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgSlNDb25zdGFudDoKICAgICBjYXNlIFdlYWtKU0NvbnN0YW50Ogog
ICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CisgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlW
YWw6CiAgICAgY2FzZSBHZXRMb2NhbDoKICAgICBjYXNlIFNldExvY2FsOgogICAgIGNhc2UgTW92
SGludDoKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApp
bmRleCBiYTVmMjRhLi5jYmEwYTJiIDEwMDY0NAotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoRlRMX0pJ
VCkKIAorI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja1dpdGhKSVRU
eXBlLmgiCiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNs
dWRlICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgpAQCAtNDksNiArNTAsNyBAQAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiB1c2luZyBuYW1lc3BhY2UgREZHOwordXNpbmcg
REZHOjpOb2RlOwogCiBzdGF0aWMgc3RkOjphdG9taWM8aW50PiBjb21waWxlQ291bnRlcjsKIApA
QCAtMjk5LDYgKzMwMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudHNM
ZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0TXlBcmd1bWVudHNMZW5ndGgoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKKyAgICAgICAg
ICAgIGNvbXBpbGVHZXRNeUFyZ3VtZW50QnlWYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAgICAgICBjb21waWxlWm9tYmllSGludCgpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDMzLDcgKzIwNDAsMjYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfSB9CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjb21w
aWxlR2V0TXlBcmd1bWVudEJ5VmFsKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9
IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBUeXBlZFBvaW50ZXIgYXJnc1B0
ciA9IGFkZHJlc3NGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuc3RhY2tPZmZzZXQoKSk7Cisg
ICAgICAgIExWYWx1ZSBhcmdzID0gYXJnc1B0ci52YWx1ZSgpOworCisgICAgICAgIHNwZWN1bGF0
ZShVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCAwLCAKKyAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JF
cXVhbChtX291dC5hZGQocHJvcGVydHksIG1fb3V0LmNvbnN0SW50MzIoMSkpLCAKKyAgICAgICAg
ICAgICAgICBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShhZGRyZXNzRm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljLnN0YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpKTsKKwor
ICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwgCisgICAgICAgICAg
ICBtX291dC5pc051bGwobV9vdXQubG9hZFB0cihhZGRyZXNzRm9yKGFyZ3MsIG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCksIEFyZ3VtZW50czo6b2Zmc2V0T2ZTbG93QXJndW1l
bnREYXRhKCkpKSkpOworCisgICAgICAgIHNldEpTVmFsdWUobV9vdXQubG9hZDY0KG1fb3V0LmJh
c2VJbmRleCgKKyAgICAgICAgICAgIGFyZ3NQdHIuaGVhcCgpLAorICAgICAgICAgICAgYXJncywg
bV9vdXQuc2lnbkV4dChwcm9wZXJ0eSwgbV9vdXQuaW50UHRyKSwgU2NhbGVFaWdodCwgCisgICAg
ICAgICAgICBKU1N0YWNrOjpUaGlzQXJndW1lbnQgKiBzaXplb2YoUmVnaXN0ZXIpICsgc2l6ZW9m
KFJlZ2lzdGVyKSkpKTsKKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbCgpCiAgICAg
ewogICAgICAgICBFZGdlIGNoaWxkMSA9IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKTsK
ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1nZXRieXZh
bC1hcmd1bWVudHMuanMgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtZ2V0
Ynl2YWwtYXJndW1lbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1
MDNkMzEKLS0tIC9kZXYvbnVsbAorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9mdGwtZ2V0Ynl2YWwtYXJndW1lbnRzLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2Z1bmN0aW9uIGZv
byhhKXsKKyAgICByZXR1cm4gYXJndW1lbnRzWzFdOworfQorbm9JbmxpbmUoZm9vKTsKKwordmFy
IHIgPSAwOworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7ICsraSkgeworICAgIHZhciByID0g
Zm9vKDUyLCA0Mik7Cit9CisKK2lmIChyICE9IDQyKSB0aHJvdyAiRXJyb3I6ICIrcjsKKwo=
</data>
<flag name="review"
          id="248530"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="248531"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224566</attachid>
            <date>2014-02-18 16:55:14 -0800</date>
            <delta_ts>2014-02-18 16:56:19 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL and fixed compileGetMyArgumentsLength</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>5044</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNWU5ODM1Yy4uYWFlYTFmMiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMi0xOCAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
IGFuZCBmaXhlZCBHZXRNeUFyZ3VtZW50c0xlbmd0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRNeUFyZ3VtZW50
c0xlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRN
eUFyZ3VtZW50QnlWYWwpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9mdGwtZ2V0Ynl2YWwtYXJn
dW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTQtMDItMTcgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBsciBpcyBhIHNwZWNpYWwgcmVnaXN0
ZXIgb24gQVJNNjQKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IGE5NjVlOGMuLmU5YWI4MjcgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcApAQCAtNDYsNiArNDYsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgY2FzZSBX
ZWFrSlNDb25zdGFudDoKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2Nh
bDoKICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKaW5kZXggYmE1ZjI0YS4uODE5NjUyMyAxMDA2NDQKLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCIKQEAgLTQ5LDYg
KzUwLDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNw
YWNlIERGRzsKK3VzaW5nIERGRzo6Tm9kZTsKIAogc3RhdGljIHN0ZDo6YXRvbWljPGludD4gY29t
cGlsZUNvdW50ZXI7CiAKQEAgLTI5OSw2ICszMDIsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEdldE15QXJndW1lbnRzTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRz
TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50
QnlWYWw6CisgICAgICAgICAgICBjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgY29tcGls
ZVpvbWJpZUhpbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgwNiw4ICsxODEyLDEzIEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0TXlBcmd1bWVudHNMZW5ndGgoKSAK
ICAgICB7Ci0gICAgICAgIFR5cGVkUG9pbnRlciByZWcgPSBhZGRyZXNzRm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KTsKLSAg
ICAgICAgc2V0SW50MzIobV9vdXQuYWRkKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHJlZyksIG1f
b3V0LmNvbnN0SW50MzIoLTEpKSk7CisgICAgICAgIENvZGVPcmlnaW4gY29kZUxvY2F0aW9uID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIGlmIChjb2RlTG9jYXRpb24uaW5saW5l
Q2FsbEZyYW1lKSB7CisgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jb25zdEludDMyKGNvZGVM
b2NhdGlvbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBUeXBlZFBvaW50ZXIgcmVnID0gYWRkcmVzc0ZvcihKU1N0
YWNrOjpBcmd1bWVudENvdW50KTsgCisgICAgICAgICAgICBzZXRJbnQzMihtX291dC5hZGQobV9v
dXQubG9hZDMyTm9uTmVnYXRpdmUocmVnKSwgbV9vdXQuY29uc3RJbnQzMigtMSkpKTsgCisgICAg
ICAgIH0gCiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoKQpAQCAtMjAz
Myw3ICsyMDQ1LDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0g
fQogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpCisg
ICAgeworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlTG9jYXRpb24gPSBtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSAgY29kZUxv
Y2F0aW9uLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSl7Cisg
ICAgICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwgCisgICAgICAg
ICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKHByb3BlcnR5LAorICAgICAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludDMyKCBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAx
KSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4
KAorICAgICAgICAgICAgICAgIG1faGVhcHMudmFyaWFibGVzLmF0QW55SW5kZXgoKSwKKyAgICAg
ICAgICAgICAgICBhZGRyZXNzRm9yKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzBdLnZpcnR1
YWxSZWdpc3RlcigpKS52YWx1ZSgpLAorICAgICAgICAgICAgICAgIG1fb3V0LnNpZ25FeHQocHJv
cGVydHksIG1fb3V0LmludFB0ciksIFNjYWxlRWlnaHQsIAorICAgICAgICAgICAgICAgIEpTU3Rh
Y2s6OlRoaXNBcmd1bWVudCAqIHNpemVvZihSZWdpc3RlcikgKyBzaXplb2YoUmVnaXN0ZXIpKSkp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBu
b1ZhbHVlKCksIDAsIAorICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbChtX291dC5h
ZGQocHJvcGVydHksIG1fb3V0LmNvbnN0SW50MzIoMSkpLCAKKyAgICAgICAgICAgICAgICAgICAg
bV9vdXQubG9hZDMyTm9uTmVnYXRpdmUoYWRkcmVzc0ZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50
KSkpKTsKKworICAgICAgICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAs
IAorICAgICAgICAgICAgICAgICAgbV9vdXQuaXNOdWxsKG1fb3V0LmxvYWRQdHIobV9vdXQuYWRk
cmVzcyhtX2hlYXBzLnZhcmlhYmxlcy5hdEFueUluZGV4KCksIG1fY2FsbEZyYW1lLCBBcmd1bWVu
dHM6Om9mZnNldE9mU2xvd0FyZ3VtZW50RGF0YSgpKSkpKTsKKworICAgICAgICAgICAgc2V0SlNW
YWx1ZShtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KAorICAgICAgICAgICAgICAgIG1faGVh
cHMudmFyaWFibGVzLmF0QW55SW5kZXgoKSwKKyAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwK
KyAgICAgICAgICAgICAgICBtX291dC5zaWduRXh0KHByb3BlcnR5LCBtX291dC5pbnRQdHIpLCBT
Y2FsZUVpZ2h0LCAKKyAgICAgICAgICAgICAgICBKU1N0YWNrOjpUaGlzQXJndW1lbnQgKiBzaXpl
b2YoUmVnaXN0ZXIpICsgc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsKCkKICAgICB7CiAgICAgICAgIEVkZ2UgY2hpbGQxID0g
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApOwpkaWZmIC0tZ2l0IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5qcyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1nZXRieXZhbC1hcmd1bWVudHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUwM2QzMQotLS0gL2Rldi9udWxsCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1nZXRieXZhbC1hcmd1bWVudHMu
anMKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gZm9vKGEpeworICAgIHJldHVybiBhcmd1bWVu
dHNbMV07Cit9Citub0lubGluZShmb28pOworCit2YXIgciA9IDA7Citmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwMDsgKytpKSB7CisgICAgdmFyIHIgPSBmb28oNTIsIDQyKTsKK30KKworaWYgKHIg
IT0gNDIpIHRocm93ICJFcnJvcjogIityOworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224567</attachid>
            <date>2014-02-18 16:56:19 -0800</date>
            <delta_ts>2014-02-21 14:36:16 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL and fixed compileGetMyArgumentsLength</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>5043</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNWU5ODM1Yy4uYWFlYTFmMiAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMi0xOCAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
IGFuZCBmaXhlZCBHZXRNeUFyZ3VtZW50c0xlbmd0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRNeUFyZ3VtZW50
c0xlbmd0aCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRN
eUFyZ3VtZW50QnlWYWwpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9mdGwtZ2V0Ynl2YWwtYXJn
dW1lbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisKIDIwMTQtMDItMTcgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBsciBpcyBhIHNwZWNpYWwgcmVnaXN0
ZXIgb24gQVJNNjQKZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IGE5NjVlOGMuLmU5YWI4MjcgMTAwNjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcApAQCAtNDYsNiArNDYsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgY2FzZSBX
ZWFrSlNDb25zdGFudDoKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgorICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgY2FzZSBTZXRMb2Nh
bDoKICAgICBjYXNlIE1vdkhpbnQ6CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKaW5kZXggYmE1ZjI0YS4uODE5NjUyMyAxMDA2NDQKLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCIKQEAgLTQ5LDYg
KzUwLDcgQEAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdXNpbmcgbmFtZXNw
YWNlIERGRzsKK3VzaW5nIERGRzo6Tm9kZTsKIAogc3RhdGljIHN0ZDo6YXRvbWljPGludD4gY29t
cGlsZUNvdW50ZXI7CiAKQEAgLTI5OSw2ICszMDIsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNl
IEdldE15QXJndW1lbnRzTGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRz
TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50
QnlWYWw6CisgICAgICAgICAgICBjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKCk7CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBab21iaWVIaW50OgogICAgICAgICAgICAgY29tcGls
ZVpvbWJpZUhpbnQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgwNiw4ICsxODEyLDEzIEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0TXlBcmd1bWVudHNMZW5ndGgoKSAK
ICAgICB7Ci0gICAgICAgIFR5cGVkUG9pbnRlciByZWcgPSBhZGRyZXNzRm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljLnN0YWNrT2Zmc2V0KCkgKyBKU1N0YWNrOjpBcmd1bWVudENvdW50KTsKLSAg
ICAgICAgc2V0SW50MzIobV9vdXQuYWRkKG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHJlZyksIG1f
b3V0LmNvbnN0SW50MzIoLTEpKSk7CisgICAgICAgIENvZGVPcmlnaW4gY29kZUxvY2F0aW9uID0g
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIGlmIChjb2RlTG9jYXRpb24uaW5saW5l
Q2FsbEZyYW1lKSB7CisgICAgICAgICAgICBzZXRJbnQzMihtX291dC5jb25zdEludDMyKGNvZGVM
b2NhdGlvbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBUeXBlZFBvaW50ZXIgcmVnID0gYWRkcmVzc0ZvcihKU1N0
YWNrOjpBcmd1bWVudENvdW50KTsgCisgICAgICAgICAgICBzZXRJbnQzMihtX291dC5hZGQobV9v
dXQubG9hZDMyTm9uTmVnYXRpdmUocmVnKSwgbV9vdXQuY29uc3RJbnQzMigtMSkpKTsgCisgICAg
ICAgIH0gCiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0QXJyYXlMZW5ndGgoKQpAQCAtMjAz
Myw3ICsyMDQ1LDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0g
fQogICAgIH0KLSAgICAKKworICAgIHZvaWQgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpCisg
ICAgeworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlTG9jYXRpb24gPSBtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSAgY29kZUxv
Y2F0aW9uLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSl7Cisg
ICAgICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwgCisgICAgICAg
ICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKHByb3BlcnR5LAorICAgICAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludDMyKGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEp
KSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgo
CisgICAgICAgICAgICAgICAgbV9oZWFwcy52YXJpYWJsZXMuYXRBbnlJbmRleCgpLAorICAgICAg
ICAgICAgICAgIGFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMF0udmlydHVh
bFJlZ2lzdGVyKCkpLnZhbHVlKCksCisgICAgICAgICAgICAgICAgbV9vdXQuc2lnbkV4dChwcm9w
ZXJ0eSwgbV9vdXQuaW50UHRyKSwgU2NhbGVFaWdodCwgCisgICAgICAgICAgICAgICAgSlNTdGFj
azo6VGhpc0FyZ3VtZW50ICogc2l6ZW9mKFJlZ2lzdGVyKSArIHNpemVvZihSZWdpc3RlcikpKSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5v
VmFsdWUoKSwgMCwgCisgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKG1fb3V0LmFk
ZChwcm9wZXJ0eSwgbV9vdXQuY29uc3RJbnQzMigxKSksIAorICAgICAgICAgICAgICAgICAgICBt
X291dC5sb2FkMzJOb25OZWdhdGl2ZShhZGRyZXNzRm9yKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQp
KSkpOworCisgICAgICAgICAgICBzcGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgMCwg
CisgICAgICAgICAgICAgICAgICBtX291dC5pc051bGwobV9vdXQubG9hZFB0cihtX291dC5hZGRy
ZXNzKG1faGVhcHMudmFyaWFibGVzLmF0QW55SW5kZXgoKSwgbV9jYWxsRnJhbWUsIEFyZ3VtZW50
czo6b2Zmc2V0T2ZTbG93QXJndW1lbnREYXRhKCkpKSkpOworCisgICAgICAgICAgICBzZXRKU1Zh
bHVlKG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgbV9oZWFw
cy52YXJpYWJsZXMuYXRBbnlJbmRleCgpLAorICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLAor
ICAgICAgICAgICAgICAgIG1fb3V0LnNpZ25FeHQocHJvcGVydHksIG1fb3V0LmludFB0ciksIFNj
YWxlRWlnaHQsIAorICAgICAgICAgICAgICAgIEpTU3RhY2s6OlRoaXNBcmd1bWVudCAqIHNpemVv
ZihSZWdpc3RlcikgKyBzaXplb2YoUmVnaXN0ZXIpKSkpOworICAgICAgICB9CisgICAgfQorCiAg
ICAgdm9pZCBjb21waWxlUHV0QnlWYWwoKQogICAgIHsKICAgICAgICAgRWRnZSBjaGlsZDEgPSBt
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtZ2V0Ynl2YWwtYXJndW1lbnRzLmpzIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTAzZDMxCi0tLSAvZGV2L251bGwKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5q
cwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBmb28oYSl7CisgICAgcmV0dXJuIGFyZ3VtZW50
c1sxXTsKK30KK25vSW5saW5lKGZvbyk7CisKK3ZhciByID0gMDsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgciA9IGZvbyg1MiwgNDIpOworfQorCitpZiAociAh
PSA0MikgdGhyb3cgIkVycm9yOiAiK3I7CisK
</data>
<flag name="review"
          id="248659"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="248660"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224911</attachid>
            <date>2014-02-21 14:36:16 -0800</date>
            <delta_ts>2014-03-02 10:40:53 -0800</delta_ts>
            <desc>Added GetMyArgumentByVal to FTL</desc>
            <filename>0001-Added-GetMyArgumentByVal-to-FTL.patch</filename>
            <type>text/plain</type>
            <size>4668</size>
            <attacher name="Matthew Mirman">mmirman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNWU5ODM1Yy4uNGYyNmQ1NSAxMDA2NDQKLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0wMi0yMSAgTWF0dGhldyBNaXJtYW4gIDxtbWly
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBBZGRlZCBHZXRNeUFyZ3VtZW50QnlWYWwgdG8gRlRM
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZ0bC9G
VExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAg
ICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93
ZXJERkdUb0xMVk06Om9mZnNldE9mQXJndW1lbnRzKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
ZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorCiAyMDE0
LTAyLTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgbHIgaXMg
YSBzcGVjaWFsIHJlZ2lzdGVyIG9uIEFSTTY0CmRpZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBhOTY1ZThjLi5lOWFiODI3IDEwMDY0NAotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBKU0NvbnN0
YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xl
bmd0aDoKKyAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEdldExvY2FsOgog
ICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgY2FzZSBNb3ZIaW50OgpkaWZmIC0tZ2l0IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IGJhNWYyNGEuLmU0MmU3N2IgMTAw
NjQ0Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGVExfSklUKQogCisjaW5jbHVkZSAiQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR0luUGxhY2VBYnN0cmFjdFN0
YXRlLmgiCkBAIC00OSw2ICs1MCw3IEBACiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBERkc7Cit1c2luZyBERkc6Ok5vZGU7CiAKIHN0YXRpYyBzdGQ6
OmF0b21pYzxpbnQ+IGNvbXBpbGVDb3VudGVyOwogCkBAIC0yOTksNiArMzAxLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgICAgIGNvbXBp
bGVHZXRNeUFyZ3VtZW50c0xlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR2V0TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRC
eVZhbCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAg
ICAgICAgICAgIGNvbXBpbGVab21iaWVIaW50KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIw
MzMsNiArMjAzOCw0NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
IH0KICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRNeUFyZ3VtZW50QnlWYWwoKQorICAgIHsK
KwkJTFZhbHVlIHByb3BlcnR5ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IENvZGVPcmlnaW4mIGNvZGVMb2NhdGlvbiA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAg
ICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVMb2NhdGlvbi5pbmxp
bmVDYWxsRnJhbWU7CisgICAgICAgIAorICAgICAgICBpZiAoIWlzRW1wdHlTcGVjdWxhdGlvbiht
X3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQobV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihj
b2RlTG9jYXRpb24pKS5tX3R5cGUpKQorICAgICAgICAgICAgc3BlY3VsYXRlKEFyZ3VtZW50c0Vz
Y2FwZWQsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICBtX291dC5ub3ROdWxsKG1fb3V0
LmxvYWRQdHIoYWRkcmVzc0ZvcihtX2dyYXBoLm1hY2hpbmVBcmd1bWVudHNSZWdpc3RlckZvcihj
b2RlTG9jYXRpb24pKSkpKTsKKworICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKQorICAgICAg
ICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAsIAorICAgICAgICAgICAg
ICAgIG1fb3V0LmFib3ZlT3JFcXVhbChwcm9wZXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkgLSAxKSkpOwor
ICAgICAgICBlbHNlIAorICAgICAgICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBub1ZhbHVl
KCksIDAsIAorICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbChtX291dC5hZGQocHJv
cGVydHksIG1fb3V0LmNvbnN0SW50MzIoMSkpLCAKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQu
bG9hZDMyTm9uTmVnYXRpdmUocGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSkpKTsK
KworICAgICAgICBpZiAobV9ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlTG9jYXRpb24p
LT5zeW1ib2xUYWJsZSgpLT5zbG93QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFpbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZmFs
c2UpOyAvLyBUT0RPCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNldEpTVmFsdWUobV9v
dXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnZhcmlhYmxlcy5hdEFueUluZGV4KCks
CisgICAgICAgICAgICBpbmxpbmVDYWxsRnJhbWUgPyBhZGRyZXNzRm9yKGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzWzBdLnZpcnR1YWxSZWdpc3RlcigpKS52YWx1ZSgpIDogbV9jYWxsRnJhbWUs
CisgICAgICAgICAgICBtX291dC5zaWduRXh0KHByb3BlcnR5LCBtX291dC5pbnRQdHIpLCBTY2Fs
ZUVpZ2h0LCAKKyAgICAgICAgICAgIG9mZnNldE9mQXJndW1lbnRzKGlubGluZUNhbGxGcmFtZSkp
KSk7CisgICAgfQorCisgICAgaW50IG9mZnNldE9mQXJndW1lbnRzKElubGluZUNhbGxGcmFtZSog
aW5saW5lQ2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCisg
ICAgICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldCgwKSAqIHNpemVvZihS
ZWdpc3Rlcik7CisgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkg
PD0gMSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlY292
ZXJ5ID0gaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHNbMV07CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHJlY292ZXJ5LnRlY2huaXF1ZSgpID09IERpc3BsYWNlZEluSlNTdGFjayk7CisgICAgICAg
IHJldHVybiByZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKS5vZmZzZXQoKSAqIHNpemVvZihSZWdp
c3Rlcik7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsKCkKICAgICB7CmRp
ZmYgLS1naXQgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtZ2V0Ynl2YWwt
YXJndW1lbnRzLmpzIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldGJ5
dmFsLWFyZ3VtZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTAz
ZDMxCi0tLSAvZGV2L251bGwKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
ZnRsLWdldGJ5dmFsLWFyZ3VtZW50cy5qcwpAQCAtMCwwICsxLDEyIEBACitmdW5jdGlvbiBmb28o
YSl7CisgICAgcmV0dXJuIGFyZ3VtZW50c1sxXTsKK30KK25vSW5saW5lKGZvbyk7CisKK3ZhciBy
ID0gMDsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHsKKyAgICB2YXIgciA9IGZv
byg1MiwgNDIpOworfQorCitpZiAociAhPSA0MikgdGhyb3cgIkVycm9yOiAiK3I7CisK
</data>
<flag name="review"
          id="249025"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="249026"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225601</attachid>
            <date>2014-03-02 10:40:53 -0800</date>
            <delta_ts>2014-03-02 12:18:47 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8797</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0OTQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE0LTAzLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0TXlBcmd1bWVudEJ5VmFsIGluIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRNeUFyZ3VtZW50c0xlbmd0
aCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRNeUFyZ3Vt
ZW50QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQ2hl
Y2tBcmd1bWVudHNOb3RDcmVhdGVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6Y2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZnRs
LWdldC1teS1hcmd1bWVudC1ieS12YWwtaW5saW5lZC1hbmQtbm90LWlubGluZWQuanM6IEFkZGVk
LgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGJhcik6CisgICAgICAgIChhcnJheWNtcCk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2Z0bC1nZXQtbXktYXJndW1lbnQtYnktdmFsLWlubGluZWQu
anM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2Z0bC1nZXQtbXktYXJndW1lbnQtYnktdmFsLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZvbyk6CisKIDIwMTQtMDMtMDEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUaGlzIHNob3VsZG4ndCBoYXZlIGJlZW4gYSBsYXlvdXQgdGVzdCBzaW5jZSBpdCBy
dW5zIG9ubHkgdW5kZXIganNjLiBNb3ZpbmcgaXQgdG8gSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjQ5NDIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw2ICsxNDEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogCiAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgVG9QcmltaXRp
dmU6CiAgICAgY2FzZSBQaGFudG9tQXJndW1lbnRzOgorICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5
VmFsOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UHV0QnlJZERpcmVjdDoKQEAgLTI5Niw2ICsyOTcsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShHcmFwaCYgZ3JhcGgpCiAgICAgICAgIC8vIE5lZWQgdGhpcyBiZWNhdXNlIGFsdGhvdWdo
IHdlIGFsc28gZG9uJ3Qgc3VwcG9ydAogICAgICAgICAvLyBDcmVhdGVBY3RpdmF0aW9uL1RlYXJP
ZmZBY3RpdmF0aW9uLCB3ZSBtaWdodCBub3Qgc2VlIHRob3NlIG5vZGVzIGluIGNhc2Ugb2YKICAg
ICAgICAgLy8gT1NSIGVudHJ5LgorICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBhY3RpdmF0aW9u
cy4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
OTU3NgogICAgICAgICBpZiAodmVyYm9zZUNhcGFiaWxpdGllcygpKQogICAgICAgICAgICAgZGF0
YUxvZygiRlRMIHJlamVjdGluZyAiLCAqZ3JhcGgubV9jb2RlQmxvY2ssICIgYmVjYXVzZSBpdCB1
c2VzIGFjdGl2YXRpb25zLlxuIik7CiAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJ
KHJldmlzaW9uIDE2NDk0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsNiArMzAzLDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRNeUFyZ3VtZW50c0xlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgorICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZh
bCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgWm9tYmllSGludDoKICAgICAg
ICAgICAgIGNvbXBpbGVab21iaWVIaW50KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4NDcs
MTcgKzE4NTAsNDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRNeUFyZ3Vt
ZW50c0xlbmd0aCgpIAogICAgIHsKLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlTG9jYXRpb24gPSBt
X25vZGUtPm9yaWdpbi5zZW1hbnRpYzsKLSAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3VsYXRpb24o
Ci0gICAgICAgICAgICBtX3N0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCi0gICAgICAgICAgICAg
ICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykp
Lm1fdHlwZSkpIHsKLSAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmdzUmVnID0gbV9ncmFw
aC5tYWNoaW5lQXJndW1lbnRzUmVnaXN0ZXJGb3IoY29kZUxvY2F0aW9uKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0ZShBcmd1bWVudHNFc2NhcGVkLCBub1ZhbHVlKCksIDAsIG1fb3V0Lm5vdFplcm82
NChtX291dC5sb2FkNjQoYWRkcmVzc0ZvcihhcmdzUmVnKSkpKTsKLSAgICAgICAgfQorICAgICAg
ICBjaGVja0FyZ3VtZW50c05vdENyZWF0ZWQoKTsKIAotICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
Y29kZUxvY2F0aW9uLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFt
X25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUpOwogICAgICAgICBzZXRJbnQz
MihtX291dC5hZGQobV9vdXQubG9hZDMyTm9uTmVnYXRpdmUocGF5bG9hZEZvcihKU1N0YWNrOjpB
cmd1bWVudENvdW50KSksIG1fb3V0LmNvbnN0SW50MzIoLTEpKSk7CiAgICAgfQorICAgIAorICAg
IHZvaWQgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpCisgICAgeworICAgICAgICBjaGVja0Fy
Z3VtZW50c05vdENyZWF0ZWQoKTsKKyAgICAgICAgCisgICAgICAgIENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IG1fbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgICAgICAKKyAgICAgICAgTFZhbHVl
IHplcm9CYXNlZEluZGV4ID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExW
YWx1ZSBvbmVCYXNlZEluZGV4ID0gbV9vdXQuYWRkKHplcm9CYXNlZEluZGV4LCBtX291dC5pbnQz
Mk9uZSk7CisgICAgICAgIAorICAgICAgICBMVmFsdWUgbGltaXQ7CisgICAgICAgIGlmIChjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQuY29uc3RJ
bnQzMihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGxpbWl0ID0gbV9vdXQubG9hZDMyKHBheWxvYWRGb3IoSlNT
dGFjazo6QXJndW1lbnRDb3VudCkpOworICAgICAgICAKKyAgICAgICAgc3BlY3VsYXRlKFVuY291
bnRhYmxlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmFib3ZlT3JFcXVhbChvbmVCYXNlZEluZGV4LCBs
aW1pdCkpOworICAgICAgICAKKyAgICAgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gbV9n
cmFwaC5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luKS0+c3ltYm9sVGFibGUoKTsKKyAg
ICAgICAgaWYgKHN5bWJvbFRhYmxlLT5zbG93QXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBGVEwgc2hvdWxkIHN1cHBvcnQgYWN0aXZhdGlvbnMuCisgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5NTc2CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIFR5cGVkUG9pbnRlciBiYXNlOworICAgICAgICBpZiAoY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICBiYXNlID0gYWRkcmVzc0Zvcihjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzWzFdLnZpcnR1YWxSZWdpc3RlcigpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoMSkpOworICAgICAgICAKKyAgICAgICAgTFZhbHVlIHBvaW50ZXIgPSBt
X291dC5iYXNlSW5kZXgoCisgICAgICAgICAgICBiYXNlLnZhbHVlKCksIG1fb3V0Lnplcm9FeHQo
emVyb0Jhc2VkSW5kZXgsIG1fb3V0LmludFB0ciksIFNjYWxlRWlnaHQpOworICAgICAgICBzZXRK
U1ZhbHVlKG1fb3V0LmxvYWQ2NChUeXBlZFBvaW50ZXIobV9oZWFwcy52YXJpYWJsZXMuYXRBbnlJ
bmRleCgpLCBwb2ludGVyKSkpOworICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldEFycmF5TGVu
Z3RoKCkKICAgICB7CkBAIC0zNjg2LDggKzM3MTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
bV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJn
dW1lbnRzUmVnaXN0ZXJGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKS5tX3R5cGUpKTsKICAg
ICAgICAgCi0gICAgICAgIFZpcnR1YWxSZWdpc3RlciByZWcgPSBtX2dyYXBoLm1hY2hpbmVBcmd1
bWVudHNSZWdpc3RlckZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIHNwZWN1
bGF0ZShBcmd1bWVudHNFc2NhcGVkLCBub1ZhbHVlKCksIDAsIG1fb3V0Lm5vdFplcm82NChtX291
dC5sb2FkNjQoYWRkcmVzc0ZvcihyZWcpKSkpOworICAgICAgICBjaGVja0FyZ3VtZW50c05vdENy
ZWF0ZWQoKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQ291bnRFeGVjdXRpb24oKQpA
QCAtNDQzMCw2ICs0NDYyLDE5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBtX291dC5waGko
bV9vdXQuaW50MzIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgIH0KICAgICAKKyAgICB2
b2lkIGNoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCgpCisgICAgeworICAgICAgICBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4gPSBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIGFyZ3VtZW50c1JlZ2lzdGVyID0gbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihj
b2RlT3JpZ2luKTsKKyAgICAgICAgaWYgKGlzRW1wdHlTcGVjdWxhdGlvbihtX3N0YXRlLnZhcmlh
YmxlcygpLm9wZXJhbmQoYXJndW1lbnRzUmVnaXN0ZXIpLm1fdHlwZSkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJnc1JlZyA9IG1fZ3Jh
cGgubWFjaGluZUFyZ3VtZW50c1JlZ2lzdGVyRm9yKGNvZGVPcmlnaW4pOworICAgICAgICBzcGVj
dWxhdGUoCisgICAgICAgICAgICBBcmd1bWVudHNFc2NhcGVkLCBub1ZhbHVlKCksIDAsCisgICAg
ICAgICAgICBtX291dC5ub3RaZXJvNjQobV9vdXQubG9hZDY0KGFkZHJlc3NGb3IoYXJnc1JlZykp
KSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlKAogICAgICAgICBFeGl0S2luZCBr
aW5kLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgTm9kZSogaGlnaFZhbHVlLCBMVmFsdWUgZmFp
bENvbmRpdGlvbikKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Z0bC1nZXQtbXktYXJndW1lbnQtYnktdmFsLWlubGluZWQtYW5kLW5vdC1pbmxpbmVkLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdl
dC1teS1hcmd1bWVudC1ieS12YWwtaW5saW5lZC1hbmQtbm90LWlubGluZWQuanMJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1nZXQtbXktYXJn
dW1lbnQtYnktdmFsLWlubGluZWQtYW5kLW5vdC1pbmxpbmVkLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIGZvbyhpKSB7CisgICAgcmV0dXJuIGFyZ3VtZW50c1tp
XTsKK30KKworZnVuY3Rpb24gYmFyKGkpIHsKKyAgICByZXR1cm4gW2FyZ3VtZW50c1tpXSwgZm9v
KGksICJvbmUiLCAyLCAidGhyZWUiKSwgYXJndW1lbnRzW2ldXTsKK30KKworbm9JbmxpbmUoYmFy
KTsKKworZnVuY3Rpb24gYXJyYXljbXAoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPSBiLmxl
bmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5s
ZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHRoaW5naWVzID0gW2kgJSA0LCAib25lIiwgMiwg
InRocmVlIl07CisgICAgdmFyIG90aGVyVGhpbmdpZXMgPSBbaSAlIDQsICJmaXZlIiwgNiwgInNl
dmVuIl07CisgICAgdmFyIHJlc3VsdCA9IGJhcihpICUgNCwgImZpdmUiLCA2LCAic2V2ZW4iKTsK
KyAgICBpZiAoIWFycmF5Y21wKHJlc3VsdCwgW290aGVyVGhpbmdpZXNbaSAlIDRdLCB0aGluZ2ll
c1tpICUgNF0sIG90aGVyVGhpbmdpZXNbaSAlIDRdXSkpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsgIjogIiArIHJlc3VsdDsKK30KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1bWVudC1ieS12YWwt
aW5saW5lZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Z0bC1nZXQtbXktYXJndW1lbnQtYnktdmFsLWlubGluZWQuanMJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1nZXQtbXktYXJndW1lbnQt
YnktdmFsLWlubGluZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNiBAQAorZnVuY3Rp
b24gZm9vKGkpIHsKKyAgICByZXR1cm4gYXJndW1lbnRzW2ldOworfQorCitmdW5jdGlvbiBiYXIo
aSkgeworICAgIHJldHVybiBmb28oaSwgIm9uZSIsIDIsICJ0aHJlZSIpOworfQorCitub0lubGlu
ZShiYXIpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgdGhp
bmdpZXMgPSBbaSAlIDQsICJvbmUiLCAyLCAidGhyZWUiXTsKKyAgICB2YXIgcmVzdWx0ID0gYmFy
KGkgJSA0LCAiZml2ZSIsIDYsICJzZXZlbiIpOworICAgIGlmIChyZXN1bHQgIT0gdGhpbmdpZXNb
aSAlIDRdKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgZm9yIGkgPSAiICsgaSAr
ICI6ICIgKyByZXN1bHQ7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Z0bC1nZXQtbXktYXJndW1lbnQtYnktdmFsLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1bWVudC1ieS12YWwuanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Z0bC1n
ZXQtbXktYXJndW1lbnQtYnktdmFsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAK
K2Z1bmN0aW9uIGZvbyhpKSB7CisgICAgcmV0dXJuIGFyZ3VtZW50c1tpXTsKK30KKworbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHRo
aW5naWVzID0gW2kgJSA0LCAib25lIiwgMiwgInRocmVlIl07CisgICAgdmFyIHJlc3VsdCA9IGZv
byhpICUgNCwgIm9uZSIsIDIsICJ0aHJlZSIpOworICAgIGlmIChyZXN1bHQgIT0gdGhpbmdpZXNb
aSAlIDRdKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgZm9yIGkgPSAiICsgaSAr
ICI6ICIgKyByZXN1bHQ7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225604</attachid>
            <date>2014-03-02 12:18:47 -0800</date>
            <delta_ts>2014-03-03 10:55:42 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>13167</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0OTQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBA
CisyMDE0LTAzLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0TXlBcmd1bWVudEJ5VmFsIGluIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHdvdWxkIGhhdmUgYmVlbiBlYXN5IGlmIHRo
ZSBPU1IgZXhpdCBjb21waWxlcidzIGFyaXR5IGNoZWNrcyBoYWRuJ3QgYmVlbiB3cm9uZy4KKyAg
ICAgICAgVGhleSBjaGVja2VkIGFyaXR5IGJ5IGRvaW5nICJleGVjLT5hcmd1bWVudENvdW50ID09
IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycyIsIHdoaWNoCisgICAgICAgIGNhdXNlZCBpdCB0byB0
aGluayB0aGF0IHRoZSBhcml0eSBjaGVjayBoYWQgZmFpbGVkIGlmIHRoZSBjYWxsZXIgaGFkIHBh
c3NlZCBtb3JlCisgICAgICAgIGFyZ3VtZW50cyB0aGFuIG5lZWRlZC4gVGhpcyB3b3VsZCBjYXVz
ZSB0aGUgY2FsbCBmcmFtZSBjb3B5aW5nIHRvIHNvcnQgb2YgZ28gaW50bworICAgICAgICByZXZl
cnNlIChiZWNhdXNlIHRoZSBhbW91bnQtYnktd2hpY2gtd2UtZmFpbGVkLWFyaXR5IHdvdWxkIGhh
dmUgb3Bwb3NpdGUgc2lnbiwKKyAgICAgICAgdGhyb3dpbmcgb2ZmIGEgYnVuY2ggb2YgbWF0aCkg
YW5kIHRoZSBzdGFjayB3b3VsZCBlbmQgdXAgYmVpbmcgY29ycnVwdGVkLgorICAgICAgICAKKyAg
ICAgICAgVGhlIGJ1ZyB3YXMgcmV2ZWFsZWQgYnkgdHdvIGV4aXN0aW5nIHRlc3RzIGFsdGhvdWdo
IGFzIGZhciBhcyBJIGNvdWxkIHRlbGwsIG5laXRoZXIKKyAgICAgICAgdGVzdCB3YXMgaW50ZW5k
aW5nIHRvIGNvdmVyIHRoaXMgY2FzZSBkaXJlY3RseS4gU28sIEkgYWRkZWQgYSBuZXcgdGVzdC4K
KworICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRzTGVuZ3RoKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldE15QXJndW1lbnRCeVZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0FyZ3Vt
ZW50c05vdENyZWF0ZWQpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjaGVj
a0FyZ3VtZW50c05vdENyZWF0ZWQpOgorICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAgKiBmdGwvRlRM
U3RhdGUuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZXhpdC1mcm9tLWZ0bC13aGVuLWNhbGxl
ci1wYXNzZWQtZXh0cmEtYXJncy10aGVuLXVzZS1mdW5jdGlvbi1kb3QtYXJndW1lbnRzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1bWVudC1ieS12YWwt
aW5saW5lZC1hbmQtbm90LWlubGluZWQuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9mdGwtZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1pbmxpbmVkLmpzOiBBZGRlZC4KKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1bWVudC1ieS12YWwuanM6IEFkZGVkLgorCiAy
MDE0LTAzLTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhp
cyBzaG91bGRuJ3QgaGF2ZSBiZWVuIGEgbGF5b3V0IHRlc3Qgc2luY2UgaXQgcnVucyBvbmx5IHVu
ZGVyIGpzYy4gTW92aW5nIGl0IHRvIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMTY0OTQyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNiArMTQxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAog
ICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKICAgICBjYXNlIFRvUHJpbWl0aXZlOgogICAgIGNh
c2UgUGhhbnRvbUFyZ3VtZW50czoKKyAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKICAgICAg
ICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5SWREaXJl
Y3Q6CkBAIC0yOTYsNiArMjk3LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoR3JhcGgm
IGdyYXBoKQogICAgICAgICAvLyBOZWVkIHRoaXMgYmVjYXVzZSBhbHRob3VnaCB3ZSBhbHNvIGRv
bid0IHN1cHBvcnQKICAgICAgICAgLy8gQ3JlYXRlQWN0aXZhdGlvbi9UZWFyT2ZmQWN0aXZhdGlv
biwgd2UgbWlnaHQgbm90IHNlZSB0aG9zZSBub2RlcyBpbiBjYXNlIG9mCiAgICAgICAgIC8vIE9T
UiBlbnRyeS4KKyAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgYWN0aXZhdGlvbnMuCisgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk1NzYKICAgICAg
ICAgaWYgKHZlcmJvc2VDYXBhYmlsaXRpZXMoKSkKICAgICAgICAgICAgIGRhdGFMb2coIkZUTCBy
ZWplY3RpbmcgIiwgKmdyYXBoLm1fY29kZUJsb2NrLCAiIGJlY2F1c2UgaXQgdXNlcyBhY3RpdmF0
aW9ucy5cbiIpOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAx
NjQ5NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAzLDYgKzMwMyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0TXlBcmd1bWVu
dHNMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldE15QXJndW1l
bnRCeVZhbDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRNeUFyZ3VtZW50QnlWYWwoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgICAgICAgICBjb21w
aWxlWm9tYmllSGludCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODQ3LDE3ICsxODUwLDQ3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0TXlBcmd1bWVudHNMZW5ndGgo
KSAKICAgICB7Ci0gICAgICAgIENvZGVPcmlnaW4gY29kZUxvY2F0aW9uID0gbV9ub2RlLT5vcmln
aW4uc2VtYW50aWM7Ci0gICAgICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAotICAgICAgICAg
ICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAotICAgICAgICAgICAgICAgIG1fZ3JhcGgu
YXJndW1lbnRzUmVnaXN0ZXJGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKS5tX3R5cGUpKSB7
Ci0gICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJnc1JlZyA9IG1fZ3JhcGgubWFjaGluZUFy
Z3VtZW50c1JlZ2lzdGVyRm9yKGNvZGVMb2NhdGlvbik7Ci0gICAgICAgICAgICBzcGVjdWxhdGUo
QXJndW1lbnRzRXNjYXBlZCwgbm9WYWx1ZSgpLCAwLCBtX291dC5ub3RaZXJvNjQobV9vdXQubG9h
ZDY0KGFkZHJlc3NGb3IoYXJnc1JlZykpKSk7Ci0gICAgICAgIH0KKyAgICAgICAgY2hlY2tBcmd1
bWVudHNOb3RDcmVhdGVkKCk7CiAKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWNvZGVMb2NhdGlv
bi5pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9ub2RlLT5vcmln
aW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAgc2V0SW50MzIobV9vdXQuYWRk
KG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHBheWxvYWRGb3IoSlNTdGFjazo6QXJndW1lbnRDb3Vu
dCkpLCBtX291dC5jb25zdEludDMyKC0xKSkpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBp
bGVHZXRNeUFyZ3VtZW50QnlWYWwoKQorICAgIHsKKyAgICAgICAgY2hlY2tBcmd1bWVudHNOb3RD
cmVhdGVkKCk7CisgICAgICAgIAorICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYzsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSB6ZXJvQmFzZWRJ
bmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgb25lQmFz
ZWRJbmRleCA9IG1fb3V0LmFkZCh6ZXJvQmFzZWRJbmRleCwgbV9vdXQuaW50MzJPbmUpOworICAg
ICAgICAKKyAgICAgICAgTFZhbHVlIGxpbWl0OworICAgICAgICBpZiAoY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCisgICAgICAgICAgICBsaW1pdCA9IG1fb3V0LmNvbnN0SW50MzIoY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBsaW1pdCA9IG1fb3V0LmxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFyZ3Vt
ZW50Q291bnQpKTsKKyAgICAgICAgCisgICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9W
YWx1ZSgpLCAwLCBtX291dC5hYm92ZU9yRXF1YWwob25lQmFzZWRJbmRleCwgbGltaXQpKTsKKyAg
ICAgICAgCisgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IG1fZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbiktPnN5bWJvbFRhYmxlKCk7CisgICAgICAgIGlmIChz
eW1ib2xUYWJsZS0+c2xvd0FyZ3VtZW50cygpKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogRlRM
IHNob3VsZCBzdXBwb3J0IGFjdGl2YXRpb25zLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU3NgorICAgICAgICAgICAgCisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBUeXBlZFBvaW50ZXIgYmFzZTsKKyAgICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKQorICAgICAgICAgICAgYmFzZSA9IGFkZHJlc3NGb3IoY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50c1sxXS52aXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGJhc2UgPSBhZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDEpKTsKKyAgICAgICAgCisgICAgICAgIExWYWx1ZSBwb2ludGVyID0gbV9vdXQuYmFzZUlu
ZGV4KAorICAgICAgICAgICAgYmFzZS52YWx1ZSgpLCBtX291dC56ZXJvRXh0KHplcm9CYXNlZElu
ZGV4LCBtX291dC5pbnRQdHIpLCBTY2FsZUVpZ2h0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5sb2FkNjQoVHlwZWRQb2ludGVyKG1faGVhcHMudmFyaWFibGVzLmF0QW55SW5kZXgoKSwgcG9p
bnRlcikpKTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVHZXRBcnJheUxlbmd0aCgpCiAgICAg
ewpAQCAtMzY4Niw4ICszNzE5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fc3RhdGUudmFy
aWFibGVzKCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50c1JlZ2lz
dGVyRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSkubV90eXBlKSk7CiAgICAgICAgIAotICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gbV9ncmFwaC5tYWNoaW5lQXJndW1lbnRzUmVnaXN0
ZXJGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBzcGVjdWxhdGUoQXJndW1l
bnRzRXNjYXBlZCwgbm9WYWx1ZSgpLCAwLCBtX291dC5ub3RaZXJvNjQobV9vdXQubG9hZDY0KGFk
ZHJlc3NGb3IocmVnKSkpKTsKKyAgICAgICAgY2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkKCk7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUNvdW50RXhlY3V0aW9uKCkKQEAgLTQ0MzAsNiAr
NDQ2MiwxOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV9vdXQucGhpKG1fb3V0LmludDMy
LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjaGVja0Fy
Z3VtZW50c05vdENyZWF0ZWQoKQorICAgIHsKKyAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
ID0gbV9ub2RlLT5vcmlnaW4uc2VtYW50aWM7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1
bWVudHNSZWdpc3RlciA9IG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3IoY29kZU9yaWdpbik7
CisgICAgICAgIGlmIChpc0VtcHR5U3BlY3VsYXRpb24obV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVy
YW5kKGFyZ3VtZW50c1JlZ2lzdGVyKS5tX3R5cGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3NSZWcgPSBtX2dyYXBoLm1hY2hpbmVB
cmd1bWVudHNSZWdpc3RlckZvcihjb2RlT3JpZ2luKTsKKyAgICAgICAgc3BlY3VsYXRlKAorICAg
ICAgICAgICAgQXJndW1lbnRzRXNjYXBlZCwgbm9WYWx1ZSgpLCAwLAorICAgICAgICAgICAgbV9v
dXQubm90WmVybzY0KG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKGFyZ3NSZWcpKSkpOworICAgIH0K
KyAgICAKICAgICB2b2lkIHNwZWN1bGF0ZSgKICAgICAgICAgRXhpdEtpbmQga2luZCwgRm9ybWF0
dGVkVmFsdWUgbG93VmFsdWUsIE5vZGUqIGhpZ2hWYWx1ZSwgTFZhbHVlIGZhaWxDb25kaXRpb24p
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTY0OTQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDksNyArMjQ5
LDggQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgaml0LmFkZDMyKAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSks
IEdQUkluZm86OnJlZ1QyLAogICAgICAgICBHUFJJbmZvOjpyZWdUMyk7Ci0gICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgYXJpdHlJbnRhY3QgPSBqaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVy
OjpaZXJvLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYXJpdHlJ
bnRhY3QgPSBqaXQuYnJhbmNoMzIoCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhh
bk9yRXF1YWwsIEdQUkluZm86OnJlZ1QzLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDAp
KTsKICAgICBqaXQubmVnMzIoR1BSSW5mbzo6cmVnVDMpOwogICAgIGppdC5hZGQzMihNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEgKyBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSks
IEdQUkluZm86OnJlZ1QzKTsKICAgICBqaXQuYW5kMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigtc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSksIEdQUkluZm86OnJlZ1QzKTsKQEAgLTMw
Myw4ICszMDQsMTAgQEAgc3RhdGljIHZvaWQgY29tcGlsZVN0dWIoCiAgICAgCiAgICAgLy8gV2Ug
bmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSByZXR1cm4gaW50byB0aGUgcmVnaXN0ZXIgcmVzdG9y
YXRpb24gdGh1bmsuIFRoaXMgd29ya3MKICAgICAvLyBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24g
d2hldGhlciBvciBub3Qgd2UgaGFkIGFyaXR5IGlzc3Vlcy4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBhcml0eUludGFjdEZvclJldHVyblBDID0KLSAgICAgICAgaml0LmJyYW5jaFRlc3QzMihN
YWNyb0Fzc2VtYmxlcjo6WmVybywgR1BSSW5mbzo6cmVnVDMpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGFyaXR5SW50YWN0Rm9yUmV0dXJuUEMgPSBqaXQuYnJhbmNoMzIoCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsCisgICAgICAgIENDYWxsSGVscGVyczo6
cGF5bG9hZEZvcihKU1N0YWNrOjpBcmd1bWVudENvdW50KSwKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpOwogICAgIAogICAg
IC8vIFRoZSByZXR1cm4gUEMgaW4gdGhlIGNhbGwgZnJhbWUgaGVhZGVyIHBvaW50cyBhdCBleGFj
dGx5IHRoZSByaWdodCBhcml0eSByZXN0b3JhdGlvbgogICAgIC8vIHRodW5rLiBXZSBkb24ndCB3
YW50IHRvIGNoYW5nZSB0aGF0LiBCdXQgdGhlIGFyaXR5IHJlc3RvcmF0aW9uIHRodW5rJ3MgZnJh
bWUgaGFzIGEKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJKHJldmlzaW9u
IDE2NDk0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZUTEpJVEZpbmFsaXplci5oIgog
I2luY2x1ZGUgIkZUTEpTQ2FsbC5oIgogI2luY2x1ZGUgIkZUTFN0YWNrTWFwcy5oIgorI2luY2x1
ZGUgIkZUTFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZXhpdC1mcm9tLWZ0bC13aGVuLWNhbGxlci1wYXNzZWQtZXh0cmEtYXJncy10aGVu
LXVzZS1mdW5jdGlvbi1kb3QtYXJndW1lbnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXhpdC1mcm9tLWZ0bC13aGVuLWNhbGxlci1wYXNzZWQt
ZXh0cmEtYXJncy10aGVuLXVzZS1mdW5jdGlvbi1kb3QtYXJndW1lbnRzLmpzCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9leGl0LWZyb20tZnRsLXdo
ZW4tY2FsbGVyLXBhc3NlZC1leHRyYS1hcmdzLXRoZW4tdXNlLWZ1bmN0aW9uLWRvdC1hcmd1bWVu
dHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorZnVuY3Rpb24gZm9vKGEsIGIp
IHsKKyAgICB2YXIgcmVzdWx0ID0gYSArIGI7CisgICAgYmFyKCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordmFyIGNhcHR1cmVkQXJnczsKK2Z1bmN0aW9uIGJhcigpIHsKKyAgICBjYXB0dXJl
ZEFyZ3MgPSBmb28uYXJndW1lbnRzOworfQorCitub0lubGluZShmb28pOworbm9JbmxpbmUoYmFy
KTsKKworZnVuY3Rpb24gYXJyYXljbXAoYSwgYikgeworICAgIGlmIChhLmxlbmd0aCAhPSBiLmxl
bmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5s
ZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbygxLCAyLCAzLCA0LCA1LCA2
KTsKKyAgICBpZiAocmVzdWx0ICE9IDMpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3Vs
dCBpbiBsb29wOiAiICsgcmVzdWx0OworICAgIGlmICghYXJyYXljbXAoY2FwdHVyZWRBcmdzLCBb
MSwgMiwgMywgNCwgNSwgNl0pKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBjYXB0dXJlZCBh
cmd1bWVudHMgaW4gbG9vcDogIiArIGNhcHR1cmVkQXJnczsKK30KKwordmFyIHJlc3VsdCA9IGZv
bygyMDAwMDAwMDAwLCAyMDAwMDAwMDAwLCAzLCA0LCA1LCA2KTsKK2lmIChyZXN1bHQgIT0gNDAw
MDAwMDAwMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQgYXQgZW5kOiAiICsgcmVzdWx0
OworaWYgKCFhcnJheWNtcChjYXB0dXJlZEFyZ3MsIFsyMDAwMDAwMDAwLCAyMDAwMDAwMDAwLCAz
LCA0LCA1LCA2XSkpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgY2FwdHVyZWQgYXJndW1lbnRzIGF0
IGVuZDogIiArIEFycmF5LnByb3RvdHlwZS5qb2luLmFwcGx5KGNhcHR1cmVkQXJncywgIiwiKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1
bWVudC1ieS12YWwtaW5saW5lZC1hbmQtbm90LWlubGluZWQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mdGwtZ2V0LW15LWFyZ3VtZW50LWJ5LXZh
bC1pbmxpbmVkLWFuZC1ub3QtaW5saW5lZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1bWVudC1ieS12YWwtaW5saW5l
ZC1hbmQtbm90LWlubGluZWQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNyBAQAorZnVu
Y3Rpb24gZm9vKGkpIHsKKyAgICByZXR1cm4gYXJndW1lbnRzW2ldOworfQorCitmdW5jdGlvbiBi
YXIoaSkgeworICAgIHJldHVybiBbYXJndW1lbnRzW2ldLCBmb28oaSwgIm9uZSIsIDIsICJ0aHJl
ZSIpLCBhcmd1bWVudHNbaV1dOworfQorCitub0lubGluZShiYXIpOworCitmdW5jdGlvbiBhcnJh
eWNtcChhLCBiKSB7CisgICAgaWYgKGEubGVuZ3RoICE9IGIubGVuZ3RoKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhLmxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChhW2ldICE9IGJbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIHJldHVybiB0cnVlOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsK
KyAgICB2YXIgdGhpbmdpZXMgPSBbaSAlIDQsICJvbmUiLCAyLCAidGhyZWUiXTsKKyAgICB2YXIg
b3RoZXJUaGluZ2llcyA9IFtpICUgNCwgImZpdmUiLCA2LCAic2V2ZW4iXTsKKyAgICB2YXIgcmVz
dWx0ID0gYmFyKGkgJSA0LCAiZml2ZSIsIDYsICJzZXZlbiIpOworICAgIGlmICghYXJyYXljbXAo
cmVzdWx0LCBbb3RoZXJUaGluZ2llc1tpICUgNF0sIHRoaW5naWVzW2kgJSA0XSwgb3RoZXJUaGlu
Z2llc1tpICUgNF1dKSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0IGZvciBpID0g
IiArIGkgKyAiOiAiICsgcmVzdWx0OworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9mdGwtZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC1pbmxpbmVkLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1
bWVudC1ieS12YWwtaW5saW5lZC5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1bWVudC1ieS12YWwtaW5saW5lZC5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACitmdW5jdGlvbiBmb28oaSkgeworICAgIHJl
dHVybiBhcmd1bWVudHNbaV07Cit9CisKK2Z1bmN0aW9uIGJhcihpKSB7CisgICAgcmV0dXJuIGZv
byhpLCAib25lIiwgMiwgInRocmVlIik7Cit9CisKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciB0aGluZ2llcyA9IFtpICUgNCwgIm9u
ZSIsIDIsICJ0aHJlZSJdOworICAgIHZhciByZXN1bHQgPSBiYXIoaSAlIDQsICJmaXZlIiwgNiwg
InNldmVuIik7CisgICAgaWYgKHJlc3VsdCAhPSB0aGluZ2llc1tpICUgNF0pCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsgIjogIiArIHJlc3VsdDsKK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1
bWVudC1ieS12YWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9mdGwtZ2V0LW15LWFyZ3VtZW50LWJ5LXZhbC5qcwkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZnRsLWdldC1teS1hcmd1bWVudC1ieS12
YWwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorZnVuY3Rpb24gZm9vKGkpIHsK
KyAgICByZXR1cm4gYXJndW1lbnRzW2ldOworfQorCitub0lubGluZShmb28pOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgdGhpbmdpZXMgPSBbaSAlIDQsICJv
bmUiLCAyLCAidGhyZWUiXTsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKGkgJSA0LCAib25lIiwgMiwg
InRocmVlIik7CisgICAgaWYgKHJlc3VsdCAhPSB0aGluZ2llc1tpICUgNF0pCisgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHJlc3VsdCBmb3IgaSA9ICIgKyBpICsgIjogIiArIHJlc3VsdDsKK30K
</data>
<flag name="review"
          id="249750"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>