<?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>142974</bug_id>
          
          <creation_ts>2015-03-23 11:57:20 -0700</creation_ts>
          <short_desc>Assertion firing in JavaScriptCore/parser/parser.h for statesman.com site</short_desc>
          <delta_ts>2015-03-26 16:13:20 -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>Mac</rep_platform>
          <op_sys>OS X 10.10</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1079328</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-23 11:57:20 -0700</bug_when>
    <thetext>After updating sources this morning and rebuilding, a test case for a bug I am working on now asserts in JavaScriptCore:

Test site:  &lt;http://www.statesman.com/s/sports/&gt;

Assertion:     ASSERT(m_source-&gt;startColumn() &gt; 0); (Line 921 in JavaScriptCore/parser/Parser.h)

Call stack:
Thread 1Queue : com.apple.main-thread (serial)
#0	0x000000010d4aa6da in WTFCrash at /Volumes/Data/Projects/WebKit/OpenSource/Source/WTF/wtf/Assertions.cpp:321
#1	0x000000010cb320b9 in std::__1::unique_ptr&lt;JSC::ProgramNode, std::__1::default_delete&lt;JSC::ProgramNode&gt; &gt; JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parse&lt;JSC::ProgramNode&gt;(JSC::ParserError&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/parser/Parser.h:921
#2	0x000000010cb308fb in std::__1::unique_ptr&lt;JSC::ProgramNode, std::__1::default_delete&lt;JSC::ProgramNode&gt; &gt; JSC::parse&lt;JSC::ProgramNode&gt;(JSC::VM*, JSC::SourceCode const&amp;, JSC::FunctionParameters*, JSC::Identifier const&amp;, JSC::JSParserBuiltinMode, JSC::JSParserStrictMode, JSC::JSParserCodeType, JSC::ParserError&amp;, JSC::JSTextPosition*, JSC::ConstructorKind) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/parser/Parser.h:998
#3	0x000000010cbdde2f in JSC::UnlinkedProgramCodeBlock* JSC::CodeCache::getGlobalCodeBlock&lt;JSC::UnlinkedProgramCodeBlock, JSC::ProgramExecutable&gt;(JSC::VM&amp;, JSC::ProgramExecutable*, JSC::SourceCode const&amp;, JSC::JSParserBuiltinMode, JSC::JSParserStrictMode, JSC::DebuggerMode, JSC::ProfilerMode, JSC::ParserError&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/runtime/CodeCache.cpp:95
#4	0x000000010cbdd0df in JSC::CodeCache::getProgramCodeBlock(JSC::VM&amp;, JSC::ProgramExecutable*, JSC::SourceCode const&amp;, JSC::JSParserBuiltinMode, JSC::JSParserStrictMode, JSC::DebuggerMode, JSC::ProfilerMode, JSC::ParserError&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/runtime/CodeCache.cpp:125
#5	0x000000010d1477cf in JSC::JSGlobalObject::createProgramCodeBlock(JSC::ExecState*, JSC::ProgramExecutable*, JSC::JSObject**) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/runtime/JSGlobalObject.cpp:789
#6	0x000000010cf13c1d in JSC::ProgramExecutable::initializeGlobalProperties(JSC::VM&amp;, JSC::ExecState*, JSC::JSScope*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/runtime/Executable.cpp:496
#7	0x000000010d0a9f73 in JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/interpreter/Interpreter.cpp:830
#8	0x000000010cc07f30 in JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/JavaScriptCore/runtime/Completion.cpp:83
#9	0x000000010fbd99f5 in WebCore::JSMainThreadExecState::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/bindings/js/JSMainThreadExecState.h:62
#10	0x000000011061510d in WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/bindings/js/ScriptController.cpp:164
#11	0x0000000110615254 in WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/bindings/js/ScriptController.cpp:180
#12	0x00000001106243d7 in WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/dom/ScriptElement.cpp:301
#13	0x0000000110623360 in WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/dom/ScriptElement.cpp:237
#14	0x000000010f634c06 in WebCore::HTMLScriptRunner::runScript(WebCore::Element*, WTF::TextPosition const&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLScriptRunner.cpp:309
#15	0x000000010f634a09 in WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr&lt;WebCore::Element&gt;, WTF::TextPosition const&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLScriptRunner.cpp:178
#16	0x000000010f56f5d0 in WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLDocumentParser.cpp:195
#17	0x000000010f56f6d1 in WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode, WebCore::PumpSession&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLDocumentParser.cpp:213
#18	0x000000010f56e9e8 in WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLDocumentParser.cpp:259
#19	0x000000010f56e5c9 in WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLDocumentParser.cpp:166
#20	0x000000010f570719 in WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution() at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLDocumentParser.cpp:496
#21	0x000000010f570b18 in WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLDocumentParser.cpp:536
#22	0x000000010f570b7f in non-virtual thunk to WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/html/parser/HTMLDocumentParser.cpp:537
#23	0x000000010ed1dd52 in WebCore::CachedResource::checkNotify() at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/loader/cache/CachedResource.cpp:291
#24	0x000000010ed1de64 in WebCore::CachedResource::finishLoading(WebCore::SharedBuffer*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/loader/cache/CachedResource.cpp:307
#25	0x000000010ed3cee1 in WebCore::CachedScript::finishLoading(WebCore::SharedBuffer*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/loader/cache/CachedScript.cpp:86
#26	0x00000001108e0495 in WebCore::SubresourceLoader::didFinishLoading(double) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebCore/loader/SubresourceLoader.cpp:364
#27	0x000000010a25bdac in WebKit::WebResourceLoader::didFinishResourceLoad(double) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/WebProcess/Network/WebResourceLoader.cpp:162
#28	0x000000010a261143 in void IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;, 0ul&gt;(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;&amp;&amp;, std::index_sequence&lt;0ul&gt;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Platform/IPC/HandleMessage.h:16
#29	0x000000010a261098 in void IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;, std::make_index_sequence&lt;1ul&gt; &gt;(std::__1::tuple&lt;double&gt;&amp;&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double)) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Platform/IPC/HandleMessage.h:22
#30	0x000000010a26054d in void IPC::handleMessage&lt;Messages::WebResourceLoader::DidFinishResourceLoad, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double)&gt;(IPC::MessageDecoder&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double)) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Platform/IPC/HandleMessage.h:92
#31	0x000000010a25fc82 in WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebKit2/WebResourceLoaderMessageReceiver.cpp:71
#32	0x0000000109b75680 in WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/WebProcess/Network/NetworkProcessConnection.cpp:60
#33	0x0000000109986b33 in IPC::Connection::dispatchMessage(IPC::MessageDecoder&amp;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Platform/IPC/Connection.cpp:847
#34	0x000000010997ef40 in IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Platform/IPC/Connection.cpp:870
#35	0x000000010998712f in IPC::Connection::dispatchOneMessage() at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Platform/IPC/Connection.cpp:898
#36	0x000000010998881d in IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_9::operator()() const at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Platform/IPC/Connection.cpp:841
#37	0x00000001099887ec in decltype(std::__1::forward&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_9&amp;&gt;(fp)(std::__1::forward&lt;&gt;(fp0))) std::__1::__invoke&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_9&amp;&gt;(IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_9&amp;&amp;&amp;) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/usr/bin/../include/c++/v1/__functional_base:413
#38	0x00000001099887db in std::__1::__function::__func&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_9, std::__1::allocator&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;)::$_9&gt;, void ()&gt;::operator()() at /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/usr/bin/../include/c++/v1/functional:1370
#39	0x000000010cff345a in std::__1::function&lt;void ()&gt;::operator()() const at /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.10.xctoolchain/usr/bin/../include/c++/v1/functional:1755
#40	0x000000010d4e5551 in WTF::RunLoop::performWork() at /Volumes/Data/Projects/WebKit/OpenSource/Source/WTF/wtf/RunLoop.cpp:119
#41	0x000000010d4e6724 in WTF::RunLoop::performWork(void*) at /Volumes/Data/Projects/WebKit/OpenSource/Source/WTF/wtf/cf/RunLoopCF.cpp:38
#42	0x00007fff8d0daa01 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#43	0x00007fff8d0ccc5c in __CFRunLoopDoSources0 ()
#44	0x00007fff8d0cc1bf in __CFRunLoopRun ()
#45	0x00007fff8d0cbbd8 in CFRunLoopRunSpecific ()
#46	0x00007fff83b6a56f in RunCurrentEventLoopInMode ()
#47	0x00007fff83b6a2ea in ReceiveNextEventCommon ()
#48	0x00007fff83b6a12b in _BlockUntilNextEventMatchingListInModeWithFilter ()
#49	0x00007fff86677a7b in _DPSNextEvent ()
#50	0x00007fff86677028 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#51	0x00007fff8666ccb3 in -[NSApplication run] ()
#52	0x00007fff865e9424 in NSApplicationMain ()
#53	0x00007fff89ed7958 in _xpc_objc_main ()
#54	0x00007fff89ed9060 in xpc_main ()
#55	0x00000001056d8185 in main at /Volumes/Data/Projects/WebKit/OpenSource/Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.Development.mm:162
#56	0x00007fff8c0345c9 in start ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079330</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-03-23 11:58:53 -0700</bug_when>
    <thetext>*** Bug 142973 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079370</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-23 13:34:06 -0700</bug_when>
    <thetext>I think I caused this in &lt;http://trac.webkit.org/changeset/181810&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079371</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-23 13:34:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/20263890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080117</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-25 17:17:31 -0700</bug_when>
    <thetext>It looks like the HTML parser sometimes -- including on this site -- produces crazy negative column numbers, and the sanitization that I relaxed in &lt;http://trac.webkit.org/changeset/181810&gt; used to protect us against them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080118</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-25 17:18:12 -0700</bug_when>
    <thetext>I don&apos;t really like the solution I came up with for attribute event listeners before, so I&apos;ll take this opportunity to fix them up a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080222</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-25 23:32:30 -0700</bug_when>
    <thetext>Also at http://www.theblaze.com/stories/2015/03/25/man-thought-he-had-to-worry-about-people-stealing-his-packages-but-was-surprised-by-what-he-caught-a-mail-carrier-doing-on-camera-instead/ (from bug 143054).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080429</commentid>
    <comment_count>7</comment_count>
      <attachid>249520</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 15:34:06 -0700</bug_when>
    <thetext>Created attachment 249520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080433</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-26 15:36:28 -0700</bug_when>
    <thetext>Attachment 249520 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 19 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>1080434</commentid>
    <comment_count>9</comment_count>
      <attachid>249520</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-26 15:40:48 -0700</bug_when>
    <thetext>Comment on attachment 249520
Patch

Will the line number rebasing require changes to LayoutTests/inspector/debugger/{breakpoint-columns,breakpoint-scope,search-scripts} tests?  These use line number in the tests and expected output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080437</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 15:43:38 -0700</bug_when>
    <thetext>&gt; Will the line number rebasing require changes to
&gt; LayoutTests/inspector/debugger/{breakpoint-columns,breakpoint-scope,search-
&gt; scripts} tests?  These use line number in the tests and expected output.

