<?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>157091</bug_id>
          
          <creation_ts>2016-04-27 10:44:36 -0700</creation_ts>
          <short_desc>Assertion failure for super() call in direct eval in method function</short_desc>
          <delta_ts>2016-05-04 00:42:43 -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>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="André Bargull">andre.bargull</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1187807</commentid>
    <comment_count>0</comment_count>
    <who name="André Bargull">andre.bargull</who>
    <bug_when>2016-04-27 10:44:36 -0700</bug_when>
    <thetext>SVN: rev200124
Build with: perl Tools/Scripts/build-jsc --gtk --debug


The following test case triggers this assertion error:
---
ASSERTION FAILED: generator.isConstructor() || generator.derivedContextType() == DerivedContextType::DerivedConstructorContext
---


Test case:
---
(new class {m(){ eval(&quot;super()&quot;) }}).m()
---


Stack trace:
---
#0  0x00007ffff6e289ac in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:322
#1  0x00007ffff6478daa in JSC::FunctionCallValueNode::emitBytecode (this=0x7fffafdec038, generator=..., dst=0x7ffff0dd8948) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:762
#2  0x00007ffff6449637 in JSC::BytecodeGenerator::emitNodeInTailPosition (this=0x7ffff0d98000, dst=0x7ffff0dd8948, n=0x7fffafdec038) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:415
#3  0x00007ffff6449521 in JSC::BytecodeGenerator::emitNode (this=0x7ffff0d98000, dst=0x7ffff0dd8948, n=0x7fffafdec038) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:406
#4  0x00007ffff6485e14 in JSC::ExprStatementNode::emitBytecode (this=0x7fffafdec088, generator=..., dst=0x7ffff0dd8948) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2150
#5  0x00007ffff6449499 in JSC::BytecodeGenerator::emitNodeInTailPosition (this=0x7ffff0d98000, dst=0x7ffff0dd8948, n=0x7fffafdec088) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:390
#6  0x00007ffff64939f1 in JSC::SourceElements::emitBytecode (this=0x7fffafdec000, generator=..., dst=0x7ffff0dd8948) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2106
#7  0x00007ffff6493ad0 in JSC::ScopeNode::emitStatementsBytecode (this=0x7ffff0d8d000, generator=..., dst=0x7ffff0dd8948) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3048
#8  0x00007ffff648c7a6 in JSC::EvalNode::emitBytecode (this=0x7ffff0d8d000, generator=...) at ../../Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:3086
#9  0x00007ffff64274f0 in JSC::BytecodeGenerator::generate (this=0x7ffff0d98000) at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:101
#10 0x00007ffff6b432b7 in JSC::BytecodeGenerator::generate&lt;JSC::EvalNode*, JSC::UnlinkedEvalCodeBlock*&amp;, JSC::DebuggerMode&amp;, JSC::ProfilerMode&amp;, JSC::VariableEnvironment const*&amp;&gt; (vm=...)
    at ../../Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h:297
#11 0x00007ffff6b41213 in JSC::CodeCache::getGlobalCodeBlock&lt;JSC::UnlinkedEvalCodeBlock, JSC::EvalExecutable&gt; (this=0x7ffff0def000, vm=..., executable=0x7fffaedfbee0, source=..., 
    builtinMode=JSC::JSParserBuiltinMode::NotBuiltin, strictMode=JSC::JSParserStrictMode::Strict, thisTDZMode=JSC::ThisTDZMode::CheckIfNeeded, debuggerMode=JSC::DebuggerOff, 
    profilerMode=JSC::ProfilerOff, error=..., evalContextType=JSC::EvalContextType::FunctionEvalContext, variablesUnderTDZ=0x7fffffffbfd0) at ../../Source/JavaScriptCore/runtime/CodeCache.cpp:123
#12 0x00007ffff6b3dd8d in JSC::CodeCache::getEvalCodeBlock (this=0x7ffff0def000, vm=..., executable=0x7fffaedfbee0, source=..., builtinMode=JSC::JSParserBuiltinMode::NotBuiltin, 
    strictMode=JSC::JSParserStrictMode::Strict, thisTDZMode=JSC::ThisTDZMode::CheckIfNeeded, isArrowFunctionContext=false, debuggerMode=JSC::DebuggerOff, profilerMode=JSC::ProfilerOff, error=..., 
    evalContextType=JSC::EvalContextType::FunctionEvalContext, variablesUnderTDZ=0x7fffffffbfd0) at ../../Source/JavaScriptCore/runtime/CodeCache.cpp:143
#13 0x00007ffff6c04991 in JSC::JSGlobalObject::createEvalCodeBlock (this=0x7fffaede7900, callFrame=0x7fffffffca70, executable=0x7fffaedfbee0, thisTDZMode=&lt;incomplete type&gt;, isArrowFunctionContext=false, 
    variablesUnderTDZ=0x7fffffffbfd0) at ../../Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1108
#14 0x00007ffff6ba66ce in JSC::EvalExecutable::create (exec=0x7fffffffca70, source=..., isInStrictContext=true, thisTDZMode=JSC::ThisTDZMode::CheckIfNeeded, 
    derivedContextType=JSC::DerivedContextType::DerivedMethodContext, isArrowFunctionContext=false, evalContextType=JSC::EvalContextType::FunctionEvalContext, variablesUnderTDZ=0x7fffffffbfd0)
    at ../../Source/JavaScriptCore/runtime/Executable.cpp:440
#15 0x00007ffff699b34b in JSC::EvalCodeCache::getSlow (this=0x7ffff0dba1b8, exec=0x7fffffffca70, owner=0x7fffaed9b840, inStrictContext=true, thisTDZMode=&lt;incomplete type&gt;, 
    derivedContextType=JSC::DerivedContextType::DerivedMethodContext, isArrowFunctionContext=false, evalContextType=JSC::EvalContextType::FunctionEvalContext, evalSource=..., scope=0x7fffaeddbe80)
    at ../../Source/JavaScriptCore/bytecode/EvalCodeCache.h:105
