<?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>189319</bug_id>
          
          <creation_ts>2018-09-05 14:58:57 -0700</creation_ts>
          <short_desc>The sampling should not use Strong&lt;CodeBlock&gt; in its machineLocation field</short_desc>
          <delta_ts>2018-09-22 00:29:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1456875</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-05 14:58:57 -0700</bug_when>
    <thetext>`bt all`

(lldb) bt all
  thread #1, queue = &apos;com.apple.main-thread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e18f JavaScriptCore`WTF::ThreadCondition::timedWait(WTF::Mutex&amp;, WTF::WallTime) [inlined] WTF::ThreadCondition::wait(this=&lt;unavailable&gt;, mutex=&lt;unavailable&gt;) at ThreadingPthreads.cpp:545 [opt]
    frame #3: 0x000000010017e184 JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x00000001022f6b98, mutex=0x00000001022f6b58, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:555 [opt]
    frame #4: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x00007ffeefbf9ff8, beforeSleep=0x00007ffeefbf9fe0, timeout=0x00007ffeefbfa050)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #5: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x00000001023003f2, validation=0x00000001023003f2, beforeSleep=0x00000001023003f1, timeout=0x00007ffeefbfa050)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #6: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001023003f2, lock=0x00000001023003f1, timeout=0x00007ffeefbfa050) at Condition.h:76 [opt]
    frame #7: 0x000000010087bb09 JavaScriptCore`JSC::Heap::runTaskInParallel(WTF::RefPtr&lt;WTF::SharedTask&lt;void (JSC::SlotVisitor&amp;)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void (JSC::SlotVisitor&amp;)&gt; &gt; &gt;) [inlined] void WTF::Condition::wait&lt;WTF::Lock&gt;(this=0x00000001023003f2, lock=&lt;unavailable&gt;) at Condition.h:122 [opt]
    frame #8: 0x000000010087bae3 JavaScriptCore`JSC::Heap::runTaskInParallel(this=&lt;unavailable&gt;, task=RefPtr&lt;WTF::SharedTask&lt;void (JSC::SlotVisitor &amp;)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void (JSC::SlotVisitor &amp;)&gt; &gt; &gt; @ 0x00007ffeefbfa0c0)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void (JSC::SlotVisitor&amp;)&gt; &gt; &gt;) at Heap.cpp:2939 [opt]
    frame #9: 0x00000001008982b8 JavaScriptCore`JSC::MarkingConstraintSolver::execute(JSC::MarkingConstraintSolver::SchedulerPreference, WTF::ScopedLambda&lt;std::optional&lt;unsigned int&gt; ()&gt;) [inlined] void JSC::Heap::runFunctionInParallel&lt;JSC::MarkingConstraintSolver::execute(JSC::MarkingConstraintSolver::SchedulerPreference, WTF::ScopedLambda&lt;std::optional&lt;unsigned int&gt; ()&gt;)::$_29&gt;(this=0x0000000102300018)&gt;)::$_29 const&amp;) at Heap.h:373 [opt]
    frame #10: 0x0000000100898279 JavaScriptCore`JSC::MarkingConstraintSolver::execute(this=0x00007ffeefbfa150, preference=&lt;unavailable&gt;, pickNext=&lt;unavailable&gt;)&gt;) at MarkingConstraintSolver.cpp:66 [opt]
    frame #11: 0x0000000100897f33 JavaScriptCore`JSC::MarkingConstraintSolver::converge(this=0x00007ffeefbfa150, order=0x00000001022ec028) at MarkingConstraintSolver.cpp:141 [opt]
    frame #12: 0x0000000100897c61 JavaScriptCore`JSC::MarkingConstraintSet::executeConvergenceImpl(this=0x00000001022ec000, visitor=0x00000001022f5000) at MarkingConstraintSet.cpp:167 [opt]
    frame #13: 0x0000000100897aac JavaScriptCore`JSC::MarkingConstraintSet::executeConvergence(this=&lt;unavailable&gt;, visitor=&lt;unavailable&gt;) at MarkingConstraintSet.cpp:85 [opt]
    frame #14: 0x000000010087770a JavaScriptCore`JSC::Heap::runFixpointPhase(this=&lt;unavailable&gt;, conn=&lt;unavailable&gt;) at Heap.cpp:1343 [opt]
    frame #15: 0x0000000100876408 JavaScriptCore`JSC::Heap::runCurrentPhase(this=0x0000000102300018, conn=Mutator, currentThreadState=0x00007ffeefbfa780) at Heap.cpp:1175 [opt]
    frame #16: 0x000000010087f08b JavaScriptCore`WTF::ScopedLambdaFunctor&lt;void (JSC::CurrentThreadState&amp;), JSC::Heap::collectInMutatorThread()::$_0&gt;::implFunction(void*, JSC::CurrentThreadState&amp;) at Heap.cpp:1791 [opt]
    frame #17: 0x000000010087f07e JavaScriptCore`WTF::ScopedLambdaFunctor&lt;void (JSC::CurrentThreadState&amp;), JSC::Heap::collectInMutatorThread()::$_0&gt;::implFunction(argument=&lt;unavailable&gt;, arguments=0x00007ffeefbfa780) at ScopedLambda.h:107 [opt]
    frame #18: 0x0000000100891cf4 JavaScriptCore`JSC::callWithCurrentThreadState(WTF::ScopedLambda&lt;void (JSC::CurrentThreadState&amp;)&gt; const&amp;) [inlined] void WTF::ScopedLambda&lt;void (JSC::CurrentThreadState&amp;)&gt;::operator(this=&lt;unavailable&gt;, arguments=0x00007ffeefc00000)&lt;JSC::CurrentThreadState&amp;&gt;(JSC::CurrentThreadState&amp;&amp;&amp;) const at ScopedLambda.h:59 [opt]
    frame #19: 0x0000000100891cea JavaScriptCore`JSC::callWithCurrentThreadState(lambda=0x00007ffeefbfa7b8)&gt; const&amp;) at MachineStackMarker.cpp:225 [opt]
    frame #20: 0x0000000100879abd JavaScriptCore`JSC::Heap::collectInMutatorThread(this=0x0000000102300018) at Heap.cpp:1803 [opt]
    frame #21: 0x00000001008798c4 JavaScriptCore`JSC::Heap::stopIfNecessarySlow() [inlined] JSC::Heap::stopIfNecessarySlow(this=&lt;unavailable&gt;, oldState=&lt;unavailable&gt;) at Heap.cpp:1772 [opt]
    frame #22: 0x0000000100879897 JavaScriptCore`JSC::Heap::stopIfNecessarySlow(this=0x0000000102300018) at Heap.cpp:1746 [opt]
    frame #23: 0x0000000100890fe0 JavaScriptCore`JSC::LocalAllocator::allocateSlowCase(this=0x0000000106999a20, deferralContext=0x0000000000000000, failureMode=Assert) at LocalAllocator.cpp:124 [opt]
    frame #24: 0x0000000100cca588 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] JSC::LocalAllocator::allocate(JSC::GCDeferralContext*, JSC::AllocationFailureMode)::&apos;lambda&apos;()::operator()() const at LocalAllocatorInlines.h:37 [opt]
    frame #25: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] JSC::HeapCell* JSC::FreeList::allocate&lt;JSC::LocalAllocator::allocate(JSC::GCDeferralContext*, JSC::AllocationFailureMode)::&apos;lambda&apos;()&gt;(this=0x0000000106999a40)::&apos;lambda&apos;() const&amp;) at FreeListInlines.h:46 [opt]
    frame #26: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] JSC::LocalAllocator::allocate(this=0x0000000106999a20, failureMode=Assert) at LocalAllocatorInlines.h:34 [opt]
    frame #27: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] JSC::Allocator::allocate(mode=Assert) const at AllocatorInlines.h:35 [opt]
    frame #28: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] JSC::CompleteSubspace::allocateNonVirtual(this=&lt;unavailable&gt;, vm=0x0000000102300000, size=48, failureMode=Assert) at CompleteSubspaceInlines.h:33 [opt]
    frame #29: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] void* JSC::tryAllocateCellHelper&lt;JSC::JSRopeString&gt;(heap=&lt;unavailable&gt;, size=48, failureMode=Assert) at JSCellInlines.h:161 [opt]
    frame #30: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] void* JSC::allocateCell&lt;JSC::JSRopeString&gt;(heap=&lt;unavailable&gt;, size=48) at JSCellInlines.h:187 [opt]
    frame #31: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] JSC::JSRopeString::createSubstringOfResolved(vm=&lt;unavailable&gt;, deferralContext=&lt;unavailable&gt;, base=&lt;unavailable&gt;, offset=&lt;unavailable&gt;, length=&lt;unavailable&gt;) at JSString.h:388 [opt]
    frame #32: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(JSC::VM&amp;, JSC::ExecState*, JSC::JSString*, WTF::String const&amp;, JSC::RegExpConstructor*, JSC::RegExp*, JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const [inlined] JSC::JSRopeString::createSubstringOfResolved(vm=&lt;unavailable&gt;, base=&lt;unavailable&gt;, offset=&lt;unavailable&gt;, length=&lt;unavailable&gt;) at JSString.h:395 [opt]
    frame #33: 0x0000000100cca559 JavaScriptCore`JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(this=0x00007ffeefbfa8c8)::$_1 const&amp;)::&apos;lambda&apos;()::operator()() const at RegExpObjectInlines.h:161 [opt]
    frame #34: 0x0000000100cc4a52 JavaScriptCore`JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*) [inlined] JSC::JSValue JSC::collectMatches&lt;JSC::RegExpObject::matchGlobal(JSC::ExecState*, JSC::JSGlobalObject*, JSC::JSString*)::$_1&gt;(vm=&lt;unavailable&gt;, exec=&lt;unavailable&gt;, string=&lt;unavailable&gt;, s=0x0000000109c7f0e0, constructor=0x00000001048a0000, regExp=&lt;unavailable&gt;)::$_1 const&amp;) at RegExpObjectInlines.h:207 [opt]
    frame #35: 0x0000000100cc489a JavaScriptCore`JSC::RegExpObject::matchGlobal(this=&lt;unavailable&gt;, exec=&lt;unavailable&gt;, globalObject=&lt;unavailable&gt;, string=0x000000010acd2ca0) at RegExpObject.cpp:207 [opt]
    frame #36: 0x0000536c8c2269b5
    frame #37: 0x0000536c8c21f781
    frame #38: 0x0000536c8c0eef23
    frame #39: 0x0000536c8c136c2d
    frame #40: 0x0000536c8c10fbf9
    frame #41: 0x0000536c8c100463
    frame #42: 0x0000536c8c1e4336
    frame #43: 0x0000536c8c23349d
    frame #44: 0x0000536c8c1dc064
    frame #45: 0x0000536c8c1d4f64
    frame #46: 0x0000536c8c1bf70b
    frame #47: 0x0000536c8c1c29c4
    frame #48: 0x0000536c8c1c49c4
    frame #49: 0x0000536c8c1c86c4
    frame #50: 0x0000536c8c16e426
    frame #51: 0x0000536c8c1e7acd
    frame #52: 0x0000536c8c21fdb8
    frame #53: 0x0000536c8c1916fc
    frame #54: 0x0000536c8c1d94e3
    frame #55: 0x0000536c8c234028
    frame #56: 0x0000536c8c1dc064
    frame #57: 0x0000536c8c1d4f64
    frame #58: 0x0000536c8c1bf70b
    frame #59: 0x0000536c8c1c29c4
    frame #60: 0x0000536c8c1c49c4
    frame #61: 0x0000536c8c1c86c4
    frame #62: 0x0000536c8c16e426
    frame #63: 0x0000536c8c1e7acd
    frame #64: 0x0000536c8c21fdb8
    frame #65: 0x0000536c8c220b58
    frame #66: 0x0000536c8c1916fc
    frame #67: 0x0000536c8c1032ef
    frame #68: 0x0000536c8c21762a
    frame #69: 0x0000536c8c1427ac
    frame #70: 0x0000536c8c17d873
    frame #71: 0x0000536c8c160a5b
    frame #72: 0x00000001003571d4 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #73: 0x00000001003571d4 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #74: 0x0000000100357179 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #75: 0x0000000100357179 JavaScriptCore`llint_entry at LowLevelInterpreter.asm:851
    frame #76: 0x0000000100350795 JavaScriptCore`vmEntryToJavaScript at LowLevelInterpreter64.asm:258
    frame #77: 0x0000000100931a0c JavaScriptCore`JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::ExecState*, JSC::JSObject*) [inlined] JSC::JITCode::execute(this=0x0000000102313260, vm=&lt;unavailable&gt;, protoCallFrame=0x0000000104854000) at JITCodeInlines.h:38 [opt]
    frame #78: 0x00000001009319e5 JavaScriptCore`JSC::Interpreter::executeProgram(this=&lt;unavailable&gt;, source=&lt;unavailable&gt;, callFrame=&lt;unavailable&gt;, thisObj=0x00000001048a8080) at Interpreter.cpp:834 [opt]
    frame #79: 0x0000000100b6c80f JavaScriptCore`JSC::evaluate(exec=0x00000001048e0048, source=0x00007ffeefbff0e0, thisValue=JSValue @ 0x00007ffeefbfef18, returnedException=0x00007ffeefbff080) at Completion.cpp:103 [opt]
    frame #80: 0x0000000100004362 jsc`jscmain(int, char**) at jsc.cpp:2383 [opt]
    frame #81: 0x0000000100003b81 jsc`jscmain(int, char**) [inlined] jscmain(globalObject=&lt;unavailable&gt;)::$_3::operator()(JSC::VM&amp;, GlobalObject*, bool&amp;) const at jsc.cpp:2787 [opt]
    frame #82: 0x0000000100003b81 jsc`jscmain(int, char**) at jsc.cpp:2688 [opt]
    frame #83: 0x0000000100003a86 jsc`jscmain(argc=&lt;unavailable&gt;, argv=&lt;unavailable&gt;) at jsc.cpp:2784 [opt]
    frame #84: 0x00000001000036fb jsc`main(argc=&lt;unavailable&gt;, argv=&lt;unavailable&gt;) at jsc.cpp:2214 [opt]
    frame #85: 0x00007fff766d0085 libdyld.dylib`start + 1
    frame #86: 0x00007fff766d0085 libdyld.dylib`start + 1