I didn&apos;t see any changes in those tests when I ran them.

For reasons that are subtle, the old way and the new way are equivalent for most line numbers -- it&apos;s just that the new way is more robust and catches some corner cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080451</commentid>
    <comment_count>11</comment_count>
      <attachid>249527</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 15:57:16 -0700</bug_when>
    <thetext>Created attachment 249527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080452</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 15:57:52 -0700</bug_when>
    <thetext>Added a test specifically covering the behavior change I described in Comment 10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080453</commentid>
    <comment_count>13</comment_count>
      <attachid>249528</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 15:58:44 -0700</bug_when>
    <thetext>Created attachment 249528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080460</commentid>
    <comment_count>14</comment_count>
      <attachid>249528</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-26 16:06:04 -0700</bug_when>
    <thetext>Comment on attachment 249528
Patch

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

r=me

&gt; Source/JavaScriptCore/interpreter/StackVisitor.cpp:337
&gt; +    if (codeBlock-&gt;ownerExecutable()-&gt;hasOverrideLineNo())
&gt; +        line = codeBlock-&gt;ownerExecutable()-&gt;overrideLineNo();

Are the divot details important? If you have a multiline inline attribute, will this provide the expected line for messages/errors for each line? Test:

    &lt;div onclick=&quot;console.log(1);
        console.log(2);
        console.log(3);&quot;&gt;Click Me&lt;/div&gt;

&gt; Source/JavaScriptCore/runtime/Executable.h:363
&gt; +    void setOverrideLineNo(int overrideLineNo) { m_overrideLineNo = overrideLineNo; }
&gt; +    bool hasOverrideLineNo() { return m_overrideLineNo != -1; }
&gt; +    int overrideLineNo() { return m_overrideLineNo;; }

Normally we avoid abbreviations. Especially weird ones like &quot;No&quot; instead of &quot;Number&quot;, despite the pre-existing case, can we make the new versions &quot;overrideLineNumber&quot;?

Nit: The bottom two look like they can be made const.
Nit: Double semicolon on line 363.

&gt; Source/WebCore/bindings/js/JSLazyEventListener.cpp:109
&gt; +    // We want all errors to refer back to the line on which our attribute was
&gt; +    // declared, regardless of any newlines in our JavaScript source text.
&gt; +    int overrideLineNo = m_position.m_line.oneBasedInt();

Ahh, it seems your intent is to always be the line of the attribute and not just with an original offset starting from the the line of the attribute. That seems fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080463</commentid>
    <comment_count>15</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 16:08:46 -0700</bug_when>
    <thetext>&gt; Are the divot details important? If you have a multiline inline attribute,
&gt; will this provide the expected line for messages/errors for each line? Test:
&gt; 
&gt;     &lt;div onclick=&quot;console.log(1);
&gt;         console.log(2);
&gt;         console.log(3);&quot;&gt;Click Me&lt;/div&gt;

&gt; &gt; Source/WebCore/bindings/js/JSLazyEventListener.cpp:109
&gt; &gt; +    // We want all errors to refer back to the line on which our attribute was
&gt; &gt; +    // declared, regardless of any newlines in our JavaScript source text.
&gt; &gt; +    int overrideLineNo = m_position.m_line.oneBasedInt();
&gt; 
&gt; Ahh, it seems your intent is to always be the line of the attribute and not
&gt; just with an original offset starting from the the line of the attribute.
&gt; That seems fine.

Right. It would be nicer to get the exact right line in this multiline case, but that&apos;s very tricky because: (1) Newlines in JavaScript source text do not always break a line in the .html file; (2) JavaScript anonymous function rules add their own newlines. So, I think the best we can do for these attributes (and it&apos;s pretty good) is just to guarantee that we&apos;ll point you back at the location of the attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080466</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 16:11:55 -0700</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/runtime/Executable.h:363
&gt; &gt; +    void setOverrideLineNo(int overrideLineNo) { m_overrideLineNo = overrideLineNo; }
&gt; &gt; +    bool hasOverrideLineNo() { return m_overrideLineNo != -1; }
&gt; &gt; +    int overrideLineNo() { return m_overrideLineNo;; }
&gt; 
&gt; Normally we avoid abbreviations. Especially weird ones like &quot;No&quot; instead of
&gt; &quot;Number&quot;, despite the pre-existing case, can we make the new versions
&gt; &quot;overrideLineNumber&quot;?

Yes. I&apos;ll take care of this in a follow-up style patch.

&gt; Nit: The bottom two look like they can be made const.
&gt; Nit: Double semicolon on line 363.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080467</commentid>
    <comment_count>17</comment_count>
      <attachid>249528</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-26 16:12:52 -0700</bug_when>
    <thetext>Comment on attachment 249528
Patch

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

r=me

&gt; Source/WebCore/bindings/js/ScriptController.cpp:281
&gt; +    // FIXME: If we are not currently parsing, we should use our current location
&gt; +    // in JavaScript, to cover cases like &quot;element.setAttribute(&apos;click&apos;, ...)&quot;.
&gt; +
&gt; +    // FIXME: This location maps to the end of the HTML tag, and not to the
&gt; +    // exact column number belonging to the event handler attribute.

Add defects for these FIXME&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080468</commentid>
    <comment_count>18</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-26 16:13:20 -0700</bug_when>
    <thetext>Committed r182034: &lt;http://trac.webkit.org/changeset/182034&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249520</attachid>
            <date>2015-03-26 15:34:06 -0700</date>
            <delta_ts>2015-03-26 15:57:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142974-20150326153328.patch</filename>
            <type>text/plain</type>
            <size>23405</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE1LTAzLTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXNzZXJ0aW9uIGZpcmluZyBpbiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvcGFyc2VyLmggZm9y