#16 0x00007ffff6995385 in JSC::eval (callFrame=0x7fffffffca70) at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:200
#17 0x00007ffff6a29fd7 in JSC::(anonymous namespace)::llint_slow_path_call_eval (exec=0x7fffffffcb00, pc=0x7ffff0df0c18) at ../../Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:1354
#18 0x00007ffff6a33ea2 in llint_entry () at ../../Source/JavaScriptCore/heap/HandleTypes.h:38
#19 0x00007ffff6a33818 in llint_entry () at ../../Source/JavaScriptCore/heap/HandleTypes.h:38
#20 0x00007ffff6a2d895 in vmEntryToJavaScript () at ../../Source/JavaScriptCore/heap/HandleTypes.h:38
#21 0x00007ffff69d46d2 in JSC::JITCode::execute (this=0x7ffff0d9c640, vm=0x7fffb09f1000, protoCallFrame=0x7fffffffcd30) at ../../Source/JavaScriptCore/jit/JITCode.cpp:80
#22 0x00007ffff6997f4f in JSC::Interpreter::execute (this=0x7ffff0def058, program=0x7fffaedfbf70, callFrame=0x7fffaede7940, thisObj=0x7fffaedba360)
    at ../../Source/JavaScriptCore/interpreter/Interpreter.cpp:960
#23 0x00007ffff6b849ad in JSC::evaluate (exec=0x7fffaede7940, source=..., thisValue=..., returnedException=...) at ../../Source/JavaScriptCore/runtime/Completion.cpp:106
#24 0x000000000043a120 in runInteractive (globalObject=0x7fffaede7900) at ../../Source/JavaScriptCore/jsc.cpp:2083
#25 0x000000000043abcb in runJSC (vm=0x7fffb09f1000, options=...) at ../../Source/JavaScriptCore/jsc.cpp:2244
#26 0x000000000043b0a1 in jscmain (argc=1, argv=0x7fffffffdbb8) at ../../Source/JavaScriptCore/jsc.cpp:2293
#27 0x000000000043967f in main (argc=1, argv=0x7fffffffdbb8) at ../../Source/JavaScriptCore/jsc.cpp:1947
---</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188632</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-29 09:14:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/26004823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189103</commentid>
    <comment_count>2</comment_count>
      <attachid>277824</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-30 12:39:16 -0700</bug_when>
    <thetext>Created attachment 277824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189250</commentid>
    <comment_count>3</comment_count>
      <attachid>277824</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-01 16:00:11 -0700</bug_when>
    <thetext>Comment on attachment 277824
Patch

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:292
&gt; +    // eval(&quot;super()&quot;) is allowed in the parsing phase. We should validate that it is under the correct context.
&gt; +    bool validSuperBinding = true;
&gt; +    if (scope-&gt;isEvalContext())
&gt; +        validSuperBinding = semanticCheckForSuperAndContext(scope, scope-&gt;constructorKind(), scope-&gt;expectedSuperBinding());

Why can&apos;t this be done when we are parsing the actual &quot;super()&quot; call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189373</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-02 05:04:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 277824 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=277824&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/Parser.cpp:292
&gt; &gt; +    // eval(&quot;super()&quot;) is allowed in the parsing phase. We should validate that it is under the correct context.
&gt; &gt; +    bool validSuperBinding = true;
&gt; &gt; +    if (scope-&gt;isEvalContext())
&gt; &gt; +        validSuperBinding = semanticCheckForSuperAndContext(scope, scope-&gt;constructorKind(), scope-&gt;expectedSuperBinding());
&gt; 
&gt; Why can&apos;t this be done when we are parsing the actual &quot;super()&quot; call?

Maybe, seems better. I&apos;ll rework about it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189932</commentid>
    <comment_count>5</comment_count>
      <attachid>278050</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-03 18:14:03 -0700</bug_when>
    <thetext>Created attachment 278050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189988</commentid>
    <comment_count>6</comment_count>
      <attachid>278050</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-03 23:53:23 -0700</bug_when>
    <thetext>Comment on attachment 278050
Patch

Thanks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190000</commentid>
    <comment_count>7</comment_count>
      <attachid>278050</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 00:42:40 -0700</bug_when>
    <thetext>Comment on attachment 278050
Patch

Clearing flags on attachment: 278050

Committed r200409: &lt;http://trac.webkit.org/changeset/200409&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190001</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-04 00:42:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277824</attachid>
            <date>2016-04-30 12:39:16 -0700</date>
            <delta_ts>2016-05-03 18:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157091-20160501043950.patch</filename>
            <type>text/plain</type>
            <size>8860</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