* thread #2, name = &apos;WTF::AutomaticThread&apos;, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
  * frame #0: 0x000000010087fda0 JavaScriptCore`WTF::Function&lt;void (JSC::SlotVisitor&amp;)&gt;::CallableWrapper&lt;JSC::Heap::addCoreConstraints()::$_31&gt;::call(JSC::SlotVisitor&amp;) at HandleSet.cpp:68 [opt]
    frame #1: 0x000000010087fd27 JavaScriptCore`WTF::Function&lt;void (JSC::SlotVisitor&amp;)&gt;::CallableWrapper&lt;JSC::Heap::addCoreConstraints()::$_31&gt;::call(JSC::SlotVisitor&amp;) [inlined] JSC::Heap::addCoreConstraints(slotVisitor=&lt;unavailable&gt;)::$_31::operator()(JSC::SlotVisitor&amp;) const at Heap.cpp:2694 [opt]
    frame #2: 0x000000010087fd15 JavaScriptCore`WTF::Function&lt;void (JSC::SlotVisitor&amp;)&gt;::CallableWrapper&lt;JSC::Heap::addCoreConstraints(this=&lt;unavailable&gt;, in=0x00000001022f5460)::$_31&gt;::call(JSC::SlotVisitor&amp;) at Function.h:101 [opt]
    frame #3: 0x000000010089892e JavaScriptCore`JSC::MarkingConstraintSolver::runExecutionThread(JSC::SlotVisitor&amp;, JSC::MarkingConstraintSolver::SchedulerPreference, WTF::ScopedLambda&lt;std::optional&lt;unsigned int&gt; ()&gt;) [inlined] JSC::MarkingConstraint::execute(this=&lt;unavailable&gt;, visitor=0x00000001022f5460) at MarkingConstraint.cpp:57 [opt]
    frame #4: 0x000000010089891e JavaScriptCore`JSC::MarkingConstraintSolver::runExecutionThread(this=0x00007ffeefbfa150, visitor=0x00000001022f5460, preference=ParallelWorkFirst, pickNext=&lt;unavailable&gt;)&gt;) at MarkingConstraintSolver.cpp:238 [opt]
    frame #5: 0x000000010089f640 JavaScriptCore`JSC::SlotVisitor::drainFromShared(this=0x00000001022f5460, sharedDrainMode=SlaveDrain, timeout=(m_value = +Inf)) at SlotVisitor.cpp:658 [opt]
    frame #6: 0x000000010087dba1 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run() [inlined] JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18::operator()() const at Heap.cpp:1269 [opt]
    frame #7: 0x000000010087db23 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run(this=&lt;unavailable&gt;) at SharedTask.h:92 [opt]
    frame #8: 0x0000000100160f1c JavaScriptCore`WTF::ParallelHelperClient::runTask(this=0x0000000102300458, task=RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; @ 0x000070000a1e7e48)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt;) at ParallelHelperPool.cpp:112 [opt]
    frame #9: 0x00000001001618e0 JavaScriptCore`WTF::ParallelHelperPool::Thread::work(this=0x00000001079d17e0) at ParallelHelperPool.cpp:194 [opt]
    frame #10: 0x0000000100139040 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:223 [opt]
    frame #11: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #12: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #13: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001079d3d68) at Threading.cpp:136 [opt]
    frame #14: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #15: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #16: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #17: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #3
    frame #0: 0x00007fff7680a5be libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007fff768c1641 libsystem_pthread.dylib`_pthread_wqthread + 446
    frame #2: 0x00007fff768c1415 libsystem_pthread.dylib`start_wqthread + 13
  thread #4, name = &apos;JavaScriptCore bmalloc scavenger&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x00007fff73da7d01 libc++.1.dylib`std::__1::condition_variable::__do_timed_wait(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::system_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;) + 93
    frame #3: 0x0000000100198f85 JavaScriptCore`std::__1::cv_status std::__1::condition_variable::wait_until&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;(std::__1::unique_lock&lt;std::__1::mutex&gt;&amp;, std::__1::chrono::time_point&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt; const&amp;) [inlined] std::__1::cv_status std::__1::condition_variable::wait_for&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt;(this=0x000000010164ca10, __lk=0x0000700009c46e50) at __mutex_base:0 [opt]
    frame #4: 0x0000000100198f31 JavaScriptCore`std::__1::cv_status std::__1::condition_variable::wait_until&lt;std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;(this=0x000000010164ca10, __lk=0x0000700009c46e50, __t=0x0000700009c46e98) at __mutex_base:384 [opt]
    frame #5: 0x0000000100198e4f JavaScriptCore`std::__1::cv_status std::__1::condition_variable_any::wait_until&lt;std::__1::unique_lock&lt;bmalloc::Mutex&gt;, std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt; &gt;(this=0x000000010164ca10, __lock=0x0000700009c46ea0, __t=0x0000700009c46e98) at condition_variable:226 [opt]
    frame #6: 0x0000000100197aae JavaScriptCore`bmalloc::Scavenger::threadRunLoop() [inlined] bool std::__1::condition_variable_any::wait_until&lt;std::__1::unique_lock&lt;bmalloc::Mutex&gt;, std::__1::chrono::steady_clock, std::__1::chrono::duration&lt;long long, std::__1::ratio&lt;1l, 1000000000l&gt; &gt;, bmalloc::Scavenger::threadRunLoop()::$_5&gt;(this=0x000000010164ca10, __lock=0x000000010164ca09)::$_5) at condition_variable:237 [opt]
    frame #7: 0x0000000100197a88 JavaScriptCore`bmalloc::Scavenger::threadRunLoop() [inlined] bool std::__1::condition_variable_any::wait_for&lt;std::__1::unique_lock&lt;bmalloc::Mutex&gt;, long long, std::__1::ratio&lt;1l, 1000l&gt;, bmalloc::Scavenger::threadRunLoop()::$_5&gt;(this=0x000000010164ca10, __lock=0x000000010164ca09)::$_5) at condition_variable:258 [opt]
    frame #8: 0x0000000100197a6d JavaScriptCore`bmalloc::Scavenger::threadRunLoop(this=0x000000010164c9f8) at Scavenger.cpp:385 [opt]
    frame #9: 0x0000000100197209 JavaScriptCore`bmalloc::Scavenger::threadEntryPoint(scavenger=&lt;unavailable&gt;) at Scavenger.cpp:359 [opt]
    frame #10: 0x0000000100198c37 JavaScriptCore`void* std::__1::__thread_proxy&lt;std::__1::tuple&lt;std::__1::unique_ptr&lt;std::__1::__thread_struct, std::__1::default_delete&lt;std::__1::__thread_struct&gt; &gt;, void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*&gt; &gt;(void*) [inlined] decltype(__args=0x0000000102108ff0)(bmalloc::Scavenger*)&gt;(fp)(std::__1::forward&lt;bmalloc::Scavenger*&gt;(fp0))) std::__1::__invoke&lt;void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*&gt;(void (*&amp;&amp;)(bmalloc::Scavenger*), bmalloc::Scavenger*&amp;&amp;) at type_traits:4428 [opt]
    frame #11: 0x0000000100198c30 JavaScriptCore`void* std::__1::__thread_proxy&lt;std::__1::tuple&lt;std::__1::unique_ptr&lt;std::__1::__thread_struct, std::__1::default_delete&lt;std::__1::__thread_struct&gt; &gt;, void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*&gt; &gt;(void*) [inlined] void std::__1::__thread_execute&lt;std::__1::unique_ptr&lt;std::__1::__thread_struct, std::__1::default_delete&lt;std::__1::__thread_struct&gt; &gt;, void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*, 2ul&gt;(__t=&lt;unavailable&gt;)(bmalloc::Scavenger*), bmalloc::Scavenger*&gt;&amp;, std::__1::__tuple_indices&lt;2ul&gt;) at thread:342 [opt]
    frame #12: 0x0000000100198c30 JavaScriptCore`void* std::__1::__thread_proxy&lt;std::__1::tuple&lt;std::__1::unique_ptr&lt;std::__1::__thread_struct, std::__1::default_delete&lt;std::__1::__thread_struct&gt; &gt;, void (*)(bmalloc::Scavenger*), bmalloc::Scavenger*&gt; &gt;(__vp=&lt;unavailable&gt;) at thread:352 [opt]
    frame #13: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #14: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #15: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #5, name = &apos;jsc.sampling-profiler.thread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e1ca JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x00000001022b8050, mutex=0x00000001022b8010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:568 [opt]
    frame #3: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x0000700009cc9df8, beforeSleep=0x0000700009cc9de0, timeout=0x0000700009cc9e58)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #4: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x0000700009cc9e70, validation=0x0000700009cc9e70, beforeSleep=0x0000700009cc9e78, timeout=0x0000700009cc9e58)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #5: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x0000700009cc9e70, lock=0x0000700009cc9e78, timeout=0x0000700009cc9e58) at Condition.h:76 [opt]
    frame #6: 0x00000001001670b7 JavaScriptCore`WTF::sleep(WTF::Seconds) [inlined] bool WTF::Condition::waitFor&lt;WTF::Lock&gt;(this=0x00000001022f7101, lock=0x0300000100000000, relativeTimeout=(m_value = 0.0010547296428066867)) at Condition.h:116 [opt]
    frame #7: 0x0000000100167090 JavaScriptCore`WTF::sleep(value=(m_value = 0.0010547296428066867)) at Seconds.cpp:83 [opt]
    frame #8: 0x0000000100ccf30d JavaScriptCore`JSC::SamplingProfiler::timerLoop(this=0x00000001022f7150) at SamplingProfiler.cpp:331 [opt]
    frame #9: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #10: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001022d40d0) at Threading.cpp:136 [opt]
    frame #11: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #12: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #13: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #14: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #6
    frame #0: 0x00007fff7680a5be libsystem_kernel.dylib`__workq_kernreturn + 10
    frame #1: 0x00007fff768c1721 libsystem_pthread.dylib`_pthread_wqthread + 670
    frame #2: 0x00007fff768c1415 libsystem_pthread.dylib`start_wqthread + 13
  thread #7, name = &apos;JIT Worklist Helper Thread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e1ca JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x0000000106946050, mutex=0x0000000106946010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:568 [opt]
    frame #3: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x0000700009dcfe18, beforeSleep=0x0000700009dcfe00, timeout=0x0000700009dcfe80)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #4: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x0000000102288a6b, validation=0x0000000102288a6b, beforeSleep=0x00000001069b1e14, timeout=0x0000700009dcfe80)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #5: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x0000000102288a6b, lock=0x00000001069b1e14, timeout=0x0000700009dcfe80) at Condition.h:76 [opt]
    frame #6: 0x0000000100138fcb JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() [inlined] bool WTF::Condition::waitFor&lt;WTF::Lock&gt;(this=0x0000000102288a6b, lock=0x00000001069b1e14, relativeTimeout=(m_value = 10)) at Condition.h:116 [opt]
    frame #7: 0x0000000100138fa0 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:208 [opt]
    frame #8: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #9: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #10: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x000000010699b9c0) at Threading.cpp:136 [opt]
    frame #11: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #12: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #13: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #14: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #8, name = &apos;DFG Worklist Worker Thread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e1ca JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x0000000106930050, mutex=0x0000000106930010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:568 [opt]
    frame #3: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x0000700009e52e18, beforeSleep=0x0000700009e52e00, timeout=0x0000700009e52e80)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #4: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x000000010697991b, validation=0x000000010697991b, beforeSleep=0x00000001069b1e8c, timeout=0x0000700009e52e80)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #5: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x000000010697991b, lock=0x00000001069b1e8c, timeout=0x0000700009e52e80) at Condition.h:76 [opt]
    frame #6: 0x0000000100138fcb JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() [inlined] bool WTF::Condition::waitFor&lt;WTF::Lock&gt;(this=0x000000010697991b, lock=0x00000001069b1e8c, relativeTimeout=(m_value = 10)) at Condition.h:116 [opt]
    frame #7: 0x0000000100138fa0 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:208 [opt]
    frame #8: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #9: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #10: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x000000010699ba90) at Threading.cpp:136 [opt]
    frame #11: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #12: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #13: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #14: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #9, name = &apos;DFG Worklist Worker Thread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e1ca JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x0000000106920050, mutex=0x0000000106920010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:568 [opt]
    frame #3: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x0000700009ed5e18, beforeSleep=0x0000700009ed5e00, timeout=0x0000700009ed5e80)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #4: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x0000000106979973, validation=0x0000000106979973, beforeSleep=0x00000001069b1e8c, timeout=0x0000700009ed5e80)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #5: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x0000000106979973, lock=0x00000001069b1e8c, timeout=0x0000700009ed5e80) at Condition.h:76 [opt]
    frame #6: 0x0000000100138fcb JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() [inlined] bool WTF::Condition::waitFor&lt;WTF::Lock&gt;(this=0x0000000106979973, lock=0x00000001069b1e8c, relativeTimeout=(m_value = 10)) at Condition.h:116 [opt]
    frame #7: 0x0000000100138fa0 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:208 [opt]
    frame #8: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #9: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #10: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x000000010699baf8) at Threading.cpp:136 [opt]
    frame #11: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #12: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #13: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #14: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #10, name = &apos;WTF::AutomaticThread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e18f JavaScriptCore`WTF::ThreadCondition::timedWait(WTF::Mutex&amp;, WTF::WallTime) [inlined] WTF::ThreadCondition::wait(this=&lt;unavailable&gt;, mutex=&lt;unavailable&gt;) at ThreadingPthreads.cpp:545 [opt]
    frame #3: 0x000000010017e184 JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x00000001078b2050, mutex=0x00000001078b2010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:555 [opt]
    frame #4: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x0000700009f58d08, beforeSleep=0x0000700009f58cf0, timeout=0x0000700009f58d78)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #5: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x00000001023003f2, validation=0x00000001023003f2, beforeSleep=0x00000001023003f1, timeout=0x0000700009f58d78)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #6: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001023003f2, lock=0x00000001023003f1, timeout=0x0000700009f58d78) at Condition.h:76 [opt]
    frame #7: 0x000000010089f432 JavaScriptCore`JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime) [inlined] bool WTF::Condition::waitUntil&lt;WTF::Lock, JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)::$_8&gt;(this=0x00000001023003f2, lock=0x00000001023003f1)::$_8 const&amp;) at Condition.h:98 [opt]
    frame #8: 0x000000010089f385 JavaScriptCore`JSC::SlotVisitor::drainFromShared(this=0x00000001022f5380, sharedDrainMode=SlaveDrain, timeout=(m_value = +Inf)) at SlotVisitor.cpp:633 [opt]
    frame #9: 0x000000010087dba1 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run() [inlined] JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18::operator()() const at Heap.cpp:1269 [opt]
    frame #10: 0x000000010087db23 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run(this=&lt;unavailable&gt;) at SharedTask.h:92 [opt]
    frame #11: 0x0000000100160f1c JavaScriptCore`WTF::ParallelHelperClient::runTask(this=0x0000000102300458, task=RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; @ 0x0000700009f58e48)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt;) at ParallelHelperPool.cpp:112 [opt]
    frame #12: 0x00000001001618e0 JavaScriptCore`WTF::ParallelHelperPool::Thread::work(this=0x00000001079d1678) at ParallelHelperPool.cpp:194 [opt]
    frame #13: 0x0000000100139040 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:223 [opt]
    frame #14: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #15: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #16: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001079d3b60) at Threading.cpp:136 [opt]
    frame #17: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #18: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #19: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #20: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #11, name = &apos;WTF::AutomaticThread&apos;
    frame #0: 0x00007fff76808d32 libsystem_kernel.dylib`swtch_pri + 10
    frame #1: 0x00007fff768c4ef3 libsystem_pthread.dylib`sched_yield + 11
    frame #2: 0x00000001001579b8 JavaScriptCore`WTF::LockAlgorithm&lt;unsigned char, (unsigned char)1, (unsigned char)2, WTF::EmptyLockHooks&lt;unsigned char&gt; &gt;::lockSlow(lock=0x00000001023003f1) at LockAlgorithmInlines.h:60 [opt]
    frame #3: 0x0000000100138cec JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::Lock::lock(this=&lt;unavailable&gt;) at Lock.h:60 [opt]
    frame #4: 0x0000000100138ce4 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001023003f2, lock=0x00000001023003f1, timeout=&lt;unavailable&gt;) at Condition.h:87 [opt]
    frame #5: 0x000000010089f432 JavaScriptCore`JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime) [inlined] bool WTF::Condition::waitUntil&lt;WTF::Lock, JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)::$_8&gt;(this=0x00000001023003f2, lock=0x00000001023003f1)::$_8 const&amp;) at Condition.h:98 [opt]
    frame #6: 0x000000010089f385 JavaScriptCore`JSC::SlotVisitor::drainFromShared(this=0x00000001022f51c0, sharedDrainMode=SlaveDrain, timeout=(m_value = +Inf)) at SlotVisitor.cpp:633 [opt]
    frame #7: 0x000000010087dba1 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run() [inlined] JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18::operator()() const at Heap.cpp:1269 [opt]
    frame #8: 0x000000010087db23 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run(this=&lt;unavailable&gt;) at SharedTask.h:92 [opt]
    frame #9: 0x0000000100160f1c JavaScriptCore`WTF::ParallelHelperClient::runTask(this=0x0000000102300458, task=RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; @ 0x0000700009fdbe48)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt;) at ParallelHelperPool.cpp:112 [opt]
    frame #10: 0x00000001001618e0 JavaScriptCore`WTF::ParallelHelperPool::Thread::work(this=0x00000001079d16c0) at ParallelHelperPool.cpp:194 [opt]
    frame #11: 0x0000000100139040 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:223 [opt]
    frame #12: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #13: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #14: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001079d3bc8) at Threading.cpp:136 [opt]
    frame #15: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #16: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #17: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #18: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #12, name = &apos;WTF::AutomaticThread&apos;
    frame #0: 0x00007fff768c4ef3 libsystem_pthread.dylib`sched_yield + 11
    frame #1: 0x00000001001579b8 JavaScriptCore`WTF::LockAlgorithm&lt;unsigned char, (unsigned char)1, (unsigned char)2, WTF::EmptyLockHooks&lt;unsigned char&gt; &gt;::lockSlow(lock=0x00000001023003f1) at LockAlgorithmInlines.h:60 [opt]
    frame #2: 0x0000000100138cec JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::Lock::lock(this=&lt;unavailable&gt;) at Lock.h:60 [opt]
    frame #3: 0x0000000100138ce4 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001023003f2, lock=0x00000001023003f1, timeout=&lt;unavailable&gt;) at Condition.h:87 [opt]
    frame #4: 0x000000010089f432 JavaScriptCore`JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime) [inlined] bool WTF::Condition::waitUntil&lt;WTF::Lock, JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)::$_8&gt;(this=0x00000001023003f2, lock=0x00000001023003f1)::$_8 const&amp;) at Condition.h:98 [opt]
    frame #5: 0x000000010089f385 JavaScriptCore`JSC::SlotVisitor::drainFromShared(this=0x00000001022f5540, sharedDrainMode=SlaveDrain, timeout=(m_value = +Inf)) at SlotVisitor.cpp:633 [opt]
    frame #6: 0x000000010087dba1 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run() [inlined] JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18::operator()() const at Heap.cpp:1269 [opt]
    frame #7: 0x000000010087db23 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run(this=&lt;unavailable&gt;) at SharedTask.h:92 [opt]
    frame #8: 0x0000000100160f1c JavaScriptCore`WTF::ParallelHelperClient::runTask(this=0x0000000102300458, task=RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; @ 0x000070000a05ee48)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt;) at ParallelHelperPool.cpp:112 [opt]
    frame #9: 0x00000001001618e0 JavaScriptCore`WTF::ParallelHelperPool::Thread::work(this=0x00000001079d1708) at ParallelHelperPool.cpp:194 [opt]
    frame #10: 0x0000000100139040 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:223 [opt]
    frame #11: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #12: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #13: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001079d3c30) at Threading.cpp:136 [opt]
    frame #14: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #15: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #16: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #17: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #13, name = &apos;WTF::AutomaticThread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e18f JavaScriptCore`WTF::ThreadCondition::timedWait(WTF::Mutex&amp;, WTF::WallTime) [inlined] WTF::ThreadCondition::wait(this=&lt;unavailable&gt;, mutex=&lt;unavailable&gt;) at ThreadingPthreads.cpp:545 [opt]
    frame #3: 0x000000010017e184 JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x00000001078eb050, mutex=0x00000001078eb010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:555 [opt]
    frame #4: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x000070000a0e1d08, beforeSleep=0x000070000a0e1cf0, timeout=0x000070000a0e1d78)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #5: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x00000001023003f2, validation=0x00000001023003f2, beforeSleep=0x00000001023003f1, timeout=0x000070000a0e1d78)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #6: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001023003f2, lock=0x00000001023003f1, timeout=0x000070000a0e1d78) at Condition.h:76 [opt]
    frame #7: 0x000000010089f432 JavaScriptCore`JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime) [inlined] bool WTF::Condition::waitUntil&lt;WTF::Lock, JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)::$_8&gt;(this=0x00000001023003f2, lock=0x00000001023003f1)::$_8 const&amp;) at Condition.h:98 [opt]
    frame #8: 0x000000010089f385 JavaScriptCore`JSC::SlotVisitor::drainFromShared(this=0x00000001022f5700, sharedDrainMode=SlaveDrain, timeout=(m_value = +Inf)) at SlotVisitor.cpp:633 [opt]
    frame #9: 0x000000010087dba1 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run() [inlined] JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18::operator()() const at Heap.cpp:1269 [opt]
    frame #10: 0x000000010087db23 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run(this=&lt;unavailable&gt;) at SharedTask.h:92 [opt]
    frame #11: 0x0000000100160f1c JavaScriptCore`WTF::ParallelHelperClient::runTask(this=0x0000000102300458, task=RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; @ 0x000070000a0e1e48)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt;) at ParallelHelperPool.cpp:112 [opt]
    frame #12: 0x00000001001618e0 JavaScriptCore`WTF::ParallelHelperPool::Thread::work(this=0x00000001079d1750) at ParallelHelperPool.cpp:194 [opt]
    frame #13: 0x0000000100139040 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:223 [opt]
    frame #14: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #15: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #16: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001079d3c98) at Threading.cpp:136 [opt]
    frame #17: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #18: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #19: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #20: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #14, name = &apos;WTF::AutomaticThread&apos;
    frame #0: 0x00007fff7680cee6 libsystem_kernel.dylib`__psynch_cvsignal + 10
    frame #1: 0x00007fff768c3ce7 libsystem_pthread.dylib`pthread_cond_signal + 488
    frame #2: 0x00000001001631d1 JavaScriptCore`WTF::ParkingLot::unparkCount(address=&lt;unavailable&gt;, count=4294967295) at ParkingLot.cpp:781 [opt]
    frame #3: 0x000000010089f6c9 JavaScriptCore`JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime) [inlined] WTF::Condition::notifyAll(this=&lt;unavailable&gt;) at Condition.h:168 [opt]
    frame #4: 0x000000010089f6af JavaScriptCore`JSC::SlotVisitor::drainFromShared(this=0x00000001022f5620, sharedDrainMode=SlaveDrain, timeout=(m_value = +Inf)) at SlotVisitor.cpp:667 [opt]
    frame #5: 0x000000010087dba1 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run() [inlined] JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18::operator()() const at Heap.cpp:1269 [opt]
    frame #6: 0x000000010087db23 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run(this=&lt;unavailable&gt;) at SharedTask.h:92 [opt]
    frame #7: 0x0000000100160f1c JavaScriptCore`WTF::ParallelHelperClient::runTask(this=0x0000000102300458, task=RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; @ 0x000070000a164e48)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt;) at ParallelHelperPool.cpp:112 [opt]
    frame #8: 0x00000001001618e0 JavaScriptCore`WTF::ParallelHelperPool::Thread::work(this=0x00000001079d1798) at ParallelHelperPool.cpp:194 [opt]
    frame #9: 0x0000000100139040 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:223 [opt]
    frame #10: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #11: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #12: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001079d3d00) at Threading.cpp:136 [opt]
    frame #13: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #14: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #15: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #16: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #15, name = &apos;WTF::AutomaticThread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e18f JavaScriptCore`WTF::ThreadCondition::timedWait(WTF::Mutex&amp;, WTF::WallTime) [inlined] WTF::ThreadCondition::wait(this=&lt;unavailable&gt;, mutex=&lt;unavailable&gt;) at ThreadingPthreads.cpp:545 [opt]
    frame #3: 0x000000010017e184 JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x0000000107846050, mutex=0x0000000107846010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:555 [opt]
    frame #4: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x000070000a26ad08, beforeSleep=0x000070000a26acf0, timeout=0x000070000a26ad78)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #5: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x00000001023003f2, validation=0x00000001023003f2, beforeSleep=0x00000001023003f1, timeout=0x000070000a26ad78)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #6: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001023003f2, lock=0x00000001023003f1, timeout=0x000070000a26ad78) at Condition.h:76 [opt]
    frame #7: 0x000000010089f432 JavaScriptCore`JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime) [inlined] bool WTF::Condition::waitUntil&lt;WTF::Lock, JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, WTF::MonotonicTime)::$_8&gt;(this=0x00000001023003f2, lock=0x00000001023003f1)::$_8 const&amp;) at Condition.h:98 [opt]
    frame #8: 0x000000010089f385 JavaScriptCore`JSC::SlotVisitor::drainFromShared(this=0x00000001022f52a0, sharedDrainMode=SlaveDrain, timeout=(m_value = +Inf)) at SlotVisitor.cpp:633 [opt]
    frame #9: 0x000000010087dba1 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run() [inlined] JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18::operator()() const at Heap.cpp:1269 [opt]
    frame #10: 0x000000010087db23 JavaScriptCore`WTF::SharedTaskFunctor&lt;void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_18&gt;::run(this=&lt;unavailable&gt;) at SharedTask.h:92 [opt]
    frame #11: 0x0000000100160f1c JavaScriptCore`WTF::ParallelHelperClient::runTask(this=0x0000000102300458, task=RefPtr&lt;WTF::SharedTask&lt;void ()&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt; @ 0x000070000a26ae48)&gt;, WTF::DumbPtrTraits&lt;WTF::SharedTask&lt;void ()&gt; &gt; &gt;) at ParallelHelperPool.cpp:112 [opt]
    frame #12: 0x00000001001618e0 JavaScriptCore`WTF::ParallelHelperPool::Thread::work(this=0x00000001079d1828) at ParallelHelperPool.cpp:194 [opt]
    frame #13: 0x0000000100139040 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:223 [opt]
    frame #14: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #15: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #16: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001079d3dd0) at Threading.cpp:136 [opt]
    frame #17: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #18: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #19: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #20: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #16, name = &apos;FTL Worklist Worker Thread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e1ca JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x000000010756c218, mutex=0x000000010756c1d8, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:568 [opt]
    frame #3: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x000070000a2ede18, beforeSleep=0x000070000a2ede00, timeout=0x000070000a2ede80)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #4: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=0x00000001079f886b, validation=0x00000001079f886b, beforeSleep=0x00000001079f0fe4, timeout=0x000070000a2ede80)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #5: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001079f886b, lock=0x00000001079f0fe4, timeout=0x000070000a2ede80) at Condition.h:76 [opt]
    frame #6: 0x0000000100138fcb JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() [inlined] bool WTF::Condition::waitFor&lt;WTF::Lock&gt;(this=0x00000001079f886b, lock=0x00000001079f0fe4, relativeTimeout=(m_value = 10)) at Condition.h:116 [opt]
    frame #7: 0x0000000100138fa0 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:208 [opt]
    frame #8: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #9: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #10: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001071e2dd0) at Threading.cpp:136 [opt]
    frame #11: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #12: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #13: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #14: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
  thread #17, name = &apos;FTL Worklist Worker Thread&apos;
    frame #0: 0x00007fff7680c1b2 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x00007fff768c55cb libsystem_pthread.dylib`_pthread_cond_wait + 724
    frame #2: 0x000000010017e1ca JavaScriptCore`WTF::ThreadCondition::timedWait(this=0x0000000107b9c050, mutex=0x0000000107b9c010, absoluteTime=&lt;unavailable&gt;) at ThreadingPthreads.cpp:568 [opt]
    frame #3: 0x00000001001623c8 JavaScriptCore`WTF::ParkingLot::parkConditionallyImpl(address=&lt;unavailable&gt;, validation=0x000070000a370e18, beforeSleep=0x000070000a370e00, timeout=0x000070000a370e80)&gt; const&amp;, WTF::ScopedLambda&lt;void ()&gt; const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.cpp:596 [opt]
    frame #4: 0x0000000100138cc5 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;) [inlined] WTF::ParkingLot::ParkResult WTF::ParkingLot::parkConditionally&lt;bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda&apos;(), bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(WTF::Lock&amp;, WTF::TimeWithDynamicClockType const&amp;)::&apos;lambda0&apos;()&gt;(address=-6050, validation=0x00000001079f88c3, beforeSleep=0x00000001079f0fe4, timeout=0x000070000a370e80)::&apos;lambda0&apos;() const&amp;, WTF::TimeWithDynamicClockType const&amp;) at ParkingLot.h:81 [opt]
    frame #5: 0x0000000100138c85 JavaScriptCore`bool WTF::Condition::waitUntil&lt;WTF::Lock&gt;(this=0x00000001079f88c3, lock=0x00000001079f0fe4, timeout=0x000070000a370e80) at Condition.h:76 [opt]
    frame #6: 0x0000000100138fcb JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() [inlined] bool WTF::Condition::waitFor&lt;WTF::Lock&gt;(this=0x00000001079f88c3, lock=0x00000001079f0fe4, relativeTimeout=(m_value = 10)) at Condition.h:116 [opt]
    frame #7: 0x0000000100138fa0 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(WTF::AbstractLocker const&amp;)::$_0&gt;::call() at AutomaticThread.cpp:208 [opt]
    frame #8: 0x0000000100138f25 JavaScriptCore`WTF::Function&lt;void ()&gt;::CallableWrapper&lt;WTF::AutomaticThread::start(this=&lt;unavailable&gt;)::$_0&gt;::call() at Function.h:101 [opt]
    frame #9: 0x000000010017be02 JavaScriptCore`WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) [inlined] WTF::Function&lt;void ()&gt;::operator()() const at Function.h:56 [opt]
    frame #10: 0x000000010017bdf9 JavaScriptCore`WTF::Thread::entryPoint(newThreadContext=0x00000001071e2e38) at Threading.cpp:136 [opt]
    frame #11: 0x000000010017da99 JavaScriptCore`WTF::wtfThreadEntryPoint(context=&lt;unavailable&gt;) at ThreadingPthreads.cpp:227 [opt]
    frame #12: 0x00007fff768c233d libsystem_pthread.dylib`_pthread_body + 126
    frame #13: 0x00007fff768c52a7 libsystem_pthread.dylib`_pthread_start + 70
    frame #14: 0x00007fff768c1425 libsystem_pthread.dylib`thread_start + 13