IHN0YXRlc21hbi5jb20gc2l0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyOTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3byB0aGluZ3M6CisKKyAgICAgICAgKDEpIFJl
c3RvcmUgSmF2YVNjcmlwdENvcmUncyBzYW5pdGl6YXRpb24gb2YgbGluZSBhbmQgY29sdW1uIG51
bWJlcnMgdG8KKyAgICAgICAgb25lLWJhc2VkIHZhbHVlcy4KKworICAgICAgICBXZSBuZWVkIHRo
aXMgYmVjYXVzZSBXZWJDb3JlIHNvbWV0aW1lcyBwcm92aWRlcyBodWdlIG5lZ2F0aXZlIGNvbHVt
bgorICAgICAgICBudW1iZXJzLgorCisgICAgICAgICgyKSBTb2x2ZSB0aGUgYXR0cmlidXRlIGV2
ZW50IGxpc3RlbmVyIGxpbmUgbnVtYmVyaW5nIHByb2JsZW0gYSBkaWZmZXJlbnQKKyAgICAgICAg
d2F5OiBSYXRoZXIgdGhhbiBvZmZzZXRpbmcgYWxsIGxpbmUgbnVtYmVycyBieSAtMSBpbiBhbiBh
dHRyaWJ1dGUgZXZlbnQKKyAgICAgICAgbGlzdGVuZXIgaW4gb3JkZXIgdG8gYXJyYW5nZSBmb3Ig
YSBjdXN0b20gcmVzdWx0LCBpbnN0ZWFkIHVzZSBhbiBleHBsaWNpdAorICAgICAgICBmZWF0dXJl
IGZvciBzYXlpbmcgImFsbCBlcnJvcnMgaW4gdGhpcyBjb2RlIHNob3VsZCBtYXAgdG8gdGhpcyBs
aW5lIG51bWJlciIuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6Y29tcHV0ZUxp
bmVBbmRDb2x1bW4pOgorICAgICAgICAoSlNDOjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6
OkZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVtbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckVy
cm9yLmg6CisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vycm9yT2JqZWN0KTogUGx1bWIg
dGhyb3VnaCBhbiBvdmVycmlkZSBsaW5lIG51bWJlci4KKyAgICAgICAgV2hlbiBhIGZ1bmN0aW9u
IGhhcyBhbiBvdmVycmlkZSBsaW5lIG51bWJlciwgYWxsIHN5bnRheCBhbmQgcnVudGltZQorICAg
ICAgICBlcnJvcnMgaW4gdGhlIGZ1bmN0aW9uIHdpbGwgbWFwIHRvIGl0LiBUaGlzIGlzIHVzZWZ1
bCBmb3IgYXR0cmlidXRlIGV2ZW50CisgICAgICAgIGxpc3RlbmVycy4KKyAKKyAgICAgICAgKiBw
YXJzZXIvU291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2Rl
KTogUmVzdG9yZSB0aGUgb2xkIHNhbml0aXphdGlvbiBvZiBsaW5lIGFuZAorICAgICAgICBjb2x1
bW4gbnVtYmVycyB0byBvbmUtYmFzZWQgaW50ZWdlcnMuIEl0IHdhcyBraW5kIG9mIGEgaGFjayB0
byByZW1vdmUgdGhpcy4KKworICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6c2V0T3Zl
cnJpZGVMaW5lTm8pOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpoYXNPdmVycmlk
ZUxpbmVObyk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om92ZXJyaWRlTGluZU5v
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6IFBsdW1iIHRocm91Z2ggYW4gb3ZlcnJp
ZGUgbGluZSBudW1iZXIuCisKIDIwMTUtMDMtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBJZiB3ZSdyZSBpbiBjb2RlIGZvciBhY2Nlc3Npbmcgc2NvcGVkIGFy
Z3VtZW50cywgd2Ugc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoZSBvYmplY3QgaXMgYSBzY29w
ZWQgYXJndW1lbnRzIHJhdGhlciB0aGFuIGNoZWNraW5nIGlmIGl0J3MgYSBkaXJlY3QgYXJndW1l
bnRzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODE5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzIsNyArMTMyLDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaAog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0
KTsKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVyU291cmNlKQorRnVuY3Rpb25FeGVj
dXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIG93bmVyU291cmNlLCBpbnQgb3ZlcnJpZGVMaW5lTm8pCiB7CiAgICAgU291cmNl
Q29kZSBzb3VyY2UgPSBtX3NvdXJjZU92ZXJyaWRlID8gU291cmNlQ29kZShtX3NvdXJjZU92ZXJy
aWRlKSA6IG93bmVyU291cmNlOwogICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJz
dExpbmUoKSArIG1fZmlyc3RMaW5lT2Zmc2V0OwpAQCAtMTQ1LDEwICsxNDUsMTUgQEAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlYwogICAgIHVuc2lnbmVkIGVuZENvbHVt
biA9IG1fdW5saW5rZWRCb2R5RW5kQ29sdW1uICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBz
dGFydENvbHVtbiA6IDEpOwogCiAgICAgU291cmNlQ29kZSBjb2RlKHNvdXJjZS5wcm92aWRlcigp
LCBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBtX3NvdXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBz
dGFydENvbHVtbik7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBj
b2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIG1fbGluZUNvdW50LCBzdGFydENvbHVt
biwgZW5kQ29sdW1uKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIHJlc3VsdCA9IEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSAr
IG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsKKyAgICBpZiAob3ZlcnJpZGVM
aW5lTm8gIT0gLTEpCisgICAgICAgIHJlc3VsdC0+c2V0T3ZlcnJpZGVMaW5lTm8ob3ZlcnJpZGVM
aW5lTm8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgRXhlY1N0YXRlJiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTT2JqZWN0KiYgZXhjZXB0aW9uKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKKyAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCisg
ICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVObykKIHsKICAgICBQYXJz
ZXJFcnJvciBlcnJvcjsKICAgICBWTSYgdm0gPSBleGVjLnZtKCk7CkBAIC0xNjAsNyArMTY1LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuYwogICAgICAgICBnbG9i
YWxPYmplY3QuZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKCZleGVjLCBzb3VyY2UucHJvdmlkZXIo
KSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwogCiAgICAgaWYgKGVycm9yLmlzVmFs
aWQoKSkgewotICAgICAgICBleGNlcHRpb24gPSBlcnJvci50b0Vycm9yT2JqZWN0KCZnbG9iYWxP
YmplY3QsIHNvdXJjZSk7CisgICAgICAgIGV4Y2VwdGlvbiA9IGVycm9yLnRvRXJyb3JPYmplY3Qo
Jmdsb2JhbE9iamVjdCwgc291cmNlLCBvdmVycmlkZUxpbmVObyk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsOSArMTM2LDExIEBAIHB1YmxpYzoKICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUs
IAogICAgICAgICBQYXJzZXJFcnJvciYpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uKTsKKyAgICBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAorICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhj
ZXB0aW9uLCAKKyAgICAgICAgaW50IG92ZXJyaWRlTGluZU5vKTsKIAotICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbGluayhWTSYsIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGxpbmsoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IG92ZXJyaWRlTGluZU5vID0g
LTEpOwogCiAgICAgdm9pZCBjbGVhckNvZGVGb3JSZWNvbXBpbGF0aW9uKCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsOSBAQCB2b2lk
IFN0YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKHVuCiAKICAgICBsaW5lID0gZGl2b3RM
aW5lICsgbGluZU9mZnNldDsKICAgICBjb2x1bW4gPSBkaXZvdENvbHVtbiArIChkaXZvdExpbmUg
PyAxIDogZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKworICAgIGlmIChleGVjdXRhYmxlLT5oYXNP
dmVycmlkZUxpbmVObygpKQorICAgICAgICBsaW5lID0gZXhlY3V0YWJsZS0+b3ZlcnJpZGVMaW5l
Tm8oKTsKIH0KIAogdm9pZCBTdGFja0ZyYW1lOjpleHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBp
bnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVk
JiBjb2x1bW4pCkBAIC00OTIsNyArNDk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFN0
YWNrRnJhbWUgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgU3Ryb25nPEpTT2JqZWN0Pih2bSwg
dmlzaXRvci0+Y2FsbGVlKCkpLAogICAgICAgICAgICAgICAgICAgICBnZXRTdGFja0ZyYW1lQ29k
ZVR5cGUodmlzaXRvciksCi0gICAgICAgICAgICAgICAgICAgIFN0cm9uZzxFeGVjdXRhYmxlQmFz
ZT4odm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpLAorICAgICAgICAgICAgICAgICAg
ICBTdHJvbmc8U2NyaXB0RXhlY3V0YWJsZT4odm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCkpLAogICAgICAgICAgICAgICAgICAgICBTdHJvbmc8VW5saW5rZWRDb2RlQmxvY2s+KHZtLCBj
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpLAogICAgICAgICAgICAgICAgICAgICBjb2Rl
QmxvY2stPnNvdXJjZSgpLAogICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5saW5lTm8oKSwKQEAgLTUwMyw3ICs1MDYsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHMpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7IFN0cm9uZzxK
U09iamVjdD4odm0sIHZpc2l0b3ItPmNhbGxlZSgpKSwgU3RhY2tGcmFtZU5hdGl2ZUNvZGUsIFN0
cm9uZzxFeGVjdXRhYmxlQmFzZT4oKSwgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPigpLCAwLCAw
LCAwLCAwLCAwLCBTdHJpbmcoKX07CisgICAgICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBT
dHJvbmc8SlNPYmplY3Q+KHZtLCB2aXNpdG9yLT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVD
b2RlLCBTdHJvbmc8U2NyaXB0RXhlY3V0YWJsZT4oKSwgU3Ryb25nPFVubGlua2VkQ29kZUJsb2Nr
PigpLCAwLCAwLCAwLCAwLCAwLCBTdHJpbmcoKX07CiAgICAgICAgICAgICAgICAgbV9yZXN1bHRz
LmFwcGVuZChzKTsKICAgICAgICAgICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxODE5NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgU3Rh
Y2tGcmFtZSB7CiAgICAgICAgIFN0cm9uZzxKU09iamVjdD4gY2FsbGVlOwogICAgICAgICBTdGFj
a0ZyYW1lQ29kZVR5cGUgY29kZVR5cGU7Ci0gICAgICAgIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4g
ZXhlY3V0YWJsZTsKKyAgICAgICAgU3Ryb25nPFNjcmlwdEV4ZWN1dGFibGU+IGV4ZWN1dGFibGU7
CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4gY29kZUJsb2NrOwogICAgICAgICBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IGNvZGU7CiAgICAgICAgIGludCBsaW5lT2Zmc2V0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDkgQEAg
dm9pZCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb21wdXRlTGluZUFuZAogCiAgICAgbGluZSA9IGRp
dm90TGluZSArIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxpbmVObygpOwogICAgIGNv
bHVtbiA9IGRpdm90Q29sdW1uICsgKGRpdm90TGluZSA/IDEgOiBjb2RlQmxvY2stPmZpcnN0TGlu
ZUNvbHVtbk9mZnNldCgpKTsKKworICAgIGlmIChjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5oYXNPdmVycmlkZUxpbmVObygpKQorICAgICAgICBsaW5lID0gY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+b3ZlcnJpZGVMaW5lTm8oKTsKIH0KIAogdm9pZCBTdGFja1Zpc2l0b3I6OkZy
YW1lOjpyZXRyaWV2ZUV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQs
IGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgJKHJldmlzaW9uIDE4
MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsMTMgKzg1LDE4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAgICBpbnQgbGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZTsgfQogCi0gICAgSlNPYmplY3QqIHRvRXJyb3JPYmplY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAg
IEpTT2JqZWN0KiB0b0Vycm9yT2JqZWN0KAorICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAorICAgICAgICBpbnQgb3ZlcnJpZGVM
aW5lTm8gPSAtMSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNh
c2UgRXJyb3JOb25lOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGNhc2Ug
U3ludGF4RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gYWRkRXJyb3JJbmZvKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIG1fbWVzc2Fn
ZSksIG1fbGluZSwgc291cmNlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRFcnJvckluZm8oCisg
ICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIAorICAgICAgICAgICAg
ICAgIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgbV9tZXNzYWdlKSwgCisgICAgICAg
ICAgICAgICAgb3ZlcnJpZGVMaW5lTm8gPT0gLTEgPyBtX2xpbmUgOiBvdmVycmlkZUxpbmVObywg
c291cmNlKTsKICAgICAgICAgY2FzZSBFdmFsRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBtX21lc3NhZ2UpOwogICAgICAgICBjYXNlIFN0
YWNrT3ZlcmZsb3c6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCShyZXZpc2lvbiAxODE5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKICAgICAgICAgICAgICwg
bV9zdGFydENoYXIoMCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNvdXJj
ZSgpLmxlbmd0aCgpKQotICAgICAgICAgICAgLCBtX2ZpcnN0TGluZShzdGQ6Om1heChmaXJzdExp
bmUsIDApKQotICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0ZDo6bWF4KHN0YXJ0Q29sdW1u
LCAwKSkKKyAgICAgICAgICAgICwgbV9maXJzdExpbmUoc3RkOjptYXgoZmlyc3RMaW5lLCAxKSkK
KyAgICAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGQ6Om1heChzdGFydENvbHVtbiwgMSkpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCkBAIC03Miw4ICs3Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICAgICAgICAgLCBtX3N0YXJ0
Q2hhcihzdGFydCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKGVuZCkKLSAgICAgICAgICAgICwg
bV9maXJzdExpbmUoc3RkOjptYXgoZmlyc3RMaW5lLCAwKSkKLSAgICAgICAgICAgICwgbV9zdGFy
dENvbHVtbihzdGQ6Om1heChzdGFydENvbHVtbiwgMCkpCisgICAgICAgICAgICAsIG1fZmlyc3RM
aW5lKHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpCisgICAgICAgICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RkOjptYXgoc3RhcnRDb2x1bW4sIDEpKQogICAgICAgICB7CiAgICAgICAgIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9u
IDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAgU2NyaXB0RXhlY3V0YWJsZTo6U2Ny
aXB0RXhlY3V0YWJsZShTdHJ1YwogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkK
ICAgICAsIG1fbmV2ZXJJbmxpbmUoZmFsc2UpCiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxvb3Ao
ZmFsc2UpCisgICAgLCBtX292ZXJyaWRlTGluZU5vKC0xKQogICAgICwgbV9maXJzdExpbmUoLTEp
CiAgICAgLCBtX2xhc3RMaW5lKC0xKQogICAgICwgbV9zdGFydENvbHVtbihVSU5UX01BWCkKQEAg
LTYwOCwxMiArNjA5LDE3IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygp
CiAjZW5kaWYKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZy
b21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4ZWNTdGF0ZSYgZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdComIGV4Y2VwdGlvbikKLXsKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKG5hbWUsIGV4ZWMsIHNvdXJjZSwgZXhjZXB0
aW9uKTsKK0Z1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFs
Q29kZSgKKyAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgCisgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVy
cmlkZUxpbmVObykKK3sKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gCisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xv
YmFsQ29kZSgKKyAgICAgICAgICAgIG5hbWUsIGV4ZWMsIHNvdXJjZSwgZXhjZXB0aW9uLCBvdmVy
cmlkZUxpbmVObyk7CiAgICAgaWYgKCF1bmxpbmtlZEV4ZWN1dGFibGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmsoZXhlYy52bSgp
LCBzb3VyY2UpOworCisgICAgcmV0dXJuIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayhleGVjLnZt
KCksIHNvdXJjZSwgb3ZlcnJpZGVMaW5lTm8pOwogfQogCiB2b2lkIEV4ZWN1dGFibGVCYXNlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxODE5NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw2ICsz
NTgsOSBAQCBwdWJsaWM6CiAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5wcm92aWRlcklEKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9CiAgICAgaW50IGxpbmVO
bygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lOyB9CisgICAgdm9pZCBzZXRPdmVycmlkZUxp
bmVObyhpbnQgb3ZlcnJpZGVMaW5lTm8pIHsgbV9vdmVycmlkZUxpbmVObyA9IG92ZXJyaWRlTGlu
ZU5vOyB9CisgICAgYm9vbCBoYXNPdmVycmlkZUxpbmVObygpIHsgcmV0dXJuIG1fb3ZlcnJpZGVM
aW5lTm8gIT0gLTE7IH0KKyAgICBpbnQgb3ZlcnJpZGVMaW5lTm8oKSB7IHJldHVybiBtX292ZXJy
aWRlTGluZU5vOzsgfQogICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExp
bmU7IH0KICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRD
b2x1bW47IH0KICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENv
bHVtbjsgfQpAQCAtNDI5LDYgKzQzMiw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtX25ldmVySW5saW5lOwogICAgIGJvb2wgbV9kaWRU
cnlUb0VudGVySW5Mb29wOworICAgIGludCBtX292ZXJyaWRlTGluZU5vOwogICAgIGludCBtX2Zp
cnN0TGluZTsKICAgICBpbnQgbV9sYXN0TGluZTsKICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1u
OwpAQCAtNTQ5LDcgKzU1Myw5IEBAIHB1YmxpYzoKICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICB9Ci0gICAgc3Rh
dGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9u
KTsKKyAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYs
IAorICAgICAgICBKU09iamVjdComIGV4Y2VwdGlvbiwgaW50IG92ZXJyaWRlTGluZU5vKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4NiwxMCBAQCBK
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIGNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwg
YXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKIH0KIAotSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29u
c3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIAorICAgIGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAorICAgIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVObykKIHsKICAgICAvLyBI
b3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIg
Y29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzUwLgpAQCAtMTEzLDcgKzExNiw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEUKIAogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJj
ZShwcm9ncmFtLCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9u
ID0gbnVsbHB0cjsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gRnVuY3Rpb25F
eGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5hbWUsICpleGVjLCBzb3VyY2UsIGV4
Y2VwdGlvbik7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25OYW1lLCAqZXhlYywgc291cmNlLCBleGNl
cHRpb24sIG92ZXJyaWRlTGluZU5vKTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFT
U0VSVChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBleGNlcHRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTgxOTY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw3ICs1OSw5IEBAIHByaXZhdGU6CiBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
V1RGOjpUZXh0UG9zaXRpb24mKTsKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYpOworSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKAorICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNv
bnN0IElkZW50aWZpZXImLCAKKyAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3Np
dGlvbiYsIGludCBvdmVycmlkZUxpbmVObyA9IC0xKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTAzLTI2ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9uIGZpcmluZyBp
biBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvcGFyc2VyLmggZm9yIHN0YXRlc21hbi5jb20gc2l0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OmluaXRpYWxpemVK
U0Z1bmN0aW9uKTogVXNlIHRoZSBuZXcgb3ZlcnJpZGUKKyAgICAgICAgbGluZSBudW1iZXIgQVBJ
IHRvIGd1YXJhbnRlZSB0aGF0IGVycm9ycyB3aWxsIG1hcCB0byB0aGUgLmh0bWwgZmlsZSBsb2Nh
dGlvbnMKKyAgICAgICAgdGhhdCB3ZSBsaWtlLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
dmVudEhhbmRsZXJQb3NpdGlvbik6IEFkZGVkIGEgRklYTUUgdG8gY292ZXIKKyAgICAgICAgc29t
ZSBjYXNlcyB3aGVyZSBvdXIgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgYXJlIHN0aWxsIG5vbnNl
bnNlLgorCiAyMDE1LTAzLTI2ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBzdGF0ZSBtYWNoaW5nIGRlYnVnZ2luZyBhZnRlciByMTgxOTY0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmNwcAkocmV2aXNpb24gMTgxOTY3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAK
ICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxydW50aW1lL0V4ZWN1dGFibGUuaD4KICNpbmNsdWRl
IDxydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0lkZW50
aWZpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0xMDMs
MTUgKzEwNCwxMyBAQCBKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0ZW5lcjo6aW5pdGlhbGl6CiAg
ICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIG1fZXZlbnRQYXJhbWV0ZXJO
YW1lKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgbV9jb2RlKSk7
CiAKLSAgICAvLyBNb3ZlIG91ciB0ZXh0IHBvc2l0aW9uIGJhY2t3YXJkIG9uZSBsaW5lLiBDcmVh
dGluZyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24KLSAgICAvLyB3aWxsIGFkZCBhIGxpbmUgZm9yIGEg
ZnVuY3Rpb24gZGVjbGFyYXRpb24sIGJ1dCB3ZSB3YW50IG91ciBsaW5lIG51bWJlcgotICAgIC8v
IHRvIG1hdGNoIHVwIHdpdGggd2hlcmUgdGhlIGF0dHJpYnV0ZSB3YXMgZGVjbGFyZWQuCi0gICAg
VGV4dFBvc2l0aW9uIHBvc2l0aW9uKAotICAgICAgICBPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQoCi0gICAgICAgICAgICBtX3Bvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpIC0gMSks
IG1fcG9zaXRpb24ubV9jb2x1bW4pOworICAgIC8vIFdlIHdhbnQgYWxsIGVycm9ycyB0byByZWZl
ciBiYWNrIHRvIHRoZSBsaW5lIG9uIHdoaWNoIG91ciBhdHRyaWJ1dGUgd2FzCisgICAgLy8gZGVj
bGFyZWQsIHJlZ2FyZGxlc3Mgb2YgYW55IG5ld2xpbmVzIGluIG91ciBKYXZhU2NyaXB0IHNvdXJj
ZSB0ZXh0LgorICAgIGludCBvdmVycmlkZUxpbmVObyA9IG1fcG9zaXRpb24ubV9saW5lLm9uZUJh
c2VkSW50KCk7CisKICAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9u
U2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgICAgICBleGVjLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgbV9mdW5jdGlvbk5hbWUpLCAKLSAg
ICAgICAgbV9zb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAgICAgICAgbV9zb3VyY2VVUkwsIG1fcG9z
aXRpb24sIG92ZXJyaWRlTGluZU5vKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkg
ewogICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwpAQCAtMTIwLDYgKzExOSw3
IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVyOjppbml0aWFsaXoKICAgICB9CiAKICAg
ICBKU0Z1bmN0aW9uKiBsaXN0ZW5lckFzRnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGpz
RnVuY3Rpb24pOworCiAgICAgaWYgKG1fb3JpZ2luYWxOb2RlKSB7CiAgICAgICAgIGlmICghd3Jh
cHBlcigpKSB7CiAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCAnbm9kZScgaGFzIGEgSmF2YVNj
cmlwdCB3cmFwcGVyIHRvIG1hcmsgdGhlIGV2ZW50IGxpc3RlbmVyIHdlJ3JlIGNyZWF0aW5nLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiArMjc0LDExIEBAIEpTRE9N
V2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6OmluaXQKIAogVGV4dFBvc2l0aW9uIFNjcmlw
dENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9uKCkgY29uc3QKIHsKKyAgICAvLyBGSVhN
RTogSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgcGFyc2luZywgd2Ugc2hvdWxkIHVzZSBvdXIgY3Vy
cmVudCBsb2NhdGlvbgorICAgIC8vIGluIEphdmFTY3JpcHQsIHRvIGNvdmVyIGNhc2VzIGxpa2Ug
ImVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGljaycsIC4uLikiLgorCisgICAgLy8gRklYTUU6IFRo
aXMgbG9jYXRpb24gbWFwcyB0byB0aGUgZW5kIG9mIHRoZSBIVE1MIHRhZywgYW5kIG5vdCB0byB0
aGUKKyAgICAvLyBleGFjdCBjb2x1bW4gbnVtYmVyIGJlbG9uZ2luZyB0byB0aGUgZXZlbnQgaGFu
ZGxlciBhdHRyaWJ1dGUuCiAgICAgU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBt
X2ZyYW1lLmRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpOwogICAgIGlmIChw
YXJzZXIpCiAgICAgICAgIHJldHVybiBwYXJzZXItPnRleHRQb3NpdGlvbigpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTgyMDI4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTUtMDMtMjYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmlyaW5nIGluIEphdmFTY3JpcHRDb3JlL3Bh
cnNlci9wYXJzZXIuaCBmb3Igc3RhdGVzbWFuLmNvbSBzaXRlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5NzQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBmb3IgdGhpcyBBU1NFUlQg
YmVjYXVzZSBJIGNvdWxkbid0IGRlc2lnbiBhIHdheSB0byByZXByb2R1Y2UKKyAgICAgICAgaXQg
YWZ0ZXIgdHJ5aW5nIGZvciBhIGZldyBob3Vycy4gU2ltcGx5IGxvYWRpbmcgdGhlIG9yaWdpbmFs
IEFTU0VSVGluZworICAgICAgICBjb250ZW50IGZyb20gZGlzayBpcyBub3QgZW5vdWdoIHRvIHJl
cHJvZHVjZSB0aGlzIGJ1Zy4KKworICAgICAgICAqIGZhc3QvcHJvZmlsZXIvZGVhZC10aW1lLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2lubGluZS1ldmVudC1oYW5kbGVy
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFm
dGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0OiBUaGVzZSBhcmUKKyAgICAgICAgcHJvZ3Jlc3Np
b25zLCB3aGVyZSB3ZSB1c2VkIHRvIGdldCB0aGUgbGluZSBudW1iZXIgd3JvbmcuCisKIDIwMTUt
MDMtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5
IENvbnRlbnRFeHRlbnNpb24gYWN0aW9ucyBhZnRlciByZWRpcmVjdHMuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxODE5NjcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFu
dWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogRGVhZCB0aW1lIGluIHByb2Zp
bGUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgb25sb2FkIGRlYWQtdGltZS5o
dG1sIChsaW5lIDIwOjUyKQorICAgb25sb2FkIGRlYWQtdGltZS5odG1sIChsaW5lIDIxOjUyKQog
ICAgICAgc3RhcnRUZXN0IGRlYWQtdGltZS5odG1sIChsaW5lIDEzOjEpCiAgICAgICAgICBzZXRU
aW1lb3V0IChubyBmaWxlKSAobGluZSAwOjApCiAgICAocHJvZ3JhbSkgZGVhZC10aW1lLmh0bWwg
KGxpbmUgMToxKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQt
aGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4MTk2NykK
KysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQCBUaHJlYWRfMSAobm8gZmlsZSkg
KGxpbmUgMDowKQogICAgc3RhcnRUZXN0IGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUg
MTE6MSkKICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICBj
bGljayAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgICAgICAgb25jbGljayBpbmxpbmUtZXZlbnQt
aGFuZGxlci5odG1sIChsaW5lIDMwOjEzNSkKKyAgICAgICAgIG9uY2xpY2sgaW5saW5lLWV2ZW50
LWhhbmRsZXIuaHRtbCAobGluZSAzMToxMzUpCiAgICAgICAgICAgICBldmVudExpc3RlbmVyIGlu
bGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTc6MjYpCiAgICAgICAgICAgICAgICBhbm9u
eW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykK
ICAgICAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJj
ZXMuanMgKGxpbmUgMTc6MjYpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3At
cHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE4MTk2NykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmls
ZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQg
aW4gdGgKIAogUHJvZmlsZSB0aXRsZTogU3RvcCBwcm9maWxpbmcgZnJvbSBhIHRpbWVvdXQKIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBvbmxvYWQgc3RvcC1wcm9maWxpbmctYWZ0
ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDIwOjUyKQorICAgb25sb2FkIHN0b3AtcHJvZmlsaW5n
LWFmdGVyLXNldFRpbWVvdXQuaHRtbCAobGluZSAyMTo1MikKICAgICAgIHN0YXJ0VGVzdCBzdG9w
LXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMTM6MSkKICAgICAgICAgIHNl
dFRpbWVvdXQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSBzdG9wLXByb2ZpbGlu
Zy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMToxKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249527</attachid>
            <date>2015-03-26 15:57:16 -0700</date>
            <delta_ts>2015-03-26 15:58:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142974-20150326155637.patch</filename>
            <type>text/plain</type>
            <size>4797</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4MjAzMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAzLTI2ICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9uIGZpcmluZyBpbiBKYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvcGFyc2VyLmggZm9yIHN0YXRlc21hbi5jb20gc2l0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gdGVzdCBjb3ZlcmluZyB0