OTgzOTQ5NWFiYTI0OWIzZWJmZGRiYmQxM2UxOWFlMGZlOTY3OWVlLi44YzliOWMyMzllYjJkM2Fi
MjU5ZDMzM2ZiYjBkNDJmOWZkNzRmNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxNi0wNC0zMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBmb3Igc3VwZXIoKSBjYWxsIGluIGRp
cmVjdCBldmFsIGluIG1ldGhvZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgd2UgZW5zdXJlIHRoYXQgZGlyZWN0IHN1cGVyIGlz
IHVuZGVyIHRoZSBjb3JyZWN0IGNvbnRleHQsCisgICAgICAgIHdlIGRvbid0IGNoZWNrIGl0IGZv
ciB0aGUgZXZhbCBjb2RlLiBUaGlzIHBhdGNoIGFkZHMgdGhlIGNoZWNrIHRvCisgICAgICAgIHRo
ZSBldmFsIGNvZGUgcGFyc2luZyBwYXRoLgorCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAg
KEpTQzo6aXNDb3JyZWN0Q29uc3RydWN0b3JLaW5kRm9yRGlyZWN0U3VwZXIpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6c2VtYW50aWNDaGVja0ZvclN1cGVyQW5kQ29udGV4dCk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6Omhhc0RpcmVj
dFN1cGVyKToKKyAgICAgICAgKEpTQzo6U2NvcGU6Om5lZWRzU3VwZXJCaW5kaW5nKToKKyAgICAg
ICAgKEpTQzo6U2NvcGVSZWY6Om9wZXJhdG9yLT4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9l
dmFsLWFuZC1zdXBlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChz
aG91bGRUaHJvdyk6CisgICAgICAgIChwcm90b3R5cGUubSk6CisgICAgICAgIChwcm90b3R5cGUu
bik6CisKIDIwMTYtMDQtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpcnN0IHN0ZXAgaW4gdXNpbmcgImVudW0gY2xhc3MiIGluc3RlYWQgb2YgIlN0cmluZyIg
Zm9yIGVudW1lcmF0aW9ucyBpbiBET00KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCBlNzc5MGM4MzY2MzYwZDhmMzc4NzVhZjU2NDI4YTM1NjFhY2M1MTY0Li5hNTkx
NjNlODdlNGU5MmYyYmZlMjUyMTE2ZjM2ZTExZTg2YmI4YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODYsOCArMjg2LDEzIEBACiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICAvLyBldmFsKCJzdXBlcigpIikgaXMgYWxsb3dlZCBpbiB0aGUgcGFyc2luZyBw
aGFzZS4gV2Ugc2hvdWxkIHZhbGlkYXRlIHRoYXQgaXQgaXMgdW5kZXIgdGhlIGNvcnJlY3QgY29u
dGV4dC4KKyAgICBib29sIHZhbGlkU3VwZXJCaW5kaW5nID0gdHJ1ZTsKKyAgICBpZiAoc2NvcGUt
PmlzRXZhbENvbnRleHQoKSkKKyAgICAgICAgdmFsaWRTdXBlckJpbmRpbmcgPSBzZW1hbnRpY0No
ZWNrRm9yU3VwZXJBbmRDb250ZXh0KHNjb3BlLCBzY29wZS0+Y29uc3RydWN0b3JLaW5kKCksIHNj
b3BlLT5leHBlY3RlZFN1cGVyQmluZGluZygpKTsKKwogICAgIGJvb2wgdmFsaWRFbmRpbmcgPSBj
b25zdW1lKEVPRlRPSyk7Ci0gICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhdmFsaWRFbmRpbmcp
IHsKKyAgICBpZiAoIXNvdXJjZUVsZW1lbnRzIHx8ICF2YWxpZEVuZGluZyB8fCAhdmFsaWRTdXBl
ckJpbmRpbmcpIHsKICAgICAgICAgaWYgKGhhc0Vycm9yKCkpCiAgICAgICAgICAgICBwYXJzZUVy
cm9yID0gbV9lcnJvck1lc3NhZ2U7CiAgICAgICAgIGVsc2UKQEAgLTE5MDgsNiArMTkxMywyMiBA
QCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9k
ZSBtb2RlKQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCitzdGF0aWMgYm9vbCBpc0NvcnJl
Y3RDb25zdHJ1Y3RvcktpbmRGb3JEaXJlY3RTdXBlcihDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0
b3JLaW5kKQoreworICAgIHJldHVybiBjb25zdHJ1Y3RvcktpbmQgPT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgorYm9vbCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6c2VtYW50aWNDaGVja0ZvclN1cGVyQW5kQ29udGV4dChjb25zdCBTY29w
ZVJlZiYgc2NvcGUsIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcpCit7CisgICAgaWYgKHNjb3BlLT5oYXNEaXJlY3RTdXBlcigpKQorICAg
ICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGlzQ29ycmVjdENvbnN0cnVjdG9yS2luZEZvckRpcmVj
dFN1cGVyKGNvbnN0cnVjdG9yS2luZCksICJzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250
ZXh0Iik7CisKKyAgICBpZiAoc2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQs
ICJzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0Iik7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIFNvdXJj
ZVBhcnNlTW9kZSBtb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rv
cktpbmQgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcgZXhwZWN0ZWRTdXBlckJpbmRpbmcs
IGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiYgZnVuY3Rpb25JbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlIGZ1bmN0aW9uRGVmaW5pdGlv
blR5cGUpCiB7CkBAIC0yMTM0LDI0ICsyMTU1LDIxIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJp
bmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5m
by5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlk
IGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIs
IGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5h
bWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CisKICAgICAvLyBJdCB1bm5jZWNlc3NhcnkgdG8g
Y2hlY2sgb2YgdXNpbmcgc3VwZXIgZHVyaW5nIHJlcGFyc2luZyBvbmUgbW9yZSB0aW1lLiBBbHNv
IGl0IGNhbiBsZWFkIHRvIHN5bnRheCBlcnJvcgogICAgIC8vIGluIGNhc2Ugb2YgYXJyb3cgZnVu
Y3Rpb24gYmVjdWFzZSBkdXJpbmcgcmVwYXJzaW5nIHdlIGRvbid0IGtub3cgdGhhdCBwYXJzZSBh
cnJvdyBmdW5jdGlvbgogICAgIC8vIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3Igb3IgbWV0aG9k
CiAgICAgaWYgKCFtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYg
KGZ1bmN0aW9uU2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9u
U2NvcGUtPmhhc0RpcmVjdFN1cGVyKCkgfHwgZnVuY3Rpb25TY29wZS0+bmVlZHNTdXBlckJpbmRp
bmcoKSkgewogICAgICAgICAgICAgU2NvcGVSZWYgc2NvcGVSZWYgPSBjbG9zZXN0UGFyZW50T3Jk
aW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpOwogICAgICAgICAgICAgQ29uc3RydWN0b3JL
aW5kIGZ1bmN0aW9uQ29uc3RydWN0b3JLaW5kID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFy
ZEZ1bmN0aW9uQm9keUJsb2NrICYmICFzY29wZVJlZi0+aXNFdmFsQ29udGV4dCgpCiAgICAgICAg
ICAgICAgICAgPyBjb25zdHJ1Y3RvcktpbmQKICAgICAgICAgICAgICAgICA6IHNjb3BlUmVmLT5j
b25zdHJ1Y3RvcktpbmQoKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlv
bkNvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJzdXBlciBpcyBub3Qg
dmFsaWQgaW4gdGhpcyBjb250ZXh0Iik7Ci0gICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
ZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkLCAic3Vw
ZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dCIpOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChmdW5jdGlvblNjb3BlLT5uZWVkc1N1cGVyQmluZGluZygpKSB7Ci0gICAgICAgICAgICBTY29w
ZVJlZiBzY29wZVJlZiA9IGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNj
b3BlKCk7CiAgICAgICAgICAgICBTdXBlckJpbmRpbmcgZnVuY3Rpb25TdXBlckJpbmRpbmcgPSBm
dW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rpb25Cb2R5QmxvY2sgJiYgIXNjb3BlUmVm
LT5pc0V2YWxDb250ZXh0KCkKICAgICAgICAgICAgICAgICA/IGV4cGVjdGVkU3VwZXJCaW5kaW5n
CiAgICAgICAgICAgICAgICAgOiBzY29wZVJlZi0+ZXhwZWN0ZWRTdXBlckJpbmRpbmcoKTsKLSAg
ICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlvblN1cGVyQmluZGluZyA9PSBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQi
KTsKKyAgICAgICAgICAgIHNlbWFudGljQ2hlY2tGb3JTdXBlckFuZENvbnRleHQoZnVuY3Rpb25T
Y29wZSwgZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQsIGZ1bmN0aW9uU3VwZXJCaW5kaW5nKTsKKyAg
ICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM5Mzks
NiArMzk1Nyw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5U
eXBlIHRva2VuKQogICAgIH0KIAogICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICAvLyBP
bmNlIHdlIGZvdW5kIHRoYXQgdGhpcyBpcyB0aGUgZGlyZWN0IHN1cGVyLCB3ZSBuZWVkIHRvIHZh
bGlkYXRlIHRoYXQgaXQgaXMgdW5kZXIgdGhlIGNvcnJlY3QgY29udGV4dC4KKyAgICAgICAgLy8g
SW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9ucywgaGVyZSwgZXZhbCgic3VwZXIuLi4iKSBpcyBh
bHNvIGFsbG93ZWQuCiAgICAgICAgIFNjb3BlUmVmIHNjb3BlUmVmID0gY2xvc2VzdFBhcmVudE9y
ZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZG
YWxzZShjdXJyZW50U2NvcGUoKS0+aXNGdW5jdGlvbigpIHx8IChzY29wZVJlZi0+aXNFdmFsQ29u
dGV4dCgpICYmIHNjb3BlUmVmLT5leHBlY3RlZFN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGlu
Zzo6TmVlZGVkKSwgInN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQiKTsKICAgICAg
ICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlU3VwZXJFeHByKGxvY2F0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGYwMzIwNTdmN2IxZGVkYzVkNTA5YThkMDQwYTVh
ZDJhMTYyMGZlNDUuLjIxNTg1NjlkN2JjM2Y3ZTRkZGIzNDIzYTI3NzU0ZjE3ZjMzN2ZhZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTMwLDEwICs1MzAsMTAgQEAg
c3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5KCkgeyByZXR1
cm4gbV9pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
KCkgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247IH0KIAotICAgIGJvb2wgaGFzRGlyZWN0U3Vw
ZXIoKSB7IHJldHVybiBtX2hhc0RpcmVjdFN1cGVyOyB9CisgICAgYm9vbCBoYXNEaXJlY3RTdXBl
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGlyZWN0U3VwZXI7IH0KICAgICB2b2lkIHNldEhhc0Rp
cmVjdFN1cGVyKCkgeyBtX2hhc0RpcmVjdFN1cGVyID0gdHJ1ZTsgfQogCi0gICAgYm9vbCBuZWVk
c1N1cGVyQmluZGluZygpIHsgcmV0dXJuIG1fbmVlZHNTdXBlckJpbmRpbmc7IH0KKyAgICBib29s
IG5lZWRzU3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1N1cGVyQmluZGluZzsg
fQogICAgIHZvaWQgc2V0TmVlZHNTdXBlckJpbmRpbmcoKSB7IG1fbmVlZHNTdXBlckJpbmRpbmcg
PSB0cnVlOyB9CiAgICAgCiAgICAgdm9pZCBzZXRFdmFsQ29udGV4dFR5cGUoRXZhbENvbnRleHRU
eXBlIGV2YWxDb250ZXh0VHlwZSkgeyBtX2V2YWxDb250ZXh0VHlwZSA9IGV2YWxDb250ZXh0VHlw
ZTsgfQpAQCAtNzc0LDYgKzc3NCw3IEBAIHN0cnVjdCBTY29wZVJlZiB7CiAgICAgewogICAgIH0K
ICAgICBTY29wZSogb3BlcmF0b3ItPigpIHsgcmV0dXJuICZtX3Njb3BlU3RhY2stPmF0KG1faW5k
ZXgpOyB9CisgICAgY29uc3QgU2NvcGUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmbV9z
Y29wZVN0YWNrLT5hdChtX2luZGV4KTsgfQogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleDsgfQogCiAgICAgYm9vbCBoYXNDb250YWluaW5nU2NvcGUoKQpAQCAtMTQ0
Niw2ICsxNDQ3LDggQEAgY2xhc3MgUGFyc2VyIHsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBib29sIHNob3VsZENoZWNrUHJvcGVydHlGb3JVbmRlcnNj
b3JlUHJvdG9EdXBsaWNhdGUoVHJlZUJ1aWxkZXImLCBjb25zdCBUcmVlUHJvcGVydHkmKTsKIAor
ICAgIGJvb2wgc2VtYW50aWNDaGVja0ZvclN1cGVyQW5kQ29udGV4dChjb25zdCBTY29wZVJlZiYs
IENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nKTsKKwogICAgIEFMV0FZU19JTkxJTkUgaW50
IGlzQmluYXJ5T3BlcmF0b3IoSlNUb2tlblR5cGUpOwogICAgIGJvb2wgYWxsb3dBdXRvbWF0aWNT
ZW1pY29sb24oKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZXZhbC1hbmQtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2V2YWwtYW5kLXN1cGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwOWRhOTMxYWY3ZTIxZWJhMWUw
ZTUwMTc3ZjViMmQxNDE2Mzk4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2V2YWwtYW5kLXN1cGVyLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisKKworY2xhc3MgSGVsbG8geworICAgIG0o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV2YWwoInN1cGVyKCkiKTsKKyAgICB9CisKKyAgICBu
KCkKKyAgICB7CisgICAgICAgIHJldHVybiAoMCwgZXZhbCkoInN1cGVyKCkiKTsKKyAgICB9Cit9
OworCit2YXIgaGVsbG8gPSBuZXcgSGVsbG8oKTsKK3Nob3VsZFRocm93KCgpID0+IGhlbGxvLm0o
KSwgYFN5bnRheEVycm9yOiBzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0LmApOwor
c2hvdWxkVGhyb3coKCkgPT4gaGVsbG8ubigpLCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG5vdCB2
YWxpZCBpbiB0aGlzIGNvbnRleHQuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278050</attachid>
            <date>2016-05-03 18:14:03 -0700</date>
            <delta_ts>2016-05-04 00:42:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157091-20160504101441.patch</filename>
            <type>text/plain</type>
            <size>13503</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MmJiN2ZmOWFiNmJiYjA5M2IxMGQyZDQ5ZjhhZDQ3MDgyN2JkNTAyLi44OTdmNGQxNjI3NjIyZjFk