(lldb)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461927</commentid>
    <comment_count>1</comment_count>
      <attachid>350386</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-21 10:59:58 -0700</bug_when>
    <thetext>Created attachment 350386
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461932</commentid>
    <comment_count>2</comment_count>
      <attachid>350386</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-09-21 11:04:27 -0700</bug_when>
    <thetext>Comment on attachment 350386
patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        call frames. That data structure was using a Strong&lt;CodeBlock. We were

nit: Strong&lt;CodeBlock&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461933</commentid>
    <comment_count>3</comment_count>
      <attachid>350386</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-09-21 11:05:18 -0700</bug_when>
    <thetext>Comment on attachment 350386
patch

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

&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:571
&gt; +                    m_liveCellPointers.add(machineCodeBlock);

Why do we add the machineCodeBlock each time around the loop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461967</commentid>
    <comment_count>4</comment_count>
      <attachid>350386</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-21 11:44:45 -0700</bug_when>
    <thetext>Comment on attachment 350386
patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        call frames. That data structure was using a Strong&lt;CodeBlock. We were
&gt; 
&gt; nit: Strong&lt;CodeBlock&gt;

Will fix

&gt;&gt; Source/JavaScriptCore/runtime/SamplingProfiler.cpp:571
&gt;&gt; +                    m_liveCellPointers.add(machineCodeBlock);
&gt; 
&gt; Why do we add the machineCodeBlock each time around the loop?

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461968</commentid>
    <comment_count>5</comment_count>
      <attachid>350394</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-09-21 11:46:23 -0700</bug_when>
    <thetext>Created attachment 350394
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462306</commentid>
    <comment_count>6</comment_count>
      <attachid>350394</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-22 00:28:47 -0700</bug_when>
    <thetext>Comment on attachment 350394
patch for landing

Clearing flags on attachment: 350394

Committed r236382: &lt;https://trac.webkit.org/changeset/236382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462307</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-22 00:28:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1462308</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-22 00:29:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/44702274&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350386</attachid>
            <date>2018-09-21 10:59:58 -0700</date>
            <delta_ts>2018-09-21 11:46:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>22779</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzYzMzUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDE4LTA5LTIxICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFRoZSBzYW1wbGluZyBzaG91bGQgbm90IHVzZSBTdHJvbmc8Q29kZUJs