aGlzIEFTU0VSVCBiZWNhdXNlIEkgY291bGRuJ3QgZGVzaWduIGEgd2F5IHRvIHJlcHJvZHVjZQor
ICAgICAgICBpdCBhZnRlciB0cnlpbmcgZm9yIGEgZmV3IGhvdXJzLiBTaW1wbHkgbG9hZGluZyB0
aGUgb3JpZ2luYWwgQVNTRVJUaW5nCisgICAgICAgIGNvbnRlbnQgZnJvbSBkaXNrIGlzIG5vdCBl
bm91Z2ggdG8gcmVwcm9kdWNlIHRoaXMgYnVnLgorCisgICAgICAgICogZmFzdC9wcm9maWxlci9k
ZWFkLXRpbWUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvaW5saW5lLWV2
ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvc3RvcC1w
cm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQ6IFRoZXNlIGFyZQorICAgICAg
ICBwcm9ncmVzc2lvbnMsIHdoZXJlIHdlIHVzZWQgdG8gZ2V0IHRoZSBsaW5lIG51bWJlciB3cm9u
Zy4KKworICAgICAgICAqIGZhc3QvZG9tL2F0dHJpYnV0ZS1ldmVudC1saXN0ZW5lci1lcnJvcnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9hdHRyaWJ1dGUtZXZlbnQt
bGlzdGVuZXItZXJyb3JzLmh0bWw6IEFkZGVkLiBUaGlzIHRlc3QgY292ZXJzCisgICAgICAgIGEg
c3VidGxlIHdheSBpbiB3aGljaCB0aGUgbmV3IG1lY2hhbmlzbSBmb3IgYXR0cmlidXRlIGV2ZW50
IGxpc3RlbmVyCisgICAgICAgIGxpbmUgbnVtYmVycyBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gdGhl
IG9sZCBvbmUuCisKIDIwMTUtMDMtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIEFwcGx5IENvbnRlbnRFeHRlbnNpb24gYWN0aW9ucyBhZnRlciByZWRpcmVj
dHMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtZXZlbnQtbGlzdGVuZXIt
ZXJyb3JzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9h
dHRyaWJ1dGUtZXZlbnQtbGlzdGVuZXItZXJyb3JzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1ldmVudC1saXN0ZW5lci1lcnJvcnMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDQ6IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBlcnJvcgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IFN5bnRheEVycm9yOiBJbnZhbGlkIGNoYXJhY3Rlcjog
J0AnCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbiBhdHRyaWJ1dGUgZXZlbnQgbGlzdGVuZXIg
ZXJyb3Igc2hvd3MgdGhlIHJpZ2h0IGxpbmUgbnVtYmVyIGV2ZW4gaWYgdGhlIGF0dHJpYnV0ZSBj
b250YWlucyBuZXdsaW5lcy4KKyAgCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1
dGUtZXZlbnQtbGlzdGVuZXItZXJyb3JzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vYXR0cmlidXRlLWV2ZW50LWxpc3RlbmVyLWVycm9ycy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLWV2ZW50LWxpc3RlbmVyLWVycm9y
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKKzxib2R5PgorCTxwcmU+VGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgYW4gYXR0cmlidXRlIGV2ZW50IGxpc3RlbmVyIGVycm9yIHNo
b3dzIHRoZSByaWdodCBsaW5lIG51bWJlciBldmVuIGlmIHRoZSBhdHRyaWJ1dGUgY29udGFpbnMg
bmV3bGluZXMuPC9wcmU+CisKKwk8YnV0dG9uIGlkID0iMSIgb25jbGljaz0iJiMxMDsmIzEwOyYj
MTA7ZXJyb3IoKSI+PC9idXR0b24+CisJPGJ1dHRvbiBpZCA9IjIiIG9uY2xpY2s9IiYjMTA7JiMx
MDsmIzEwOyRAXy4iPjwvYnV0dG9uPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
MSIpLmNsaWNrKCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiMiIpLmNsaWNrKCk7Cis8L3Nj
cmlwdD4KKworPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRp
bWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIv
ZGVhZC10aW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTgxOTY3KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00
LDcgKzQsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFBy
b2ZpbGUgdGl0bGU6IERlYWQgdGltZSBpbiBwcm9maWxlLgogVGhyZWFkXzEgKG5vIGZpbGUpIChs
aW5lIDA6MCkKLSAgIG9ubG9hZCBkZWFkLXRpbWUuaHRtbCAobGluZSAyMDo1MikKKyAgIG9ubG9h
ZCBkZWFkLXRpbWUuaHRtbCAobGluZSAyMTo1MikKICAgICAgIHN0YXJ0VGVzdCBkZWFkLXRpbWUu
aHRtbCAobGluZSAxMzoxKQogICAgICAgICAgc2V0VGltZW91dCAobm8gZmlsZSkgKGxpbmUgMDow
KQogICAgKHByb2dyYW0pIGRlYWQtdGltZS5odG1sIChsaW5lIDE6MSkKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXIt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODE5NjcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL2lubGluZS1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Nyw3ICs3LDcgQEAgVGhyZWFkXzEgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIHN0YXJ0VGVzdCBp
bmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDExOjEpCiAgICAgICBnZXRFbGVtZW50QnlJ
ZCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChsaW5lIDA6MCkK
LSAgICAgICAgIG9uY2xpY2sgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAzMDoxMzUp
CisgICAgICAgICBvbmNsaWNrIGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMzE6MTM1
KQogICAgICAgICAgICAgZXZlbnRMaXN0ZW5lciBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1sIChs
aW5lIDE3OjI2KQogICAgICAgICAgICAgICAgYW5vbnltb3VzRnVuY3Rpb24gcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjk6MzcpCiAgICAgICAgICAgICAgICAgICBpbnNlcnRO
ZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3OjI2KQpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9zdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0
b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODE5
NjcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNl
dFRpbWVvdXQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUbyBy
dW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiAKIFByb2ZpbGUgdGl0bGU6IFN0
b3AgcHJvZmlsaW5nIGZyb20gYSB0aW1lb3V0CiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDow
KQotICAgb25sb2FkIHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQuaHRtbCAobGluZSAy
MDo1MikKKyAgIG9ubG9hZCBzdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxp
bmUgMjE6NTIpCiAgICAgICBzdGFydFRlc3Qgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91
dC5odG1sIChsaW5lIDEzOjEpCiAgICAgICAgICBzZXRUaW1lb3V0IChubyBmaWxlKSAobGluZSAw
OjApCiAgICAocHJvZ3JhbSkgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChs
aW5lIDE6MSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249528</attachid>
            <date>2015-03-26 15:58:44 -0700</date>
            <delta_ts>2015-03-26 16:06:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142974-20150326155806.patch</filename>
            <type>text/plain</type>
            <size>24989</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDE1LTAzLTI2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQXNzZXJ0aW9uIGZpcmluZyBpbiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvcGFyc2VyLmggZm9y