NjVkNDI3YzI0NjQ0MDE1NWE0NjU2NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxNi0wNS0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBmb3Igc3VwZXIoKSBjYWxsIGluIGRp
cmVjdCBldmFsIGluIG1ldGhvZCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2hpbGUgd2UgZW5zdXJlIHRoYXQgZGlyZWN0IHN1cGVyIGlz
IHVuZGVyIHRoZSBjb3JyZWN0IGNvbnRleHQsCisgICAgICAgIHdlIGRvbid0IGNoZWNrIGl0IGZv
ciB0aGUgZXZhbCBjb2RlLiBUaGlzIHBhdGNoIG1vdmVzIHRoZSBjaGVjayBmcm9tIHRoZSBlbmQg
b2YgcGFyc2luZyB0aGUgZnVuY3Rpb24KKyAgICAgICAgdG8gdGhlIHBsYWNlcyB3aGVyZSB3ZSBm
b3VuZCB0aGUgZGlyZWN0IHN1cGVyIG9yIHRoZSBzdXBlciBiaW5kaW5ncy4gVGhpcyBjb3ZlcnMg
dGhlIGRpcmVjdCBldmFsIHRoYXQKKyAgICAgICAgY29udGFpbnMgdGhlIGRpcmVjdCBzdXBlciBj
YWxscy4KKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZvKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6aGFzRGlyZWN0U3Vw
ZXIpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0SGFzRGlyZWN0U3VwZXIpOgorICAgICAgICAo
SlNDOjpTY29wZTo6bmVlZHNTdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpTY29wZTo6c2V0
TmVlZHNTdXBlckJpbmRpbmcpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmNsb3Nlc3RQYXJlbnRP
cmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
ZXZhbC1hbmQtc3VwZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
c2hvdWxkVGhyb3cpOgorICAgICAgICAocHJvdG90eXBlLm0pOgorICAgICAgICAocHJvdG90eXBl
Lm4pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItYW5kLXN1cGVyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHRlc3RTeW50YXhFcnJvcik6CisgICAgICAgICh0ZXN0U3ludGF4RXJyb3Iu
QmFzZS5wcm90b3R5cGUuaGVsbG8pOgorICAgICAgICAodGVzdFN5bnRheEVycm9yLkJhc2UucHJv
dG90eXBlLm9rKToKKyAgICAgICAgKHRlc3RTeW50YXhFcnJvci5CYXNlKToKKyAgICAgICAgKEhl
bGxvLnByb3RvdHlwZS5nZW4pOgorICAgICAgICAoSGVsbG8pOgorICAgICAgICAodGVzdFN5bnRh
eEVycm9yLmhlbGxvKToKKwogMjAxNi0wNS0wMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFw
cGxlLmNvbT4KIAogICAgICAgICBDcmFzaDogQXJyYXkucHJvdG90eXBlLnNsaWNlKCkgYW5kIC5z
cGxpY2UoKSBjYW4gY2FsbCBmYXN0U2xpY2UoKSBhZnRlciBhbiBhcnJheSBpcyB0cnVuY2F0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzYmNkM2ViOWZkZDU2
YjMxODcwZTcyOWU0MGFmYTE5NDU5N2YwYjFhLi5mMTgyYTIwMmE4NGY0MmNkOTUyMGI5MmE0MTM2
MjExZDNmZWQyNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC01MDUsNiArNTA1LDkgQEAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0
b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwogICAgICAgICBnZW5lcmF0b3JCb2R5U2Nv
cGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
KTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRDb25zdHJ1Y3RvcktpbmQoQ29uc3Ry
dWN0b3JLaW5kOjpOb25lKTsKKyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRFeHBlY3Rl
ZFN1cGVyQmluZGluZyhtX3N1cGVyQmluZGluZyk7CisKICAgICAgICAgU3ludGF4Q2hlY2tlciBn
ZW5lcmF0b3JGdW5jdGlvbkNvbnRleHQoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdl
dCgpKTsKICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50cyhnZW5lcmF0b3JG
dW5jdGlvbkNvbnRleHQsIG1vZGUpLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgZ2VuZXJh
dG9yIik7CiAgICAgICAgIHBvcFNjb3BlKGdlbmVyYXRvckJvZHlTY29wZSwgVHJlZUJ1aWxkZXI6
Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7CkBAIC0yMTE1LDE2ICsyMTE4LDE1IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiAg
ICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25N
b2RlKSB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywg
cHVzaFNjb3BlKCkpOwogICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNl
TW9kZShTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKKyAgICAgICAgZ2VuZXJh
dG9yQm9keVNjb3BlLT5zZXRDb25zdHJ1Y3RvcktpbmQoQ29uc3RydWN0b3JLaW5kOjpOb25lKTsK
KyAgICAgICAgZ2VuZXJhdG9yQm9keVNjb3BlLT5zZXRFeHBlY3RlZFN1cGVyQmluZGluZyhleHBl
Y3RlZFN1cGVyQmluZGluZyk7CisKICAgICAgICAgZnVuY3Rpb25JbmZvLmJvZHkgPSBwZXJmb3Jt
UGFyc2luZ0Z1bmN0aW9uQm9keSgpOwogCiAgICAgICAgIC8vIFdoZW4gYSBnZW5lcmF0b3IgaGFz
IGEgInVzZSBzdHJpY3QiIGRpcmVjdGl2ZSwgYSBnZW5lcmF0b3IgZnVuY3Rpb24gd3JhcHBpbmcg
aXQgc2hvdWxkIGJlIHN0cmljdCBtb2RlLgogICAgICAgICBpZiAgKGdlbmVyYXRvckJvZHlTY29w
ZS0+c3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2V0U3RyaWN0TW9k
ZSgpOwogCi0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShnZW5lcmF0b3JCb2R5U2NvcGUtPmhh
c0RpcmVjdFN1cGVyKCksICJzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0Iik7Ci0g
ICAgICAgIGlmIChnZW5lcmF0b3JCb2R5U2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCi0gICAg
ICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZXhwZWN0ZWRTdXBlckJpbmRpbmcgPT0gU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0Iik7
Ci0KICAgICAgICAgcG9wU2NvcGUoZ2VuZXJhdG9yQm9keVNjb3BlLCBUcmVlQnVpbGRlcjo6TmVl
ZHNGcmVlVmFyaWFibGVJbmZvKTsKICAgICB9IGVsc2UKICAgICAgICAgZnVuY3Rpb25JbmZvLmJv
ZHkgPSBwZXJmb3JtUGFyc2luZ0Z1bmN0aW9uQm9keSgpOwpAQCAtMjEzNywyNiArMjEzOSw2IEBA
IHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2Rl
IG1vZGUpCiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5h
cmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5p
bXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsK
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0g
KmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlz
IG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9Ci0gICAg
Ly8gSXQgdW5uY2VjZXNzYXJ5IHRvIGNoZWNrIG9mIHVzaW5nIHN1cGVyIGR1cmluZyByZXBhcnNp
bmcgb25lIG1vcmUgdGltZS4gQWxzbyBpdCBjYW4gbGVhZCB0byBzeW50YXggZXJyb3IKLSAgICAv
LyBpbiBjYXNlIG9mIGFycm93IGZ1bmN0aW9uIGJlY3Vhc2UgZHVyaW5nIHJlcGFyc2luZyB3ZSBk
b24ndCBrbm93IHRoYXQgcGFyc2UgYXJyb3cgZnVuY3Rpb24KLSAgICAvLyBpbnNpZGUgb2YgdGhl
IGNvbnN0cnVjdG9yIG9yIG1ldGhvZAotICAgIGlmICghbV9sZXhlci0+aXNSZXBhcnNpbmdGdW5j
dGlvbigpKSB7Ci0gICAgICAgIGlmIChmdW5jdGlvblNjb3BlLT5oYXNEaXJlY3RTdXBlcigpKSB7
Ci0gICAgICAgICAgICBTY29wZVJlZiBzY29wZVJlZiA9IGNsb3Nlc3RQYXJlbnRPcmRpbmFyeUZ1
bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCk7Ci0gICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZnVu
Y3Rpb25Db25zdHJ1Y3RvcktpbmQgPSBmdW5jdGlvbkJvZHlUeXBlID09IFN0YW5kYXJkRnVuY3Rp
b25Cb2R5QmxvY2sgJiYgIXNjb3BlUmVmLT5pc0V2YWxDb250ZXh0KCkKLSAgICAgICAgICAgICAg
ICA/IGNvbnN0cnVjdG9yS2luZAotICAgICAgICAgICAgICAgIDogc2NvcGVSZWYtPmNvbnN0cnVj
dG9yS2luZCgpOwotICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uQ29uc3Ry
dWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgInN1cGVyIGlzIG5vdCB2YWxpZCBp
biB0aGlzIGNvbnRleHQiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlv
bkNvbnN0cnVjdG9yS2luZCAhPSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQsICJzdXBlciBpcyBu
b3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0Iik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZ1bmN0
aW9uU2NvcGUtPm5lZWRzU3VwZXJCaW5kaW5nKCkpIHsKLSAgICAgICAgICAgIFNjb3BlUmVmIHNj
b3BlUmVmID0gY2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKTsK
LSAgICAgICAgICAgIFN1cGVyQmluZGluZyBmdW5jdGlvblN1cGVyQmluZGluZyA9IGZ1bmN0aW9u
Qm9keVR5cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayAmJiAhc2NvcGVSZWYtPmlzRXZh
bENvbnRleHQoKQotICAgICAgICAgICAgICAgID8gZXhwZWN0ZWRTdXBlckJpbmRpbmcKLSAgICAg
ICAgICAgICAgICA6IHNjb3BlUmVmLT5leHBlY3RlZFN1cGVyQmluZGluZygpOwotICAgICAgICAg
ICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uU3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGlu
Zzo6Tm90TmVlZGVkLCAic3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dCIpOwotICAg
ICAgICB9Ci0gICAgfQogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gSlNUb2tlbkxv
Y2F0aW9uKG1fdG9rZW4ubV9sb2NhdGlvbik7CiAgICAgZnVuY3Rpb25JbmZvLmVuZE9mZnNldCA9
IG1fdG9rZW4ubV9kYXRhLm9mZnNldDsKQEAgLTM5MzIsMTEgKzM5MTQsMjIgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgfQogCiAg
ICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0gICAgICAgIFNjb3BlUmVmIHNjb3BlUmVmID0gY2xvc2Vz
dFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKTsKLSAgICAgICAgc2VtYW50
aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNGdW5jdGlvbigpIHx8IChzY29wZVJlZi0+
aXNFdmFsQ29udGV4dCgpICYmIHNjb3BlUmVmLT5leHBlY3RlZFN1cGVyQmluZGluZygpID09IFN1
cGVyQmluZGluZzo6TmVlZGVkKSwgInN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQi
KTsKKyAgICAgICAgU2NvcGVSZWYgY2xvc2VzdE9yZGluYXJ5RnVuY3Rpb25TY29wZSA9IGNsb3Nl
c3RQYXJlbnRPcmRpbmFyeUZ1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCk7CisgICAgICAgIHNlbWFu
dGljRmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSB8fCAoY2xvc2VzdE9y
ZGluYXJ5RnVuY3Rpb25TY29wZS0+aXNFdmFsQ29udGV4dCgpICYmIGNsb3Nlc3RPcmRpbmFyeUZ1
bmN0aW9uU2NvcGUtPmV4cGVjdGVkU3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVk
ZWQpLCAic3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dCIpOwogICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVTdXBlckV4cHIobG9jYXRpb24pOwogICAgICAgICBuZXh0KCk7Ci0g
ICAgICAgIGN1cnJlbnRGdW5jdGlvblNjb3BlKCktPnNldE5lZWRzU3VwZXJCaW5kaW5nKCk7Cisg
ICAgICAgIFNjb3BlUmVmIGZ1bmN0aW9uU2NvcGUgPSBjdXJyZW50RnVuY3Rpb25TY29wZSgpOwor
ICAgICAgICBpZiAoIWZ1bmN0aW9uU2NvcGUtPnNldE5lZWRzU3VwZXJCaW5kaW5nKCkpIHsKKyAg
ICAgICAgICAgIC8vIEl0IHVubmVjZXNzYXJ5IHRvIGNoZWNrIG9mIHVzaW5nIHN1cGVyIGR1cmlu
ZyByZXBhcnNpbmcgb25lIG1vcmUgdGltZS4gQWxzbyBpdCBjYW4gbGVhZCB0byBzeW50YXggZXJy
b3IKKyAgICAgICAgICAgIC8vIGluIGNhc2Ugb2YgYXJyb3cgZnVuY3Rpb24gYmVjYXVzZSBkdXJp
bmcgcmVwYXJzaW5nIHdlIGRvbid0IGtub3cgd2hldGhlciB3ZSBjdXJyZW50bHkgcGFyc2UgdGhl
IGFycm93IGZ1bmN0aW9uCisgICAgICAgICAgICAvLyBpbnNpZGUgb2YgdGhlIGNvbnN0cnVjdG9y
IG9yIG1ldGhvZC4KKyAgICAgICAgICAgIGlmICghbV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlv
bigpKSB7CisgICAgICAgICAgICAgICAgU3VwZXJCaW5kaW5nIGZ1bmN0aW9uU3VwZXJCaW5kaW5n
ID0gIWZ1bmN0aW9uU2NvcGUtPmlzQXJyb3dGdW5jdGlvbigpICYmICFjbG9zZXN0T3JkaW5hcnlG
dW5jdGlvblNjb3BlLT5pc0V2YWxDb250ZXh0KCkKKyAgICAgICAgICAgICAgICAgICAgPyBmdW5j
dGlvblNjb3BlLT5leHBlY3RlZFN1cGVyQmluZGluZygpCisgICAgICAgICAgICAgICAgICAgIDog
Y2xvc2VzdE9yZGluYXJ5RnVuY3Rpb25TY29wZS0+ZXhwZWN0ZWRTdXBlckJpbmRpbmcoKTsKKyAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25TdXBlckJpbmRpbmcgPT0g
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsICJzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250
ZXh0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFiYXNlSXNO
ZXdUYXJnZXQpCiAgICAgICAgIGJhc2UgPSBwYXJzZVByaW1hcnlFeHByZXNzaW9uKGNvbnRleHQp
OwogCkBAIC0zOTc1LDkgKzM5NjgsMjIgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgYm9vbCBpc1Vu
YXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCiAgICAgICAgICAgICAgICAgVHJlZUFyZ3VtZW50cyBh
cmd1bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhjb250ZXh0KTsKICAgICAgICAgICAgICAgICBmYWls
SWZGYWxzZShhcmd1bWVudHMsICJDYW5ub3QgcGFyc2UgY2FsbCBhcmd1bWVudHMiKTsKICAgICAg
ICAgICAgICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgY3VycmVu
dEZ1bmN0aW9uU2NvcGUoKS0+c2V0SGFzRGlyZWN0U3VwZXIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgU2NvcGVSZWYgZnVuY3Rpb25TY29wZSA9IGN1cnJlbnRGdW5jdGlvblNjb3BlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghZnVuY3Rpb25TY29wZS0+c2V0SGFzRGlyZWN0U3VwZXIoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgdW5uZWNlc3NhcnkgdG8gY2hlY2sgb2Yg
dXNpbmcgc3VwZXIgZHVyaW5nIHJlcGFyc2luZyBvbmUgbW9yZSB0aW1lLiBBbHNvIGl0IGNhbiBs
ZWFkIHRvIHN5bnRheCBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gY2FzZSBv
ZiBhcnJvdyBmdW5jdGlvbiBiZWNhdXNlIGR1cmluZyByZXBhcnNpbmcgd2UgZG9uJ3Qga25vdyB3
aGV0aGVyIHdlIGN1cnJlbnRseSBwYXJzZSB0aGUgYXJyb3cgZnVuY3Rpb24KKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGluc2lkZSBvZiB0aGUgY29uc3RydWN0b3Igb3IgbWV0aG9kLgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY29wZVJlZiBjbG9zZXN0T3JkaW5hcnlG
dW5jdGlvblNjb3BlID0gY2xvc2VzdFBhcmVudE9yZGluYXJ5RnVuY3Rpb25Ob25MZXhpY2FsU2Nv
cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdHJ1Y3RvcktpbmQgZnVuY3Rp
b25Db25zdHJ1Y3RvcktpbmQgPSAhZnVuY3Rpb25TY29wZS0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYg
IWNsb3Nlc3RPcmRpbmFyeUZ1bmN0aW9uU2NvcGUtPmlzRXZhbENvbnRleHQoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA/IGZ1bmN0aW9uU2NvcGUtPmNvbnN0cnVjdG9yS2luZCgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2xvc2VzdE9yZGluYXJ5RnVuY3Rp
b25TY29wZS0+Y29uc3RydWN0b3JLaW5kKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uQ29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgInN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25Db25zdHJ1
Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkLCAic3VwZXIgaXMgbm90IHZhbGlk
IGluIHRoaXMgY29udGV4dCIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U2NvcGUoKS0+aXNB
cnJvd0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RnVuY3Rpb25T
Y29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3VwZXJDYWxsKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmdW5jdGlvblNjb3BlLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VzU3Vw
ZXJDYWxsKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJhc2UgPSBjb250
ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKHN0YXJ0TG9jYXRpb24sIGJhc2UsIGFyZ3VtZW50cywg
ZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsK
ICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE0
NDU0NWIwYWEwZWVmYWMxZDBjYWNhYjVhMGUyM2JjZDRjMmVjMDguLmQ1YWEwY2NiMzY3MDgwYmY4
MTFhZjlkNWVkYjA1N2YxZGQ2YjY1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtNTMwLDExICs1MzAsMTEgQEAgc3RydWN0IFNjb3BlIHsKICAgICBib29sIGlzQXJy
b3dGdW5jdGlvbkJvdW5kYXJ5KCkgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeTsg
fQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uKCkgeyByZXR1cm4gbV9pc0Fycm93RnVuY3Rpb247
IH0KIAotICAgIGJvb2wgaGFzRGlyZWN0U3VwZXIoKSB7IHJldHVybiBtX2hhc0RpcmVjdFN1cGVy
OyB9Ci0gICAgdm9pZCBzZXRIYXNEaXJlY3RTdXBlcigpIHsgbV9oYXNEaXJlY3RTdXBlciA9IHRy
dWU7IH0KKyAgICBib29sIGhhc0RpcmVjdFN1cGVyKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEaXJl
Y3RTdXBlcjsgfQorICAgIGJvb2wgc2V0SGFzRGlyZWN0U3VwZXIoKSB7IHJldHVybiBzdGQ6OmV4
Y2hhbmdlKG1faGFzRGlyZWN0U3VwZXIsIHRydWUpOyB9CiAKLSAgICBib29sIG5lZWRzU3VwZXJC
aW5kaW5nKCkgeyByZXR1cm4gbV9uZWVkc1N1cGVyQmluZGluZzsgfQotICAgIHZvaWQgc2V0TmVl
ZHNTdXBlckJpbmRpbmcoKSB7IG1fbmVlZHNTdXBlckJpbmRpbmcgPSB0cnVlOyB9CisgICAgYm9v
bCBuZWVkc1N1cGVyQmluZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTdXBlckJpbmRpbmc7
IH0KKyAgICBib29sIHNldE5lZWRzU3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gc3RkOjpleGNoYW5n
ZShtX25lZWRzU3VwZXJCaW5kaW5nLCB0cnVlKTsgfQogICAgIAogICAgIHZvaWQgc2V0RXZhbENv
bnRleHRUeXBlKEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUpIHsgbV9ldmFsQ29udGV4
dFR5cGUgPSBldmFsQ29udGV4dFR5cGU7IH0KICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRl
eHRUeXBlKCkgeyByZXR1cm4gbV9ldmFsQ29udGV4dFR5cGU7IH0KQEAgLTEwMzQsNiArMTAzNCw3
IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUo
KSAmJiBtX3Njb3BlU3RhY2suc2l6ZSgpKTsKICAgICAgICAgd2hpbGUgKGkgJiYgKCFtX3Njb3Bl
U3RhY2tbaV0uaXNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzR2VuZXJh
dG9yQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNBcnJvd0Z1bmN0aW9uQm91bmRhcnko
KSkpCiAgICAgICAgICAgICBpLS07CisgICAgICAgIC8vIFdoZW4gcmVhY2hpbmcgdGhlIHRvcCBs
ZXZlbCBzY29wZSAoaXQgY2FuIGJlIG5vbiBvcmRpbmFyeSBmdW5jdGlvbiBzY29wZSksIHdlIHJl
dHVybiBpdC4KICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwogICAg
IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
ZXZhbC1hbmQtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2V2
YWwtYW5kLXN1cGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwOWRhOTMxYWY3ZTIxZWJhMWUwZTUwMTc3ZjVi
MmQxNDE2Mzk4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2V2YWwtYW5kLXN1cGVyLmpzCkBAIC0wLDAgKzEsMzcgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAh
PT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtT
dHJpbmcoZXJyb3IpfWApOworfQorCisKKworY2xhc3MgSGVsbG8geworICAgIG0oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGV2YWwoInN1cGVyKCkiKTsKKyAgICB9CisKKyAgICBuKCkKKyAgICB7
CisgICAgICAgIHJldHVybiAoMCwgZXZhbCkoInN1cGVyKCkiKTsKKyAgICB9Cit9OworCit2YXIg
aGVsbG8gPSBuZXcgSGVsbG8oKTsKK3Nob3VsZFRocm93KCgpID0+IGhlbGxvLm0oKSwgYFN5bnRh
eEVycm9yOiBzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0LmApOworc2hvdWxkVGhy
b3coKCkgPT4gaGVsbG8ubigpLCBgU3ludGF4RXJyb3I6IHN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0
aGlzIGNvbnRleHQuYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1hbmQtc3VwZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1hbmQtc3VwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVkNTI0MDhmNWJj
ODU5MmExMmYyZjljNmJkOTVhZTVjOTc2OTI0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWFuZC1zdXBlci5qcwpAQCAtMCww
ICsxLDQyIEBACitmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7Cisg
ICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBldmFsKHNjcmlwdCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJy
b3IpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgc3ludGF4IGVycm9yIG5vdCB0
aHJvd24iKTsKKworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCit0ZXN0
U3ludGF4RXJyb3IoYAorY2xhc3MgQmFzZSB7CisgICAgaGVsbG8oKQorICAgIHsKKyAgICAgICAg
cHJpbnQoIkhlbGxvIik7CisgICAgfQorCisgICAgKm9rKCkKKyAgICB7CisgICAgICAgIHN1cGVy
LmhlbGxvKCk7CisgICAgfQorfQorCitjbGFzcyBIZWxsbyBleHRlbmRzIEJhc2UgeworICAgICpn
ZW4oKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9Cit9CitgLCBgU3ludGF4RXJyb3I6
IHN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQuYCk7CisKKwordGVzdFN5bnRheEVy
cm9yKGAKK2Z1bmN0aW9uICpoZWxsbygpCit7CisgICAgc3VwZXIuaGVsbG8oKTsKK30KK2AsIGBT
eW50YXhFcnJvcjogc3VwZXIgaXMgbm90IHZhbGlkIGluIHRoaXMgY29udGV4dC5gKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>