b2NrPiBpbiBpdHMgbWFjaGluZUxvY2F0aW9uIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9zYW1wbGluZy1wcm9maWxlci1yaWNo
YXJkcy5qczogQWRkZWQuCisKIDIwMTgtMDktMTkgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1
a2lAc2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBbSlNDXSBPcHRpbWl6ZSBBcnJheSNpbmRleE9m
IGluIEMrKyBydW50aW1lCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci1y
aWNoYXJkcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxl
ci1yaWNoYXJkcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1w
cm9maWxlci1yaWNoYXJkcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0MSBAQAorLy9A
IHJ1bkRlZmF1bHQoIi0tY29sbGVjdENvbnRpbnVvdXNseT0xIiwgIi0tdXNlU2FtcGxpbmdQcm9m
aWxlcj0xIiwgIi0tY29sbGVjdFNhbXBsaW5nUHJvZmlsZXJEYXRhRm9ySlNDU2hlbGw9MSIpCisK
KyJ1c2Ugc3RyaWN0IjsKKworLy8gQ29weXJpZ2h0IDIwMDYtMjAwOCB0aGUgVjggcHJvamVjdCBh
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
Ky8vICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8g
VGhpcyBpcyBhIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJpY2hhcmRzCisvLyBi
ZW5jaG1hcmsgZnJvbToKKy8vCisvLyAgICBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bXIxMC9C
ZW5jaC5odG1sCisvLworLy8gVGhlIGJlbmNobWFyayB3YXMgb3JpZ2luYWxseSBpbXBsZW1lbnRl
ZCBpbiBCQ1BMIGJ5CisvLyBNYXJ0aW4gUmljaGFyZHMuCisKKworLyoqCisgKiBUaGUgUmljaGFy
ZHMgYmVuY2htYXJrIHNpbXVsYXRlcyB0aGUgdGFzayBkaXNwYXRjaGVyIG9mIGFuCisgKiBvcGVy
YXRpbmcgc3lzdGVtLgorICoqLworZnVuY3Rpb24gcnVuUmljaGFyZHMoKSB7CisgIHZhciBzY2hl
ZHVsZXIgPSBuZXcgU2NoZWR1bGVyKCk7CisgIHNjaGVkdWxlci5hZGRJZGxlVGFzayhJRF9JRExF
LCAwLCBudWxsLCBDT1VOVCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9X
T1JLRVIsIEtJTkRfV09SSyk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX1dPUktF
UiwgS0lORF9XT1JLKTsKKyAgc2NoZWR1bGVyLmFkZFdvcmtlclRhc2soSURfV09SS0VSLCAxMDAw
LCBxdWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9BLCBLSU5E
X0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5E
X0RFVklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5E
X0RFVklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0EsIDIwMDAs
IHF1ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0IsIEtJTkRf
REVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRf
REVWSUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRf
REVWSUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQiwgMzAwMCwg
cXVldWUpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9BLCA0MDAwLCBu
dWxsKTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQiwgNTAwMCwgbnVs
bCk7CisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYgKHNjaGVkdWxlci5xdWV1ZUNv
dW50ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8CisgICAgICBzY2hlZHVsZXIuaG9sZENvdW50
ICE9IEVYUEVDVEVEX0hPTERfQ09VTlQpIHsKKyAgICB2YXIgbXNnID0KKyAgICAgICAgIkVycm9y
IGR1cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAiICsgc2NoZWR1bGVyLnF1ZXVlQ291bnQg
KworICAgICAgICAiLCBob2xkQ291bnQgPSAiICsgc2NoZWR1bGVyLmhvbGRDb3VudCArICIuIjsK
KyAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKKyAgfQorfQorCit2YXIgQ09VTlQgPSAxMDAwOwor
CisvKioKKyAqIFRoZXNlIHR3byBjb25zdGFudHMgc3BlY2lmeSBob3cgbWFueSB0aW1lcyBhIHBh
Y2tldCBpcyBxdWV1ZWQgYW5kCisgKiBob3cgbWFueSB0aW1lcyBhIHRhc2sgaXMgcHV0IG9uIGhv
bGQgaW4gYSBjb3JyZWN0IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRoZXkgZG9uJ3QgaGF2ZSBhbnkg
bWVhbmluZyBhIHN1Y2ggYnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBvZiBhCisgKiBjb3JyZWN0IHJ1
biBzbyBpZiB0aGUgYWN0dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQgaXMgZGlmZmVyZW50IGZyb20K
KyAqIHRoZSBleHBlY3RlZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlv
bi4KKyAqKi8KK3ZhciBFWFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIzMjI7Cit2YXIgRVhQRUNURURf
SE9MRF9DT1VOVCA9IDkyODsKKworCisvKioKKyAqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRv
IHNjaGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisgKiBwcmlv
cml0aWVzLiAgU2NoZWR1bGluZyBpcyBkb25lIGJ5IG1haW50YWluaW5nIGEgbGlzdCBvZiB0YXNr
IGNvbnRyb2wgYmxvY2tzCisgKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRhdGEgcXVldWUg
dGhleSBhcmUgcHJvY2Vzc2luZy4KKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBTY2hl
ZHVsZXIoKSB7CisgIHRoaXMucXVldWVDb3VudCA9IDA7CisgIHRoaXMuaG9sZENvdW50ID0gMDsK
KyAgdGhpcy5ibG9ja3MgPSBuZXcgQXJyYXkoTlVNQkVSX09GX0lEUyk7CisgIHRoaXMubGlzdCA9
IG51bGw7CisgIHRoaXMuY3VycmVudFRjYiA9IG51bGw7CisgIHRoaXMuY3VycmVudElkID0gbnVs
bDsKK30KKwordmFyIElEX0lETEUgICAgICAgPSAwOwordmFyIElEX1dPUktFUiAgICAgPSAxOwor
dmFyIElEX0hBTkRMRVJfQSAgPSAyOwordmFyIElEX0hBTkRMRVJfQiAgPSAzOwordmFyIElEX0RF
VklDRV9BICAgPSA0OwordmFyIElEX0RFVklDRV9CICAgPSA1OwordmFyIE5VTUJFUl9PRl9JRFMg
PSA2OworCit2YXIgS0lORF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lORF9XT1JLICAgICA9IDE7CisK
Ky8qKgorICogQWRkIGFuIGlkbGUgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7
aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0
eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVl
IG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gY291
bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUgdGFzaworICovCitTY2hlZHVs
ZXIucHJvdG90eXBlLmFkZElkbGVUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUs
IGNvdW50KSB7CisgIHRoaXMuYWRkUnVubmluZ1Rhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3
IElkbGVUYXNrKHRoaXMsIDEsIGNvdW50KSk7Cit9OworCisvKioKKyAqIEFkZCBhIHdvcmsgdGFz
ayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2Yg
dGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5Cisg
KiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2Vk
IGJ5IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayA9IGZ1
bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3Jp
dHksIHF1ZXVlLCBuZXcgV29ya2VyVGFzayh0aGlzLCBJRF9IQU5ETEVSX0EsIDApKTsKK307CisK
Ky8qKgorICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFt
IHtpbnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9y
aXR5IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVl
dWUgb2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnBy
b3RvdHlwZS5hZGRIYW5kbGVyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7
CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSGFuZGxlclRhc2sodGhp
cykpOworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIu
CisgKiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0g
e2ludH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1
ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitT
Y2hlZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5
LCBxdWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IERldmlj
ZVRhc2sodGhpcykpCit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgYW5kIG1h
cmsgaXQgYXMgcnVubmluZy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhl
IHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBA
cGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5
IHRoZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisgKi8KK1Nj
aGVkdWxlci5wcm90b3R5cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5
LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFz
ayk7CisgIHRoaXMuY3VycmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9OworCisvKioKKyAqIEFkZCB0
aGUgc3BlY2lmaWVkIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQg
dGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRh
c2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3Jr
IHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0
YXNrIHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFRhc2sgPSBmdW5jdGlvbiAo
aWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmN1cnJlbnRUY2IgPSBuZXcgVGFz
a0NvbnRyb2xCbG9jayh0aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0
aGlzLmxpc3QgPSB0aGlzLmN1cnJlbnRUY2I7CisgIHRoaXMuYmxvY2tzW2lkXSA9IHRoaXMuY3Vy
cmVudFRjYjsKK307CisKKy8qKgorICogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBieSB0aGlz
IHNjaGVkdWxlci4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9u
ICgpIHsKKyAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5saXN0OworICB3aGlsZSAodGhpcy5jdXJy
ZW50VGNiICE9IG51bGwpIHsKKyAgICBpZiAodGhpcy5jdXJyZW50VGNiLmlzSGVsZE9yU3VzcGVu
ZGVkKCkpIHsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5saW5rOwor
ICAgIH0gZWxzZSB7CisgICAgICB0aGlzLmN1cnJlbnRJZCA9IHRoaXMuY3VycmVudFRjYi5pZDsK
KyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5ydW4oKTsKKyAgICB9Cisg
IH0KK307CisKKy8qKgorICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tl
ZCBhbmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAqIEBwYXJhbSB7aW50fSBpZCB0
aGUgaWQgb2YgdGhlIHRhc2sgdG8gc3VzcGVuZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnJl
bGVhc2UgPSBmdW5jdGlvbiAoaWQpIHsKKyAgdmFyIHRjYiA9IHRoaXMuYmxvY2tzW2lkXTsKKyAg
aWYgKHRjYiA9PSBudWxsKSByZXR1cm4gdGNiOworICB0Y2IubWFya0FzTm90SGVsZCgpOworICBp
ZiAodGNiLnByaW9yaXR5ID4gdGhpcy5jdXJyZW50VGNiLnByaW9yaXR5KSB7CisgICAgcmV0dXJu
IHRjYjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworICB9Cit9Owor
CisvKioKKyAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0
aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRhc2sg
d2lsbCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNpdGx5CisgKiByZWxl
YXNlZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAqLworU2NoZWR1bGVyLnBy
b3RvdHlwZS5ob2xkQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5ob2xkQ291bnQrKzsK
KyAgdGhpcy5jdXJyZW50VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRj
Yi5saW5rOworfTsKKworLyoqCisgKiBTdXNwZW5kIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRh
c2sgYW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIElm
IG5ldyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUg
cnVubmFibGUuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQgPSBmdW5j
dGlvbiAoKSB7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNTdXNwZW5kZWQoKTsKKyAgcmV0dXJu
IHRoaXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0
IHRvIHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyAqIGFzc29jaWF0
ZWQgd2l0aCB0aGUgcGFja2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1
cnJlbnRseQorICogc3VzcGVuZGVkLgorICogQHBhcmFtIHtQYWNrZXR9IHBhY2tldCB0aGUgcGFj
a2V0IHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlID0gZnVuY3Rpb24gKHBh
Y2tldCkgeworICB2YXIgdCA9IHRoaXMuYmxvY2tzW3BhY2tldC5pZF07CisgIGlmICh0ID09IG51
bGwpIHJldHVybiB0OworICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAgcGFja2V0LmxpbmsgPSBudWxs
OworICBwYWNrZXQuaWQgPSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0dXJuIHQuY2hlY2tQcmlvcml0
eUFkZCh0aGlzLmN1cnJlbnRUY2IsIHBhY2tldCk7Cit9OworCisvKioKKyAqIEEgdGFzayBjb250
cm9sIGJsb2NrIG1hbmFnZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUgb2Ygd29yayBwYWNrYWdlcyBh
c3NvY2lhdGVkCisgKiB3aXRoIGl0LgorICogQHBhcmFtIHtUYXNrQ29udHJvbEJsb2NrfSBsaW5r
IHRoZSBwcmVjZWRpbmcgYmxvY2sgaW4gdGhlIGxpbmtlZCBibG9jayBsaXN0CisgKiBAcGFyYW0g
e2ludH0gaWQgdGhlIGlkIG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0
aGUgcHJpb3JpdHkgb2YgdGhpcyBibG9jaworICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBx
dWV1ZSBvZiBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7
VGFza30gdGFzayB0aGUgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFRhc2tD
b250cm9sQmxvY2sobGluaywgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmxp
bmsgPSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRoaXMucHJpb3JpdHkgPSBwcmlvcml0eTsK
KyAgdGhpcy5xdWV1ZSA9IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0YXNrOworICBpZiAocXVldWUg
PT0gbnVsbCkgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5ERUQ7CisgIH0gZWxzZSB7
CisgICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRTsKKyAgfQorfQorCisv
KioKKyAqIFRoZSB0YXNrIGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuCisg
Ki8KK3ZhciBTVEFURV9SVU5OSU5HID0gMDsKKworLyoqCisgKiBUaGUgdGFzayBoYXMgcGFja2V0
cyBsZWZ0IHRvIHByb2Nlc3MuCisgKi8KK3ZhciBTVEFURV9SVU5OQUJMRSA9IDE7CisKKy8qKgor
ICogVGhlIHRhc2sgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIHRhc2sgaXMgbm90IGJs
b2NrZWQgYXMgc3VjaCBhbmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkgdGhlIHNjaGVkdWxlci4KKyAq
LwordmFyIFNUQVRFX1NVU1BFTkRFRCA9IDI7CisKKy8qKgorICogVGhlIHRhc2sgaXMgYmxvY2tl
ZCBhbmQgY2Fubm90IGJlIHJ1biB1bnRpbCBpdCBpcyBleHBsaWNpdGx5IHJlbGVhc2VkLgorICov
Cit2YXIgU1RBVEVfSEVMRCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUgPSBT
VEFURV9TVVNQRU5ERUQgfCBTVEFURV9SVU5OQUJMRTsKK3ZhciBTVEFURV9OT1RfSEVMRCA9IH5T
VEFURV9IRUxEOworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5zZXRSdW5uaW5nID0gZnVu
Y3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKK307CisKK1Rhc2tDb250
cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMu
c3RhdGUgPSB0aGlzLnN0YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJs
b2NrLnByb3RvdHlwZS5tYXJrQXNIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0g
dGhpcy5zdGF0ZSB8IFNUQVRFX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlw
ZS5pc0hlbGRPclN1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLnN0YXRl
ICYgU1RBVEVfSEVMRCkgIT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5ERUQpOwor
fTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1NVU1BFTkRFRDsKK307
CisKK1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlID0gZnVuY3Rpb24g
KCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1JVTk5BQkxFOworfTsKKwor
LyoqCisgKiBSdW5zIHRoaXMgdGFzaywgaWYgaXQgaXMgcmVhZHkgdG8gYmUgcnVuLCBhbmQgcmV0
dXJucyB0aGUgbmV4dCB0YXNrIHRvIHJ1bi4KKyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5
cGUucnVuID0gZnVuY3Rpb24gKCkgeworICB2YXIgcGFja2V0OworICBpZiAodGhpcy5zdGF0ZSA9
PSBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUpIHsKKyAgICBwYWNrZXQgPSB0aGlzLnF1ZXVlOwor
ICAgIHRoaXMucXVldWUgPSBwYWNrZXQubGluazsKKyAgICBpZiAodGhpcy5xdWV1ZSA9PSBudWxs
KSB7CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKKyAgICB9IGVsc2UgeworICAg
ICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBw
YWNrZXQgPSBudWxsOworICB9CisgIHJldHVybiB0aGlzLnRhc2sucnVuKHBhY2tldCk7Cit9Owor
CisvKioKKyAqIEFkZHMgYSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0IG9mIHRoaXMgYmxvY2sncyB0
YXNrLCBtYXJrcyB0aGlzIGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNlc3NhcnksIGFuZCByZXR1cm5z
IHRoZSBuZXh0IHJ1bm5hYmxlIG9iamVjdCB0byBydW4gKHRoZSBvbmUKKyAqIHdpdGggdGhlIGhp
Z2hlc3QgcHJpb3JpdHkpLgorICovCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5jaGVja1By
aW9yaXR5QWRkID0gZnVuY3Rpb24gKHRhc2ssIHBhY2tldCkgeworICBpZiAodGhpcy5xdWV1ZSA9
PSBudWxsKSB7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAgICB0aGlzLm1hcmtBc1J1bm5h
YmxlKCk7CisgICAgaWYgKHRoaXMucHJpb3JpdHkgPiB0YXNrLnByaW9yaXR5KSByZXR1cm4gdGhp
czsKKyAgfSBlbHNlIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0LmFkZFRvKHRoaXMucXVldWUp
OworICB9CisgIHJldHVybiB0YXNrOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUu
dG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAidGNiIHsgIiArIHRoaXMudGFzayAr
ICJAIiArIHRoaXMuc3RhdGUgKyAiIH0iOworfTsKKworLyoqCisgKiBBbiBpZGxlIHRhc2sgZG9l
c24ndCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJldHdlZW4gdGhlIHR3
bworICogZGV2aWNlIHRhc2tzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUg
c2NoZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJhbSB7aW50fSB2MSBhIHNl
ZWQgdmFsdWUgdGhhdCBjb250cm9scyBob3cgdGhlIGRldmljZSB0YXNrcyBhcmUgc2NoZWR1bGVk
CisgKiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIHRhc2sgc2hv
dWxkIGJlIHNjaGVkdWxlZAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIElkbGVUYXNr
KHNjaGVkdWxlciwgdjEsIGNvdW50KSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOwor
ICB0aGlzLnYxID0gdjE7CisgIHRoaXMuY291bnQgPSBjb3VudDsKK30KKworSWRsZVRhc2sucHJv
dG90eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhpcy5jb3VudC0tOworICBpZiAo
dGhpcy5jb3VudCA9PSAwKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKTsKKyAg
aWYgKCh0aGlzLnYxICYgMSkgPT0gMCkgeworICAgIHRoaXMudjEgPSB0aGlzLnYxID4+IDE7Cisg
ICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0EpOworICB9IGVsc2Ug
eworICAgIHRoaXMudjEgPSAodGhpcy52MSA+PiAxKSBeIDB4RDAwODsKKyAgICByZXR1cm4gdGhp
cy5zY2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQik7CisgIH0KK307CisKK0lkbGVUYXNrLnBy
b3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJJZGxlVGFzayIKK307
CisKKy8qKgorICogQSB0YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxmIGFmdGVyIGVhY2ggdGltZSBp
dCBoYXMgYmVlbiBydW4gdG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJvbSBhbiBl
eHRlcm5hbCBkZXZpY2UuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hl
ZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0
aW9uIERldmljZVRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVy
OworICB0aGlzLnYxID0gbnVsbDsKK30KKworRGV2aWNlVGFzay5wcm90b3R5cGUucnVuID0gZnVu
Y3Rpb24gKHBhY2tldCkgeworICBpZiAocGFja2V0ID09IG51bGwpIHsKKyAgICBpZiAodGhpcy52
MSA9PSBudWxsKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKKyAgICB2
YXIgdiA9IHRoaXMudjE7CisgICAgdGhpcy52MSA9IG51bGw7CisgICAgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLnF1ZXVlKHYpOworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSBwYWNrZXQ7CisgICAg
cmV0dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIH0KK307CisKK0RldmljZVRh
c2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkRldmljZVRh
c2siOworfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMu
CisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5h
Z2VzIHRoaXMgdGFzaworICogQHBhcmFtIHtpbnR9IHYxIGEgc2VlZCB1c2VkIHRvIHNwZWNpZnkg
aG93IHdvcmsgcGFja2V0cyBhcmUgbWFuaXB1bGF0ZWQKKyAqIEBwYXJhbSB7aW50fSB2MiBhbm90
aGVyIHNlZWQgdXNlZCB0byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tldHMgYXJlIG1hbmlwdWxhdGVk
CisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gV29ya2VyVGFzayhzY2hlZHVsZXIsIHYx
LCB2MikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOwor
ICB0aGlzLnYyID0gdjI7Cit9CisKK1dvcmtlclRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9u
IChwYWNrZXQpIHsKKyAgaWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgcmV0dXJuIHRoaXMuc2No
ZWR1bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgIH0gZWxzZSB7CisgICAgaWYgKHRoaXMudjEgPT0g
SURfSEFORExFUl9BKSB7CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9COworICAgIH0gZWxz
ZSB7CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9BOworICAgIH0KKyAgICBwYWNrZXQuaWQg
PSB0aGlzLnYxOworICAgIHBhY2tldC5hMSA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBE
QVRBX1NJWkU7IGkrKykgeworICAgICAgdGhpcy52MisrOworICAgICAgaWYgKHRoaXMudjIgPiAy
NikgdGhpcy52MiA9IDE7CisgICAgICBwYWNrZXQuYTJbaV0gPSB0aGlzLnYyOworICAgIH0KKyAg
ICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUocGFja2V0KTsKKyAgfQorfTsKKworV29ya2Vy
VGFzay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiV29ya2Vy
VGFzayI7Cit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0
cyBhbmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1
bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9y
CisgKi8KK2Z1bmN0aW9uIEhhbmRsZXJUYXNrKHNjaGVkdWxlcikgeworICB0aGlzLnNjaGVkdWxl
ciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7CisgIHRoaXMudjIgPSBudWxsOworfQor
CitIYW5kbGVyVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgeworICBpZiAo
cGFja2V0ICE9IG51bGwpIHsKKyAgICBpZiAocGFja2V0LmtpbmQgPT0gS0lORF9XT1JLKSB7Cisg
ICAgICB0aGlzLnYxID0gcGFja2V0LmFkZFRvKHRoaXMudjEpOworICAgIH0gZWxzZSB7CisgICAg
ICB0aGlzLnYyID0gcGFja2V0LmFkZFRvKHRoaXMudjIpOworICAgIH0KKyAgfQorICBpZiAodGhp
cy52MSAhPSBudWxsKSB7CisgICAgdmFyIGNvdW50ID0gdGhpcy52MS5hMTsKKyAgICB2YXIgdjsK
KyAgICBpZiAoY291bnQgPCBEQVRBX1NJWkUpIHsKKyAgICAgIGlmICh0aGlzLnYyICE9IG51bGwp
IHsKKyAgICAgICAgdiA9IHRoaXMudjI7CisgICAgICAgIHRoaXMudjIgPSB0aGlzLnYyLmxpbms7
CisgICAgICAgIHYuYTEgPSB0aGlzLnYxLmEyW2NvdW50XTsKKyAgICAgICAgdGhpcy52MS5hMSA9
IGNvdW50ICsgMTsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICB2ID0gdGhpcy52MTsKKyAgICAgIHRoaXMudjEgPSB0
aGlzLnYxLmxpbms7CisgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgICAg
fQorICB9CisgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOworfTsKKwor
SGFuZGxlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4g
IkhhbmRsZXJUYXNrIjsKK307CisKKy8qIC0tLSAqCisgKiBQIGEgYyBrIGUgdAorICogLS0tICov
CisKK3ZhciBEQVRBX1NJWkUgPSA0OworCisvKioKKyAqIEEgc2ltcGxlIHBhY2thZ2Ugb2YgZGF0
YSB0aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBleGFjdCBsYXlvdXQKKyAq
IG9mIHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBpcyBub3QgaW1wb3J0YWlu
dCwgYW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdvcmsgcGVyZm9ybWVkIG9u
IHBhY2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2FycnlpbmcgZGF0YSwgcGFj
a2V0cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQgYm90aCBhcworICogZGF0
YSBhbmQgd29ya2xpc3RzLgorICogQHBhcmFtIHtQYWNrZXR9IGxpbmsgdGhlIHRhaWwgb2YgdGhl
IGxpbmtlZCBsaXN0IG9mIHBhY2tldHMKKyAqIEBwYXJhbSB7aW50fSBpZCBhbiBJRCBmb3IgdGhp
cyBwYWNrZXQKKyAqIEBwYXJhbSB7aW50fSBraW5kIHRoZSB0eXBlIG9mIHRoaXMgcGFja2V0Cisg
KiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gUGFja2V0KGxpbmssIGlkLCBraW5kKSB7Cisg
IHRoaXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsKKyAgdGhpcy5raW5kID0ga2luZDsK
KyAgdGhpcy5hMSA9IDA7CisgIHRoaXMuYTIgPSBuZXcgQXJyYXkoREFUQV9TSVpFKTsKK30KKwor
LyoqCisgKiBBZGQgdGhpcyBwYWNrZXQgdG8gdGhlIGVuZCBvZiBhIHdvcmtsaXN0LCBhbmQgcmV0
dXJuIHRoZSB3b3JrbGlzdC4KKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgd29ya2xpc3Qg
dG8gYWRkIHRoaXMgcGFja2V0IHRvCisgKi8KK1BhY2tldC5wcm90b3R5cGUuYWRkVG8gPSBmdW5j
dGlvbiAocXVldWUpIHsKKyAgdGhpcy5saW5rID0gbnVsbDsKKyAgaWYgKHF1ZXVlID09IG51bGwp
IHJldHVybiB0aGlzOworICB2YXIgcGVlaywgbmV4dCA9IHF1ZXVlOworICB3aGlsZSAoKHBlZWsg
PSBuZXh0LmxpbmspICE9IG51bGwpCisgICAgbmV4dCA9IHBlZWs7CisgIG5leHQubGluayA9IHRo
aXM7CisgIHJldHVybiBxdWV1ZTsKK307CisKK1BhY2tldC5wcm90b3R5cGUudG9TdHJpbmcgPSBm
dW5jdGlvbiAoKSB7CisgIHJldHVybiAiUGFja2V0IjsKK307CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMjAwMDA7ICsraSkKKyAgcnVuUmljaGFyZHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM2MzMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA5LTIxICBTYWFtIGJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBzYW1wbGluZyBzaG91bGQgbm90
IHVzZSBTdHJvbmc8Q29kZUJsb2NrPiBpbiBpdHMgbWFjaGluZUxvY2F0aW9uIGZpZWxkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzMTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc2FtcGxpbmcg
cHJvZmlsZXIgaGFzIGEgQ0xJIG1vZGUgd2hlcmUgd2UgZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0
IGlubGluZQorICAgICAgICBjYWxsIGZyYW1lcy4gVGhhdCBkYXRhIHN0cnVjdHVyZSB3YXMgdXNp
bmcgYSBTdHJvbmc8Q29kZUJsb2NrLiBXZSB3ZXJlCisgICAgICAgIGNvbnN0cnVjdGluZyB0aGlz
IFN0cm9uZzxDb2RlQmxvY2s+IGR1cmluZyBHQyBjb25jdXJyZW50bHkgdG8gcHJvY2Vzc2luZyBh
bGwKKyAgICAgICAgdGhlIFN0cm9uZyBoYW5kbGVzLiBUaGlzIGlzIGEgYnVnIHNpbmNlIHdlIGVu
ZCB1cCBjb3JydXB0aW5nIHRoYXQgZGF0YQorICAgICAgICBzdHJ1Y3R1cmUuIFRoaXMgcGF0Y2gg
Zml4ZXMgdGhpcyBieSBqdXN0IG1ha2luZyB0aGlzIGRhdGEgc3RydWN0dXJlIHVzZSB0aGUKKyAg
ICAgICAgc2FtcGxpbmcgcHJvZmlsZXIncyBtZWNoYW5pc20gZm9yIGhvbGRpbmcgb250byBhbmQg
cHJvcGVybHkgdmlzaXRpbmcgaGVhcCBwb2ludGVycy4KKworICAgICAgICAqIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQ6OnRyYWNraW5nQ29tcGxldGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlNhbXBs
aW5nUHJvZmlsZXI6OnByb2Nlc3NVbnZlcmlmaWVkU3RhY2tUcmFjZXMpOgorCisgICAgICAgIChK
U0M6OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6CisgICAgICAgIFRoZXNlIENM
SSBoZWxwZXJzIG5lZWRlZCBhIERlZmVyR0Mgb3RoZXJ3aXNlIHdlIG1heSBlbmQgdXAgZGVhZGxv
Y2tpbmcgd2hlbiB3ZQorICAgICAgICBjYXVzZSBhIEdDIHRvIGhhcHBlbiB3aGlsZSBhbHJlYWR5
IGhvbGRpbmcgdGhlIHNhbXBsaW5nIHByb2ZpbGVyJ3MKKyAgICAgICAgbG9jay4KKwogMjAxOC0w
OS0yMSAgTWlrZSBHb3JzZSAgPG1nb3JzZUBzdXNlLmNvbT4KIAogICAgICAgICBCdWlsZCB0b29s
cyBzaG91bGQgd29yayB3aGVuIHRoZSAvdXNyL2Jpbi9weXRob24gaXMgcHl0aG9uMwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJv
ZmlsZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAJKHJldmlzaW9uIDIz
NjMzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDcsNyArMjA3LDcg
QEAgdm9pZCBJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Ojp0cmFjawogICAgIGlmIChtX2Vu
YWJsZWRTYW1wbGluZ1Byb2ZpbGVyKSB7CiAgICAgICAgIFZNJiB2bSA9IG1fZW52aXJvbm1lbnQu
c2NyaXB0RGVidWdTZXJ2ZXIoKS52bSgpOwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
Ci0gICAgICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKKyAgICAgICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOyAvLyBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2Ugd2lsbCBoYXZlIHJh
dyBwb2ludGVycyBpbnRvIHRoZSBoZWFwIGFmdGVyIHdlIHJlbGVhc2VTdGFja1RyYWNlcygpLgog
ICAgICAgICBTYW1wbGluZ1Byb2ZpbGVyKiBzYW1wbGluZ1Byb2ZpbGVyID0gdm0uc2FtcGxpbmdQ
cm9maWxlcigpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChzYW1wbGluZ1Byb2ZpbGVyKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9m
aWxlci5jcHAJKHJldmlzaW9uIDIzNjMzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjcsOCArNTY3LDEw
IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWQKICAgICAgICAgICAg
ICAgICAvLyBvdXRwdXQgb24gdGhlIGNvbW1hbmQgbGluZSwgYnV0IHdlIGNvdWxkIGV4dGVuZCBp
dCB0byB0aGUgd2ViCiAgICAgICAgICAgICAgICAgLy8gaW5zcGVjdG9yIGluIHRoZSBmdXR1cmUg
aWYgd2UgZmluZCBhIG5lZWQgZm9yIGl0IHRoZXJlLgogICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YWNrVHJhY2UuZnJhbWVzLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBzdGFja1RyYWNlLmZyYW1lcy5zaXplKCkgLSAxOyBp
KyspCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UuZnJhbWVzW2ldLm1hY2hpbmVMb2Nh
dGlvbiA9IHN0ZDo6bWFrZV9wYWlyKG1hY2hpbmVMb2NhdGlvbiwgU3Ryb25nPENvZGVCbG9jaz4o
bV92bSwgbWFjaGluZUNvZGVCbG9jaykpOworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSBzdGFydEluZGV4OyBpIDwgc3RhY2tUcmFjZS5mcmFtZXMuc2l6ZSgpIC0gMTsgaSsrKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fbGl2ZUNlbGxQb2ludGVycy5hZGQobWFjaGluZUNvZGVCbG9j
ayk7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UuZnJhbWVzW2ldLm1hY2hpbmVMb2Nh
dGlvbiA9IHN0ZDo6bWFrZV9wYWlyKG1hY2hpbmVMb2NhdGlvbiwgbWFjaGluZUNvZGVCbG9jayk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9OwogCkBAIC05NTIs
NiArOTU0LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BGdW5jdGlvbgogdm9p
ZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BGdW5jdGlvbnMoUHJpbnRTdHJlYW0mIG91dCkK
IHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOworICAgIERlZmVyR0NGb3JBV2hpbGUg
ZGVmZXJHQyhtX3ZtLmhlYXApOwogCiAgICAgewogICAgICAgICBIZWFwSXRlcmF0aW9uU2NvcGUg
aGVhcEl0ZXJhdGlvblNjb3BlKG1fdm0uaGVhcCk7CkBAIC0xMDA0LDYgKzEwMDcsNyBAQCB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlCiB2b2lkIFNhbXBsaW5nUHJvZmls
ZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogewogICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKG1fdm0uaGVh
cCk7CiAKICAgICB7CiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBoZWFwSXRlcmF0aW9uU2Nv
cGUobV92bS5oZWFwKTsKQEAgLTEwMzUsNyArMTAzOSw3IEBAIHZvaWQgU2FtcGxpbmdQcm9maWxl
cjo6cmVwb3J0VG9wQnl0ZWNvZGUKIAogICAgICAgICBTdGFja0ZyYW1lJiBmcmFtZSA9IHN0YWNr
VHJhY2UuZnJhbWVzLmZpcnN0KCk7CiAgICAgICAgIFN0cmluZyBmcmFtZURlc2NyaXB0aW9uID0g
bWFrZVN0cmluZyhmcmFtZS5kaXNwbGF5TmFtZShtX3ZtKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlv
bihmcmFtZS5zZW1hbnRpY0xvY2F0aW9uKSk7Ci0gICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPHN0
ZDo6cGFpcjxTdGFja0ZyYW1lOjpDb2RlTG9jYXRpb24sIFN0cm9uZzxDb2RlQmxvY2s+Pj4gbWFj
aGluZUxvY2F0aW9uID0gZnJhbWUubWFjaGluZUxvY2F0aW9uKSB7CisgICAgICAgIGlmIChzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdGFja0ZyYW1lOjpDb2RlTG9jYXRpb24sIENvZGVCbG9jayo+
PiBtYWNoaW5lTG9jYXRpb24gPSBmcmFtZS5tYWNoaW5lTG9jYXRpb24pIHsKICAgICAgICAgICAg
IGZyYW1lRGVzY3JpcHRpb24gPSBtYWtlU3RyaW5nKGZyYW1lRGVzY3JpcHRpb24sICIgPC0tICIs
CiAgICAgICAgICAgICAgICAgbWFjaGluZUxvY2F0aW9uLT5zZWNvbmQtPmluZmVycmVkTmFtZSgp
LmRhdGEoKSwgZGVzY3JpcHRpb25Gb3JMb2NhdGlvbihtYWNoaW5lTG9jYXRpb24tPmZpcnN0KSk7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5n
UHJvZmlsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmgJKHJldmlzaW9uIDIzNjMzMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgfTsKIAogICAgICAgICBDb2RlTG9jYXRpb24gc2Vt
YW50aWNMb2NhdGlvbjsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29kZUxvY2F0
aW9uLCBTdHJvbmc8Q29kZUJsb2NrPj4+IG1hY2hpbmVMb2NhdGlvbjsgLy8gVGhpcyBpcyBub24t
bnVsbCBpZiB3ZSB3ZXJlIGlubGluZWQuIEl0IHJlcHJlc2VudHMgdGhlIG1hY2hpbmUgZnJhbWUg
d2Ugd2VyZSBpbmxpbmVkIGludG8uCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENv
ZGVMb2NhdGlvbiwgQ29kZUJsb2NrKj4+IG1hY2hpbmVMb2NhdGlvbjsgLy8gVGhpcyBpcyBub24t
bnVsbCBpZiB3ZSB3ZXJlIGlubGluZWQuIEl0IHJlcHJlc2VudHMgdGhlIG1hY2hpbmUgZnJhbWUg
d2Ugd2VyZSBpbmxpbmVkIGludG8uCiAKICAgICAgICAgYm9vbCBoYXNFeHByZXNzaW9uSW5mbygp
IGNvbnN0IHsgcmV0dXJuIHNlbWFudGljTG9jYXRpb24uaGFzRXhwcmVzc2lvbkluZm8oKTsgfQog
ICAgICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3QK
</data>
<flag name="review"
          id="367844"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350394</attachid>
            <date>2018-09-21 11:46:23 -0700</date>
            <delta_ts>2018-09-22 00:28:47 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>22664</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzYzMzUpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDE4LTA5LTIxICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFRoZSBzYW1wbGluZyBzaG91bGQgbm90IHVzZSBTdHJvbmc8Q29kZUJs