IHN0YXRlc21hbi5jb20gc2l0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQyOTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2VzIHR3byB0aGluZ3M6CisKKyAgICAgICAgKDEpIFJl
c3RvcmUgSmF2YVNjcmlwdENvcmUncyBzYW5pdGl6YXRpb24gb2YgbGluZSBhbmQgY29sdW1uIG51
bWJlcnMgdG8KKyAgICAgICAgb25lLWJhc2VkIHZhbHVlcy4KKworICAgICAgICBXZSBuZWVkIHRo
aXMgYmVjYXVzZSBXZWJDb3JlIHNvbWV0aW1lcyBwcm92aWRlcyBodWdlIG5lZ2F0aXZlIGNvbHVt
bgorICAgICAgICBudW1iZXJzLgorCisgICAgICAgICgyKSBTb2x2ZSB0aGUgYXR0cmlidXRlIGV2
ZW50IGxpc3RlbmVyIGxpbmUgbnVtYmVyaW5nIHByb2JsZW0gYSBkaWZmZXJlbnQKKyAgICAgICAg
d2F5OiBSYXRoZXIgdGhhbiBvZmZzZXRpbmcgYWxsIGxpbmUgbnVtYmVycyBieSAtMSBpbiBhbiBh
dHRyaWJ1dGUgZXZlbnQKKyAgICAgICAgbGlzdGVuZXIgaW4gb3JkZXIgdG8gYXJyYW5nZSBmb3Ig
YSBjdXN0b20gcmVzdWx0LCBpbnN0ZWFkIHVzZSBhbiBleHBsaWNpdAorICAgICAgICBmZWF0dXJl
IGZvciBzYXlpbmcgImFsbCBlcnJvcnMgaW4gdGhpcyBjb2RlIHNob3VsZCBtYXAgdG8gdGhpcyBs
aW5lIG51bWJlciIuCisKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAg
ICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tGcmFtZTo6Y29tcHV0ZUxp
bmVBbmRDb2x1bW4pOgorICAgICAgICAoSlNDOjpHZXRTdGFja1RyYWNlRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTdGFja1Zpc2l0b3I6
OkZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVtbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckVy
cm9yLmg6CisgICAgICAgIChKU0M6OlBhcnNlckVycm9yOjp0b0Vycm9yT2JqZWN0KTogUGx1bWIg
dGhyb3VnaCBhbiBvdmVycmlkZSBsaW5lIG51bWJlci4KKyAgICAgICAgV2hlbiBhIGZ1bmN0aW9u
IGhhcyBhbiBvdmVycmlkZSBsaW5lIG51bWJlciwgYWxsIHN5bnRheCBhbmQgcnVudGltZQorICAg
ICAgICBlcnJvcnMgaW4gdGhlIGZ1bmN0aW9uIHdpbGwgbWFwIHRvIGl0LiBUaGlzIGlzIHVzZWZ1
bCBmb3IgYXR0cmlidXRlIGV2ZW50CisgICAgICAgIGxpc3RlbmVycy4KKyAKKyAgICAgICAgKiBw
YXJzZXIvU291cmNlQ29kZS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjpTb3VyY2VDb2Rl
KTogUmVzdG9yZSB0aGUgb2xkIHNhbml0aXphdGlvbiBvZiBsaW5lIGFuZAorICAgICAgICBjb2x1
bW4gbnVtYmVycyB0byBvbmUtYmFzZWQgaW50ZWdlcnMuIEl0IHdhcyBraW5kIG9mIGEgaGFjayB0
byByZW1vdmUgdGhpcy4KKworICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OlNjcmlwdEV4ZWN1dGFibGUpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6c2V0T3Zl
cnJpZGVMaW5lTm8pOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpoYXNPdmVycmlk
ZUxpbmVObyk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om92ZXJyaWRlTGluZU5v
KToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVjayk6CisgICAgICAg
ICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmg6IFBsdW1iIHRocm91Z2ggYW4gb3ZlcnJp
ZGUgbGluZSBudW1iZXIuCisKIDIwMTUtMDMtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBJZiB3ZSdyZSBpbiBjb2RlIGZvciBhY2Nlc3Npbmcgc2NvcGVkIGFy
Z3VtZW50cywgd2Ugc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoZSBvYmplY3QgaXMgYSBzY29w
ZWQgYXJndW1lbnRzIHJhdGhlciB0aGFuIGNoZWNraW5nIGlmIGl0J3MgYSBkaXJlY3QgYXJndW1l
bnRzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODE5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzIsNyArMTMyLDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dmlzaXRDaAog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3N5bWJvbFRhYmxlRm9yQ29uc3RydWN0
KTsKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVyU291cmNlKQorRnVuY3Rpb25FeGVj
dXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIG93bmVyU291cmNlLCBpbnQgb3ZlcnJpZGVMaW5lTm8pCiB7CiAgICAgU291cmNl
Q29kZSBzb3VyY2UgPSBtX3NvdXJjZU92ZXJyaWRlID8gU291cmNlQ29kZShtX3NvdXJjZU92ZXJy
aWRlKSA6IG93bmVyU291cmNlOwogICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJz
dExpbmUoKSArIG1fZmlyc3RMaW5lT2Zmc2V0OwpAQCAtMTQ1LDEwICsxNDUsMTUgQEAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlYwogICAgIHVuc2lnbmVkIGVuZENvbHVt
biA9IG1fdW5saW5rZWRCb2R5RW5kQ29sdW1uICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyBz
dGFydENvbHVtbiA6IDEpOwogCiAgICAgU291cmNlQ29kZSBjb2RlKHNvdXJjZS5wcm92aWRlcigp
LCBzdGFydE9mZnNldCwgc3RhcnRPZmZzZXQgKyBtX3NvdXJjZUxlbmd0aCwgZmlyc3RMaW5lLCBz
dGFydENvbHVtbik7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBj
b2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSArIG1fbGluZUNvdW50LCBzdGFydENvbHVt
biwgZW5kQ29sdW1uKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIHJlc3VsdCA9IEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSAr
IG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsKKyAgICBpZiAob3ZlcnJpZGVM
aW5lTm8gIT0gLTEpCisgICAgICAgIHJlc3VsdC0+c2V0T3ZlcnJpZGVMaW5lTm8ob3ZlcnJpZGVM
aW5lTm8pOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgRXhlY1N0YXRlJiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEpTT2JqZWN0KiYgZXhjZXB0aW9uKQorVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZSgKKyAgICBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCisg
ICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVycmlkZUxpbmVObykKIHsKICAgICBQYXJz
ZXJFcnJvciBlcnJvcjsKICAgICBWTSYgdm0gPSBleGVjLnZtKCk7CkBAIC0xNjAsNyArMTY1LDcg
QEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuYwogICAgICAgICBnbG9i
YWxPYmplY3QuZGVidWdnZXIoKS0+c291cmNlUGFyc2VkKCZleGVjLCBzb3VyY2UucHJvdmlkZXIo
KSwgZXJyb3IubGluZSgpLCBlcnJvci5tZXNzYWdlKCkpOwogCiAgICAgaWYgKGVycm9yLmlzVmFs
aWQoKSkgewotICAgICAgICBleGNlcHRpb24gPSBlcnJvci50b0Vycm9yT2JqZWN0KCZnbG9iYWxP
YmplY3QsIHNvdXJjZSk7CisgICAgICAgIGV4Y2VwdGlvbiA9IGVycm9yLnRvRXJyb3JPYmplY3Qo
Jmdsb2JhbE9iamVjdCwgc291cmNlLCBvdmVycmlkZUxpbmVObyk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzYsOSArMTM2LDExIEBAIHB1YmxpYzoKICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUs
IAogICAgICAgICBQYXJzZXJFcnJvciYpOwogCi0gICAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwg
Y29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9uKTsKKyAgICBzdGF0aWMgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKAorICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhj
ZXB0aW9uLCAKKyAgICAgICAgaW50IG92ZXJyaWRlTGluZU5vKTsKIAotICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogbGluayhWTSYsIGNvbnN0IFNvdXJjZUNvZGUmKTsKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGxpbmsoVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgaW50IG92ZXJyaWRlTGluZU5vID0g
LTEpOwogCiAgICAgdm9pZCBjbGVhckNvZGVGb3JSZWNvbXBpbGF0aW9uKCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Miw2ICs0NDIsOSBAQCB2b2lk
IFN0YWNrRnJhbWU6OmNvbXB1dGVMaW5lQW5kQ29sdW1uKHVuCiAKICAgICBsaW5lID0gZGl2b3RM
aW5lICsgbGluZU9mZnNldDsKICAgICBjb2x1bW4gPSBkaXZvdENvbHVtbiArIChkaXZvdExpbmUg
PyAxIDogZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKKworICAgIGlmIChleGVjdXRhYmxlLT5oYXNP
dmVycmlkZUxpbmVObygpKQorICAgICAgICBsaW5lID0gZXhlY3V0YWJsZS0+b3ZlcnJpZGVMaW5l
Tm8oKTsKIH0KIAogdm9pZCBTdGFja0ZyYW1lOjpleHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBp
bnQmIHN0YXJ0T2Zmc2V0LCBpbnQmIGVuZE9mZnNldCwgdW5zaWduZWQmIGxpbmUsIHVuc2lnbmVk
JiBjb2x1bW4pCkBAIC00OTIsNyArNDk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIFN0
YWNrRnJhbWUgcyA9IHsKICAgICAgICAgICAgICAgICAgICAgU3Ryb25nPEpTT2JqZWN0Pih2bSwg
dmlzaXRvci0+Y2FsbGVlKCkpLAogICAgICAgICAgICAgICAgICAgICBnZXRTdGFja0ZyYW1lQ29k
ZVR5cGUodmlzaXRvciksCi0gICAgICAgICAgICAgICAgICAgIFN0cm9uZzxFeGVjdXRhYmxlQmFz
ZT4odm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpLAorICAgICAgICAgICAgICAgICAg
ICBTdHJvbmc8U2NyaXB0RXhlY3V0YWJsZT4odm0sIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCkpLAogICAgICAgICAgICAgICAgICAgICBTdHJvbmc8VW5saW5rZWRDb2RlQmxvY2s+KHZtLCBj
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpLAogICAgICAgICAgICAgICAgICAgICBjb2Rl
QmxvY2stPnNvdXJjZSgpLAogICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5saW5lTm8oKSwKQEAgLTUwMyw3ICs1MDYsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICBtX3Jlc3VsdHMuYXBwZW5kKHMpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7IFN0cm9uZzxK
U09iamVjdD4odm0sIHZpc2l0b3ItPmNhbGxlZSgpKSwgU3RhY2tGcmFtZU5hdGl2ZUNvZGUsIFN0
cm9uZzxFeGVjdXRhYmxlQmFzZT4oKSwgU3Ryb25nPFVubGlua2VkQ29kZUJsb2NrPigpLCAwLCAw
LCAwLCAwLCAwLCBTdHJpbmcoKX07CisgICAgICAgICAgICAgICAgU3RhY2tGcmFtZSBzID0geyBT
dHJvbmc8SlNPYmplY3Q+KHZtLCB2aXNpdG9yLT5jYWxsZWUoKSksIFN0YWNrRnJhbWVOYXRpdmVD
b2RlLCBTdHJvbmc8U2NyaXB0RXhlY3V0YWJsZT4oKSwgU3Ryb25nPFVubGlua2VkQ29kZUJsb2Nr
PigpLCAwLCAwLCAwLCAwLCAwLCBTdHJpbmcoKX07CiAgICAgICAgICAgICAgICAgbV9yZXN1bHRz
LmFwcGVuZChzKTsKICAgICAgICAgICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxODE5NjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgU3Rh
Y2tGcmFtZSB7CiAgICAgICAgIFN0cm9uZzxKU09iamVjdD4gY2FsbGVlOwogICAgICAgICBTdGFj
a0ZyYW1lQ29kZVR5cGUgY29kZVR5cGU7Ci0gICAgICAgIFN0cm9uZzxFeGVjdXRhYmxlQmFzZT4g
ZXhlY3V0YWJsZTsKKyAgICAgICAgU3Ryb25nPFNjcmlwdEV4ZWN1dGFibGU+IGV4ZWN1dGFibGU7
CiAgICAgICAgIFN0cm9uZzxVbmxpbmtlZENvZGVCbG9jaz4gY29kZUJsb2NrOwogICAgICAgICBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IGNvZGU7CiAgICAgICAgIGludCBsaW5lT2Zmc2V0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRv
ci5jcHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDkgQEAg
dm9pZCBTdGFja1Zpc2l0b3I6OkZyYW1lOjpjb21wdXRlTGluZUFuZAogCiAgICAgbGluZSA9IGRp
dm90TGluZSArIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxpbmVObygpOwogICAgIGNv
bHVtbiA9IGRpdm90Q29sdW1uICsgKGRpdm90TGluZSA/IDEgOiBjb2RlQmxvY2stPmZpcnN0TGlu
ZUNvbHVtbk9mZnNldCgpKTsKKworICAgIGlmIChjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5oYXNPdmVycmlkZUxpbmVObygpKQorICAgICAgICBsaW5lID0gY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+b3ZlcnJpZGVMaW5lTm8oKTsKIH0KIAogdm9pZCBTdGFja1Zpc2l0b3I6OkZy
YW1lOjpyZXRyaWV2ZUV4cHJlc3Npb25JbmZvKGludCYgZGl2b3QsIGludCYgc3RhcnRPZmZzZXQs
IGludCYgZW5kT2Zmc2V0LCB1bnNpZ25lZCYgbGluZSwgdW5zaWduZWQmIGNvbHVtbikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckVycm9yLmgJKHJldmlzaW9uIDE4
MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRXJyb3IuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsMTMgKzg1LDE4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KICAgICBpbnQgbGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZTsgfQogCi0gICAgSlNPYmplY3QqIHRvRXJyb3JPYmplY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAg
IEpTT2JqZWN0KiB0b0Vycm9yT2JqZWN0KAorICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIAorICAgICAgICBpbnQgb3ZlcnJpZGVM
aW5lTm8gPSAtMSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNh
c2UgRXJyb3JOb25lOgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGNhc2Ug
U3ludGF4RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gYWRkRXJyb3JJbmZvKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIG1fbWVzc2Fn
ZSksIG1fbGluZSwgc291cmNlKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRFcnJvckluZm8oCisg
ICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIAorICAgICAgICAgICAg
ICAgIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgbV9tZXNzYWdlKSwgCisgICAgICAg
ICAgICAgICAgb3ZlcnJpZGVMaW5lTm8gPT0gLTEgPyBtX2xpbmUgOiBvdmVycmlkZUxpbmVObywg
c291cmNlKTsKICAgICAgICAgY2FzZSBFdmFsRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBtX21lc3NhZ2UpOwogICAgICAgICBjYXNlIFN0
YWNrT3ZlcmZsb3c6IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
Q29kZS5oCShyZXZpc2lvbiAxODE5NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZUNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsOCArNjMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIDogbV9wcm92aWRlcihwcm92aWRlcikKICAgICAgICAgICAgICwg
bV9zdGFydENoYXIoMCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKG1fcHJvdmlkZXItPnNvdXJj
ZSgpLmxlbmd0aCgpKQotICAgICAgICAgICAgLCBtX2ZpcnN0TGluZShzdGQ6Om1heChmaXJzdExp
bmUsIDApKQotICAgICAgICAgICAgLCBtX3N0YXJ0Q29sdW1uKHN0ZDo6bWF4KHN0YXJ0Q29sdW1u
LCAwKSkKKyAgICAgICAgICAgICwgbV9maXJzdExpbmUoc3RkOjptYXgoZmlyc3RMaW5lLCAxKSkK
KyAgICAgICAgICAgICwgbV9zdGFydENvbHVtbihzdGQ6Om1heChzdGFydENvbHVtbiwgMSkpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCkBAIC03Miw4ICs3Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICAgICAgICAgLCBtX3N0YXJ0
Q2hhcihzdGFydCkKICAgICAgICAgICAgICwgbV9lbmRDaGFyKGVuZCkKLSAgICAgICAgICAgICwg
bV9maXJzdExpbmUoc3RkOjptYXgoZmlyc3RMaW5lLCAwKSkKLSAgICAgICAgICAgICwgbV9zdGFy
dENvbHVtbihzdGQ6Om1heChzdGFydENvbHVtbiwgMCkpCisgICAgICAgICAgICAsIG1fZmlyc3RM
aW5lKHN0ZDo6bWF4KGZpcnN0TGluZSwgMSkpCisgICAgICAgICAgICAsIG1fc3RhcnRDb2x1bW4o
c3RkOjptYXgoc3RhcnRDb2x1bW4sIDEpKQogICAgICAgICB7CiAgICAgICAgIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9u
IDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDcgQEAgU2NyaXB0RXhlY3V0YWJsZTo6U2Ny
aXB0RXhlY3V0YWJsZShTdHJ1YwogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkK
ICAgICAsIG1fbmV2ZXJJbmxpbmUoZmFsc2UpCiAgICAgLCBtX2RpZFRyeVRvRW50ZXJJbkxvb3Ao
ZmFsc2UpCisgICAgLCBtX292ZXJyaWRlTGluZU5vKC0xKQogICAgICwgbV9maXJzdExpbmUoLTEp
CiAgICAgLCBtX2xhc3RMaW5lKC0xKQogICAgICwgbV9zdGFydENvbHVtbihVSU5UX01BWCkKQEAg
LTYwOCwxMiArNjA5LDE3IEBAIHZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjp1bmxpbmtDYWxscygp
CiAjZW5kaWYKIH0KIAotRnVuY3Rpb25FeGVjdXRhYmxlKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmZy
b21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEV4ZWNTdGF0ZSYgZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBKU09iamVjdComIGV4Y2VwdGlvbikKLXsKLSAgICBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlID0gVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKG5hbWUsIGV4ZWMsIHNvdXJjZSwgZXhjZXB0
aW9uKTsKK0Z1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFs
Q29kZSgKKyAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgCisgICAgSlNPYmplY3QqJiBleGNlcHRpb24sIGludCBvdmVy
cmlkZUxpbmVObykKK3sKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gCisgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xv
YmFsQ29kZSgKKyAgICAgICAgICAgIG5hbWUsIGV4ZWMsIHNvdXJjZSwgZXhjZXB0aW9uLCBvdmVy
cmlkZUxpbmVObyk7CiAgICAgaWYgKCF1bmxpbmtlZEV4ZWN1dGFibGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmsoZXhlYy52bSgp
LCBzb3VyY2UpOworCisgICAgcmV0dXJuIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayhleGVjLnZt
KCksIHNvdXJjZSwgb3ZlcnJpZGVMaW5lTm8pOwogfQogCiB2b2lkIEV4ZWN1dGFibGVCYXNlOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxODE5NjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1OCw2ICsz
NTgsOSBAQCBwdWJsaWM6CiAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZS5wcm92aWRlcklEKCk7IH0KICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlLnByb3ZpZGVyKCktPnVybCgpOyB9CiAgICAgaW50IGxpbmVO
bygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RMaW5lOyB9CisgICAgdm9pZCBzZXRPdmVycmlkZUxp
bmVObyhpbnQgb3ZlcnJpZGVMaW5lTm8pIHsgbV9vdmVycmlkZUxpbmVObyA9IG92ZXJyaWRlTGlu
ZU5vOyB9CisgICAgYm9vbCBoYXNPdmVycmlkZUxpbmVObygpIHsgcmV0dXJuIG1fb3ZlcnJpZGVM
aW5lTm8gIT0gLTE7IH0KKyAgICBpbnQgb3ZlcnJpZGVMaW5lTm8oKSB7IHJldHVybiBtX292ZXJy
aWRlTGluZU5vOzsgfQogICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExp
bmU7IH0KICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRD
b2x1bW47IH0KICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX2VuZENv
bHVtbjsgfQpAQCAtNDI5LDYgKzQzMiw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faGFzQ2Fw
dHVyZWRWYXJpYWJsZXM7CiAgICAgYm9vbCBtX25ldmVySW5saW5lOwogICAgIGJvb2wgbV9kaWRU
cnlUb0VudGVySW5Mb29wOworICAgIGludCBtX292ZXJyaWRlTGluZU5vOwogICAgIGludCBtX2Zp
cnN0TGluZTsKICAgICBpbnQgbV9sYXN0TGluZTsKICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1u
OwpAQCAtNTQ5LDcgKzU1Myw5IEBAIHB1YmxpYzoKICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNo
Q3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4gZXhlY3V0YWJsZTsKICAgICB9Ci0gICAgc3Rh
dGljIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYsIEpTT2JqZWN0KiYgZXhjZXB0aW9u
KTsKKyAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBmcm9tR2xvYmFsQ29kZSgKKyAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRXhlY1N0YXRlJiwgY29uc3QgU291cmNlQ29kZSYs
IAorICAgICAgICBKU09iamVjdComIGV4Y2VwdGlvbiwgaW50IG92ZXJyaWRlTGluZU5vKTsKIAog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4NiwxMCBAQCBK
U09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBlCiAgICAgcmV0dXJuIGNvbnN0
cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwg
YXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKIH0KIAotSlNPYmplY3Qq
IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgQXJnTGlzdCYgYXJncywgY29u
c3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKK0pTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNr
aXBwaW5nRXZhbEVuYWJsZWRDaGVjaygKKyAgICBFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIAorICAgIGNvbnN0IElkZW50
aWZpZXImIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIAorICAgIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIGludCBvdmVycmlkZUxpbmVObykKIHsKICAgICAvLyBI
b3cgd2Ugc3RyaW5naWZ5IGZ1bmN0aW9ucyBpcyBzb21ldGltZXMgaW1wb3J0YW50IGZvciB3ZWIg
Y29tcGF0aWJpbGl0eS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI0MzUwLgpAQCAtMTEzLDcgKzExNiw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEUKIAogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbWFrZVNvdXJj
ZShwcm9ncmFtLCBzb3VyY2VVUkwsIHBvc2l0aW9uKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9u
ID0gbnVsbHB0cjsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gRnVuY3Rpb25F
eGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShmdW5jdGlvbk5hbWUsICpleGVjLCBzb3VyY2UsIGV4
Y2VwdGlvbik7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25OYW1lLCAqZXhlYywgc291cmNlLCBleGNl
cHRpb24sIG92ZXJyaWRlTGluZU5vKTsKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFT
U0VSVChleGNlcHRpb24pOwogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBleGNlcHRpb24pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTgxOTY3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw3ICs1OSw5IEBAIHByaXZhdGU6CiBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBBcmdMaXN0JiwgY29uc3Qg
SWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgY29uc3Qg
V1RGOjpUZXh0UG9zaXRpb24mKTsKIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIGNvbnN0IEFyZ0xpc3QmKTsKIAotSlNfRVhQT1JUX1BSSVZB
VEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3NpdGlvbiYpOworSlNfRVhQT1JU
X1BSSVZBVEUgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENo
ZWNrKAorICAgIEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQXJnTGlzdCYsIGNv
bnN0IElkZW50aWZpZXImLCAKKyAgICBjb25zdCBTdHJpbmcmLCBjb25zdCBXVEY6OlRleHRQb3Np
dGlvbiYsIGludCBvdmVycmlkZUxpbmVObyA9IC0xKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjAyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTI2ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgQXNzZXJ0aW9uIGZpcmluZyBp
biBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvcGFyc2VyLmggZm9yIHN0YXRlc21hbi5jb20gc2l0ZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTc0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2
ZW50TGlzdGVuZXI6OmluaXRpYWxpemVKU0Z1bmN0aW9uKTogVXNlIHRoZSBuZXcgb3ZlcnJpZGUK
KyAgICAgICAgbGluZSBudW1iZXIgQVBJIHRvIGd1YXJhbnRlZSB0aGF0IGVycm9ycyB3aWxsIG1h
cCB0byB0aGUgLmh0bWwgZmlsZSBsb2NhdGlvbnMKKyAgICAgICAgdGhhdCB3ZSBsaWtlLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmVudEhhbmRsZXJQb3NpdGlvbik6IEFkZGVkIGEgRklY
TUUgdG8gY292ZXIKKyAgICAgICAgc29tZSBjYXNlcyB3aGVyZSBvdXIgbGluZSBhbmQgY29sdW1u
IG51bWJlcnMgYXJlIHN0aWxsIG5vbnNlbnNlLgorCiAyMDE1LTAzLTI2ICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzdGF0ZSBtYWNoaW5nIGRl
YnVnZ2luZyBhZnRlciByMTgxOTY0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0xhenlFdmVudExpc3RlbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAkocmV2aXNpb24gMTgxOTY3KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkpT
Tm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxydW50aW1l
L0V4ZWN1dGFibGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CkBAIC0xMDMsMTUgKzEwNCwxMyBAQCBKU09iamVjdCogSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6aW5pdGlhbGl6CiAgICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5n
KGV4ZWMsIG1fZXZlbnRQYXJhbWV0ZXJOYW1lKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgbV9jb2RlKSk7CiAKLSAgICAvLyBNb3ZlIG91ciB0ZXh0IHBvc2l0aW9u
IGJhY2t3YXJkIG9uZSBsaW5lLiBDcmVhdGluZyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24KLSAgICAv
LyB3aWxsIGFkZCBhIGxpbmUgZm9yIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24sIGJ1dCB3ZSB3YW50
IG91ciBsaW5lIG51bWJlcgotICAgIC8vIHRvIG1hdGNoIHVwIHdpdGggd2hlcmUgdGhlIGF0dHJp
YnV0ZSB3YXMgZGVjbGFyZWQuCi0gICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uKAotICAgICAgICBP
cmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQoCi0gICAgICAgICAgICBtX3Bvc2l0aW9uLm1f
bGluZS5vbmVCYXNlZEludCgpIC0gMSksIG1fcG9zaXRpb24ubV9jb2x1bW4pOworICAgIC8vIFdl
IHdhbnQgYWxsIGVycm9ycyB0byByZWZlciBiYWNrIHRvIHRoZSBsaW5lIG9uIHdoaWNoIG91ciBh
dHRyaWJ1dGUgd2FzCisgICAgLy8gZGVjbGFyZWQsIHJlZ2FyZGxlc3Mgb2YgYW55IG5ld2xpbmVz
IGluIG91ciBKYXZhU2NyaXB0IHNvdXJjZSB0ZXh0LgorICAgIGludCBvdmVycmlkZUxpbmVObyA9
IG1fcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7CisKICAgICBKU09iamVjdCoganNGdW5j
dGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKAogICAgICAg
ICBleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGFyZ3MsIElkZW50aWZpZXIoZXhl
YywgbV9mdW5jdGlvbk5hbWUpLCAKLSAgICAgICAgbV9zb3VyY2VVUkwsIHBvc2l0aW9uKTsKKyAg
ICAgICAgbV9zb3VyY2VVUkwsIG1fcG9zaXRpb24sIG92ZXJyaWRlTGluZU5vKTsKIAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkgewogICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9u
KGV4ZWMpOwpAQCAtMTIwLDYgKzExOSw3IEBAIEpTT2JqZWN0KiBKU0xhenlFdmVudExpc3RlbmVy
Ojppbml0aWFsaXoKICAgICB9CiAKICAgICBKU0Z1bmN0aW9uKiBsaXN0ZW5lckFzRnVuY3Rpb24g
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGpzRnVuY3Rpb24pOworCiAgICAgaWYgKG1fb3JpZ2luYWxO
b2RlKSB7CiAgICAgICAgIGlmICghd3JhcHBlcigpKSB7CiAgICAgICAgICAgICAvLyBFbnN1cmUg
dGhhdCAnbm9kZScgaGFzIGEgSmF2YVNjcmlwdCB3cmFwcGVyIHRvIG1hcmsgdGhlIGV2ZW50IGxp
c3RlbmVyIHdlJ3JlIGNyZWF0aW5nLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE4MTk2NykKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzQsNiArMjc0LDExIEBAIEpTRE9NV2luZG93U2hlbGwqIFNjcmlwdENvbnRyb2xsZXI6Omlu
aXQKIAogVGV4dFBvc2l0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV2ZW50SGFuZGxlclBvc2l0aW9u
KCkgY29uc3QKIHsKKyAgICAvLyBGSVhNRTogSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgcGFyc2lu
Zywgd2Ugc2hvdWxkIHVzZSBvdXIgY3VycmVudCBsb2NhdGlvbgorICAgIC8vIGluIEphdmFTY3Jp
cHQsIHRvIGNvdmVyIGNhc2VzIGxpa2UgImVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGljaycsIC4u
LikiLgorCisgICAgLy8gRklYTUU6IFRoaXMgbG9jYXRpb24gbWFwcyB0byB0aGUgZW5kIG9mIHRo
ZSBIVE1MIHRhZywgYW5kIG5vdCB0byB0aGUKKyAgICAvLyBleGFjdCBjb2x1bW4gbnVtYmVyIGJl
bG9uZ2luZyB0byB0aGUgZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGUuCiAgICAgU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyKiBwYXJzZXIgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1
bWVudFBhcnNlcigpOwogICAgIGlmIChwYXJzZXIpCiAgICAgICAgIHJldHVybiBwYXJzZXItPnRl
eHRQb3NpdGlvbigpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMDMxKQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDMtMjYgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBBc3NlcnRpb24gZmly
aW5nIGluIEphdmFTY3JpcHRDb3JlL3BhcnNlci9wYXJzZXIuaCBmb3Igc3RhdGVzbWFuLmNvbSBz
aXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI5
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0
ZXN0IGNvdmVyaW5nIHRoaXMgQVNTRVJUIGJlY2F1c2UgSSBjb3VsZG4ndCBkZXNpZ24gYSB3YXkg
dG8gcmVwcm9kdWNlCisgICAgICAgIGl0IGFmdGVyIHRyeWluZyBmb3IgYSBmZXcgaG91cnMuIFNp
bXBseSBsb2FkaW5nIHRoZSBvcmlnaW5hbCBBU1NFUlRpbmcKKyAgICAgICAgY29udGVudCBmcm9t
IGRpc2sgaXMgbm90IGVub3VnaCB0byByZXByb2R1Y2UgdGhpcyBidWcuCisKKyAgICAgICAgKiBm
YXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9m
aWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9w
cm9maWxlci9zdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0LWV4cGVjdGVkLnR4dDogVGhl
c2UgYXJlCisgICAgICAgIHByb2dyZXNzaW9ucywgd2hlcmUgd2UgdXNlZCB0byBnZXQgdGhlIGxp
bmUgbnVtYmVyIHdyb25nLgorCisgICAgICAgICogZmFzdC9kb20vYXR0cmlidXRlLWV2ZW50LWxp
c3RlbmVyLWVycm9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2F0
dHJpYnV0ZS1ldmVudC1saXN0ZW5lci1lcnJvcnMuaHRtbDogQWRkZWQuIFRoaXMgdGVzdCBjb3Zl
cnMKKyAgICAgICAgYSBzdWJ0bGUgd2F5IGluIHdoaWNoIHRoZSBuZXcgbWVjaGFuaXNtIGZvciBh
dHRyaWJ1dGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgbGluZSBudW1iZXJzIGlzIG1vcmUgYWNj
dXJhdGUgdGhhbiB0aGUgb2xkIG9uZS4KKwogMjAxNS0wMy0yNiAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwbHkgQ29udGVudEV4dGVuc2lvbiBhY3Rpb25z
IGFmdGVyIHJlZGlyZWN0cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1l
dmVudC1saXN0ZW5lci1lcnJvcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2F0dHJpYnV0ZS1ldmVudC1saXN0ZW5lci1lcnJvcnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYXR0cmlidXRlLWV2ZW50LWxp
c3RlbmVyLWVycm9ycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDogUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFy
aWFibGU6IGVycm9yCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTogU3ludGF4RXJyb3I6IEludmFs
aWQgY2hhcmFjdGVyOiAnQCcKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGFuIGF0dHJpYnV0ZSBl
dmVudCBsaXN0ZW5lciBlcnJvciBzaG93cyB0aGUgcmlnaHQgbGluZSBudW1iZXIgZXZlbiBpZiB0
aGUgYXR0cmlidXRlIGNvbnRhaW5zIG5ld2xpbmVzLgorICAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2F0dHJpYnV0ZS1ldmVudC1saXN0ZW5lci1lcnJvcnMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtZXZlbnQtbGlzdGVuZXItZXJyb3JzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hdHRyaWJ1dGUtZXZlbnQt
bGlzdGVuZXItZXJyb3JzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNSBAQAorPGJv
ZHk+CisJPHByZT5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhbiBhdHRyaWJ1dGUgZXZlbnQgbGlz
dGVuZXIgZXJyb3Igc2hvd3MgdGhlIHJpZ2h0IGxpbmUgbnVtYmVyIGV2ZW4gaWYgdGhlIGF0dHJp
YnV0ZSBjb250YWlucyBuZXdsaW5lcy48L3ByZT4KKworCTxidXR0b24gaWQgPSIxIiBvbmNsaWNr
PSImIzEwOyYjMTA7JiMxMDtlcnJvcigpIj48L2J1dHRvbj4KKwk8YnV0dG9uIGlkID0iMiIgb25j
bGljaz0iJiMxMDsmIzEwOyYjMTA7JEBfLiI+PC9idXR0b24+CisKKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCIxIikuY2xpY2soKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIyIiku
Y2xpY2soKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODE5NjcpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQg
aXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogRGVhZCB0aW1lIGluIHByb2ZpbGUuCiBUaHJlYWRf
MSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAgb25sb2FkIGRlYWQtdGltZS5odG1sIChsaW5lIDIw
OjUyKQorICAgb25sb2FkIGRlYWQtdGltZS5odG1sIChsaW5lIDIxOjUyKQogICAgICAgc3RhcnRU
ZXN0IGRlYWQtdGltZS5odG1sIChsaW5lIDEzOjEpCiAgICAgICAgICBzZXRUaW1lb3V0IChubyBm
aWxlKSAobGluZSAwOjApCiAgICAocHJvZ3JhbSkgZGVhZC10aW1lLmh0bWwgKGxpbmUgMToxKQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUt
ZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4MTk2NykKKysrIExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvaW5saW5lLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQCBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQog
ICAgc3RhcnRUZXN0IGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTE6MSkKICAgICAg
IGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwOjApCiAgICAgICBjbGljayAobm8gZmls
ZSkgKGxpbmUgMDowKQotICAgICAgICAgb25jbGljayBpbmxpbmUtZXZlbnQtaGFuZGxlci5odG1s
IChsaW5lIDMwOjEzNSkKKyAgICAgICAgIG9uY2xpY2sgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRt
bCAobGluZSAzMToxMzUpCiAgICAgICAgICAgICBldmVudExpc3RlbmVyIGlubGluZS1ldmVudC1o
YW5kbGVyLmh0bWwgKGxpbmUgMTc6MjYpCiAgICAgICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlv
biBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOTozNykKICAgICAgICAgICAg
ICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MTc6MjYpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFm
dGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE4MTk2NykKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9m
aWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQs
NyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJv
ZmlsZSB0aXRsZTogU3RvcCBwcm9maWxpbmcgZnJvbSBhIHRpbWVvdXQKIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwOjApCi0gICBvbmxvYWQgc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91
dC5odG1sIChsaW5lIDIwOjUyKQorICAgb25sb2FkIHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRp
bWVvdXQuaHRtbCAobGluZSAyMTo1MikKICAgICAgIHN0YXJ0VGVzdCBzdG9wLXByb2ZpbGluZy1h
ZnRlci1zZXRUaW1lb3V0Lmh0bWwgKGxpbmUgMTM6MSkKICAgICAgICAgIHNldFRpbWVvdXQgKG5v
IGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFtKSBzdG9wLXByb2ZpbGluZy1hZnRlci1zZXRU
aW1lb3V0Lmh0bWwgKGxpbmUgMToxKQo=
</data>
<flag name="review"
          id="274351"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>