b2NrPiBpbiBpdHMgbWFjaGluZUxvY2F0aW9uIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzMTkKKworICAgICAgICBSZXZpZXdlZCBieSBG
aWxpcCBQaXpsby4KKworICAgICAgICAqIHN0cmVzcy9zYW1wbGluZy1wcm9maWxlci1yaWNoYXJk
cy5qczogQWRkZWQuCisKIDIwMTgtMDktMTkgIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lA
c2xvd3N0YXJ0Lm9yZz4KIAogICAgICAgICBbSlNDXSBPcHRpbWl6ZSBBcnJheSNpbmRleE9mIGlu
IEMrKyBydW50aW1lCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci1yaWNo
YXJkcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9maWxlci1y
aWNoYXJkcy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9zYW1wbGluZy1wcm9m
aWxlci1yaWNoYXJkcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0MSBAQAorLy9AIHJ1
bkRlZmF1bHQoIi0tY29sbGVjdENvbnRpbnVvdXNseT0xIiwgIi0tdXNlU2FtcGxpbmdQcm9maWxl
cj0xIiwgIi0tY29sbGVjdFNhbXBsaW5nUHJvZmlsZXJEYXRhRm9ySlNDU2hlbGw9MSIpCisKKyJ1
c2Ugc3RyaWN0IjsKKworLy8gQ29weXJpZ2h0IDIwMDYtMjAwOCB0aGUgVjggcHJvamVjdCBhdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisvLyBtZXQ6CisvLworLy8gICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8v
ICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisvLyAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKy8vICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKy8vICAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorLy8gICAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisv
LyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworLy8gVGhp
cyBpcyBhIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJpY2hhcmRzCisvLyBiZW5j
aG1hcmsgZnJvbToKKy8vCisvLyAgICBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bXIxMC9CZW5j
aC5odG1sCisvLworLy8gVGhlIGJlbmNobWFyayB3YXMgb3JpZ2luYWxseSBpbXBsZW1lbnRlZCBp
biBCQ1BMIGJ5CisvLyBNYXJ0aW4gUmljaGFyZHMuCisKKworLyoqCisgKiBUaGUgUmljaGFyZHMg
YmVuY2htYXJrIHNpbXVsYXRlcyB0aGUgdGFzayBkaXNwYXRjaGVyIG9mIGFuCisgKiBvcGVyYXRp
bmcgc3lzdGVtLgorICoqLworZnVuY3Rpb24gcnVuUmljaGFyZHMoKSB7CisgIHZhciBzY2hlZHVs
ZXIgPSBuZXcgU2NoZWR1bGVyKCk7CisgIHNjaGVkdWxlci5hZGRJZGxlVGFzayhJRF9JRExFLCAw
LCBudWxsLCBDT1VOVCk7CisKKyAgdmFyIHF1ZXVlID0gbmV3IFBhY2tldChudWxsLCBJRF9XT1JL
RVIsIEtJTkRfV09SSyk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX1dPUktFUiwg
S0lORF9XT1JLKTsKKyAgc2NoZWR1bGVyLmFkZFdvcmtlclRhc2soSURfV09SS0VSLCAxMDAwLCBx
dWV1ZSk7CisKKyAgcXVldWUgPSBuZXcgUGFja2V0KG51bGwsIElEX0RFVklDRV9BLCBLSU5EX0RF
VklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5EX0RF
VklDRSk7CisgIHF1ZXVlID0gbmV3IFBhY2tldChxdWV1ZSwgIElEX0RFVklDRV9BLCBLSU5EX0RF
VklDRSk7CisgIHNjaGVkdWxlci5hZGRIYW5kbGVyVGFzayhJRF9IQU5ETEVSX0EsIDIwMDAsIHF1
ZXVlKTsKKworICBxdWV1ZSA9IG5ldyBQYWNrZXQobnVsbCwgSURfREVWSUNFX0IsIEtJTkRfREVW
SUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRfREVW
SUNFKTsKKyAgcXVldWUgPSBuZXcgUGFja2V0KHF1ZXVlLCAgSURfREVWSUNFX0IsIEtJTkRfREVW
SUNFKTsKKyAgc2NoZWR1bGVyLmFkZEhhbmRsZXJUYXNrKElEX0hBTkRMRVJfQiwgMzAwMCwgcXVl
dWUpOworCisgIHNjaGVkdWxlci5hZGREZXZpY2VUYXNrKElEX0RFVklDRV9BLCA0MDAwLCBudWxs
KTsKKworICBzY2hlZHVsZXIuYWRkRGV2aWNlVGFzayhJRF9ERVZJQ0VfQiwgNTAwMCwgbnVsbCk7
CisKKyAgc2NoZWR1bGVyLnNjaGVkdWxlKCk7CisKKyAgaWYgKHNjaGVkdWxlci5xdWV1ZUNvdW50
ICE9IEVYUEVDVEVEX1FVRVVFX0NPVU5UIHx8CisgICAgICBzY2hlZHVsZXIuaG9sZENvdW50ICE9
IEVYUEVDVEVEX0hPTERfQ09VTlQpIHsKKyAgICB2YXIgbXNnID0KKyAgICAgICAgIkVycm9yIGR1
cmluZyBleGVjdXRpb246IHF1ZXVlQ291bnQgPSAiICsgc2NoZWR1bGVyLnF1ZXVlQ291bnQgKwor
ICAgICAgICAiLCBob2xkQ291bnQgPSAiICsgc2NoZWR1bGVyLmhvbGRDb3VudCArICIuIjsKKyAg
ICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKKyAgfQorfQorCit2YXIgQ09VTlQgPSAxMDAwOworCisv
KioKKyAqIFRoZXNlIHR3byBjb25zdGFudHMgc3BlY2lmeSBob3cgbWFueSB0aW1lcyBhIHBhY2tl
dCBpcyBxdWV1ZWQgYW5kCisgKiBob3cgbWFueSB0aW1lcyBhIHRhc2sgaXMgcHV0IG9uIGhvbGQg
aW4gYSBjb3JyZWN0IHJ1biBvZiByaWNoYXJkcy4KKyAqIFRoZXkgZG9uJ3QgaGF2ZSBhbnkgbWVh
bmluZyBhIHN1Y2ggYnV0IGFyZSBjaGFyYWN0ZXJpc3RpYyBvZiBhCisgKiBjb3JyZWN0IHJ1biBz
byBpZiB0aGUgYWN0dWFsIHF1ZXVlIG9yIGhvbGQgY291bnQgaXMgZGlmZmVyZW50IGZyb20KKyAq
IHRoZSBleHBlY3RlZCB0aGVyZSBtdXN0IGJlIGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4K
KyAqKi8KK3ZhciBFWFBFQ1RFRF9RVUVVRV9DT1VOVCA9IDIzMjI7Cit2YXIgRVhQRUNURURfSE9M
RF9DT1VOVCA9IDkyODsKKworCisvKioKKyAqIEEgc2NoZWR1bGVyIGNhbiBiZSB1c2VkIHRvIHNj
aGVkdWxlIGEgc2V0IG9mIHRhc2tzIGJhc2VkIG9uIHRoZWlyIHJlbGF0aXZlCisgKiBwcmlvcml0
aWVzLiAgU2NoZWR1bGluZyBpcyBkb25lIGJ5IG1haW50YWluaW5nIGEgbGlzdCBvZiB0YXNrIGNv
bnRyb2wgYmxvY2tzCisgKiB3aGljaCBob2xkcyB0YXNrcyBhbmQgdGhlIGRhdGEgcXVldWUgdGhl
eSBhcmUgcHJvY2Vzc2luZy4KKyAqIEBjb25zdHJ1Y3RvcgorICovCitmdW5jdGlvbiBTY2hlZHVs
ZXIoKSB7CisgIHRoaXMucXVldWVDb3VudCA9IDA7CisgIHRoaXMuaG9sZENvdW50ID0gMDsKKyAg
dGhpcy5ibG9ja3MgPSBuZXcgQXJyYXkoTlVNQkVSX09GX0lEUyk7CisgIHRoaXMubGlzdCA9IG51
bGw7CisgIHRoaXMuY3VycmVudFRjYiA9IG51bGw7CisgIHRoaXMuY3VycmVudElkID0gbnVsbDsK
K30KKwordmFyIElEX0lETEUgICAgICAgPSAwOwordmFyIElEX1dPUktFUiAgICAgPSAxOwordmFy
IElEX0hBTkRMRVJfQSAgPSAyOwordmFyIElEX0hBTkRMRVJfQiAgPSAzOwordmFyIElEX0RFVklD
RV9BICAgPSA0OwordmFyIElEX0RFVklDRV9CICAgPSA1OwordmFyIE5VTUJFUl9PRl9JRFMgPSA2
OworCit2YXIgS0lORF9ERVZJQ0UgICA9IDA7Cit2YXIgS0lORF9XT1JLICAgICA9IDE7CisKKy8q
KgorICogQWRkIGFuIGlkbGUgdGFzayB0byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50
fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0
aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9m
IHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gY291bnQg
dGhlIG51bWJlciBvZiB0aW1lcyB0byBzY2hlZHVsZSB0aGUgdGFzaworICovCitTY2hlZHVsZXIu
cHJvdG90eXBlLmFkZElkbGVUYXNrID0gZnVuY3Rpb24gKGlkLCBwcmlvcml0eSwgcXVldWUsIGNv
dW50KSB7CisgIHRoaXMuYWRkUnVubmluZ1Rhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IElk
bGVUYXNrKHRoaXMsIDEsIGNvdW50KSk7Cit9OworCisvKioKKyAqIEFkZCBhIHdvcmsgdGFzayB0
byB0aGlzIHNjaGVkdWxlci4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhl
IHRhc2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBA
cGFyYW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5
IHRoZSB0YXNrCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuYWRkV29ya2VyVGFzayA9IGZ1bmN0
aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7CisgIHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHks
IHF1ZXVlLCBuZXcgV29ya2VyVGFzayh0aGlzLCBJRF9IQU5ETEVSX0EsIDApKTsKK307CisKKy8q
KgorICogQWRkIGEgaGFuZGxlciB0YXNrIHRvIHRoaXMgc2NoZWR1bGVyLgorICogQHBhcmFtIHtp
bnR9IGlkIHRoZSBpZGVudGl0eSBvZiB0aGUgdGFzaworICogQHBhcmFtIHtpbnR9IHByaW9yaXR5
IHRoZSB0YXNrJ3MgcHJpb3JpdHkKKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgcXVldWUg
b2Ygd29yayB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqLworU2NoZWR1bGVyLnByb3Rv
dHlwZS5hZGRIYW5kbGVyVGFzayA9IGZ1bmN0aW9uIChpZCwgcHJpb3JpdHksIHF1ZXVlKSB7Cisg
IHRoaXMuYWRkVGFzayhpZCwgcHJpb3JpdHksIHF1ZXVlLCBuZXcgSGFuZGxlclRhc2sodGhpcykp
OworfTsKKworLyoqCisgKiBBZGQgYSBoYW5kbGVyIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisg
KiBAcGFyYW0ge2ludH0gaWQgdGhlIGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2lu
dH0gcHJpb3JpdHkgdGhlIHRhc2sncyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVl
IHRoZSBxdWV1ZSBvZiB3b3JrIHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICovCitTY2hl
ZHVsZXIucHJvdG90eXBlLmFkZERldmljZVRhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBx
dWV1ZSkgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgbmV3IERldmljZVRh
c2sodGhpcykpCit9OworCisvKioKKyAqIEFkZCB0aGUgc3BlY2lmaWVkIHRhc2sgYW5kIG1hcmsg
aXQgYXMgcnVubmluZy4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUgaWRlbnRpdHkgb2YgdGhlIHRh
c2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUgdGFzaydzIHByaW9yaXR5CisgKiBAcGFy
YW0ge1BhY2tldH0gcXVldWUgdGhlIHF1ZXVlIG9mIHdvcmsgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRo
ZSB0YXNrCisgKiBAcGFyYW0ge1Rhc2t9IHRhc2sgdGhlIHRhc2sgdG8gYWRkCisgKi8KK1NjaGVk
dWxlci5wcm90b3R5cGUuYWRkUnVubmluZ1Rhc2sgPSBmdW5jdGlvbiAoaWQsIHByaW9yaXR5LCBx
dWV1ZSwgdGFzaykgeworICB0aGlzLmFkZFRhc2soaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzayk7
CisgIHRoaXMuY3VycmVudFRjYi5zZXRSdW5uaW5nKCk7Cit9OworCisvKioKKyAqIEFkZCB0aGUg
c3BlY2lmaWVkIHRhc2sgdG8gdGhpcyBzY2hlZHVsZXIuCisgKiBAcGFyYW0ge2ludH0gaWQgdGhl
IGlkZW50aXR5IG9mIHRoZSB0YXNrCisgKiBAcGFyYW0ge2ludH0gcHJpb3JpdHkgdGhlIHRhc2sn
cyBwcmlvcml0eQorICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1ZSBvZiB3b3JrIHRv
IGJlIHByb2Nlc3NlZCBieSB0aGUgdGFzaworICogQHBhcmFtIHtUYXNrfSB0YXNrIHRoZSB0YXNr
IHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLmFkZFRhc2sgPSBmdW5jdGlvbiAoaWQs
IHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmN1cnJlbnRUY2IgPSBuZXcgVGFza0Nv
bnRyb2xCbG9jayh0aGlzLmxpc3QsIGlkLCBwcmlvcml0eSwgcXVldWUsIHRhc2spOworICB0aGlz
Lmxpc3QgPSB0aGlzLmN1cnJlbnRUY2I7CisgIHRoaXMuYmxvY2tzW2lkXSA9IHRoaXMuY3VycmVu
dFRjYjsKK307CisKKy8qKgorICogRXhlY3V0ZSB0aGUgdGFza3MgbWFuYWdlZCBieSB0aGlzIHNj
aGVkdWxlci4KKyAqLworU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICgp
IHsKKyAgdGhpcy5jdXJyZW50VGNiID0gdGhpcy5saXN0OworICB3aGlsZSAodGhpcy5jdXJyZW50
VGNiICE9IG51bGwpIHsKKyAgICBpZiAodGhpcy5jdXJyZW50VGNiLmlzSGVsZE9yU3VzcGVuZGVk
KCkpIHsKKyAgICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5saW5rOworICAg
IH0gZWxzZSB7CisgICAgICB0aGlzLmN1cnJlbnRJZCA9IHRoaXMuY3VycmVudFRjYi5pZDsKKyAg
ICAgIHRoaXMuY3VycmVudFRjYiA9IHRoaXMuY3VycmVudFRjYi5ydW4oKTsKKyAgICB9CisgIH0K
K307CisKKy8qKgorICogUmVsZWFzZSBhIHRhc2sgdGhhdCBpcyBjdXJyZW50bHkgYmxvY2tlZCBh
bmQgcmV0dXJuIHRoZSBuZXh0IGJsb2NrIHRvIHJ1bi4KKyAqIEBwYXJhbSB7aW50fSBpZCB0aGUg
aWQgb2YgdGhlIHRhc2sgdG8gc3VzcGVuZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnJlbGVh
c2UgPSBmdW5jdGlvbiAoaWQpIHsKKyAgdmFyIHRjYiA9IHRoaXMuYmxvY2tzW2lkXTsKKyAgaWYg
KHRjYiA9PSBudWxsKSByZXR1cm4gdGNiOworICB0Y2IubWFya0FzTm90SGVsZCgpOworICBpZiAo
dGNiLnByaW9yaXR5ID4gdGhpcy5jdXJyZW50VGNiLnByaW9yaXR5KSB7CisgICAgcmV0dXJuIHRj
YjsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gdGhpcy5jdXJyZW50VGNiOworICB9Cit9OworCisv
KioKKyAqIEJsb2NrIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgYW5kIHJldHVybiB0aGUg
bmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIFRoZSBibG9ja2VkIHRhc2sgd2ls
bCBub3QgYmUgbWFkZSBydW5uYWJsZSB1bnRpbCBpdCBpcyBleHBsaWNpdGx5CisgKiByZWxlYXNl
ZCwgZXZlbiBpZiBuZXcgd29yayBpcyBhZGRlZCB0byBpdC4KKyAqLworU2NoZWR1bGVyLnByb3Rv
dHlwZS5ob2xkQ3VycmVudCA9IGZ1bmN0aW9uICgpIHsKKyAgdGhpcy5ob2xkQ291bnQrKzsKKyAg
dGhpcy5jdXJyZW50VGNiLm1hcmtBc0hlbGQoKTsKKyAgcmV0dXJuIHRoaXMuY3VycmVudFRjYi5s
aW5rOworfTsKKworLyoqCisgKiBTdXNwZW5kIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sg
YW5kIHJldHVybiB0aGUgbmV4dCB0YXNrIGNvbnRyb2wgYmxvY2sKKyAqIHRvIHJ1bi4gIElmIG5l
dyB3b3JrIGlzIGFkZGVkIHRvIHRoZSBzdXNwZW5kZWQgdGFzayBpdCB3aWxsIGJlIG1hZGUgcnVu
bmFibGUuCisgKi8KK1NjaGVkdWxlci5wcm90b3R5cGUuc3VzcGVuZEN1cnJlbnQgPSBmdW5jdGlv
biAoKSB7CisgIHRoaXMuY3VycmVudFRjYi5tYXJrQXNTdXNwZW5kZWQoKTsKKyAgcmV0dXJuIHRo
aXMuY3VycmVudFRjYjsKK307CisKKy8qKgorICogQWRkIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRv
IHRoZSBlbmQgb2YgdGhlIHdvcmtsaXN0IHVzZWQgYnkgdGhlIHRhc2sKKyAqIGFzc29jaWF0ZWQg
d2l0aCB0aGUgcGFja2V0IGFuZCBtYWtlIHRoZSB0YXNrIHJ1bm5hYmxlIGlmIGl0IGlzIGN1cnJl
bnRseQorICogc3VzcGVuZGVkLgorICogQHBhcmFtIHtQYWNrZXR9IHBhY2tldCB0aGUgcGFja2V0
IHRvIGFkZAorICovCitTY2hlZHVsZXIucHJvdG90eXBlLnF1ZXVlID0gZnVuY3Rpb24gKHBhY2tl
dCkgeworICB2YXIgdCA9IHRoaXMuYmxvY2tzW3BhY2tldC5pZF07CisgIGlmICh0ID09IG51bGwp
IHJldHVybiB0OworICB0aGlzLnF1ZXVlQ291bnQrKzsKKyAgcGFja2V0LmxpbmsgPSBudWxsOwor
ICBwYWNrZXQuaWQgPSB0aGlzLmN1cnJlbnRJZDsKKyAgcmV0dXJuIHQuY2hlY2tQcmlvcml0eUFk
ZCh0aGlzLmN1cnJlbnRUY2IsIHBhY2tldCk7Cit9OworCisvKioKKyAqIEEgdGFzayBjb250cm9s
IGJsb2NrIG1hbmFnZXMgYSB0YXNrIGFuZCB0aGUgcXVldWUgb2Ygd29yayBwYWNrYWdlcyBhc3Nv
Y2lhdGVkCisgKiB3aXRoIGl0LgorICogQHBhcmFtIHtUYXNrQ29udHJvbEJsb2NrfSBsaW5rIHRo
ZSBwcmVjZWRpbmcgYmxvY2sgaW4gdGhlIGxpbmtlZCBibG9jayBsaXN0CisgKiBAcGFyYW0ge2lu
dH0gaWQgdGhlIGlkIG9mIHRoaXMgYmxvY2sKKyAqIEBwYXJhbSB7aW50fSBwcmlvcml0eSB0aGUg
cHJpb3JpdHkgb2YgdGhpcyBibG9jaworICogQHBhcmFtIHtQYWNrZXR9IHF1ZXVlIHRoZSBxdWV1
ZSBvZiBwYWNrYWdlcyB0byBiZSBwcm9jZXNzZWQgYnkgdGhlIHRhc2sKKyAqIEBwYXJhbSB7VGFz
a30gdGFzayB0aGUgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIFRhc2tDb250
cm9sQmxvY2sobGluaywgaWQsIHByaW9yaXR5LCBxdWV1ZSwgdGFzaykgeworICB0aGlzLmxpbmsg
PSBsaW5rOworICB0aGlzLmlkID0gaWQ7CisgIHRoaXMucHJpb3JpdHkgPSBwcmlvcml0eTsKKyAg
dGhpcy5xdWV1ZSA9IHF1ZXVlOworICB0aGlzLnRhc2sgPSB0YXNrOworICBpZiAocXVldWUgPT0g
bnVsbCkgeworICAgIHRoaXMuc3RhdGUgPSBTVEFURV9TVVNQRU5ERUQ7CisgIH0gZWxzZSB7Cisg
ICAgdGhpcy5zdGF0ZSA9IFNUQVRFX1NVU1BFTkRFRF9SVU5OQUJMRTsKKyAgfQorfQorCisvKioK
KyAqIFRoZSB0YXNrIGlzIHJ1bm5pbmcgYW5kIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQuCisgKi8K
K3ZhciBTVEFURV9SVU5OSU5HID0gMDsKKworLyoqCisgKiBUaGUgdGFzayBoYXMgcGFja2V0cyBs
ZWZ0IHRvIHByb2Nlc3MuCisgKi8KK3ZhciBTVEFURV9SVU5OQUJMRSA9IDE7CisKKy8qKgorICog
VGhlIHRhc2sgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIHRhc2sgaXMgbm90IGJsb2Nr
ZWQgYXMgc3VjaCBhbmQgbWF5CisqIGJlIHN0YXJ0ZWQgYnkgdGhlIHNjaGVkdWxlci4KKyAqLwor
dmFyIFNUQVRFX1NVU1BFTkRFRCA9IDI7CisKKy8qKgorICogVGhlIHRhc2sgaXMgYmxvY2tlZCBh
bmQgY2Fubm90IGJlIHJ1biB1bnRpbCBpdCBpcyBleHBsaWNpdGx5IHJlbGVhc2VkLgorICovCit2
YXIgU1RBVEVfSEVMRCA9IDQ7CisKK3ZhciBTVEFURV9TVVNQRU5ERURfUlVOTkFCTEUgPSBTVEFU
RV9TVVNQRU5ERUQgfCBTVEFURV9SVU5OQUJMRTsKK3ZhciBTVEFURV9OT1RfSEVMRCA9IH5TVEFU
RV9IRUxEOworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5zZXRSdW5uaW5nID0gZnVuY3Rp
b24gKCkgeworICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKK307CisKK1Rhc2tDb250cm9s
QmxvY2sucHJvdG90eXBlLm1hcmtBc05vdEhlbGQgPSBmdW5jdGlvbiAoKSB7CisgIHRoaXMuc3Rh
dGUgPSB0aGlzLnN0YXRlICYgU1RBVEVfTk9UX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2Nr
LnByb3RvdHlwZS5tYXJrQXNIZWxkID0gZnVuY3Rpb24gKCkgeworICB0aGlzLnN0YXRlID0gdGhp
cy5zdGF0ZSB8IFNUQVRFX0hFTEQ7Cit9OworCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5p
c0hlbGRPclN1c3BlbmRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICh0aGlzLnN0YXRlICYg
U1RBVEVfSEVMRCkgIT0gMCB8fCAodGhpcy5zdGF0ZSA9PSBTVEFURV9TVVNQRU5ERUQpOworfTsK
KworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUubWFya0FzU3VzcGVuZGVkID0gZnVuY3Rpb24g
KCkgeworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1NVU1BFTkRFRDsKK307CisK
K1Rhc2tDb250cm9sQmxvY2sucHJvdG90eXBlLm1hcmtBc1J1bm5hYmxlID0gZnVuY3Rpb24gKCkg
eworICB0aGlzLnN0YXRlID0gdGhpcy5zdGF0ZSB8IFNUQVRFX1JVTk5BQkxFOworfTsKKworLyoq
CisgKiBSdW5zIHRoaXMgdGFzaywgaWYgaXQgaXMgcmVhZHkgdG8gYmUgcnVuLCBhbmQgcmV0dXJu
cyB0aGUgbmV4dCB0YXNrIHRvIHJ1bi4KKyAqLworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUu
cnVuID0gZnVuY3Rpb24gKCkgeworICB2YXIgcGFja2V0OworICBpZiAodGhpcy5zdGF0ZSA9PSBT
VEFURV9TVVNQRU5ERURfUlVOTkFCTEUpIHsKKyAgICBwYWNrZXQgPSB0aGlzLnF1ZXVlOworICAg
IHRoaXMucXVldWUgPSBwYWNrZXQubGluazsKKyAgICBpZiAodGhpcy5xdWV1ZSA9PSBudWxsKSB7
CisgICAgICB0aGlzLnN0YXRlID0gU1RBVEVfUlVOTklORzsKKyAgICB9IGVsc2UgeworICAgICAg
dGhpcy5zdGF0ZSA9IFNUQVRFX1JVTk5BQkxFOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBwYWNr
ZXQgPSBudWxsOworICB9CisgIHJldHVybiB0aGlzLnRhc2sucnVuKHBhY2tldCk7Cit9OworCisv
KioKKyAqIEFkZHMgYSBwYWNrZXQgdG8gdGhlIHdvcmtsaXN0IG9mIHRoaXMgYmxvY2sncyB0YXNr
LCBtYXJrcyB0aGlzIGFzIHJ1bm5hYmxlIGlmCisgKiBuZWNlc3NhcnksIGFuZCByZXR1cm5zIHRo
ZSBuZXh0IHJ1bm5hYmxlIG9iamVjdCB0byBydW4gKHRoZSBvbmUKKyAqIHdpdGggdGhlIGhpZ2hl
c3QgcHJpb3JpdHkpLgorICovCitUYXNrQ29udHJvbEJsb2NrLnByb3RvdHlwZS5jaGVja1ByaW9y
aXR5QWRkID0gZnVuY3Rpb24gKHRhc2ssIHBhY2tldCkgeworICBpZiAodGhpcy5xdWV1ZSA9PSBu
dWxsKSB7CisgICAgdGhpcy5xdWV1ZSA9IHBhY2tldDsKKyAgICB0aGlzLm1hcmtBc1J1bm5hYmxl
KCk7CisgICAgaWYgKHRoaXMucHJpb3JpdHkgPiB0YXNrLnByaW9yaXR5KSByZXR1cm4gdGhpczsK
KyAgfSBlbHNlIHsKKyAgICB0aGlzLnF1ZXVlID0gcGFja2V0LmFkZFRvKHRoaXMucXVldWUpOwor
ICB9CisgIHJldHVybiB0YXNrOworfTsKKworVGFza0NvbnRyb2xCbG9jay5wcm90b3R5cGUudG9T
dHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAidGNiIHsgIiArIHRoaXMudGFzayArICJA
IiArIHRoaXMuc3RhdGUgKyAiIH0iOworfTsKKworLyoqCisgKiBBbiBpZGxlIHRhc2sgZG9lc24n
dCBkbyBhbnkgd29yayBpdHNlbGYgYnV0IGN5Y2xlcyBjb250cm9sIGJldHdlZW4gdGhlIHR3bwor
ICogZGV2aWNlIHRhc2tzLgorICogQHBhcmFtIHtTY2hlZHVsZXJ9IHNjaGVkdWxlciB0aGUgc2No
ZWR1bGVyIHRoYXQgbWFuYWdlcyB0aGlzIHRhc2sKKyAqIEBwYXJhbSB7aW50fSB2MSBhIHNlZWQg
dmFsdWUgdGhhdCBjb250cm9scyBob3cgdGhlIGRldmljZSB0YXNrcyBhcmUgc2NoZWR1bGVkCisg
KiBAcGFyYW0ge2ludH0gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIHRhc2sgc2hvdWxk
IGJlIHNjaGVkdWxlZAorICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9uIElkbGVUYXNrKHNj
aGVkdWxlciwgdjEsIGNvdW50KSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOworICB0
aGlzLnYxID0gdjE7CisgIHRoaXMuY291bnQgPSBjb3VudDsKK30KKworSWRsZVRhc2sucHJvdG90
eXBlLnJ1biA9IGZ1bmN0aW9uIChwYWNrZXQpIHsKKyAgdGhpcy5jb3VudC0tOworICBpZiAodGhp
cy5jb3VudCA9PSAwKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuaG9sZEN1cnJlbnQoKTsKKyAgaWYg
KCh0aGlzLnYxICYgMSkgPT0gMCkgeworICAgIHRoaXMudjEgPSB0aGlzLnYxID4+IDE7CisgICAg
cmV0dXJuIHRoaXMuc2NoZWR1bGVyLnJlbGVhc2UoSURfREVWSUNFX0EpOworICB9IGVsc2Ugewor
ICAgIHRoaXMudjEgPSAodGhpcy52MSA+PiAxKSBeIDB4RDAwODsKKyAgICByZXR1cm4gdGhpcy5z
Y2hlZHVsZXIucmVsZWFzZShJRF9ERVZJQ0VfQik7CisgIH0KK307CisKK0lkbGVUYXNrLnByb3Rv
dHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHsKKyAgcmV0dXJuICJJZGxlVGFzayIKK307CisK
Ky8qKgorICogQSB0YXNrIHRoYXQgc3VzcGVuZHMgaXRzZWxmIGFmdGVyIGVhY2ggdGltZSBpdCBo
YXMgYmVlbiBydW4gdG8gc2ltdWxhdGUKKyAqIHdhaXRpbmcgZm9yIGRhdGEgZnJvbSBhbiBleHRl
cm5hbCBkZXZpY2UuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVs
ZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisgKi8KK2Z1bmN0aW9u
IERldmljZVRhc2soc2NoZWR1bGVyKSB7CisgIHRoaXMuc2NoZWR1bGVyID0gc2NoZWR1bGVyOwor
ICB0aGlzLnYxID0gbnVsbDsKK30KKworRGV2aWNlVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rp
b24gKHBhY2tldCkgeworICBpZiAocGFja2V0ID09IG51bGwpIHsKKyAgICBpZiAodGhpcy52MSA9
PSBudWxsKSByZXR1cm4gdGhpcy5zY2hlZHVsZXIuc3VzcGVuZEN1cnJlbnQoKTsKKyAgICB2YXIg
diA9IHRoaXMudjE7CisgICAgdGhpcy52MSA9IG51bGw7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1
bGVyLnF1ZXVlKHYpOworICB9IGVsc2UgeworICAgIHRoaXMudjEgPSBwYWNrZXQ7CisgICAgcmV0
dXJuIHRoaXMuc2NoZWR1bGVyLmhvbGRDdXJyZW50KCk7CisgIH0KK307CisKK0RldmljZVRhc2su
cHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkRldmljZVRhc2si
OworfTsKKworLyoqCisgKiBBIHRhc2sgdGhhdCBtYW5pcHVsYXRlcyB3b3JrIHBhY2tldHMuCisg
KiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVyIHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2Vz
IHRoaXMgdGFzaworICogQHBhcmFtIHtpbnR9IHYxIGEgc2VlZCB1c2VkIHRvIHNwZWNpZnkgaG93
IHdvcmsgcGFja2V0cyBhcmUgbWFuaXB1bGF0ZWQKKyAqIEBwYXJhbSB7aW50fSB2MiBhbm90aGVy
IHNlZWQgdXNlZCB0byBzcGVjaWZ5IGhvdyB3b3JrIHBhY2tldHMgYXJlIG1hbmlwdWxhdGVkCisg
KiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gV29ya2VyVGFzayhzY2hlZHVsZXIsIHYxLCB2
MikgeworICB0aGlzLnNjaGVkdWxlciA9IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IHYxOworICB0
aGlzLnYyID0gdjI7Cit9CisKK1dvcmtlclRhc2sucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uIChw
YWNrZXQpIHsKKyAgaWYgKHBhY2tldCA9PSBudWxsKSB7CisgICAgcmV0dXJuIHRoaXMuc2NoZWR1
bGVyLnN1c3BlbmRDdXJyZW50KCk7CisgIH0gZWxzZSB7CisgICAgaWYgKHRoaXMudjEgPT0gSURf
SEFORExFUl9BKSB7CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9COworICAgIH0gZWxzZSB7
CisgICAgICB0aGlzLnYxID0gSURfSEFORExFUl9BOworICAgIH0KKyAgICBwYWNrZXQuaWQgPSB0
aGlzLnYxOworICAgIHBhY2tldC5hMSA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBEQVRB
X1NJWkU7IGkrKykgeworICAgICAgdGhpcy52MisrOworICAgICAgaWYgKHRoaXMudjIgPiAyNikg
dGhpcy52MiA9IDE7CisgICAgICBwYWNrZXQuYTJbaV0gPSB0aGlzLnYyOworICAgIH0KKyAgICBy
ZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUocGFja2V0KTsKKyAgfQorfTsKKworV29ya2VyVGFz
ay5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgIHJldHVybiAiV29ya2VyVGFz
ayI7Cit9OworCisvKioKKyAqIEEgdGFzayB0aGF0IG1hbmlwdWxhdGVzIHdvcmsgcGFja2V0cyBh
bmQgdGhlbiBzdXNwZW5kcyBpdHNlbGYuCisgKiBAcGFyYW0ge1NjaGVkdWxlcn0gc2NoZWR1bGVy
IHRoZSBzY2hlZHVsZXIgdGhhdCBtYW5hZ2VzIHRoaXMgdGFzaworICogQGNvbnN0cnVjdG9yCisg
Ki8KK2Z1bmN0aW9uIEhhbmRsZXJUYXNrKHNjaGVkdWxlcikgeworICB0aGlzLnNjaGVkdWxlciA9
IHNjaGVkdWxlcjsKKyAgdGhpcy52MSA9IG51bGw7CisgIHRoaXMudjIgPSBudWxsOworfQorCitI
YW5kbGVyVGFzay5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKHBhY2tldCkgeworICBpZiAocGFj
a2V0ICE9IG51bGwpIHsKKyAgICBpZiAocGFja2V0LmtpbmQgPT0gS0lORF9XT1JLKSB7CisgICAg
ICB0aGlzLnYxID0gcGFja2V0LmFkZFRvKHRoaXMudjEpOworICAgIH0gZWxzZSB7CisgICAgICB0
aGlzLnYyID0gcGFja2V0LmFkZFRvKHRoaXMudjIpOworICAgIH0KKyAgfQorICBpZiAodGhpcy52
MSAhPSBudWxsKSB7CisgICAgdmFyIGNvdW50ID0gdGhpcy52MS5hMTsKKyAgICB2YXIgdjsKKyAg
ICBpZiAoY291bnQgPCBEQVRBX1NJWkUpIHsKKyAgICAgIGlmICh0aGlzLnYyICE9IG51bGwpIHsK
KyAgICAgICAgdiA9IHRoaXMudjI7CisgICAgICAgIHRoaXMudjIgPSB0aGlzLnYyLmxpbms7Cisg
ICAgICAgIHYuYTEgPSB0aGlzLnYxLmEyW2NvdW50XTsKKyAgICAgICAgdGhpcy52MS5hMSA9IGNv
dW50ICsgMTsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2NoZWR1bGVyLnF1ZXVlKHYpOworICAgICAg
fQorICAgIH0gZWxzZSB7CisgICAgICB2ID0gdGhpcy52MTsKKyAgICAgIHRoaXMudjEgPSB0aGlz
LnYxLmxpbms7CisgICAgICByZXR1cm4gdGhpcy5zY2hlZHVsZXIucXVldWUodik7CisgICAgfQor
ICB9CisgIHJldHVybiB0aGlzLnNjaGVkdWxlci5zdXNwZW5kQ3VycmVudCgpOworfTsKKworSGFu
ZGxlclRhc2sucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkgeworICByZXR1cm4gIkhh
bmRsZXJUYXNrIjsKK307CisKKy8qIC0tLSAqCisgKiBQIGEgYyBrIGUgdAorICogLS0tICovCisK
K3ZhciBEQVRBX1NJWkUgPSA0OworCisvKioKKyAqIEEgc2ltcGxlIHBhY2thZ2Ugb2YgZGF0YSB0
aGF0IGlzIG1hbmlwdWxhdGVkIGJ5IHRoZSB0YXNrcy4gIFRoZSBleGFjdCBsYXlvdXQKKyAqIG9m
IHRoZSBwYXlsb2FkIGRhdGEgY2FycmllZCBieSBhIHBhY2tldCBpcyBub3QgaW1wb3J0YWludCwg
YW5kIG5laXRoZXIgaXMgdGhlCisgKiBuYXR1cmUgb2YgdGhlIHdvcmsgcGVyZm9ybWVkIG9uIHBh
Y2tldHMgYnkgdGhlIHRhc2tzLgorICoKKyAqIEJlc2lkZXMgY2FycnlpbmcgZGF0YSwgcGFja2V0
cyBmb3JtIGxpbmtlZCBsaXN0cyBhbmQgYXJlIGhlbmNlIHVzZWQgYm90aCBhcworICogZGF0YSBh
bmQgd29ya2xpc3RzLgorICogQHBhcmFtIHtQYWNrZXR9IGxpbmsgdGhlIHRhaWwgb2YgdGhlIGxp
bmtlZCBsaXN0IG9mIHBhY2tldHMKKyAqIEBwYXJhbSB7aW50fSBpZCBhbiBJRCBmb3IgdGhpcyBw
YWNrZXQKKyAqIEBwYXJhbSB7aW50fSBraW5kIHRoZSB0eXBlIG9mIHRoaXMgcGFja2V0CisgKiBA
Y29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gUGFja2V0KGxpbmssIGlkLCBraW5kKSB7CisgIHRo
aXMubGluayA9IGxpbms7CisgIHRoaXMuaWQgPSBpZDsKKyAgdGhpcy5raW5kID0ga2luZDsKKyAg
dGhpcy5hMSA9IDA7CisgIHRoaXMuYTIgPSBuZXcgQXJyYXkoREFUQV9TSVpFKTsKK30KKworLyoq
CisgKiBBZGQgdGhpcyBwYWNrZXQgdG8gdGhlIGVuZCBvZiBhIHdvcmtsaXN0LCBhbmQgcmV0dXJu
IHRoZSB3b3JrbGlzdC4KKyAqIEBwYXJhbSB7UGFja2V0fSBxdWV1ZSB0aGUgd29ya2xpc3QgdG8g
YWRkIHRoaXMgcGFja2V0IHRvCisgKi8KK1BhY2tldC5wcm90b3R5cGUuYWRkVG8gPSBmdW5jdGlv
biAocXVldWUpIHsKKyAgdGhpcy5saW5rID0gbnVsbDsKKyAgaWYgKHF1ZXVlID09IG51bGwpIHJl
dHVybiB0aGlzOworICB2YXIgcGVlaywgbmV4dCA9IHF1ZXVlOworICB3aGlsZSAoKHBlZWsgPSBu
ZXh0LmxpbmspICE9IG51bGwpCisgICAgbmV4dCA9IHBlZWs7CisgIG5leHQubGluayA9IHRoaXM7
CisgIHJldHVybiBxdWV1ZTsKK307CisKK1BhY2tldC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5j
dGlvbiAoKSB7CisgIHJldHVybiAiUGFja2V0IjsKK307CisKK2ZvciAodmFyIGkgPSAwOyBpIDwg
MjAwMDA7ICsraSkKKyAgcnVuUmljaGFyZHMoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjM2MzMzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE4LTA5LTIxICBTYWFtIGJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFRoZSBzYW1wbGluZyBzaG91bGQgbm90IHVz
ZSBTdHJvbmc8Q29kZUJsb2NrPiBpbiBpdHMgbWFjaGluZUxvY2F0aW9uIGZpZWxkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkzMTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBUaGUgc2FtcGxpbmcgcHJvZmls
ZXIgaGFzIGEgQ0xJIG1vZGUgd2hlcmUgd2UgZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IGlubGlu
ZQorICAgICAgICBjYWxsIGZyYW1lcy4gVGhhdCBkYXRhIHN0cnVjdHVyZSB3YXMgdXNpbmcgYSBT
dHJvbmc8Q29kZUJsb2NrPi4gV2Ugd2VyZQorICAgICAgICBjb25zdHJ1Y3RpbmcgdGhpcyBTdHJv
bmc8Q29kZUJsb2NrPiBkdXJpbmcgR0MgY29uY3VycmVudGx5IHRvIHByb2Nlc3NpbmcgYWxsCisg
ICAgICAgIHRoZSBTdHJvbmcgaGFuZGxlcy4gVGhpcyBpcyBhIGJ1ZyBzaW5jZSB3ZSBlbmQgdXAg
Y29ycnVwdGluZyB0aGF0IGRhdGEKKyAgICAgICAgc3RydWN0dXJlLiBUaGlzIHBhdGNoIGZpeGVz
IHRoaXMgYnkganVzdCBtYWtpbmcgdGhpcyBkYXRhIHN0cnVjdHVyZSB1c2UgdGhlCisgICAgICAg
IHNhbXBsaW5nIHByb2ZpbGVyJ3MgbWVjaGFuaXNtIGZvciBob2xkaW5nIG9udG8gYW5kIHByb3Bl
cmx5IHZpc2l0aW5nIGhlYXAgcG9pbnRlcnMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Ojp0cmFja2luZ0NvbXBsZXRlKToKKyAgICAgICAg
KiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1wbGluZ1By
b2ZpbGVyOjpwcm9jZXNzVW52ZXJpZmllZFN0YWNrVHJhY2VzKToKKworICAgICAgICAoSlNDOjpT
YW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BGdW5jdGlvbnMpOgorICAgICAgICAoSlNDOjpTYW1w
bGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BCeXRlY29kZXMpOgorICAgICAgICBUaGVzZSBDTEkgaGVs
cGVycyBuZWVkZWQgYSBEZWZlckdDIG90aGVyd2lzZSB3ZSBtYXkgZW5kIHVwIGRlYWRsb2NraW5n
IHdoZW4gd2UKKyAgICAgICAgY2F1c2UgYSBHQyB0byBoYXBwZW4gd2hpbGUgYWxyZWFkeSBob2xk
aW5nIHRoZSBzYW1wbGluZyBwcm9maWxlcidzCisgICAgICAgIGxvY2suCisKIDIwMTgtMDktMjEg
IE1pa2UgR29yc2UgIDxtZ29yc2VAc3VzZS5jb20+CiAKICAgICAgICAgQnVpbGQgdG9vbHMgc2hv
dWxkIHdvcmsgd2hlbiB0aGUgL3Vzci9iaW4vcHl0aG9uIGlzIHB5dGhvbjMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCShyZXZpc2lvbiAyMzYzMzMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3Jp
cHRQcm9maWxlckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZv
aWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6dHJhY2sKICAgICBpZiAobV9lbmFibGVk
U2FtcGxpbmdQcm9maWxlcikgewogICAgICAgICBWTSYgdm0gPSBtX2Vudmlyb25tZW50LnNjcmlw
dERlYnVnU2VydmVyKCkudm0oKTsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAg
ICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7CisgICAgICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsgLy8gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIHdpbGwgaGF2ZSByYXcgcG9p
bnRlcnMgaW50byB0aGUgaGVhcCBhZnRlciB3ZSByZWxlYXNlU3RhY2tUcmFjZXMoKS4KICAgICAg
ICAgU2FtcGxpbmdQcm9maWxlciogc2FtcGxpbmdQcm9maWxlciA9IHZtLnNhbXBsaW5nUHJvZmls
ZXIoKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc2FtcGxpbmdQcm9maWxlcik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIu
Y3BwCShyZXZpc2lvbiAyMzYzMzMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTY3LDggKzU2Nyw5IEBAIHZv
aWQgU2FtcGxpbmdQcm9maWxlcjo6cHJvY2Vzc1VudmVyaWZpZWQKICAgICAgICAgICAgICAgICAv
LyBvdXRwdXQgb24gdGhlIGNvbW1hbmQgbGluZSwgYnV0IHdlIGNvdWxkIGV4dGVuZCBpdCB0byB0
aGUgd2ViCiAgICAgICAgICAgICAgICAgLy8gaW5zcGVjdG9yIGluIHRoZSBmdXR1cmUgaWYgd2Ug
ZmluZCBhIG5lZWQgZm9yIGl0IHRoZXJlLgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHN0YWNrVHJhY2UuZnJhbWVzLnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9saXZlQ2VsbFBv
aW50ZXJzLmFkZChtYWNoaW5lQ29kZUJsb2NrKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gc3RhcnRJbmRleDsgaSA8IHN0YWNrVHJhY2UuZnJhbWVzLnNpemUoKSAtIDE7IGkrKykK
LSAgICAgICAgICAgICAgICAgICAgc3RhY2tUcmFjZS5mcmFtZXNbaV0ubWFjaGluZUxvY2F0aW9u
ID0gc3RkOjptYWtlX3BhaXIobWFjaGluZUxvY2F0aW9uLCBTdHJvbmc8Q29kZUJsb2NrPihtX3Zt
LCBtYWNoaW5lQ29kZUJsb2NrKSk7CisgICAgICAgICAgICAgICAgICAgIHN0YWNrVHJhY2UuZnJh
bWVzW2ldLm1hY2hpbmVMb2NhdGlvbiA9IHN0ZDo6bWFrZV9wYWlyKG1hY2hpbmVMb2NhdGlvbiwg
bWFjaGluZUNvZGVCbG9jayk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKQEAgLTk1Miw2
ICs5NTMsNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0aW9uCiB2b2lk
IFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEZ1bmN0aW9ucyhQcmludFN0cmVhbSYgb3V0KQog
ewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CisgICAgRGVmZXJHQ0ZvckFXaGlsZSBk
ZWZlckdDKG1fdm0uaGVhcCk7CiAKICAgICB7CiAgICAgICAgIEhlYXBJdGVyYXRpb25TY29wZSBo
ZWFwSXRlcmF0aW9uU2NvcGUobV92bS5oZWFwKTsKQEAgLTEwMDQsNiArMTAwNiw3IEBAIHZvaWQg
U2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0ZWNvZGUKIHZvaWQgU2FtcGxpbmdQcm9maWxl
cjo6cmVwb3J0VG9wQnl0ZWNvZGVzKFByaW50U3RyZWFtJiBvdXQpCiB7CiAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb2NrKTsKKyAgICBEZWZlckdDRm9yQVdoaWxlIGRlZmVyR0MobV92bS5oZWFw
KTsKIAogICAgIHsKICAgICAgICAgSGVhcEl0ZXJhdGlvblNjb3BlIGhlYXBJdGVyYXRpb25TY29w
ZShtX3ZtLmhlYXApOwpAQCAtMTAzNSw3ICsxMDM4LDcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVy
OjpyZXBvcnRUb3BCeXRlY29kZQogCiAgICAgICAgIFN0YWNrRnJhbWUmIGZyYW1lID0gc3RhY2tU
cmFjZS5mcmFtZXMuZmlyc3QoKTsKICAgICAgICAgU3RyaW5nIGZyYW1lRGVzY3JpcHRpb24gPSBt
YWtlU3RyaW5nKGZyYW1lLmRpc3BsYXlOYW1lKG1fdm0pLCBkZXNjcmlwdGlvbkZvckxvY2F0aW9u
KGZyYW1lLnNlbWFudGljTG9jYXRpb24pKTsKLSAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiwgU3Ryb25nPENvZGVCbG9jaz4+PiBtYWNo
aW5lTG9jYXRpb24gPSBmcmFtZS5tYWNoaW5lTG9jYXRpb24pIHsKKyAgICAgICAgaWYgKHN0ZDo6
b3B0aW9uYWw8c3RkOjpwYWlyPFN0YWNrRnJhbWU6OkNvZGVMb2NhdGlvbiwgQ29kZUJsb2NrKj4+
IG1hY2hpbmVMb2NhdGlvbiA9IGZyYW1lLm1hY2hpbmVMb2NhdGlvbikgewogICAgICAgICAgICAg
ZnJhbWVEZXNjcmlwdGlvbiA9IG1ha2VTdHJpbmcoZnJhbWVEZXNjcmlwdGlvbiwgIiA8LS0gIiwK
ICAgICAgICAgICAgICAgICBtYWNoaW5lTG9jYXRpb24tPnNlY29uZC0+aW5mZXJyZWROYW1lKCku
ZGF0YSgpLCBkZXNjcmlwdGlvbkZvckxvY2F0aW9uKG1hY2hpbmVMb2NhdGlvbi0+Zmlyc3QpKTsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQ
cm9maWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nh
bXBsaW5nUHJvZmlsZXIuaAkocmV2aXNpb24gMjM2MzMzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyAr
MTEyLDcgQEAgcHVibGljOgogICAgICAgICB9OwogCiAgICAgICAgIENvZGVMb2NhdGlvbiBzZW1h
bnRpY0xvY2F0aW9uOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb2RlTG9jYXRp
b24sIFN0cm9uZzxDb2RlQmxvY2s+Pj4gbWFjaGluZUxvY2F0aW9uOyAvLyBUaGlzIGlzIG5vbi1u
dWxsIGlmIHdlIHdlcmUgaW5saW5lZC4gSXQgcmVwcmVzZW50cyB0aGUgbWFjaGluZSBmcmFtZSB3
ZSB3ZXJlIGlubGluZWQgaW50by4KKyAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29k
ZUxvY2F0aW9uLCBDb2RlQmxvY2sqPj4gbWFjaGluZUxvY2F0aW9uOyAvLyBUaGlzIGlzIG5vbi1u
dWxsIGlmIHdlIHdlcmUgaW5saW5lZC4gSXQgcmVwcmVzZW50cyB0aGUgbWFjaGluZSBmcmFtZSB3
ZSB3ZXJlIGlubGluZWQgaW50by4KIAogICAgICAgICBib29sIGhhc0V4cHJlc3Npb25JbmZvKCkg
Y29uc3QgeyByZXR1cm4gc2VtYW50aWNMb2NhdGlvbi5oYXNFeHByZXNzaW9uSW5mbygpOyB9CiAg
ICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIoKSBjb25zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>