<?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>148695</bug_id>
          
          <creation_ts>2015-09-01 16:44:10 -0700</creation_ts>
          <short_desc>Implement v1 shadow DOM API</short_desc>
          <delta_ts>2026-04-09 00:57:21 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=154907</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>114441</dependson>
    
    <dependson>157506</dependson>
    
    <dependson>162645</dependson>
    
    <dependson>172446</dependson>
    
    <dependson>178002</dependson>
    
    <dependson>191851</dependson>
    
    <dependson>202611</dependson>
    
    <dependson>212049</dependson>
    
    <dependson>218507</dependson>
    
    <dependson>220532</dependson>
    
    <dependson>226195</dependson>
    
    <dependson>226245</dependson>
    
    <dependson>234297</dependson>
    
    <dependson>246533</dependson>
    
    <dependson>249706</dependson>
    
    <dependson>251953</dependson>
    
    <dependson>255640</dependson>
    
    <dependson>258807</dependson>
    
    <dependson>258811</dependson>
    
    <dependson>266524</dependson>
    
    <dependson>266700</dependson>
    
    <dependson>267793</dependson>
    
    <dependson>268208</dependson>
    
    <dependson>270586</dependson>
    
    <dependson>270664</dependson>
    
    <dependson>276926</dependson>
    
    <dependson>280399</dependson>
    
    <dependson>280608</dependson>
    
    <dependson>280807</dependson>
    
    <dependson>291434</dependson>
    
    <dependson>293476</dependson>
    
    <dependson>294961</dependson>
    
    <dependson>295838</dependson>
    
    <dependson>296577</dependson>
    
    <dependson>300385</dependson>
    
    <dependson>303467</dependson>
    
    <dependson>304555</dependson>
    
    <dependson>307238</dependson>
    
    <dependson>81501</dependson>
    
    <dependson>82172</dependson>
    
    <dependson>118803</dependson>
    
    <dependson>136836</dependson>
    
    <dependson>148694</dependson>
    
    <dependson>149148</dependson>
    
    <dependson>149230</dependson>
    
    <dependson>149242</dependson>
    
    <dependson>149243</dependson>
    
    <dependson>149330</dependson>
    
    <dependson>149363</dependson>
    
    <dependson>149434</dependson>
    
    <dependson>149437</dependson>
    
    <dependson>149439</dependson>
    
    <dependson>149440</dependson>
    
    <dependson>149441</dependson>
    
    <dependson>149443</dependson>
    
    <dependson>149445</dependson>
    
    <dependson>149447</dependson>
    
    <dependson>149589</dependson>
    
    <dependson>149591</dependson>
    
    <dependson>149592</dependson>
    
    <dependson>149593</dependson>
    
    <dependson>149698</dependson>
    
    <dependson>149701</dependson>
    
    <dependson>149702</dependson>
    
    <dependson>149739</dependson>
    
    <dependson>149782</dependson>
    
    <dependson>149997</dependson>
    
    <dependson>150162</dependson>
    
    <dependson>150237</dependson>
    
    <dependson>151379</dependson>
    
    <dependson>151380</dependson>
    
    <dependson>153533</dependson>
    
    <dependson>153534</dependson>
    
    <dependson>153537</dependson>
    
    <dependson>153538</dependson>
    
    <dependson>153577</dependson>
    
    <dependson>153681</dependson>
    
    <dependson>154770</dependson>
    
    <dependson>155226</dependson>
    
    <dependson>155388</dependson>
    
    <dependson>155424</dependson>
    
    <dependson>157063</dependson>
    
    <dependson>157225</dependson>
    
    <dependson>157245</dependson>
    
    <dependson>157369</dependson>
    
    <dependson>157374</dependson>
    
    <dependson>157375</dependson>
    
    <dependson>157437</dependson>
    
    <dependson>157443</dependson>
    
    <dependson>157444</dependson>
    
    <dependson>157475</dependson>
    
    <dependson>157705</dependson>
    
    <dependson>157706</dependson>
    
    <dependson>157789</dependson>
    
    <dependson>158241</dependson>
    
    <dependson>158378</dependson>
    
    <dependson>158415</dependson>
    
    <dependson>158421</dependson>
    
    <dependson>158471</dependson>
    
    <dependson>158503</dependson>
    
    <dependson>158550</dependson>
    
    <dependson>158686</dependson>
    
    <dependson>158900</dependson>
    
    <dependson>159474</dependson>
    
    <dependson>159482</dependson>
    
    <dependson>160038</dependson>
    
    <dependson>160331</dependson>
    
    <dependson>160427</dependson>
    
    <dependson>160538</dependson>
    
    <dependson>160683</dependson>
    
    <dependson>160740</dependson>
    
    <dependson>160754</dependson>
    
    <dependson>160864</dependson>
    
    <dependson>160866</dependson>
    
    <dependson>160919</dependson>
    
    <dependson>162091</dependson>
    
    <dependson>162457</dependson>
    
    <dependson>162629</dependson>
    
    <dependson>162656</dependson>
    
    <dependson>162744</dependson>
    
    <dependson>162882</dependson>
    
    <dependson>163921</dependson>
    
    <dependson>164002</dependson>
    
    <dependson>164577</dependson>
    
    <dependson>164608</dependson>
    
    <dependson>164609</dependson>
    
    <dependson>164675</dependson>
    
    <dependson>164693</dependson>
    
    <dependson>164770</dependson>
    
    <dependson>165146</dependson>
    
    <dependson>165551</dependson>
    
    <dependson>165647</dependson>
    
    <dependson>165757</dependson>
    
    <dependson>166484</dependson>
    
    <dependson>166748</dependson>
    
    <dependson>167652</dependson>
    
    <dependson>169718</dependson>
    
    <dependson>169948</dependson>
    
    <dependson>170211</dependson>
    
    <dependson>170762</dependson>
    
    <dependson>172567</dependson>
    
    <dependson>173027</dependson>
    
    <dependson>174288</dependson>
    
    <dependson>174704</dependson>
    
    <dependson>174977</dependson>
    
    <dependson>178001</dependson>
    
    <dependson>178237</dependson>
    
    <dependson>179324</dependson>
    
    <dependson>179402</dependson>
    
    <dependson>180378</dependson>
    
    <dependson>184079</dependson>
    
    <dependson>184273</dependson>
    
    <dependson>186837</dependson>
    
    <dependson>186994</dependson>
    
    <dependson>187940</dependson>
    
    <dependson>188561</dependson>
    
    <dependson>188752</dependson>
    
    <dependson>189075</dependson>
    
    <dependson>189144</dependson>
    
    <dependson>189146</dependson>
    
    <dependson>189164</dependson>
    
    <dependson>189493</dependson>
    
    <dependson>190999</dependson>
    
    <dependson>191297</dependson>
    
    <dependson>191310</dependson>
    
    <dependson>191311</dependson>
    
    <dependson>191694</dependson>
    
    <dependson>193567</dependson>
    
    <dependson>195052</dependson>
    
    <dependson>196347</dependson>
    
    <dependson>196457</dependson>
    
    <dependson>197726</dependson>
    
    <dependson>197948</dependson>
    
    <dependson>199568</dependson>
    
    <dependson>199633</dependson>
    
    <dependson>199733</dependson>
    
    <dependson>200803</dependson>
    
    <dependson>201048</dependson>
    
    <dependson>202176</dependson>
    
    <dependson>202432</dependson>
    
    <dependson>202494</dependson>
    
    <dependson>202495</dependson>
    
    <dependson>202875</dependson>
    
    <dependson>203292</dependson>
    
    <dependson>203299</dependson>
    
    <dependson>203869</dependson>
    
    <dependson>204195</dependson>
    
    <dependson>204805</dependson>
    
    <dependson>204980</dependson>
    
    <dependson>205531</dependson>
    
    <dependson>206374</dependson>
    
    <dependson>207567</dependson>
    
    <dependson>210249</dependson>
    
    <dependson>211640</dependson>
    
    <dependson>212820</dependson>
    
    <dependson>214859</dependson>
    
    <dependson>215622</dependson>
    
    <dependson>216240</dependson>
    
    <dependson>216607</dependson>
    
    <dependson>216985</dependson>
    
    <dependson>218638</dependson>
    
    <dependson>218692</dependson>
    
    <dependson>218923</dependson>
    
    <dependson>220650</dependson>
    
    <dependson>221486</dependson>
    
    <dependson>222187</dependson>
    
    <dependson>222733</dependson>
    
    <dependson>223814</dependson>
    
    <dependson>224408</dependson>
    
    <dependson>224805</dependson>
    
    <dependson>225187</dependson>
    
    <dependson>225354</dependson>
    
    <dependson>225684</dependson>
    
    <dependson>226724</dependson>
    
    <dependson>227652</dependson>
    
    <dependson>229027</dependson>
    
    <dependson>229438</dependson>
    
    <dependson>229680</dependson>
    
    <dependson>229698</dependson>
    
    <dependson>229748</dependson>
    
    <dependson>231678</dependson>
    
    <dependson>232261</dependson>
    
    <dependson>232409</dependson>
    
    <dependson>232564</dependson>
    
    <dependson>233320</dependson>
    
    <dependson>233380</dependson>
    
    <dependson>235020</dependson>
    
    <dependson>235326</dependson>
    
    <dependson>245556</dependson>
    
    <dependson>245817</dependson>
    
    <dependson>249080</dependson>
    
    <dependson>249310</dependson>
    
    <dependson>249513</dependson>
    
    <dependson>250365</dependson>
    
    <dependson>250421</dependson>
    
    <dependson>251897</dependson>
    
    <dependson>251956</dependson>
    
    <dependson>256553</dependson>
    
    <dependson>259261</dependson>
    
    <dependson>260480</dependson>
    
    <dependson>260772</dependson>
    
    <dependson>263081</dependson>
    
    <dependson>264469</dependson>
    
    <dependson>266227</dependson>
    
    <dependson>267634</dependson>
    
    <dependson>271645</dependson>
    
    <dependson>281131</dependson>
    
    <dependson>290396</dependson>
    
    <dependson>296048</dependson>
    
    <dependson>299951</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>annevk</cc>
    
    <cc>barraclough</cc>
    
    <cc>barrett.harber+webkit</cc>
    
    <cc>bjonesbe</cc>
    
    <cc>chi187</cc>
    
    <cc>clopez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dwiseputra</cc>
    
    <cc>emilio</cc>
    
    <cc>eoconnor</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>koivisto</cc>
    
    <cc>michael</cc>
    
    <cc>mjs</cc>
    
    <cc>robert.bryer</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>tri</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>woodlxf00</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1122692</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-01 16:44:10 -0700</bug_when>
    <thetext>Implement the newly spec&apos;ed slot shadow DOM API:
https://w3c.github.io/webcomponents/spec/shadow/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1124896</commentid>
    <comment_count>1</comment_count>
      <attachid>260929</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-10 07:38:22 -0700</bug_when>
    <thetext>Created attachment 260929
WIP1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125749</commentid>
    <comment_count>2</comment_count>
      <attachid>261133</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-14 15:01:44 -0700</bug_when>
    <thetext>Created attachment 261133
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125768</commentid>
    <comment_count>3</comment_count>
      <attachid>261133</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-14 15:29:09 -0700</bug_when>
    <thetext>Comment on attachment 261133
WIP2

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

&gt; Source/WebCore/html/HTMLKeygenElement.h:55
&gt; +    virtual bool canHaveUserAgentShadowRoot() const override final { return true; }

final is redundant, the class is final

&gt; Source/WebCore/html/HTMLMarqueeElement.h:65
&gt; +    virtual bool canHaveUserAgentShadowRoot() const override final { return true; }

final is redundant, the class is final

&gt; Source/WebCore/html/HTMLMeterElement.h:79
&gt; +    virtual bool canHaveUserAgentShadowRoot() const override final { return true; }

final is redundant, the class is final

&gt; Source/WebCore/html/HTMLProgressElement.h:65
&gt; +    virtual bool canHaveUserAgentShadowRoot() const override final { return true; }

final is redundant, the class is final

&gt; Source/WebCore/html/HTMLSlotElement.cpp:51
&gt; +        if (ShadowRoot* shadowRoot = containingShadowRoot()) {

auto*

&gt; Source/WebCore/html/HTMLSlotElement.cpp:63
&gt; +    Vector&lt;RefPtr&lt;Node&gt;&gt; distributedNodes;

May not matter much but we could reserveInitialCapacity() / uncheckedAppend() here since we know how many nodes there are.

&gt; Source/WebCore/html/HTMLSlotElement.cpp:64
&gt; +    for (auto node : distribution())

I would use auto* for clarity. Since you&apos;re not using auto&amp;, it would cause refcounting churn for e.g. if distribution() would start returning a Vector of RefPtr.

&gt; Source/WebCore/html/HTMLSlotElement.h:29
&gt; +#include &quot;HTMLElement.h&quot;

Why this include? I think we need Element.h for AttributeModificationReason though.

&gt; Source/WebCore/html/HTMLSlotElement.h:31
&gt; +#include &quot;Range.h&quot;

Why this include?

&gt; Source/WebCore/html/HTMLSlotElement.h:36
&gt; +class HTMLSlotElement : public InsertionPoint {

Could be final?

&gt; Source/WebCore/html/HTMLSlotElement.h:42
&gt; +protected:

Could be private? or are you planning to subclass this at some point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125778</commentid>
    <comment_count>4</comment_count>
      <attachid>261133</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-09-14 15:42:11 -0700</bug_when>
    <thetext>Comment on attachment 261133
WIP2

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

&gt; Source/WebCore/html/HTMLSummaryElement.h:47
&gt; +    virtual bool canHaveUserAgentShadowRoot() const override final { return true; }

class is already final

&gt; Source/WebCore/html/HTMLTextAreaElement.h:71
&gt; +    virtual bool canHaveUserAgentShadowRoot() const override final { return true; }

class is already final

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:52
&gt; +InsertionPoint* ContentDistributor::findSlotElementByNode(const Node* node, ShadowRoot&amp; root)

looks like node cannot be null? if so, we should consider making it a reference.

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:55
&gt; +    const AtomicString&amp; name = is&lt;Element&gt;(node) ? downcast&lt;Element&gt;(*node).fastGetAttribute(HTMLNames::slotAttr) : nullAtom;

is&lt;Element&gt;(*node) to avoid the null check, assuming node cannot be null.

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:77
&gt; +    for (auto slot : m_slots)

auto*

&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:79
&gt; +    if (ShadowRoot* shadow = containingShadowRoot())

auto*

&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:109
&gt; +    if (ShadowRoot* shadowRoot = shadowRootOfParentForDistribution(projectedNode))

auto*

&gt; Source/WebCore/style/RenderTreePosition.cpp:41
&gt; +        if (nextSiblingRenderer(node, m_parent) != m_nextSibling) {

curly brackets not needed

&gt; Source/WebCore/style/RenderTreePosition.cpp:68
&gt; +    if (auto parent = textNode.parentElement()) {

I personally prefer auto*

&gt; Source/WebCore/style/RenderTreePosition.cpp:69
&gt; +        if (PseudoElement* before = parent-&gt;beforePseudoElement())

auto*

&gt; Source/WebCore/style/StyleResolveTree.cpp:363
&gt; +    for (Node* current : distribution) {

auto*

&gt; Source/WebCore/style/StyleResolveTree.cpp:520
&gt; +    for (Node* current : insertionPoint.distribution()) {

auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125889</commentid>
    <comment_count>5</comment_count>
      <attachid>261133</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-14 22:14:53 -0700</bug_when>
    <thetext>Comment on attachment 261133
WIP2

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

New DOM and API stuff looks good.

The existing insertion point and distribution code is basically remnants of the old shadow DOM implementation that is left there to support &lt;details&gt; element. I don&apos;t think I left it in very good state and some aspects of this patch might be overly influenced by it.
.

&gt; Source/WebCore/dom/NodeRenderingTraversal.cpp:133
&gt; +static Node* findLastFromDistributedNode(const Node* node, const InsertionPoint&amp; insertionPoint)
&gt;  {
&gt; -    for (const Node* next = node; next; next = insertionPoint-&gt;previousDistributedTo(next)) {
&gt; -        if (Node* found = findLastEnteringInsertionPoints(next))
&gt; -            return found;
&gt; +    const auto&amp; distribution = insertionPoint.distribution();
&gt; +    size_t index = distribution.find(node);
&gt; +    if (index != notFound) {
&gt; +        while (index) {
&gt; +            if (Node* found = findLastEnteringInsertionPoints(distribution[index]))
&gt; +                return found;
&gt; +            if (!index)
&gt; +                break;
&gt; +            index--;
&gt; +        }
&gt;      }
&gt;      return nullptr;

It would be nice to get rid of these confusing functions rather than expand them.

&gt; Source/WebCore/dom/ShadowRoot.cpp:75
&gt; +    ASSERT(m_distributor);

Could distributor just be null for trees that don&apos;t use distribution (old style ua shadow trees)? That would save some memory.

&gt; Source/WebCore/html/HTMLDetailsElement.cpp:82
&gt; +class DetailsContentDistributor final : public ContentDistributor {

Instead of having a separate distributor could the normal distributor handle this? Details code would add a named slot for summary and a default slot for the rest. The only special case left would be make &lt;summary&gt; behave as if it had slot=&quot;-webkit-summary&quot;, right?

&gt; Source/WebCore/html/HTMLSlotElement.cpp:55
&gt; +            distributor.removeSlotElementByName(oldValue, *this, *shadowRoot);
&gt; +            distributor.addSlotElementByName(newValue, *this, *shadowRoot);
&gt; +            distributor.invalidateDistribution(shadowRoot-&gt;host());

Distributor should take care of invalidation itself without explicit invalidateDistribution call. (I think it already does actually)

&gt;&gt; Source/WebCore/html/HTMLSlotElement.h:36
&gt;&gt; +class HTMLSlotElement : public InsertionPoint {
&gt; 
&gt; Could be final?

I suspect we&apos;d take a cleaner path to the desired end state if we started with 

class HTMLSlotElement : HTMLElement {

instead and figured out the migration path for &lt;details&gt; as a separate problem.

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:83
&gt; +void ContentDistributor::distributeHostChildren(ShadowRoot&amp; root)

Naming: what else would we distribute than host children?

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:105
&gt; +void ContentDistributor::distributeNode(Node&amp; hostChild, InsertionPoint&amp; slot)
&gt;  {
&gt; -    ASSERT(shadowRoot);
&gt; -
&gt; -    Vector&lt;ShadowRoot*, 8&gt; shadowRoots;
&gt; -    for (Element* current = shadowRoot-&gt;host(); current; current = current-&gt;shadowHost()) {
&gt; -        ShadowRoot* currentRoot = current-&gt;shadowRoot();
&gt; -        if (!currentRoot-&gt;distributor().needsDistribution())
&gt; -            break;
&gt; -        shadowRoots.append(currentRoot);
&gt; -    }
&gt; -
&gt; -    for (size_t i = shadowRoots.size(); i &gt; 0; --i)
&gt; -        shadowRoots[i - 1]-&gt;distributor().distribute(shadowRoots[i - 1]-&gt;host());
&gt; +    ASSERT(hostChild.parentElement()-&gt;shadowRoot() == slot.containingShadowRoot());
&gt; +    slot.m_distribution.append(&amp;hostChild);

This is a weird function. It doesn&apos;t &quot;distribute&quot; anything, it just adds one argument to an array in another argument. It could be static. Should it be a function of slot instead?

Mixing InsertionPoint and slot terminology is confusing. Even if it is temporary I&apos;d prefer if intermediate patches avoided it.

&gt; Source/WebCore/html/shadow/ContentDistributor.h:50
&gt;  class ContentDistributor {

&quot;content&quot; is rather generic. Something like ShadowTreeDistributor might describe the purpose better.

&gt; Source/WebCore/html/shadow/ContentDistributor.h:54
&gt; +    virtual ~ContentDistributor();

Code would be more understandable if this wasn&apos;t a virtual class.

&gt; Source/WebCore/html/shadow/ContentDistributor.h:59
&gt; +    virtual InsertionPoint* findSlotElementByNode(const Node*, ShadowRoot&amp;);
&gt;  
&gt; -    void distributeSelectionsTo(InsertionPoint*, Element* host);
&gt; +    void addSlotElementByName(const AtomicString&amp;, InsertionPoint&amp;, ShadowRoot&amp;);
&gt; +    void removeSlotElementByName(const AtomicString&amp;, InsertionPoint&amp;, ShadowRoot&amp;);

Do these ever take ShadowRoot other than the owner? Could we just have a backpointer to the owner? Not having one doesn&apos;t seem like much of a memory optimization.

&gt; Source/WebCore/html/shadow/ContentDistributor.h:62
&gt;      void invalidateDistribution(Element* host);

Why does this take host instead of ShadowRoot? Seems inconsistent. (you can get host from shadow root).

&gt; Source/WebCore/html/shadow/ContentDistributor.h:64
&gt; +    void redistribute(ShadowRoot&amp;);

Is there difference between distributing and redistributing?

&gt; Source/WebCore/html/shadow/ContentDistributor.h:74
&gt; +    unsigned m_isDistributionValid : 1;

Please just use bool. Bitfield doesn&apos;t help.

&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:54
&gt;  bool InsertionPoint::shouldUseFallbackElements() const
&gt;  {
&gt; -    return isActive() &amp;&amp; !hasDistribution();
&gt; +    return isActive() &amp;&amp; distribution().isEmpty();
&gt;  }

What are &quot;fallback elements&quot;?

&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:85
&gt;  void InsertionPoint::removedFrom(ContainerNode&amp; insertionPoint)

InsertionPoint removed from insertionPoint? This is confusing.

&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:102
&gt; +const Vector&lt;Node*&gt;&amp; InsertionPoint::distribution() const
&gt;  {
&gt; -    if (!m_hasDistribution)
&gt; -        return 0;
&gt; -    for (Node* current = shadowHost()-&gt;lastChild(); current; current = current-&gt;previousSibling()) {
&gt; -        if (matchTypeFor(current) == InsertionPoint::AlwaysMatches)
&gt; -            return current;
&gt; +    if (auto* root = containingShadowRoot()) {
&gt; +        if (root-&gt;distributor().isDistributionValid())
&gt; +            return m_distribution;
&gt; +        root-&gt;distributor().redistribute(*root);

It is bit annoying how this breaks constness (by having const containingShadowRoot return non-const ShadowRoot*).

&gt;&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:109
&gt;&gt;  InsertionPoint* findInsertionPointOf(const Node* projectedNode)
&gt;&gt;  {
&gt;&gt; -    if (ShadowRoot* shadowRoot = shadowRootOfParentForDistribution(projectedNode)) {
&gt;&gt; -        if (ShadowRoot* root = projectedNode-&gt;containingShadowRoot())
&gt;&gt; -            ContentDistributor::ensureDistribution(root);
&gt;&gt; -        return shadowRoot-&gt;distributor().findInsertionPointFor(projectedNode);
&gt;&gt; -    }
&gt;&gt; -    return 0;
&gt;&gt; +    if (ShadowRoot* shadowRoot = shadowRootOfParentForDistribution(projectedNode))
&gt; 
&gt; auto*

Old terminology like &quot;projectedNode&quot; here is confusing. 

shadowRootOfParentForDistribution is very confusing too.

&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:110
&gt; +        return shadowRoot-&gt;distributor().findSlotElementByNode(projectedNode, *shadowRoot);

Especially when mixed with new slot terminology.

&gt; Source/WebCore/html/shadow/InsertionPoint.h:61
&gt; +    mutable Vector&lt;Node*&gt; m_distribution;

How does Node get removed from here when it is removed from the tree?

&gt; Source/WebCore/html/shadow/InsertionPoint.h:63
&gt; +    friend class ContentDistributor;

Is it really necessary to use friend?

&gt; Source/WebCore/style/RenderTreePosition.cpp:44
&gt;      if (m_hasValidNextSibling) {
&gt;          // Stop validating at some point so the assert doesn&apos;t make us O(N^2) on debug builds.
&gt; +        if (nextSiblingRenderer(node, m_parent) != m_nextSibling) {
&gt; +            nextSiblingRenderer(node, m_parent);
&gt; +        }
&gt;          ASSERT(m_parent.isRenderView() || ++m_assertionLimitCounter &gt; 20 || nextSiblingRenderer(node, m_parent) == m_nextSibling);

This looks wrong. The m_hasValidNextSibling case is for when there is nothing to do. And why are you calling nextSiblingRenderer twice and not doing anything with the result?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125895</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-14 22:34:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 261133 [details]
&gt;
&gt; &gt; Source/WebCore/html/HTMLDetailsElement.cpp:82
&gt; &gt; +class DetailsContentDistributor final : public ContentDistributor {
&gt; 
&gt; Instead of having a separate distributor could the normal distributor handle
&gt; this? Details code would add a named slot for summary and a default slot for
&gt; the rest. The only special case left would be make &lt;summary&gt; behave as if it
&gt; had slot=&quot;-webkit-summary&quot;, right?

I definitely don&apos;t want to have a Web-exposed slot name like -webkit-summary in details elements. We shouldn&apos;t be introducing that kind of observable vendor prefixed stuff moving forward just for implementation purposes unless there is a compelling use case.

We could add some sort of a virtual function on HTMLSlotElement and override it in HTMLSummaryElement.  However, since the details element picks the very first summary element, the value of this attribute needs to be context sensitive.

I don&apos;t think making slot attribute behave polymorphicly like that accomplishes anything. It&apos;s exactly the kind of generalization the old shadow DOM code had which ended up bloating the code complexity.  It&apos;s better to re-write the whole distribution algorithm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125903</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-09-14 23:36:48 -0700</bug_when>
    <thetext>Okay, I think we can still reuse named slots with HTMLSlotElement for details elements if we just override the algorithms to select nodes for each slot. Namely, the first summary element will be assigned to a slot named &quot;summary&quot; and the rest will be assigned to the default slot for details elements. Once we&apos;ve done that slot assignments, then we can rely on the rest of the slotting mechanism to take care of the rest.

So if we had a HashMap&lt;AtomicString, SlotInfo&gt; on ShadowRoot as we talked about earlier, we&apos;ll be able to implement this fairly easily by overriding a member function that updates this hash map in a subclass since the distribution doesn&apos;t need to modify HTMLSlotElements as SlotInfo will contain the list of distributed nodes for each slot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126067</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-09-15 11:29:41 -0700</bug_when>
    <thetext>Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1126458</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-09-16 14:07:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/22726874&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201306</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-06-10 11:42:16 -0700</bug_when>
    <thetext>The shadow-dom tests are marked as expected to fail for all ports on the general TestExpectations file.

I updated this expectation on r201931 &lt;http://trac.webkit.org/changeset/201931/trunk/LayoutTests/TestExpectations&gt; to include also Timeout as expected because some shadow-dom tests were timing out constantly on the GTK+ port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201359</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-10 13:34:56 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; The shadow-dom tests are marked as expected to fail for all ports on the
&gt; general TestExpectations file.
&gt; 
&gt; I updated this expectation on r201931
&gt; &lt;http://trac.webkit.org/changeset/201931/trunk/LayoutTests/TestExpectations&gt;
&gt; to include also Timeout as expected because some shadow-dom tests were
&gt; timing out constantly on the GTK+ port.

I think it&apos;s time to enable the feature on all ports now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1203639</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-06-19 16:41:15 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; The shadow-dom tests are marked as expected to fail for all ports on the
&gt; general TestExpectations file.
&gt; 
&gt; I updated this expectation on r201931
&gt; &lt;http://trac.webkit.org/changeset/201931/trunk/LayoutTests/TestExpectations&gt;
&gt; to include also Timeout as expected because some shadow-dom tests were
&gt; timing out constantly on the GTK+ port.

I&apos;ve removed these expectations since we&apos;ve enabled shadow DOM; we&apos;ll have to find which tests are timing out and mark them individually.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260929</attachid>
            <date>2015-09-10 07:38:22 -0700</date>
            <delta_ts>2015-09-10 07:38:22 -0700</delta_ts>
            <desc>WIP1</desc>
            <filename>bug-148695-20150910073817.patch</filename>
            <type>text/plain</type>
            <size>93100</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5NTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGM4NDdhYmI3YTJiMTc4
YjkxZGE4YzU2YWVkZDI3M2UxYTNkMjMwYy4uNmJmNGE5OTZkY2RmYmY2YTQ5YjcyZjlhNjRjNjdk
YTViYzVhMmIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE1LTA5LTEwICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgc2hh
ZG93IERPTSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0ODY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1z
aGFkb3dSb290LWF0dHJpYnV0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRvdy1kb20v
SFRNTFNsb3RFbGVtZW50LWludGVyZmFjZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3NoYWRv
dy1kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLWludGVyZmFjZS1hc3NpZ25lZFNsb3QuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctZGlz
dHJpYnV0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGlu
Zy1zaGFkb3ctcmVuZGVyaW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qvc2hhZG93LWRvbS9j
c3Mtc2NvcGluZy1zaGFkb3ctd2l0aC1ydWxlcy5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRhY2hTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6YmluZGluZ1NoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3Qp
OgorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjphc3NpZ25lZFNsb3QpOgorICAgICAgICAqIGRvbS9Ob2Rl
Lmg6CisgICAgICAgICogZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGw6CisgICAgICAg
ICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6U2hh
ZG93Um9vdCk6CisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBkb20vU2hh
ZG93Um9vdC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
OgorICAgICAgICAqIGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxN
YXJxdWVlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU2xvdEVs
ZW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6SFRNTFNsb3RFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6bWF0Y2hUeXBlRm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTbG90RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNsb3RFbGVtZW50OjpnZXREaXN0cmlidXRlZE5vZGVzKToKKyAgICAg
ICAgKiBodG1sL0hUTUxTbG90RWxlbWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9k
b20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbC4KKyAgICAgICAgKiBodG1sL0hUTUxTbG90
RWxlbWVudC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob25Eb2N1bWVudFR5
cGVDaGlsZE5vZGUuaWRsLgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MVGFnTmFtZXMuaW46CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50Lmg6CisKIDIwMTUtMDktMTAgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFy
QGlnYWxpYS5jb20+CiAKICAgICAgICAgbWluLXdpZHRoL2hlaWdodCBzaG91bGQgZGVmYXVsdCB0
byBhdXRvIGZvciBmbGV4Ym94IGl0ZW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDEwODQ4NGJk
ZmUxNTgzOGE4Mzg3YTEyYzc1ZGE1MTE5ZmEyYWJmYWUuLmE0NDc1NWFkMjE3YmE2NTU1MzlkOGJl
ODAwNTZkYzlhZjY2ZGY1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC00MjIsNiArNDIyLDcg
QEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBkb20vUmFuZ2UuaWRsCiAgICAg
ZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmlkbAogICAgIGRvbS9TZWN1cml0eVBv
bGljeVZpb2xhdGlvbkV2ZW50LmlkbAorICAgIGRvbS9TaGFkb3dSb290LmlkbAogICAgIGRvbS9T
dHJpbmdDYWxsYmFjay5pZGwKICAgICBkb20vVGV4dC5pZGwKICAgICBkb20vVGV4dEV2ZW50Lmlk
bApAQCAtNTA3LDYgKzUwOCw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJTEVTCiAgICAg
aHRtbC9IVE1MUXVvdGVFbGVtZW50LmlkbAogICAgIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaWRs
CiAgICAgaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwKKyAgICBodG1sL0hUTUxTbG90RWxlbWVu
dC5pZGwKICAgICBodG1sL0hUTUxTb3VyY2VFbGVtZW50LmlkbAogICAgIGh0bWwvSFRNTFNwYW5F
bGVtZW50LmlkbAogICAgIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5pZGwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLmNwcAppbmRleCAyZTVmNjEwZWI2ZjQ5YjViNjRjZjU0ZGJjOWExMjI5NDNjMTk5MGQ0
Li4xMjZiY2VjOTYxZjJmZmRhNjc1MzQ2ZDcwY2VhNzdlODA1MGI1ZDRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCkBAIC0yMzIsNiArMjMyLDcgQEAKICNpbmNsdWRlICJKU0hUTUxRdW90
ZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTFNjcmlwdEVsZW1lbnQuY3BwIgogI2luY2x1
ZGUgIkpTSFRNTFNlbGVjdEVsZW1lbnQuY3BwIgorI2luY2x1ZGUgIkpTSFRNTFNsb3RFbGVtZW50
LmNwcCIKICNpbmNsdWRlICJKU0hUTUxTb3VyY2VFbGVtZW50LmNwcCIKICNpbmNsdWRlICJKU0hU
TUxTcGFuRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1MU3R5bGVFbGVtZW50LmNwcCIKQEAg
LTMxMywxMiArMzE0LDYgQEAKICNpbmNsdWRlICJKU1JlY3QuY3BwIgogI2luY2x1ZGUgIkpTUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTUkdCQ29sb3IuY3Bw
IgotI2luY2x1ZGUgIkpTU2NyZWVuLmNwcCIKLSNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuY3Bw
IgotI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwIgotI2lmIEVOQUJMRShDU1BfTkVY
VCkKLSNpbmNsdWRlICJKU1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuY3BwIgotI2VuZGlm
CiAjaW5jbHVkZSAiSlNTUUxFcnJvci5jcHAiCiAjaW5jbHVkZSAiSlNTUUxFeGNlcHRpb24uY3Bw
IgogI2luY2x1ZGUgIkpTU1FMUmVzdWx0U2V0LmNwcCIKQEAgLTMyOSw2ICszMjQsMTMgQEAKICNp
bmNsdWRlICJKU1NRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTU1FMVHJh
bnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU1NWR0FFbGVtZW50LmNwcCIK
KyNpbmNsdWRlICJKU1NjcmVlbi5jcHAiCisjaW5jbHVkZSAiSlNTY3JpcHRQcm9maWxlLmNwcCIK
KyNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGVOb2RlLmNwcCIKKyNpZiBFTkFCTEUoQ1NQX05FWFQp
CisjaW5jbHVkZSAiSlNTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmNwcCIKKyNlbmRpZgor
I2luY2x1ZGUgIkpTU2hhZG93Um9vdC5jcHAiCiAjaW5jbHVkZSAiSlNTdG9yYWdlLmNwcCIKICNp
bmNsdWRlICJKU1N0b3JhZ2VFcnJvckNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2VF
dmVudC5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5MWNjNjIyNmFhNjc3
NzJjM2JlNzgyY2U4ZWJmNDYzOGQ3MGNjNGQ1Li42NTU2ODY4ZWE1ZWM1NTFiZGExZGQwMDQ1MjA4
ZmI3ZWM4YjZmMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTMxOSw2ICsz
MTksNyBAQCBOT05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9SYW5n
ZS5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNr
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvZG9tL1NoYWRvd1Jvb3QuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2RvbS9TdHJpbmdDYWxsYmFjay5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1RleHQuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9UZXh0RXZlbnQuaWRsIFwKQEAgLTM5OSw2ICs0MDAsNyBAQCBO
T05fU1ZHX0JJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFF1b3RlRWxl
bWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5pZGwgXAog
ICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5pZGwgXAorICAgICQoV2ViQ29y
ZSkvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFNv
dXJjZUVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2h0bWwvSFRNTFNwYW5FbGVtZW50Lmlk
bCBcCiAgICAgJChXZWJDb3JlKS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaWRsIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGQ1ZjAxMTlh
YmJkMmVmY2E0YmI2OWFkOWQyZDU1NjQ0M2E0MjA1YWUuLjlkZWFjYzBiZWE1MGRhZDYyNmVmZjFm
ZjAxOGQwYjIzMjc3MTRhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtMjk1Miw2ICsyOTUyLDIwIEBACiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9k
dWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxh
dGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRNTFNs
b3RFbGVtZW50LmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8
JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MU291cmNlRWxlbWVudC5jcHAiPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTY5MzAsNiArMTY5NDQsMjAg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxT
ZWxlY3RFbGVtZW50V2luLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxc
SFRNTFNsb3RFbGVtZW50LmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxodG1sXEhUTUxTb3VyY2VFbGVtZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CkBAIC0yMjI4NSw2ICsyMjMxMyw3IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxRdW90ZUVsZW1lbnQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNjcmlwdEVsZW1lbnQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNlbGVjdEVsZW1lbnQuaCIgLz4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNsb3RFbGVtZW50LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxTb3VyY2VFbGVtZW50LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxTcGFuRWxlbWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caHRtbFxIVE1MU3R5bGVFbGVtZW50LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
ZDllMzNjNjg4NzQ1NzAwYjk1MzEyOGMxZmEzNzQ5NGU3YzEyM2JjNy4uOWQ2NTE5NjE4OGQyYTFm
NDlhNDMxZTkxMzJmMmFjZDQxZmY4NDgwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMzg4OCw2ICszODg4
LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNlbGVjdEVsZW1lbnRX
aW4uY3BwIj4KICAgICAgIDxGaWx0ZXI+aHRtbDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MU2xvdEVsZW1lbnRXaW4uY3BwIj4K
KyAgICAgIDxGaWx0ZXI+aHRtbDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MU291cmNlRWxlbWVudC5jcHAiPgogICAgICAgPEZp
bHRlcj5odG1sPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC01NDk3LDYgKzU1MDAsOSBA
QAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQo
UGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRN
TFNlbGVjdEVsZW1lbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0hUTUxTbG90RWxlbWVudC5jcHAiPgorICAgICAgPEZpbHRlcj5EZXJp
dmVkU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUp
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRNTFNvdXJjZUVsZW1lbnQuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
QEAgLTExMDUxLDYgKzExMDU3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxc
SFRNTFNlbGVjdEVsZW1lbnQuaCI+CiAgICAgICA8RmlsdGVyPmh0bWw8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNsb3RFbGVt
ZW50LmgiPgorICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxTb3VyY2VFbGVtZW50LmgiPgogICAg
ICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0xMjg4MCw2ICsx
Mjg4OSw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNIVE1MU2VsZWN0RWxlbWVudC5oIj4KICAgICAgIDxGaWx0ZXI+RGVyaXZlZFNvdXJjZXM8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0hUTUxTbG90RWxlbWVudC5oIj4KKyAgICAgIDxGaWx0ZXI+
RGVyaXZlZFNvdXJjZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0
dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0hUTUxTb3VyY2VFbGVtZW50Lmgi
PgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDUyYTg5NTdiNTk4N2M5YmQ1MjJhMWEyNWJkZjg2ODRmNTljOTM2NGQuLjk3ZGNlZjRh
ZTM1Nzk5MTdiMmFlZWU1ZWFkYjdkMmI0MjE3OTJmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4MzEsNiArMzgzMSwxMCBA
QAogCQk5QjQxNzA2NTEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5k
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNDE3
MDYzMTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwICovOyB9
OwogCQk5QjUwQjFERTE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5hbWVkSXRlbS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI1MEIxREMxN0NENEMwRjAw
ODdGNjNDIC8qIEZvcm1OYW1lZEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5QjU1RUVFOTFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29j
b2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjU1
RUVFODFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0gKi87IH07CisJCTlCNjlEM0I0
MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjIxQjk4RkZFOTAwRTM1MTJCIC8q
IEhUTUxTbG90RWxlbWVudC5jcHAgKi87IH07CisJCTlCNjlEM0I1MUI5OEZGRTkwMEUzNTEyQiAv
KiBIVE1MU2xvdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCNjlEM0IzMUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCAq
LzsgfTsKKwkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNjlEM0I2
MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVudC5jcHAgKi87IH07CisJCTlCNjlE
M0I5MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjcxQjk5MTAwNzAwRTM1MTJC
IC8qIEpTSFRNTFNsb3RFbGVtZW50LmggKi87IH07CiAJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2
MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QjZDNDE1MjEzNDQ5NDkwMDAwODVCNjIgLyogU3RyaW5nV2l0aERp
cmVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTlCQTI3M0Y0MTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2Fj
aGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkEy
NzNGMzE3MjIwNkJCMDA5N0NFNDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICov
OyB9OwogCQk5QkFCNkM2QzEyNTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkFCNkM2QTEyNTUwNjMx
MDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NDIsNiArMzg0Niw4IEBACiAJCTlCRDBCRjkzMTJBNDJC
RjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQwQkY5MTEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVk
RXZlbnRRdWV1ZS5oICovOyB9OwogCQk5QkQwQkY5NDEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVk
RXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QkQwQkY5MjEyQTQyQkY1MDA3MkZENDMgLyogU2NvcGVkRXZlbnRRdWV1ZS5jcHAgKi87
IH07CiAJCTlCRDhBOTVBMThCRUZDNzYwMDk4N0U5QSAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ4QTk1
OTE4QkVGQzc2MDA5ODdFOUEgLyogQ29sbGVjdGlvbkluZGV4Q2FjaGUuY3BwICovOyB9OworCQk5
QkRBNjRENzFCOTc1Q0U1MDA5QzQzODcgLyogSlNTaGFkb3dSb290LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNkJDOTYwMUI5NzU5NjYwMDVBRTFG
MCAvKiBKU1NoYWRvd1Jvb3QuY3BwICovOyB9OworCQk5QkRBNjREODFCOTc1Q0YyMDA5QzQzODcg
LyogSlNTaGFkb3dSb290LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjZCQzk2MTFCOTc1OTY2MDA1QUUxRjAgLyogSlNTaGFkb3dSb290LmggKi87IH07
CiAJCTlCRjlBODgwMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
RjlBODdFMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNw
cCAqLzsgfTsKIAkJOUJGOUE4ODExNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCRjlBODdGMTY0OEREMkYwMDFDNkIyMyAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmggKi87IH07CiAJCTlENjM4MDEwMUFGMTczMjIwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGln
bm1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5RDYzODAwRjFBRjE2RTE2MDAzMUExNUMgLyogU3R5bGVTZWxmQWxpZ25tZW50RGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTE5Miw2
ICsxMTE5OCw3IEBACiAJCTlBNTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVj
dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRpbmdPYmplY3RzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlBQjFGMzdFMThFMjQ4OUEwMDUzNDc0MyAv
KiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOUFCMUYzN0YxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMTlC
NjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIw
NzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEJESUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMjA0LDYgKzExMjExLDEzIEBACiAJCTlCNTBCMURD
MTdDRDRDMEYwMDg3RjYzQyAvKiBGb3JtTmFtZWRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvcm1OYW1lZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOUI1NUVFRTgxQjNFODg5ODAwNTM0MkJDIC8qIEVkaXRvckNvY29hLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWRpdG9yQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTlCNTVFRUVBMUIzRjNGRUYwMDUzNDJCQyAvKiBFZGl0b3JDb2Nv
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5QjY5RDNCMTFCOThGRjBBMDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5QjY5RDNCMjFCOThGRkU5MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxTbG90RWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNjlEM0IzMUI5OEZGRTkw
MEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTFNsb3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlC
NjlEM0I2MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0hUTUxTbG90RWxlbWVudC5jcHA7IHBhdGgg
PSAiSlNIVE1MU2xvdEVsZW1lbnQuY3BwIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OUI2OUQzQjcxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTSFRNTFNsb3RFbGVtZW50Lmg7IHBhdGggPSAiSlNI
VE1MU2xvdEVsZW1lbnQuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNkJDOTYw
MUI5NzU5NjYwMDVBRTFGMCAvKiBKU1NoYWRvd1Jvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNTaGFkb3dSb290LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUI2QkM5NjExQjk3NTk2NjAwNUFFMUYwIC8qIEpTU2hhZG93Um9vdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NoYWRvd1Jvb3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUI2QzQxNTIxMzQ0OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhE
aXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nV2l0aERp
cmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkEyNzNGMzE3MjIwNkJC
MDA5N0NFNDcgLyogTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQUI2QzZBMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0
aW5nU3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1N0eWxl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQzMyw2ICsxODQ0Nyw5IEBACiAJ
CQkJQTgxMzY5QkQwOTczNzRGNTAwRDc0NDYzIC8qIEhUTUxTZWxlY3RFbGVtZW50LmNwcCAqLywK
IAkJCQlBODEzNjlCQzA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1lbnQuaCAqLywK
IAkJCQk4NTU1NDI5OTBBQTQ5Mzg4MDBCQTg5RjIgLyogSFRNTFNlbGVjdEVsZW1lbnQuaWRsICov
LAorCQkJCTlCNjlEM0IxMUI5OEZGMEEwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaWRsICov
LAorCQkJCTlCNjlEM0IyMUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuY3BwICov
LAorCQkJCTlCNjlEM0IzMUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCAqLywK
IAkJCQlFNDQ2MTM5NTBDRDYzMzEwMDBGQURBNzUgLyogSFRNTFNvdXJjZUVsZW1lbnQuY3BwICov
LAogCQkJCUU0NDYxMzk2MENENjMzMTAwMEZBREE3NSAvKiBIVE1MU291cmNlRWxlbWVudC5oICov
LAogCQkJCUU0NDYxMzk3MENENjMzMTAwMEZBREE3NSAvKiBIVE1MU291cmNlRWxlbWVudC5pZGwg
Ki8sCkBAIC0xOTIxNiw2ICsxOTIzMyw4IEBACiAJCUE4M0I3OTA4MENDQUZGMkIwMDBCMDgyNSAv
KiBIVE1MICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5
QjY5RDNCNjFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuY3BwICovLAorCQkJ
CTlCNjlEM0I3MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVudC5oICovLAogCQkJ
CTMxQTc5NUM0MTg4OEJBRDEwMDM4MkY5MCAvKiBKU0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCAq
LywKIAkJCQkzMUE3OTVDNTE4ODhCQUQxMDAzODJGOTAgLyogSlNBTkdMRUluc3RhbmNlZEFycmF5
cy5oICovLAogCQkJCUJFOEVGMDNFMTcxQzhGRjkwMDlCNDhDMyAvKiBKU0F1ZGlvVHJhY2suY3Bw
ICovLApAQCAtMTk5NzIsNiArMTk5OTEsOCBAQAogCQkJCUU0QjQyMzg2MENCRkI3M0MwMEFGMkVD
RSAvKiBKU1Byb2dyZXNzRXZlbnQuaCAqLywKIAkJCQk0OTk4QUVDQjEzRjlENkM5MDA5MEIxQUEg
LyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5jcHAgKi8sCiAJCQkJNDk5OEFFQ0Mx
M0Y5RDZDOTAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCAqLywK
KwkJCQk5QjZCQzk2MDFCOTc1OTY2MDA1QUUxRjAgLyogSlNTaGFkb3dSb290LmNwcCAqLywKKwkJ
CQk5QjZCQzk2MTFCOTc1OTY2MDA1QUUxRjAgLyogSlNTaGFkb3dSb290LmggKi8sCiAJCQkJNjVE
RjMxRUYwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTVGV4dC5jcHAgKi8sCiAJCQkJNjVERjMxRjAwOUQx
Q0M2MDAwMEJFMzI1IC8qIEpTVGV4dC5oICovLAogCQkJCUQ3NjEzQUMyMTQ3NTNFNTYwMERCODYw
NiAvKiBKU1dlYktpdE5hbWVkRmxvdy5jcHAgKi8sCkBAIC0yMzQ4NCw2ICsyMzUwNSw3IEBACiAJ
CQkJRTQ1MzIyQUExNDBDRTI2NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlB
NkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5
NjMxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKKwkJCQk5QjE5QjY3RTFCOTY0
RTUyMDAzNDg3NDUgLyogU2hhZG93Um9vdC5pZGwgKi8sCiAJCQkJMzE3NDFBQUIxNjYzNUU0NTAw
OEE1QjdFIC8qIFNpbXVsYXRlZENsaWNrT3B0aW9ucy5oICovLAogCQkJCUQwMUEyN0FCMTBDOUJG
RDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmNwcCAqLywKIAkJCQlEMDFBMjdBQzEwQzlC
RkQ4MDAwMjZBNDIgLyogU3BhY2VTcGxpdFN0cmluZy5oICovLApAQCAtMjYzNzIsNiArMjYzOTQs
NyBAQAogCQkJCTM3OUUzNzE3MTM3MzZBNjYwMEI5RTkxOSAvKiBRdW90ZWRQcmludGFibGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTVBNTc0RjI5MTMxREI5NkQwMDQ3MUI4OCAvKiBRdW90ZXNEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk3MjBEMDBCRjIyMDA3MUI3ODIgLyogUmFkaWFs
R3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5QjY5RDNCNTFCOThGRkU5
MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RD
QzEyNTFGMTJEMDAzRUYyNjkgLyogUmFkaW9JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUI2NThGRkE2MTUyMkVGQUEwMERENTU5NSAvKiBSYWRpb05vZGVMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0YxOTkxODA4MjQ1RTU5MDAxRTlBQkMgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICov
LApAQCAtMjY0MDAsNiArMjY0MjMsNyBAQAogCQkJCTkzMzA5RTAxMDk5RTY0OTIwMDU2RTU4MSAv
KiBSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwNkMwRDhG
MENGRDExNDYwMDY1RjQzRiAvKiBSZW1vdmVGb3JtYXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5MzMwOUUwNTA5OUU2NDkyMDA1NkU1ODEgLyogUmVtb3ZlTm9kZUNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTlCREE2NEQ4MUI5NzVDRjIwMDlDNDM4NyAvKiBKU1NoYWRvd1Jvb3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTA3MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVO
b2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjU5RUQy
M0IxODI3MjY3OTAwNkQ1NjRDIC8qIFJlbmRlckFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRDQ5NENEMUE4NkVCMUQwMDBBODdFQyAvKiBSZW5kZXJBdHRhY2htZW50Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3NDM2LDYgKzI3NDYwLDcgQEAKIAkJCQk1RDIxQTgwMzEzRUNF
NURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMTBCNjk4
MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIx
MEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTlCNjlEM0I5MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0Q4MjAzMTAxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0Fu
aW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTkxQzlGQzMxQjY1OUE2NzAwQUZGRDU0IC8q
IEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERTAxMjUx
RjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjg2MjEs
NiArMjg2NDYsNyBAQAogCQkJCUZCQzIyMERGMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NkFCQTQyMzE0QkNCODBFMDBE
NTYyMDQgLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjJFRDk3NzEwQjFGNTVDRTAwMjU3RDBGIC8qIEdyYXBoaWNzQ29udGV4dENHLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTlCNjlEM0I4MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc3QjQwNDBCMjJGMzdDMDAwNEJFQzYg
LyogR3JhcGhpY3NDb250ZXh0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1ODBCMEMwRjEy
QTI2OTAwNTFENjg5IC8qIEdyYXBoaWNzTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDk5
QjNFRDYxMjhDRDMxNDAwRTcyNkMyIC8qIEdyYXBoaWNzTGF5ZXJDQS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTI4NzUxLDYgKzI4Nzc3LDcgQEAKIAkJCQlENjY4MTdGQTE2NkZFNkQ3MDBGQTA3QjQg
LyogSFRNTFRlbXBsYXRlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODEzNjlENzA5
NzM3NEY2MDBENzQ0NjMgLyogSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5QkM2QzIxQzEzQ0NDOTdCMDA4RTAzMzcgLyogSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUI2OUQzQjQxQjk4RkZFOTAwRTM1MTJCIC8qIEhU
TUxTbG90RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODcxREMyOTBBMTUyMDU3MDBC
MTJBNjggLyogSFRNTFRpdGxlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzg3
NzEyMjg4M0U5MDBCODFGRjggLyogSFRNTFRva2VuaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNzA3NTY4QjE0MjI2MkQ2MDA0MTQxNjEgLyogSFRNTFRyYWNrRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI4OTE3LDYgKzI4OTQ0LDcgQEAKIAkJCQkyRTJEOTlDRDEwRTJCQkRBMDA0
OTYzMzcgLyogSlNCbG9iLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5MzFERTVCMTRDNDRDNDQw
MDBEQzlEMiAvKiBKU0Jsb2JDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0OUUyODcx
MDdENERCNDAwQjU3OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTlCREE2NEQ3MUI5NzVDRTUwMDlDNDM4NyAvKiBKU1NoYWRvd1Jvb3QuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjVERjMyMzkwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjVERjMyM0IwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFz
UGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUVFRDE0MjEwNTE5Njk0MDAwOTlGQUIg
LyogSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCmluZGV4IDY3NTAwMGE1NGE3MDgyOWMwZDExMTJkOThiZjg5YmNhY2RkN2MzOWMu
LmY2NDhmZDg1YWIyODYwMTRlNzA0ZWM4YzdkMjcyZDNlMDRiODkyMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDbGllbnRSZWN0TGlzdC5oIgog
I2luY2x1ZGUgIkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiRE9NVG9rZW5M
aXN0LmgiCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50U2hhcmVk
T2JqZWN0UG9vbC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkVs
ZW1lbnRSYXJlRGF0YS5oIgpAQCAtMTIzNiw2ICsxMjM3LDEyIEBAIHZvaWQgRWxlbWVudDo6YXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIG9sCiAgICAgICAgICAgICBlbGVtZW50RGF0YSgpLT5zZXRIYXNOYW1lQXR0cmlidXRlKCFu
ZXdWYWx1ZS5pc051bGwoKSk7CiAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpw
c2V1ZG9BdHRyKQogICAgICAgICAgICAgc2hvdWxkSW52YWxpZGF0ZVN0eWxlIHw9IHRlc3RTaG91
bGRJbnZhbGlkYXRlU3R5bGUgJiYgaXNJblNoYWRvd1RyZWUoKTsKKyAgICAgICAgZWxzZSBpZiAo
bmFtZSA9PSBIVE1MTmFtZXM6OnNsb3RBdHRyKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcGFy
ZW50ID0gcGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIHNoYWRvd1Jv
b3QgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICAgICAgc2hhZG93Um9v
dC0+ZGlzdHJpYnV0b3IoKS5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd1Jvb3QtPmhvc3Qo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICBwYXJzZUF0dHJpYnV0
ZShuYW1lLCBuZXdWYWx1ZSk7CkBAIC0xNjY4LDYgKzE2NzUsNyBAQCB2b2lkIEVsZW1lbnQ6OnJl
bW92ZVNoYWRvd1Jvb3QoKQogICAgIG9sZFJvb3QtPmRpc3RyaWJ1dG9yKCkuaW52YWxpZGF0ZURp
c3RyaWJ1dGlvbih0aGlzKTsKIH0KIAorLy8gRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uLgog
UmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKQEAg
LTE2NzcsNiArMTY4NSw0MyBAQCBSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2hh
ZG93Um9vdChFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorUmVm
UHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmF0dGFjaFNoYWRvdyhjb25zdCBEaWN0aW9uYXJ5JiBk
aWN0aW9uYXJ5LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBTdHJpbmcgbW9kZTsKKyAgICBk
aWN0aW9uYXJ5LmdldCgibW9kZSIsIG1vZGUpOworICAgIFNoYWRvd1Jvb3Q6OkVuY2Fwc3VsYXRp
b25Nb2RlIGVuY2Fwc3VsYXRpb25Nb2RlID0gU2hhZG93Um9vdDo6RW5jYXBzdWxhdGlvbk1vZGU6
OkNsb3NlZDsKKyAgICBpZiAobW9kZSA9PSAib3BlbiIpCisgICAgICAgIGVuY2Fwc3VsYXRpb25N
b2RlID0gU2hhZG93Um9vdDo6RW5jYXBzdWxhdGlvbk1vZGU6Ok9wZW47CisgICAgZWxzZSBpZiAo
bW9kZSAhPSAiY2xvc2VkIikgeworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290
KCkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgaWYgKHNoYWRvd1Jvb3QoKSkgeworICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBh
ZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBTaGFkb3dSb290OjpB
dXRob3JTaGFkb3dSb290LCBlbmNhcHN1bGF0aW9uTW9kZSkpOworCisgICAgcmV0dXJuIHNoYWRv
d1Jvb3QoKTsKK30KKworU2hhZG93Um9vdCogRWxlbWVudDo6YmluZGluZ1NoYWRvd1Jvb3QoKSBj
b25zdAoreworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dSb290KCk7CisgICAgaWYgKCFy
b290KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAocm9vdC0+dHlwZSgpICE9IFNo
YWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QgfHwgcm9vdC0+ZW5jYXBzdWxhdGlvbk1vZGUoKSAh
PSBTaGFkb3dSb290OjpFbmNhcHN1bGF0aW9uTW9kZTo6T3BlbikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIHJvb3Q7Cit9CisKIFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKSBjb25zdAogewogICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290
ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CkBAIC0xNjg4LDYgKzE3MzMsNyBAQCBTaGFkb3dSb290
KiBFbGVtZW50Ojp1c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QKIAogU2hhZG93Um9vdCYgRWxl
bWVudDo6ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpCiB7CisgICAgQVNTRVJUKGNhbkhhdmVV
c2VyQWdlbnRTaGFkb3dSb290KCkpOwogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB1c2Vy
QWdlbnRTaGFkb3dSb290KCk7CiAgICAgaWYgKCFzaGFkb3dSb290KSB7CiAgICAgICAgIGFkZFNo
YWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCksIFNoYWRvd1Jvb3Q6OlVzZXJB
Z2VudFNoYWRvd1Jvb3QpKTsKQEAgLTI3MzIsNiArMjc3OCw4IEBAIGJvb2wgRWxlbWVudDo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAgICAgICAg
Y29uc3QgU1ZHRWxlbWVudCYgY2hpbGRFbGVtZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hp
bGQpOwogICAgICAgICByZXR1cm4gaXM8U1ZHU1ZHRWxlbWVudD4oY2hpbGRFbGVtZW50KSAmJiBj
aGlsZEVsZW1lbnQuaXNWYWxpZCgpOwogICAgIH0KKyAgICBpZiAoc2hhZG93Um9vdCgpICYmICFo
YXNTaGFkb3dSb290T3JBY3RpdmVJbnNlcnRpb25Qb2ludFBhcmVudChjaGlsZCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5k
ZXggMWU2MDcwM2NiNmIyZmQ5MzYwNzFmODViOWI5ZGE5ZDdhYTQwY2M0Yi4uNWI2ZDZkYmU5N2Rm
M2NhZjRlODU0ZTU2OWEyZjg4YTJkYmJmNzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zOSw2
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENsaWVudFJlY3Q7CiBjbGFzcyBD
bGllbnRSZWN0TGlzdDsKIGNsYXNzIERhdGFzZXRET01TdHJpbmdNYXA7CitjbGFzcyBEaWN0aW9u
YXJ5OwogY2xhc3MgRE9NVG9rZW5MaXN0OwogY2xhc3MgRWxlbWVudFJhcmVEYXRhOwogY2xhc3Mg
SFRNTERvY3VtZW50OwpAQCAtMjQ5LDYgKzI1MCw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBTaGFkb3dSb290KiBzaGFkb3dSb290KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPFNoYWRvd1Jvb3Q+IGNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYpOwogCisg
ICAgU2hhZG93Um9vdCogYmluZGluZ1NoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICBSZWZQdHI8U2hh
ZG93Um9vdD4gYXR0YWNoU2hhZG93KGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7
CisKICAgICBTaGFkb3dSb290KiB1c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgU2hhZG93Um9vdCYgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwogCkBA
IC01MTYsNiArNTIwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgYWx3YXlz
Q3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQgZm9yIEF0dHIgdG8gY2Fs
bCB3aWxsTW9kaWZ5QXR0cmlidXRlL2RpZE1vZGlmeUF0dHJpYnV0ZS4KICAgICBmcmllbmQgY2xh
c3MgQXR0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCA5YThjOTY1Yzg1ZjY1NTY1NWU5NDcz
MmUzNTlhNTRkM2YzNGY0OGEzLi4xMTQyYzAxZmVmMTI2MTI5OWRhZGRjYzEzMjRhMTY3NmNhZmU3
M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCkBAIC0xNjYsNiArMTY2LDEyIEBACiAgICAgW0Nv
bmRpdGlvbmFsPUNTU19SRUdJT05TXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtp
dFJlZ2lvbk92ZXJzZXQ7CiAgICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBzZXF1ZW5jZTxS
YW5nZT4gd2Via2l0R2V0UmVnaW9uRmxvd1JhbmdlcygpOwogCisgICAgLy8gU2hhZG93IERPTSBB
UEkKKyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJ
UFQKKyAgICBbUmFpc2VzRXhjZXB0aW9uXSBTaGFkb3dSb290IGF0dGFjaFNoYWRvdyhEaWN0aW9u
YXJ5IG9wdGlvbnMpOworICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHNsb3Q7Cisg
ICAgW0ltcGxlbWVudGVkQXM9YmluZGluZ1NoYWRvd1Jvb3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBT
aGFkb3dSb290IHNoYWRvd1Jvb3Q7CisjZW5kaWYKIAogICAgIC8vIEV2ZW50IEhhbmRsZXJzCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCA4YWE0YTFmMmEyNGZjMGU4ZjFkZTg2NGFjYWNjMWUyZGM1ZDZj
YTUzLi4wODU1Mjg0OGQyNDc3MmJhNDg4ZGMzNTMwZDZjYWM0ZGRmMTFlODk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCkBAIC0xMDUyLDYgKzEwNTMsMjIgQEAgU2hhZG93Um9vdCogTm9kZTo6Y29udGFpbmlu
Z1NoYWRvd1Jvb3QoKSBjb25zdAogICAgIHJldHVybiBpczxTaGFkb3dSb290Pihyb290KSA/IGRv
d25jYXN0PFNoYWRvd1Jvb3Q+KCZyb290KSA6IG51bGxwdHI7CiB9CiAKK0VsZW1lbnQqIE5vZGU6
OmFzc2lnbmVkU2xvdCgpIGNvbnN0Cit7CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5v
ZGUoKSkgeworICAgICAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IHBhcmVudC0+c2hhZG93Um9v
dCgpKSB7CisgICAgICAgICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1dGlv
bihzaGFkb3dSb290KTsKKworICAgICAgICAgICAgaWYgKHNoYWRvd1Jvb3QtPmVuY2Fwc3VsYXRp
b25Nb2RlKCkgPT0gU2hhZG93Um9vdDo6RW5jYXBzdWxhdGlvbk1vZGU6Ok9wZW4gJiYgc2hhZG93
Um9vdC0+dHlwZSgpID09IFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QpIHsKKyAgICAgICAg
ICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9p
bnRPZih0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQgJiYgaW5zZXJ0
aW9uUG9pbnQtPmhhc1RhZ05hbWUoc2xvdFRhZykpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxIVE1MU2xvdEVsZW1lbnQqPihpbnNlcnRpb25Qb2ludCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wg
Tm9kZTo6aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSBjb25zdAogewogICAgIGF1dG8qIHNoYWRv
d1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMTg0ODdhNmU1
NjlhZjQzNzJhNmJhNjI3MGIwNzE5ZGNlYzRiNzc5Ny4uZGFlMTMwYmFkZTMzODFkMDkwNTAyOTdm
ODViNzc0MDFkNWUxOGFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yODYsNiArMjg2LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUqIGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUo
KSBjb25zdDsKICAgICBTaGFkb3dSb290KiBjb250YWluaW5nU2hhZG93Um9vdCgpIGNvbnN0Owog
ICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICBFbGVtZW50KiBhc3NpZ25l
ZFNsb3QoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgbnVsbCwgYSBjaGlsZCBvZiBTaGFkb3dS
b290LCBvciBhIGxlZ2FjeSBzaGFkb3cgcm9vdC4KICAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRv
d1RyZWVSb290Tm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vbkRvY3Vt
ZW50VHlwZUNoaWxkTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRG9jdW1lbnRUeXBl
Q2hpbGROb2RlLmlkbAppbmRleCA3MDkzMDIzNWEzMmMwYzFjYzNjNzk2YWZhMjRmZTVhMzM1MWZm
YmE4Li4xMDhkODE0M2U1YzE1MWI3YjVhYzY4NTNkYjVkYTRhMzQ3YThmNWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbApAQCAtMzAsNCAr
MzAsNyBAQAogXSBpbnRlcmZhY2UgTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlIHsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRWxlbWVudCBwcmV2aW91c0VsZW1lbnRTaWJsaW5nOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBFbGVtZW50IG5leHRFbGVtZW50U2libGluZzsKKworICAgIC8vIFNoYWRv
dyBET00KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBhc3NpZ25lZFNsb3Q7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGExMjI1N2Y4MmRkYWRjODAzOGU4YTMwYTM0
MjUyZjYzMjlmN2JiNmMuLjQ0ZjNhOTc5NWY5NzAwZjBiNGIzMDgxNTkwNTYxZjRiMjMyNzE1Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTUwLDEzICs1MCwxNiBAQCBlbnVtIFNo
YWRvd1Jvb3RVc2FnZU9yaWdpblR5cGUgewogICAgIFNoYWRvd1Jvb3RVc2FnZU9yaWdpbk1heAog
fTsKIAotU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jv
b3RUeXBlIHR5cGUpCitTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50JiBkb2N1bWVudCwg
U2hhZG93Um9vdFR5cGUgdHlwZSwgRW5jYXBzdWxhdGlvbk1vZGUgbW9kZSkKICAgICA6IERvY3Vt
ZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBUcmVlU2NvcGUo
KnRoaXMsIGRvY3VtZW50KQogICAgICwgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UoZmFsc2UpCi0g
ICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1faG9zdCgwKQorICAgICwgbV90eXBlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPih0eXBlKSkKKyAgICAsIG1fZW5jYXBzdWxhdGlvbk1vZGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1vZGUpKQorICAgICwgbV9ob3N0KG51bGxwdHIpCiB7CisgICAgQVNTRVJU
KHRoaXMtPnR5cGUoKSA9PSB0eXBlKTsKKyAgICBBU1NFUlQoZW5jYXBzdWxhdGlvbk1vZGUoKSA9
PSBtb2RlKTsKIH0KIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmgKaW5kZXggNmQzMTFmZGI2MjYzZGExMmRjOWQ5MDRmNzEwZDA3YjllYzg1YThjZi4uZmZm
ZWQ0ZThhMjBlY2UyYmYyNWU3NWRlYmEyYjNiNDdjNjZjOTRlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5oCkBAIC00MSwxMSArNDEsMTcgQEAgY2xhc3MgU2hhZG93Um9vdCBmaW5hbCA6IHB1Ymxp
YyBEb2N1bWVudEZyYWdtZW50LCBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1YmxpYzoKICAgICBlbnVt
IFNoYWRvd1Jvb3RUeXBlIHsKICAgICAgICAgVXNlckFnZW50U2hhZG93Um9vdCA9IDAsCisgICAg
ICAgIEF1dGhvclNoYWRvd1Jvb3QgPSAxLAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFNoYWRv
d1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RUeXBlIHR5cGUpCisg
ICAgZW51bSBjbGFzcyBFbmNhcHN1bGF0aW9uTW9kZSB7CisgICAgICAgIENsb3NlZCA9IDAsCisg
ICAgICAgIE9wZW4gPSAxLAorICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFNoYWRvd1Jvb3Q+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RUeXBlIHR5cGUsIEVuY2Fwc3VsYXRp
b25Nb2RlIG1vZGUgPSBFbmNhcHN1bGF0aW9uTW9kZTo6Q2xvc2VkKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhZG93Um9vdChkb2N1bWVudCwgdHlwZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkb3dSb290KGRvY3VtZW50LCB0eXBlLCBtb2RlKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+U2hhZG93Um9vdCgpOwpAQCAtNTYsNiArNjIsOCBAQCBw
dWJsaWM6CiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQogICAg
IHZvaWQgc2V0SG9zdChFbGVtZW50KiBob3N0KSB7IG1faG9zdCA9IGhvc3Q7IH0KIAorICAgIEVu
Y2Fwc3VsYXRpb25Nb2RlIGVuY2Fwc3VsYXRpb25Nb2RlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RW5jYXBzdWxhdGlvbk1vZGU+KG1fZW5jYXBzdWxhdGlvbk1vZGUpOyB9CisKICAgICBTdHJpbmcg
aW5uZXJIVE1MKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYpOwogCkBAIC03MSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBTaGFkb3dSb290KERvY3VtZW50JiwgU2hhZG93Um9vdFR5cGUpOworICAgIFNoYWRvd1Jvb3Qo
RG9jdW1lbnQmLCBTaGFkb3dSb290VHlwZSwgRW5jYXBzdWxhdGlvbk1vZGUpOwogCiAgICAgdmly
dHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlk
ZTsKQEAgLTgzLDYgKzkxLDcgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fcmVzZXRTdHls
ZUluaGVyaXRhbmNlIDogMTsKICAgICB1bnNpZ25lZCBtX3R5cGUgOiAxOworICAgIHVuc2lnbmVk
IG1fZW5jYXBzdWxhdGlvbk1vZGUgOiAxOwogCiAgICAgRWxlbWVudCogbV9ob3N0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGY0MmI1NjNlNGY0ODYwNWQyZTM5ODhi
Mjg2M2IyYTJhYjA5OTgzZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmlkbApAQCAtMCwwICsxLDQxIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK1sK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXSBpbnRlcmZhY2UgU2hhZG93Um9vdCA6IERvY3Vt
ZW50RnJhZ21lbnQgeworCisvLyAgICBET01TZWxlY3Rpb24gICAgICAgICAgICAgICAgICAgICAg
ICBnZXRTZWxlY3Rpb24gKCk7CisvLyAgICBFbGVtZW50PyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbGVtZW50RnJvbVBvaW50IChkb3VibGUgeCwgZG91YmxlIHkpOworLy8gICAgc2VxdWVu
Y2U8RWxlbWVudD4gICAgICAgICAgICAgICAgICAgZWxlbWVudHNGcm9tUG9pbnQgKGRvdWJsZSB4
LCBkb3VibGUgeSk7CisvLyAgICBDYXJldFBvc2l0aW9uPyAgICAgICAgICAgICAgICAgICAgICBj
YXJldFBvc2l0aW9uRnJvbVBvaW50IChkb3VibGUgeCwgZG91YmxlIHkpOworICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBFbGVtZW50ICAgICAgICAgIGFjdGl2ZUVsZW1lbnQ7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIEVsZW1lbnQgICAgICAgICAgaG9zdDsKKworICAgIFtUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dCisgICAgYXR0cmlidXRlIERPTVN0cmluZyAg
ICAgICAgICAgICAgICAgaW5uZXJIVE1MOworCisvLyAgICByZWFkb25seSBhdHRyaWJ1dGUgU3R5
bGVTaGVldExpc3QgICBzdHlsZVNoZWV0czsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dHJpYnV0ZU5hbWVzLmluCmluZGV4IDllZDg0ZjAxNTAyYTVjNzkzZDcyZDMwMzkxN2JjNDA2OWM0
ZDJmYmUuLjNiZjE1OTE5NmIwNzUwZjljYmFmNjJmOGQxOTAzYTUxYmM1YjJkNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCkBAIC0zMjEsNiArMzIxLDcgQEAg
c2VsZWN0ZWQKIHNoYXBlCiBzaXplCiBzaXplcworc2xvdAogc29ydGFibGUKIHNvcnRkaXJlY3Rp
b24KIHNwYW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAppbmRleCA1ZDdk
ZjgwNjIwN2FhMTE3ZGY4Mjg3OWVhYTI4MzdmZDUxYmNjMWFiLi4zYjI3MDgwNjFmYjdiNDFhOTVm
MzYyODVhN2E0ZTU5YWYwYzY5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5oCkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50IGFsd2F5cyBjcmVhdGVzIG9uZSwgYnV0IGJ1dHRvbnMgZG9uJ3QgbmVlZCBpdC4K
ICAgICB2aXJ0dWFsIGJvb2wgYWx3YXlzQ3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2Vy
QWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKaW5kZXggNGY1OTRlMTk3NzQ5MzU2
ZDA1NmU3YjU4ODI2MmFlMTVhNzEzMDI5MC4uZDdlYzcyNmQ0OWE0ZmNhMGU4MDZmNDVjNjM5Mjhh
NTFjOWNlY2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCkBA
IC00MSw2ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIG1faXNPcGVu
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggYjkyNDMwN2Ey
ZTg4MDE3NjU0ZWNiMmExNDU4NGVlN2RiYzY3YTE2NC4uYmJiZDMzNjg4YmQ3YzE0NzIxNDk5ZjNi
YmZlYTA3ZjMwOTU0NzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
QEAgLTMzMSw2ICszMzEsNyBAQCBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRlU2V0dGlu
ZyB7IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRV
c2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUZvcm0oKSBv
dmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRm9ybSgpIG92ZXJyaWRl
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCmluZGV4IDJjZWMy
NjE5ZGRhNzhhY2VkOWVhMWFiZjhlOTE5MzFjMGY2ZTRjYzUuLjMwYWMzZWRlNjA0NmM3NDhhZDJl
NDRmNGM0NjBjYzQwNTU0MGUxMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEtleWdlbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVt
ZW50LmgKQEAgLTUyLDYgKzUyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQo
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2hhZG93U2VsZWN0KCkgY29uc3Q7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCBjYzU4ZDYwYjdhMzlk
Y2ZkMmNjZGQ0MzIyYmI3NTRkMTczOWQyNzM4Li5lYmEzZjc5ZDkxMjk3ZGRiYWM2OWMzYTRmNTdl
NTJiMmQyNzg0NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgK
QEAgLTYyLDYgKzYyLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkhUTUxNYXJxdWVlRWxlbWVudCI7IH0KIAorICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIFJlbmRlck1hcnF1ZWUqIHJlbmRlck1hcnF1ZWUoKSBj
b25zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMGQ4
YjRlZjRjM2FiOWUxYWJlNmU2YWE3ZDRjZmQ4MzMzYjdjNGYzOS4uZDMwZmY1OTEyNmRjMTBkZTA1
OTNjZjZhN2Y4MzI2OTdjZDIyZjg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTQ4Nyw2ICs0ODcsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGFs
d2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKKyAgICAvLyBGSVhNRTogU2hhZG93IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxkIGJl
IGFibGUgdG8gY3JlYXRlIHNoYWRvdyByb290IG9uIGF1ZGlvIGFuZCB2aWRlbyBlbGVtZW50cwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21G
b2N1c0xvZ2ljKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9j
dXMoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAppbmRl
eCBkMjM2NGIxN2MwZGZlNTQwNWE0ZGRiMmRkOTBhYjUyMTYyMjkwN2Y0Li5iODYzNmVjNDIwNGRk
NzY0ODE1ODdiZmQ4OWQyNjFkYzZlNWE4MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuaApAQCAtNzYsNiArNzYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRFbGVt
ZW50U3RhdGVDaGFuZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93
Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2Vy
QWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgUmVmUHRyPE1ldGVyVmFsdWVFbGVtZW50PiBtX3ZhbHVlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCA2Mjk0ZDE0ZGRkZjg2MGNiYmJhZDY4NmUx
MmVmY2MxMTdmN2Y2NmZlLi40ZDQ5N2UzZDRjNTQ3ZTY0MjI0MTJkMGI1ZTIyZDRiM2FjM2M5YTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0xMTcsNiArMTE3
LDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOyAvLyBOb3QgaW1wbGVtZW50ZWQsIGdlbmVyYXRlcyBhIGNvbXBp
bGUgZXJyb3IgaWYgc3ViY2xhc3NlcyBjYWxsIHRoaXMgYnkgbWlzdGFrZS4KIAorICAgIC8vIEZJ
WE1FOiBTaGFkb3cgRE9NIHNwZWMgc2F5cyB3ZSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgc2hh
ZG93IHJvb3Qgb24gYXBwbGV0LCBlbWJlZCwgYW5kIG9iamVjdC4KKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CisKICAgICAvLyBUaGlzIHdpbGwgbG9hZCB0aGUgcGx1Z2luIGlmIG5lY2Vzc2Fy
eS4KICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigp
IGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jl
c3NFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaApp
bmRleCBiN2I0NWE1OWFhZDk0NTRiODEyZmEwM2QwMzg5ZWU1YThhMzIzMWFlLi5mN2M2NGE5Y2Ex
MTQzNDYwZTU5NzQzYTZlYmEzYzEyYjM2YTIxZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxQcm9ncmVzc0VsZW1lbnQuaApAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBkaWRFbGVtZW50U3RhdGVDaGFuZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFn
ZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNh
bkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIGJvb2wgaXNEZXRlcm1pbmF0ZSgpIGNvbnN0OwogCiAgICAgUHJvZ3Jlc3NW
YWx1ZUVsZW1lbnQqIG1fdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmgKaW5kZXggYTE1NWRmMGFiNzkwMTlhYjViYTE2MmNmODZkNWQ5MDUwNDJmYTUyZi4uNzZmYzFk
MDQ1YjhmZmFjYjI1MGJkOGZjN2JkNjlkMjhhMGM3NjEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuaApAQCAtMTI4LDYgKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9v
dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1YWwg
Ym9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZhODI2YzYwN2M3OGFmMGY2NWEwZmNjNGY4N2JkYjMyZDhjMzdjNjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5jcHAKQEAgLTAsMCArMSw3
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKKworI2luY2x1ZGUg
IkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworUmVmPEhUTUxT
bG90RWxlbWVudD4gSFRNTFNsb3RFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEhUTUxTbG90RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOworfQorCitIVE1MU2xvdEVsZW1l
bnQ6OkhUTUxTbG90RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCisgICAgOiBJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkKK3sK
KyAgICBBU1NFUlQoaGFzVGFnTmFtZShzbG90VGFnKSk7Cit9CisKK0luc2VydGlvblBvaW50OjpN
YXRjaFR5cGUgSFRNTFNsb3RFbGVtZW50OjptYXRjaFR5cGVGb3IoTm9kZSogbm9kZSkgY29uc3QK
K3sKKyAgICBhdXRvJiBzbG90TmFtZSA9IGdldEF0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgaWYg
KG5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+
KG5vZGUpLT5nZXRBdHRyaWJ1dGUoc2xvdEF0dHIpID09IHNsb3ROYW1lID8gQWx3YXlzTWF0Y2hl
cyA6IE5ldmVyTWF0Y2hlczsKKyAgICByZXR1cm4gIXNsb3ROYW1lID8gQWx3YXlzTWF0Y2hlcyA6
IE5ldmVyTWF0Y2hlczsKK30KKwordm9pZCBIVE1MU2xvdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCit7
CisgICAgaWYgKG5hbWUgPT0gbmFtZUF0dHIpIHsKKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHNo
YWRvd1Jvb3QgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgc2hhZG93Um9v
dC0+ZGlzdHJpYnV0b3IoKS5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd1Jvb3QtPmhvc3Qo
KSk7CisgICAgfSBlbHNlCisgICAgICAgIEluc2VydGlvblBvaW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7Cit9CisKKy8vIEZJWE1FOiBIVE1MU2xvdEVsZW1lbnQgc2hvdWxkIGhhdmUg
YSBmaXhlZCBsaXN0IG9mIGRpc3RyaWJ1dGVkIG5vZGVzIGluc3RlYWQuCitWZWN0b3I8UmVmUHRy
PE5vZGU+PiBIVE1MU2xvdEVsZW1lbnQ6OmdldERpc3RyaWJ1dGVkTm9kZXMoKSBjb25zdAorewor
ICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkK
KyAgICAgICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24oc2hhZG93Um9v
dCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+PiBkaXN0cmlidXRlZE5vZGVzOworCisgICAg
Zm9yIChOb2RlKiBjdXJyZW50ID0gZmlyc3REaXN0cmlidXRlZCgpOyBjdXJyZW50OyBjdXJyZW50
ID0gbmV4dERpc3RyaWJ1dGVkVG8oY3VycmVudCkpCisgICAgICAgIGRpc3RyaWJ1dGVkTm9kZXMu
YXBwZW5kKGN1cnJlbnQpOworCisgICAgcmV0dXJuIGRpc3RyaWJ1dGVkTm9kZXM7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiZTliMDNlNDVj
NTMxY2VmM2VlMTI0N2UzZTIyZjQwODkyOThjMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhUTUxTbG90RWxl
bWVudF9oCisjZGVmaW5lIEhUTUxTbG90RWxlbWVudF9oCisKKyNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCisjaW5jbHVkZSAiUmFuZ2UuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGSVhNRTogUmVuYW1lIEluc2VydGlvblBvaW50IHRv
IFNsb3RFbGVtZW50CitjbGFzcyBIVE1MU2xvdEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSW5zZXJ0
aW9uUG9pbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SFRNTFNsb3RFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisKKyAgICBWZWN0b3I8UmVmUHRy
PE5vZGU+PiBnZXREaXN0cmlidXRlZE5vZGVzKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgSFRN
TFNsb3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOworCisgICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZSBmaW5hbDsKKworICAgIHZpcnR1YWwgTWF0Y2hUeXBlIG1hdGNo
VHlwZUZvcihOb2RlKikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZDY2YmVi
ZTc2MzAyNTZhMDdkMzJlNmU5NDVmODZhMzgzNTEwNzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5pZGwKQEAgLTAsMCArMSwzMiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNpZGwtZGVmLUhUTUxTbG90RWxl
bWVudAoraW50ZXJmYWNlIEhUTUxTbG90RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKKworICAgIFtS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CisgICAgc2VxdWVuY2U8Tm9kZT4gZ2V0
RGlzdHJpYnV0ZWROb2RlcygpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3VtbWFyeUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmgKaW5kZXggNDgwOWNlNDQ1NWM0YzQ0NjdkZDBhOTdkM2E1MWI2MDU1OTZmNjI5NS4u
NzhhZDYwZjAyZDYzM2YwMjdhODIxZjY4ZDc0ZTFjYzIwMGI5ZDgzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCkBAIC00Miw2ICs0MiwxMCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikg
b3ZlcnJpZGU7CisKKyAgICAvLyBGSVhNRTogU2hhZG93IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxk
IGJlIGFibGUgdG8gY3JlYXRlIHNoYWRvdyByb290IG9uIHRoaXMgZWxlbWVudAorICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlsc0VsZW1l
bnQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbiBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCmluZGV4IDkxMzg3YjA1MzZhMWE5
ZGI1ZWE4Y2U2M2NhNDgxZDdjZjM3MTQ0ZTQuLjg2NDY1Mzg1OWMyNmM2N2E2NDIzYzA4NTJhMWM1
YjY3YTViMDg3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCkBAIC0xMTEsNiAr
MTExLDcgQEAgc2FtcCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBzY3JpcHQgY29uc3RydWN0
b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcgogc2VjdGlvbiBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50
CiBzZWxlY3QgY29uc3RydWN0b3JOZWVkc0Zvcm1FbGVtZW50CitzbG90CiBzbWFsbCBpbnRlcmZh
Y2VOYW1lPUhUTUxFbGVtZW50CiBzb3VyY2Ugd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUs
IGNvbmRpdGlvbmFsPVZJREVPCiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5oCmluZGV4IGMzNThjYzEwMzAxZjE4MjdiMWY5YzA4YWIxZGRlMzhkNjQyMGQ1N2Eu
LjYwOGEzZDEwN2FiY2YyMjljM2Q0ODMyM2RkYTdiNjgyYjJmNGFjZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC02OCw2ICs2OCw3IEBAIHByaXZhdGU6
CiAgICAgZW51bSBXcmFwTWV0aG9kIHsgTm9XcmFwLCBTb2Z0V3JhcCwgSGFyZFdyYXAgfTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIGhhbmRsZUJl
Zm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KikgY29uc3Q7CiAg
ICAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZVVzZXJJbnB1dFZhbHVlKGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIG1heExlbmd0aCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWFlY2IwNDQ2ZDY4MDFhMGQyNWJkYTExMjRlNmVi
M2JjZTUzNTkzZS4uOTY5MzdlYTg1MjgwN2M4ZTJiZmE5NWM0ZTJlNjhiM2E3ZjMwZWNlOCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA5LTEwICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgc2hhZG93IERPTSBBUEkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODY5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9t
L0VsZW1lbnQtaW50ZXJmYWNlLWF0dGFjaFNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3cuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLXNo
YWRvd1Jvb3QtYXR0cmlidXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
aGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLXNoYWRvd1Jvb3QtYXR0cmlidXRlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9IVE1MU2xvdEVsZW1lbnQtaW50ZXJmYWNl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL0hUTUxTbG90
RWxlbWVudC1pbnRlcmZhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9t
L05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS1pbnRlcmZhY2UtYXNzaWduZWRTbG90LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL05vbkRvY3VtZW50VHlwZUNo
aWxkTm9kZS1pbnRlcmZhY2UtYXNzaWduZWRTbG90Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWRpc3RyaWJ1
dGlvbi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3Nz
LXNjb3Bpbmctc2hhZG93LWRpc3RyaWJ1dGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXJlbmRlcmluZy1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXJlbmRl
cmluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmct
c2hhZG93LXdpdGgtcnVsZXMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9z
aGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy13aXRoLXJ1bGVzLmh0bWw6IEFkZGVkLgorCiAy
MDE1LTA5LTEwICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIG1pbi13aWR0aC9oZWlnaHQgc2hvdWxkIGRlZmF1bHQgdG8gYXV0byBmb3IgZmxleGJv
eCBpdGVtcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQt
aW50ZXJmYWNlLWF0dGFjaFNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44MDAwZDMwZjRjODM5ZjllYTcwNTQ3MzIyMjE5MDI1OWY5NWJjNTY1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNl
LWF0dGFjaFNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1BBU1MgQ2hlY2sg
dGhlIGV4aXN0ZW5jZSBvZiBFbGVtZW50LmF0dGFjaFNoYWRvdyAKK1BBU1MgTm9kZXMgb3RoZXIg
dGhhbiBFbGVtZW50IHNob3VsZCBub3QgaGF2ZSBhdHRhY2hTaGFkb3cgCitQQVNTIEVsZW1lbnQu
YXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBUeXBlRXJyb3IgaWYgbW9kZSBpcyBub3QgIm9wZW4i
IG9yICJjbG9zZWQiIAorUEFTUyBFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IGNyZWF0ZSBhbiBp
bnN0YW5jZSBvZiBTaGFkb3dSb290IAorUEFTUyBFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRo
cm93IGEgSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlIGNvbnRleHQgb2JqZWN0IGFscmVhZHkgaG9z
dHMgYSBzaGFkb3cgdHJlZSAKK1BBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBh
IE5vdFN1cHBvcnRlZEVycm9yIGZvciBidXR0b24sIGRldGFpbHMsIGlucHV0LCBtYXJxdWVlLCBt
ZXRlciwgcHJvZ3Jlc3MsIHNlbGVjdCwgdGV4dGFyZWEsIGFuZCBrZXlnZW4gZWxlbWVudHMgCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFj
ZS1hdHRhY2hTaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50
LWludGVyZmFjZS1hdHRhY2hTaGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTgwOTk4NTkyOGE3MzIx
ZDQ2Mzc2MDUwNzVmNTZiODBiZGYyNzNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLWF0dGFjaFNoYWRvdy5odG1sCkBAIC0w
LDAgKzEsOTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TaGFk
b3cgRE9NOiBBdHRhY2hpbmcgYSBTaGFkb3dSb290PC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhv
ciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgor
PG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJFbGVtZW50LnByb3RvdHlwZS5hdHRhY2hTaGFk
b3cgc2hvdWxkIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBTaGFkb3dSb290Ij4KKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmNvbXBvbmVudHMvc3BlYy9zaGFk
b3cvI3dpZGwtRWxlbWVudC1hdHRhY2hTaGFkb3ctU2hhZG93Um9vdC1TaGFkb3dSb290SW5pdC1z
aGFkb3dSb290SW5pdERpY3QiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRf
dHJ1ZSgnYXR0YWNoU2hhZG93JyBpbiBFbGVtZW50LnByb3RvdHlwZSwgJ0VsZW1lbnQucHJvdG90
eXBlLmF0dGFjaFNoYWRvdyBtdXN0IGV4aXN0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KSwgJ2Z1bmN0aW9uJywg
J0FuIGluc3RhbmNlIG9mIGRpdiBtdXN0IGhhdmUgYXR0YWNoU2hhZG93IHdoaWNoIGlzIGEgZnVu
Y3Rpb24nKTsKK30sICdDaGVjayB0aGUgZXhpc3RlbmNlIG9mIEVsZW1lbnQuYXR0YWNoU2hhZG93
Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF9mYWxzZSgnYXR0YWNoU2hhZG93
JyBpbiBOb2RlLnByb3RvdHlwZSwgJ05vZGUucHJvdG90eXBlLmF0dGFjaFNoYWRvdyBtdXN0IG5v
dCBleGlzdCcpOworICAgIGFzc2VydF9mYWxzZSgnYXR0YWNoU2hhZG93JyBpbiBDaGFyYWN0ZXJE
YXRhLnByb3RvdHlwZSwgJ0NoYXJhY3RlckRhdGEucHJvdG90eXBlLmF0dGFjaFNoYWRvdyBtdXN0
IG5vdCBleGlzdCcpOworICAgIGFzc2VydF9mYWxzZSgnYXR0YWNoU2hhZG93JyBpbiBDb21tZW50
LnByb3RvdHlwZSwgJ0NvbW1lbnQucHJvdG90eXBlLmF0dGFjaFNoYWRvdyBtdXN0IG5vdCBleGlz
dCcpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mKGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycp
LmF0dGFjaFNoYWRvdyksICd1bmRlZmluZWQnLCAnQW4gaW5zdGFuY2Ugb2YgY29tbWVudCBtdXN0
IG5vdCBoYXZlIGF0dGFjaFNoYWRvdycpOworICAgIGFzc2VydF9mYWxzZSgnYXR0YWNoU2hhZG93
JyBpbiBEb2N1bWVudC5wcm90b3R5cGUsICdEb2N1bWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93
IG11c3Qgbm90IGV4aXN0Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YoZG9jdW1lbnQuYXR0
YWNoU2hhZG93KSwgJ3VuZGVmaW5lZCcsICdBbiBpbnN0YW5jZSBvZiBkb2N1bWVudCBtdXN0IG5v
dCBoYXZlIGF0dGFjaFNoYWRvdyB3aGljaCBpcyBhIGZ1bmN0aW9uJyk7CisgICAgYXNzZXJ0X2Zh
bHNlKCdhdHRhY2hTaGFkb3cnIGluIERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLCAnRG9jdW1l
bnRGcmFnbWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93IG11c3Qgbm90IGV4aXN0Jyk7CisgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YoKG5ldyBET01QYXJzZXIoKSkucGFyc2VGcm9tU3RyaW5nKCcn
LCAndGV4dC9odG1sJykuYXR0YWNoU2hhZG93KSwgJ3VuZGVmaW5lZCcsICdBbiBpbnN0YW5jZSBv
ZiBkb2N1bWVudCBtdXN0IG5vdCBoYXZlIGF0dGFjaFNoYWRvdyB3aGljaCBpcyBhIGZ1bmN0aW9u
Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKCdhdHRhY2hTaGFkb3cnIGluIFRleHQucHJvdG90eXBlLCAn
VGV4dC5wcm90b3R5cGUuYXR0YWNoU2hhZG93IG11c3Qgbm90IGV4aXN0Jyk7CisgICAgYXNzZXJ0
X2VxdWFscyh0eXBlb2YoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLmF0dGFjaFNoYWRvdyks
ICd1bmRlZmluZWQnLCAnQW4gaW5zdGFuY2Ugb2YgdGV4dCBub2RlIG11c3Qgbm90IGhhdmUgYXR0
YWNoU2hhZG93Jyk7Cit9LCAnTm9kZXMgb3RoZXIgdGhhbiBFbGVtZW50IHNob3VsZCBub3QgaGF2
ZSBhdHRhY2hTaGFkb3cnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3Rocm93
cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHt9KQorICAgIH0sICdhdHRhY2hTaGFk
b3cgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciB3aGVuIG1vZGUgaXMgb21pdHRlZCcpOworCisgICAg
YXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiB0cnVl
fSkKKyAgICB9LCAnYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBUeXBlRXJyb3Igd2hlbiBtb2Rl
IGlzIGEgYm9vbGVhbicpOworCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnVHlwZUVycm9y
J30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyku
YXR0YWNoU2hhZG93KHttb2RlOiAxfSkKKyAgICB9LCAnYXR0YWNoU2hhZG93IG11c3QgdGhyb3cg
YSBUeXBlRXJyb3Igd2hlbiBtb2RlIGlzIDEnKTsKK30sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBt
dXN0IHRocm93IGEgVHlwZUVycm9yIGlmIG1vZGUgaXMgbm90ICJvcGVuIiBvciAiY2xvc2VkIicp
OworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKS5hdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIGluc3RhbmNlb2YgU2hh
ZG93Um9vdCwKKyAgICAgICAgJ2F0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSkgc2hvdWxkIGNy
ZWF0ZSBhbiBpbnN0YW5jZSBvZiBTaGFkb3dSb290Jyk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAiY2xvc2VkIn0pIGlu
c3RhbmNlb2YgU2hhZG93Um9vdCwKKyAgICAgICAgJ2F0dGFjaFNoYWRvdyh7bW9kZTogImNsb3Nl
ZCJ9KSBzaG91bGQgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFNoYWRvd1Jvb3QnKTsKK30sICdFbGVt
ZW50LmF0dGFjaFNoYWRvdyBtdXN0IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBTaGFkb3dSb290Jyk7
CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFs
aWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuYXR0YWNoU2hhZG93KHttb2RlOiAi
b3BlbiJ9KTsKKyAgICAgICAgZGl2LmF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSk7CisgICAg
fSwgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9KSB0d2ljZSBvbiB0aGUgc2Ft
ZSBlbGVtZW50IG11c3QgdGhyb3cnKTsKKworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0lu
dmFsaWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuYXR0YWNoU2hhZG93KHttb2Rl
OiAiY2xvc2VkIn0pOworICAgICAgICBkaXYuYXR0YWNoU2hhZG93KHttb2RlOiAiY2xvc2VkIn0p
OworICAgIH0sICdDYWxsaW5nIGF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KSB0d2ljZSBv
biB0aGUgc2FtZSBlbGVtZW50IG11c3QgdGhyb3cnKTsKKworICAgIGFzc2VydF90aHJvd3Moeydu
YW1lJzogJ0ludmFsaWRTdGF0ZUVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuYXR0YWNoU2hh
ZG93KHttb2RlOiAib3BlbiJ9KTsKKyAgICAgICAgZGl2LmF0dGFjaFNoYWRvdyh7bW9kZTogImNs
b3NlZCJ9KTsKKyAgICB9LCAnQ2FsbGluZyBhdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkg
YWZ0ZXIgYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9KSBvbiB0aGUgc2FtZSBlbGVtZW50IG11
c3QgdGhyb3cnKTsKKworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ0ludmFsaWRTdGF0ZUVy
cm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuYXR0YWNoU2hhZG93KHttb2RlOiAiY2xvc2VkIn0p
OworICAgICAgICBkaXYuYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9KTsKKyAgICB9LCAnQ2Fs
bGluZyBhdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIGFmdGVyIGF0dGFjaFNoYWRvdyh7bW9k
ZTogImNsb3NlZCJ9KSBvbiB0aGUgc2FtZSBlbGVtZW50IG11c3QgdGhyb3cnKTsKK30sICdFbGVt
ZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgSW52YWxpZFN0YXRlRXJyb3IgaWYgdGhlIGNv
bnRleHQgb2JqZWN0IGFscmVhZHkgaG9zdHMgYSBzaGFkb3cgdHJlZScpOworCit0ZXN0KGZ1bmN0
aW9uICgpIHsKKyAgICBmb3IgKHZhciBlbGVtZW50TmFtZSBvZiBbJ2J1dHRvbicsICdkZXRhaWxz
JywgJ2lucHV0JywgJ21hcnF1ZWUnLCAnbWV0ZXInLCAncHJvZ3Jlc3MnLCAnc2VsZWN0JywgJ3Rl
eHRhcmVhJywgJ2tleWdlbiddKSB7CisgICAgICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ05v
dFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoZWxlbWVudE5hbWUpLmF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSk7Cisg
ICAgICAgIH0sICdDYWxsaW5nIGF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSkgb24gJyArIGVs
ZW1lbnROYW1lICsgJyBlbGVtZW50IG11c3QgdGhyb3cnKTsKKworICAgICAgICBhc3NlcnRfdGhy
b3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKS5hdHRhY2hTaGFkb3coe21v
ZGU6ICJjbG9zZWQifSk7CisgICAgICAgIH0sICdDYWxsaW5nIGF0dGFjaFNoYWRvdyh7bW9kZTog
ImNsb3NlZCJ9KSBvbiAnICsgZWxlbWVudE5hbWUgKyAnIGVsZW1lbnQgbXVzdCB0aHJvdycpOwor
ICAgIH0KK30sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVk
RXJyb3IgZm9yIGJ1dHRvbiwgZGV0YWlscywgaW5wdXQsIG1hcnF1ZWUsIG1ldGVyLCBwcm9ncmVz
cywgc2VsZWN0LCB0ZXh0YXJlYSwgYW5kIGtleWdlbiBlbGVtZW50cycpOworCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRv
bS9FbGVtZW50LWludGVyZmFjZS1zaGFkb3dSb290LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2Utc2hhZG93Um9vdC1h
dHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5OGNmYzBlYzYyYzk5MmY1N2ZiYzA1
NDYxNDhiNTBkMThlZTA0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2Utc2hhZG93Um9vdC1hdHRyaWJ1dGUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIHNoYWRvd1Jvb3QgbXVzdCBiZSBkZWZpbmVkIG9u
IEVsZW1lbnQgcHJvdG90eXBlIAorUEFTUyBzaGFkb3dSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVy
biB0aGUgb3BlbiBzaGFkb3cgcm9vdCBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQgCitQQVNT
IHNoYWRvd1Jvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIG51bGwgaWYgdGhlIHNoYWRvdyByb290
IGF0dGFjaGVkIHRvIHRoZSBlbGVtZW50IGlzIGNsb3NlZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLXNoYWRvd1Jvb3QtYXR0cmli
dXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2Ut
c2hhZG93Um9vdC1hdHRyaWJ1dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTlkMmRmZTIxOWQ2NjhhNTcz
NjQwYTZiY2M3NmM1NWM1Y2IxNmRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLXNoYWRvd1Jvb3QtYXR0cmlidXRlLmh0bWwK
QEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PlNoYWRvdyBET006IEVsZW1lbnQgaW50ZXJmYWNlIHNoYWRvd1Jvb3QgYXR0cmlidXRlPC90aXRs
ZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRv
OnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJzaGFkb3dS
b290IGF0dHJpYnV0ZSBvbiBFbGVtZW50IGludGVyZmFjZSBtdXN0IHJldHVybiB0aGUgYXNzb2Np
YXRlZCBvcGVuIHNoYWRvdyB0cmVlIGlmIHRoZXJlIGlzIG9uZSI+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyN0
aGUtc2hhZG93cm9vdC1pbnRlcmZhY2UiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJl
Zj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBh
c3NlcnRfdHJ1ZSgnc2hhZG93Um9vdCcgaW4gRWxlbWVudC5wcm90b3R5cGUsICdzaGFkb3dSb290
IG11c3QgYmUgZGVmaW5lZCBvbiBFbGVtZW50IHByb3RvdHlwZScpOworICAgIGFzc2VydF90cnVl
KCdzaGFkb3dSb290JyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgJ3NoYWRvd1Jv
b3QgbXVzdCBiZSBkZWZpbmVkIG9uIGFuIGluc3RhbmNlIG9mIGRpdiBlbGVtZW50Jyk7CisgICAg
YXNzZXJ0X2ZhbHNlKCdzaGFkb3dSb290JyBpbiBOb2RlLnByb3RvdHlwZSwgJ3NoYWRvd1Jvb3Qg
bXVzdCBub3QgYmUgZGVmaW5lZCBvbiBOb2RlIHByb3RvdHlwZScpOworICAgIGFzc2VydF9mYWxz
ZSgnc2hhZG93Um9vdCcgaW4gVGV4dC5wcm90b3R5cGUsICdzaGFkb3dSb290IG11c3Qgbm90IGJl
IGRlZmluZWQgb24gVGV4dCBwcm90b3R5cGUnKTsKKyAgICBhc3NlcnRfZmFsc2UoJ3NoYWRvd1Jv
b3QnIGluIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSwgJ3NoYWRvd1Jvb3QgbXVzdCBub3Qg
YmUgZGVmaW5lZCBvbiBhbiBpbnN0YW5jZSBvZiBUZXh0IG5vZGUnKTsKKyAgICBhc3NlcnRfZmFs
c2UoJ3NoYWRvd1Jvb3QnIGluIENvbW1lbnQucHJvdG90eXBlLCAnc2hhZG93Um9vdCBtdXN0IG5v
dCBiZSBkZWZpbmVkIG9uIENvbW1lbnQgcHJvdG90eXBlJyk7CisgICAgYXNzZXJ0X2ZhbHNlKCdz
aGFkb3dSb290JyBpbiBkb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKSwgJ3NoYWRvd1Jvb3QgbXVz
dCBub3QgYmUgZGVmaW5lZCBvbiBhbiBpbnN0YW5jZSBvZiBDb21tZW50IG5vZGUnKTsKKyAgICBh
c3NlcnRfZmFsc2UoJ3NoYWRvd1Jvb3QnIGluIERvY3VtZW50LnByb3RvdHlwZSwgJ3NoYWRvd1Jv
b3QgbXVzdCBub3QgYmUgZGVmaW5lZCBvbiBEb2N1bWVudCBwcm90b3R5cGUnKTsKKyAgICBhc3Nl
cnRfZmFsc2UoJ3NoYWRvd1Jvb3QnIGluIGRvY3VtZW50LCAnc2hhZG93Um9vdCBtdXN0IG5vdCBi
ZSBkZWZpbmVkIG9uIGFuIGluc3RhbmNlIG9mIERvY3VtZW50Jyk7CisgICAgYXNzZXJ0X2ZhbHNl
KCdzaGFkb3dSb290JyBpbiBEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSwgJ3NoYWRvd1Jvb3Qg
bXVzdCBub3QgYmUgZGVmaW5lZCBvbiBEb2N1bWVudEZyYWdtZW50IHByb3RvdHlwZScpOworICAg
IGFzc2VydF9mYWxzZSgnc2hhZG93Um9vdCcgaW4gKG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0
cmluZygnJywgJ3RleHQvaHRtbCcpLCAnc2hhZG93Um9vdCBtdXN0IG5vdCBiZSBkZWZpbmVkIG9u
IGFuIGluc3RhbmNlIG9mIERvY3VtZW50RnJhZ21lbnQgbm9kZScpOworfSwgJ3NoYWRvd1Jvb3Qg
bXVzdCBiZSBkZWZpbmVkIG9uIEVsZW1lbnQgcHJvdG90eXBlJyk7CisKK3Rlc3QoZnVuY3Rpb24g
KCkgeworICAgIHZhciBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
YXNzZXJ0X2VxdWFscyhob3N0LnNoYWRvd1Jvb3QsIG51bGwsICdzaGFkb3dSb290IG11c3QgcmV0
dXJuIG51bGwgd2hlbiB0aGUgaG9zdCBkb2VzIG5vdCBoYXZlIGEgc2hhZG93IHRyZWUgYXR0YWNo
ZWQgdG8gaXQnKTsKKworICAgIHZhciBvcGVuU2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93
KHttb2RlOiAnb3Blbid9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGhvc3Quc2hhZG93Um9vdCwgb3Bl
blNoYWRvd1Jvb3QsICdzaGFkb3dSb290IG11c3QgcmV0dXJuIHRoZSBvcGVuIHNoYWRvdyByb290
IGF0dGFjaFNoYWRvdyBhdHRhY2hlZCcpOworfSwgJ3NoYWRvd1Jvb3QgYXR0cmlidXRlIG11c3Qg
cmV0dXJuIHRoZSBvcGVuIHNoYWRvdyByb290IGFzc29jaWF0ZWQgd2l0aCB0aGUgZWxlbWVudCcp
OworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOwor
ICAgIGFzc2VydF9lcXVhbHMoaG9zdC5zaGFkb3dSb290LCBudWxsKTsKK30sICdzaGFkb3dSb290
IGF0dHJpYnV0ZSBtdXN0IHJldHVybiBudWxsIGlmIHRoZSBzaGFkb3cgcm9vdCBhdHRhY2hlZCB0
byB0aGUgZWxlbWVudCBpcyBjbG9zZWQnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vSFRNTFNsb3RFbGVtZW50
LWludGVyZmFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vSFRN
TFNsb3RFbGVtZW50LWludGVyZmFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ1OTViYTE3
ZGI0NDIzODA3NDJmOGM1Y2YyY2JlODIwOWVkYTBmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9IVE1MU2xvdEVsZW1lbnQtaW50ZXJmYWNlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBIVE1MU2xvdEVsZW1lbnQgbXVzdCBiZSBkZWZp
bmVkIG9uIHdpbmRvdyAKK1BBU1MgIm5hbWUiIGF0dHJpYnV0ZSBvbiBIVE1MU2xvdEVsZW1lbnQg
bXVzdCByZWZsZWN0ICJuYW1lIiBhdHRyaWJ1dGUgCitQQVNTIGdldERpc3RyaWJ1dGVkTm9kZXMg
bWV0aG9kIG9uIEhUTUxTbG90RWxlbWVudCBtdXN0IHJldHVybiB0aGUgbGlzdCBvZiBkaXN0cmli
dXRlZCBub2RlcyAKK1BBU1MgZ2V0RGlzdHJpYnV0ZWROb2RlcyBtdXN0IHJldHVybiB0aGUgcmVz
dWx0IG9mIHRoZSBnZXQgZGlzdHJpYnV0ZWQgbm9kZXMgYWxnb3JpdGhtLiAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0hUTUxTbG90RWxlbWVudC1pbnRlcmZhY2Uu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9IVE1MU2xvdEVsZW1lbnQtaW50ZXJm
YWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJhNmZlNTNjMGYyOWQzNDMyOTE1NWEyOGJiOTc1MjI1ZmNl
MWQ3MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9IVE1M
U2xvdEVsZW1lbnQtaW50ZXJmYWNlLmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlNoYWRvdyBET006IEhUTUxTbG90RWxlbWVudCBp
bnRlcmZhY2U8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdh
IiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9IkhUTUxTbG90RWxlbWVudCBtdXN0IGV4aXN0IG9uIHdpbmRvdyB3aXRoIG5hbWUgYW5k
IGdldERpc3RyaWJ1dGVkTm9kZXMoKSI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
dzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyN0aGUtc2xvdC1lbGVtZW50
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNj
cmlwdD4KKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoJ0hUTUxTbG90RWxl
bWVudCcgaW4gd2luZG93LCAnSFRNTFNsb3RFbGVtZW50IG11c3QgYmUgZGVmaW5lZCBvbiB3aW5k
b3cnKTsKKyAgICBhc3NlcnRfZXF1YWxzKEhUTUxTbG90RWxlbWVudC5wcm90b3R5cGUuX19wcm90
b19fLCBIVE1MRWxlbWVudC5wcm90b3R5cGUsICdIVE1MU2xvdEVsZW1lbnQgc2hvdWxkIGluaGVy
aXQgZnJvbSBIVE1MRWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3Nsb3QnKSBpbnN0YW5jZW9mIEhUTUxTbG90RWxlbWVudCwgJ3Nsb3QgZWxlbWVudCBz
aG91bGQgYmUgYW4gaW5zdGFuY2Ugb2YgSFRNTFNsb3RFbGVtZW50Jyk7CisgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQs
ICdzbG90IGVsZW1lbnQgc2hvdWxkIGJlIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7Cit9
LCAnSFRNTFNsb3RFbGVtZW50IG11c3QgYmUgZGVmaW5lZCBvbiB3aW5kb3cnKTsKKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoJ25hbWUnIGluIEhUTUxTbG90RWxlbWVudC5w
cm90b3R5cGUsICcibmFtZSIgYXR0cmlidXRlIG11c3QgYmUgZGVmaW5lZCBvbiBIVE1MU2xvdEVs
ZW1lbnQucHJvdG90eXBlJyk7CisKKyAgICB2YXIgc2xvdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzbG90Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhzbG90RWxlbWVudC5uYW1lLCAn
JywgJyJuYW1lIiBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyB3aGVuICJu
YW1lIiBjb250ZW50IGF0dHJpYnV0ZSBpcyBub3Qgc2V0Jyk7CisKKyAgICBzbG90RWxlbWVudC5z
ZXRBdHRyaWJ1dGUoJ25hbWUnLCAnZm9vJyk7CisgICAgYXNzZXJ0X2VxdWFscyhzbG90RWxlbWVu
dC5uYW1lLCAnZm9vJywgJyJuYW1lIiBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHZhbHVlIG9m
IHRoZSAibmFtZSIgY29udGVudCBhdHRyaWJ1dGUnKTsKKworICAgIHNsb3RFbGVtZW50Lm5hbWUg
PSAnYmFyJzsKKyAgICBhc3NlcnRfZXF1YWxzKHNsb3RFbGVtZW50Lm5hbWUsICdiYXInLCAnIm5h
bWUiIGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgYXNzaWduZWQgdmFsdWUnKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHNsb3RFbGVtZW50LmdldEF0dHJpYnV0ZSgnbmFtZScpLCAnYmFyJywgJyJuYW1l
IiBhdHRyaWJ1dGUgbXVzdCB1cGRhdGUgdGhlICJuYW1lIiBjb250ZW50IGF0dHJpYnV0ZScpOwor
fSwgJyJuYW1lIiBhdHRyaWJ1dGUgb24gSFRNTFNsb3RFbGVtZW50IG11c3QgcmVmbGVjdCAibmFt
ZSIgYXR0cmlidXRlJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90cnVlKCdn
ZXREaXN0cmlidXRlZE5vZGVzJyBpbiBIVE1MU2xvdEVsZW1lbnQucHJvdG90eXBlLCAnImdldERp
c3RyaWJ1dGVkTm9kZXMiIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgb24gSFRNTFNsb3RFbGVtZW50
LnByb3RvdHlwZScpOworCisgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7
CisKKyAgICB2YXIgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAn
b3Blbid9KTsKKyAgICB2YXIgc2xvdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
bG90Jyk7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzbG90RWxlbWVudCk7CisKKyAgICBh
c3NlcnRfYXJyYXlfZXF1YWxzKHNsb3RFbGVtZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKSwgW10s
ICdnZXREaXN0cmlidXRlZE5vZGVzIG11c3QgcmV0dXJuIGFuIGVtcHR5IGFycmF5IHdoZW4gdGhl
cmUgYXJlIG5vIGRpc3RyaWJ1dGVkIG5vZGVzJyk7CisKKyAgICBzaGFkb3dIb3N0LmFwcGVuZENo
aWxkKGNoaWxkKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHNsb3RFbGVtZW50LmdldERpc3Ry
aWJ1dGVkTm9kZXMoKSwgW2NoaWxkXSwgJ2dldERpc3RyaWJ1dGVkTm9kZXMgbXVzdCByZXR1cm4g
dGhlIGRpc3RyaWJ1dGVkIG5vZGVzJyk7CisKK30sICdnZXREaXN0cmlidXRlZE5vZGVzIG1ldGhv
ZCBvbiBIVE1MU2xvdEVsZW1lbnQgbXVzdCByZXR1cm4gdGhlIGxpc3Qgb2YgZGlzdHJpYnV0ZWQg
bm9kZXMnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3AnKTsKKyAgICB2YXIgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKTsKKyAg
ICBzaGFkb3dIb3N0LmFwcGVuZENoaWxkKHApOworICAgIHNoYWRvd0hvc3QuYXBwZW5kQ2hpbGQo
Yik7CisKKyAgICB2YXIgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2Rl
OiAnb3Blbid9KTsKKyAgICB2YXIgc2xvdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzbG90Jyk7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChzbG90RWxlbWVudCk7CisKKyAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKHNsb3RFbGVtZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKSwg
W3AsIGJdLCAnZ2V0RGlzdHJpYnV0ZWROb2RlcyBtdXN0IHJldHVybiB0aGUgZGlzdHJpYnV0ZWQg
bm9kZXMnKTsKKworICAgIHNsb3RFbGVtZW50Lm5hbWUgPSAnZm9vJzsKKyAgICBhc3NlcnRfYXJy
YXlfZXF1YWxzKHNsb3RFbGVtZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKSwgW10sICdnZXREaXN0
cmlidXRlZE5vZGVzIG11c3QgYmUgZW1wdHkgd2hlbiB0aGVyZSBhcmUgbm8gbWF0Y2hpbmcgZWxl
bWVudHMgZm9yIHRoZSBzbG90IG5hbWUnKTsKKworICAgIGIuc2xvdCA9ICdmb28nOworICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoc2xvdEVsZW1lbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLCBbYl0s
ICdnZXREaXN0cmlidXRlZE5vZGVzIG11c3QgcmV0dXJuIHRoZSBub2RlcyB3aXRoIHRoZSBtYXRj
aGluZyBzbG90IG5hbWUnKTsKKworICAgIHAuc2xvdCA9ICdmb28nOworICAgIGFzc2VydF9hcnJh
eV9lcXVhbHMoc2xvdEVsZW1lbnQuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLCBbcCwgYl0sICdnZXRE
aXN0cmlidXRlZE5vZGVzIG11c3QgcmV0dXJuIHRoZSBub2RlcyB3aXRoIHRoZSBtYXRjaGluZyBz
bG90IG5hbWUgaW4gdGhlIHRyZWUgb3JkZXInKTsKKworICAgIHNsb3RFbGVtZW50Lm5hbWUgPSBu
dWxsOworICAgIGFzc2VydF9hcnJheV9lcXVhbHMoc2xvdEVsZW1lbnQuZ2V0RGlzdHJpYnV0ZWRO
b2RlcygpLCBbXSwgJ2dldERpc3RyaWJ1dGVkTm9kZXMgbXVzdCBiZSBlbXB0eSBmb3IgYSBkZWZh
dWx0IHNsb3Qgd2hlbiBhbGwgZWxlbWVudHMgaGF2ZSAic2xvdCIgYXR0cmlidXRlcyBzcGVjaWZp
ZWQnKTsKKworfSwgJ2dldERpc3RyaWJ1dGVkTm9kZXMgbXVzdCByZXR1cm4gdGhlIHJlc3VsdCBv
ZiB0aGUgZ2V0IGRpc3RyaWJ1dGVkIG5vZGVzIGFsZ29yaXRobS4nKTsKKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
Tm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLWludGVyZmFjZS1hc3NpZ25lZFNsb3QtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9k
ZS1pbnRlcmZhY2UtYXNzaWduZWRTbG90LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGQ3NDc3
OWFlZDBlYTc5NmEwMTZkMjg4NjQ3MzMzNjE4NTI0MjUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS1pbnRlcmZh
Y2UtYXNzaWduZWRTbG90LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyBhc3Np
Z25lZFNsb3QgYXR0cmlidXRlIG11c3QgYmUgZGVmaW5lZCBvbiBOb25Eb2N1bWVudFR5cGVDaGls
ZE5vZGUgaW50ZXJmYWNlIAorUEFTUyBhc3NpZ25lZFNsb3QgbXVzdCByZXR1cm4gbnVsbCB3aGVu
IHRoZSBub2RlIGRvZXMgbm90IGhhdmUgYW4gYXNzaWduZWQgbm9kZSAKK1BBU1MgYXNzaWduZWRT
bG90IG11c3QgcmV0dXJuIHRoZSBhc3NpZ25lZCBzbG90IAorUEFTUyBhc3NpZ25lZFNsb3QgbXVz
dCByZXR1cm4gbnVsbCB3aGVuIHRoZSBhc3NpZ25lZCBzbG90IGVsZW1lbnQgaXMgaW5zaWRlIGEg
Y2xvc2VkIHNoYWRvdyB0cmVlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLWludGVyZmFjZS1hc3NpZ25lZFNsb3QuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUt
aW50ZXJmYWNlLWFzc2lnbmVkU2xvdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiOGE2ZDhhNTQxZDk2ZGMy
NTMwZTNhYTJmZDAyZDkyNWIyMmYwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLWludGVyZmFjZS1hc3NpZ25l
ZFNsb3QuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlNoYWRvdyBET006IEV4dGVuc2lvbnMgdG8gTm9uRG9jdW1lbnRUeXBlQ2hp
bGROb2RlIGludGVyZmFjZTwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9z
dWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFz
c2VydCIgY29udGVudD0iTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlIGludGVyZmFjZSBtdXN0IGhh
dmUgYXNzaWduZWRTbG90IGF0dHJpYnV0ZSI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyN0aGUtc2xvdC1lbGVt
ZW50Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2Pgor
PHNjcmlwdD4KKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoJ2Fzc2lnbmVk
U2xvdCcgaW4gRWxlbWVudC5wcm90b3R5cGUsICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBkZWZpbmVk
IG9uIEVsZW1lbnQucHJvdG90eXBlJyk7CisgICAgYXNzZXJ0X3RydWUoJ2Fzc2lnbmVkU2xvdCcg
aW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBk
ZWZpbmVkIG9uIGEgZGl2IGVsZW1lbnQnKTsKKworICAgIGFzc2VydF90cnVlKCdhc3NpZ25lZFNs
b3QnIGluIENoYXJhY3RlckRhdGEucHJvdG90eXBlLCAnYXNzaWduZWRTbG90IG11c3QgYmUgZGVm
aW5lZCBvbiBDaGFyYWN0ZXJEYXRhLnByb3RvdHlwZScpOworICAgIGFzc2VydF90cnVlKCdhc3Np
Z25lZFNsb3QnIGluIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSwgJ2Fzc2lnbmVkU2xvdCBt
dXN0IGJlIGRlZmluZWQgb24gYSB0ZXh0IG5vZGUnKTsKKyAgICBhc3NlcnRfdHJ1ZSgnYXNzaWdu
ZWRTbG90JyBpbiBkb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKSwgJ2Fzc2lnbmVkU2xvdCBtdXN0
IGJlIGRlZmluZWQgb24gYSBjb21tZW50IG5vZGUnKTsKKworfSwgJ2Fzc2lnbmVkU2xvdCBhdHRy
aWJ1dGUgbXVzdCBiZSBkZWZpbmVkIG9uIE5vbkRvY3VtZW50VHlwZUNoaWxkTm9kZSBpbnRlcmZh
Y2UnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKS5hc3NpZ25lZFNsb3QsIG51bGwsICdhc3NpZ25lZFNsb3QgbXVz
dCBiZSBudWxsIHdoZW4gdGhlIGVsZW1lbnQgaXMgbm90IGluIGFueSB0cmVlJyk7CisKKyAgICB2
YXIgc2hhZG93SG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBz
aGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworCisg
ICAgdmFyIGNoaWxkRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKTsKKyAgICBz
aGFkb3dIb3N0LmFwcGVuZENoaWxkKGNoaWxkRWxlbWVudCk7CisgICAgYXNzZXJ0X2VxdWFscyhj
aGlsZEVsZW1lbnQuYXNzaWduZWRTbG90LCBudWxsLCAnYXNzaWduZWRTbG90IG9uIGFuIGVsZW1l
bnQgbXVzdCBiZSBudWxsIHdoZW4gYSBub2RlIGlzIG5vdCBhc3NpZ25lZCBvZiBhbnkgc2xvdCcp
OworCisgICAgdmFyIGNoaWxkVGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7
CisgICAgc2hhZG93SG9zdC5hcHBlbmRDaGlsZChjaGlsZFRleHROb2RlKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGNoaWxkVGV4dE5vZGUuYXNzaWduZWRTbG90LCBudWxsLCAnYXNzaWduZWRTbG90IG9u
IGEgdGV4dCBub2RlIG11c3QgYmUgbnVsbCB3aGVuIGEgbm9kZSBpcyBub3QgYXNzaWduZWQgb2Yg
YW55IHNsb3QnKTsKKworICAgIHZhciBjb21tZW50Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUNvbW1l
bnQoJycpOworICAgIHNoYWRvd0hvc3QuYXBwZW5kQ2hpbGQoY29tbWVudE5vZGUpOworICAgIGFz
c2VydF9lcXVhbHMoY29tbWVudE5vZGUuYXNzaWduZWRTbG90LCBudWxsLCAnYXNzaWduZWRTbG90
IG9uIGEgY29tbWVudCBub2RlIG11c3QgYmUgbnVsbCB3aGVuIGEgbm9kZSBpcyBub3QgYXNzaWdu
ZWQgb2YgYW55IHNsb3QnKTsKKworICAgIHZhciBzbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2xvdCcpOworICAgIHNsb3QubmFtZSA9ICdmb28nOworICAgIHNoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQoc2xvdCk7CisgICAgYXNzZXJ0X2VxdWFscyhjaGlsZEVsZW1lbnQuYXNzaWduZWRTbG90
LCBudWxsLCAnYXNzaWduZWRTbG90IG9uIGFuIGVsZW1lbnQgbXVzdCBiZSBudWxsIHdoZW4gYSBu
b2RlIGRvZXMgbm90IG1hdGNoIGFueSBzbG90Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjaGlsZFRl
eHROb2RlLmFzc2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBvbiBhIHRleHQgbm9kZSBt
dXN0IGJlIG51bGwgd2hlbiBhIG5vZGUgZG9lcyBub3QgbWF0Y2ggYW55IHNsb3QnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGNvbW1lbnROb2RlLmFzc2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xv
dCBvbiBhIGNvbW1lbnQgbXVzdCBiZSBudWxsIHdoZW4gYSBub2RlIGRvZXMgbm90IG1hdGNoIGFu
eSBzbG90Jyk7CisKK30sICdhc3NpZ25lZFNsb3QgbXVzdCByZXR1cm4gbnVsbCB3aGVuIHRoZSBu
b2RlIGRvZXMgbm90IGhhdmUgYW4gYXNzaWduZWQgbm9kZScpOworCit0ZXN0KGZ1bmN0aW9uICgp
IHsKKyAgICB2YXIgc2hhZG93SG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHZhciBjaGlsZEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7CisgICAg
c2hhZG93SG9zdC5hcHBlbmRDaGlsZChjaGlsZEVsZW1lbnQpOworCisgICAgdmFyIGNoaWxkVGV4
dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7CisgICAgc2hhZG93SG9zdC5hcHBl
bmRDaGlsZChjaGlsZFRleHROb2RlKTsKKworICAgIHZhciBjb21tZW50Tm9kZSA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCcnKTsKKyAgICBzaGFkb3dIb3N0LmFwcGVuZENoaWxkKGNvbW1lbnRO
b2RlKTsKKworICAgIHZhciBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21v
ZGU6ICdvcGVuJ30pOworICAgIHZhciBzbG90ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xv
dCcpOworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2xvdCk7CisKKyAgICBhc3NlcnRfZXF1
YWxzKGNoaWxkRWxlbWVudC5hc3NpZ25lZFNsb3QsIHNsb3QsICdhc3NpZ25lZFNsb3Qgb24gYW4g
ZWxlbWVudCBtdXN0IHJldHVybiB0aGUgYXNzaWduZWQgZGVmYXVsdCBzbG90IGVsZW1lbnQnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGNoaWxkVGV4dE5vZGUuYXNzaWduZWRTbG90LCBzbG90LCAnYXNz
aWduZWRTbG90IG9uIGEgdGV4dCBub2RlIG11c3QgcmV0dXJuIHRoZSBhc3NpZ25lZCBkZWZhdWx0
IHNsb3QgZWxlbWVudCcpOworICAgIGFzc2VydF9lcXVhbHMoY29tbWVudE5vZGUuYXNzaWduZWRT
bG90LCBzbG90LCAnYXNzaWduZWRTbG90IG9uIGEgY29tbWVudCBub2RlIG11c3QgcmV0dXJuIHRo
ZSBhc3NpZ25lZCBkZWZhdWx0IHNsb3QgZWxlbWVudCcpOworCisgICAgc2xvdC5uYW1lID0gJ2Zv
byc7CisgICAgYXNzZXJ0X2VxdWFscyhjaGlsZEVsZW1lbnQuYXNzaWduZWRTbG90LCBudWxsLCAn
YXNzaWduZWRTbG90IG9uIGFuIGVsZW1lbnQgbXVzdCBudWxsIHdoZW4gdGhlIGVsZW1lbnQgaXMg
dW5hc3NpZ25lZCBmcm9tIGEgc2xvdCBlbGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjaGls
ZFRleHROb2RlLmFzc2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBvbiBhIHRleHQgbm9k
ZSBtdXN0IG51bGwgd2hlbiB0aGUgbm9kZSBpcyB1bmFzc2lnbmVkIGZyb20gYSBzbG90IGVsZW1l
bnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbW1lbnROb2RlLmFzc2lnbmVkU2xvdCwgbnVsbCwg
J2Fzc2lnbmVkU2xvdCBvbiBhIHRleHQgbm9kZSBtdXN0IG51bGwgd2hlbiB0aGUgbm9kZSBpcyB1
bmFzc2lnbmVkIGZyb20gYSBzbG90IGVsZW1lbnQnKTsKKworICAgIGNoaWxkRWxlbWVudC5zbG90
ID0gJ2Zvbyc7CisgICAgYXNzZXJ0X2VxdWFscyhjaGlsZEVsZW1lbnQuYXNzaWduZWRTbG90LCBz
bG90LCAnYXNzaWduZWRTbG90IG9uIGFuIGVsZW1lbnQgbXVzdCByZXR1cm4gdGhlIHJlLWFzc2ln
bmVkIHNsb3QgZWxlbWVudCcpOworCisgICAgc2xvdC5uYW1lID0gbnVsbDsKKyAgICBhc3NlcnRf
ZXF1YWxzKGNoaWxkVGV4dE5vZGUuYXNzaWduZWRTbG90LCBzbG90LCAnYXNzaWduZWRTbG90IG9u
IGEgdGV4dCBub2RlIG11c3QgcmV0dXJuIHRoZSByZS1hc3NpZ25lZCBzbG90IGVsZW1lbnQnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGNvbW1lbnROb2RlLmFzc2lnbmVkU2xvdCwgc2xvdCwgJ2Fzc2ln
bmVkU2xvdCBvbiBhIGNvbW1lbnQgbm9kZSBtdXN0IHJldHVybiB0aGUgcmUtYXNzaWduZWQgc2xv
dCBlbGVtZW50Jyk7CisKK30sICdhc3NpZ25lZFNsb3QgbXVzdCByZXR1cm4gdGhlIGFzc2lnbmVk
IHNsb3QnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgY2hpbGRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYicpOworICAgIHNoYWRvd0hvc3QuYXBwZW5kQ2hpbGQoY2hpbGRF
bGVtZW50KTsKKworICAgIHZhciBjaGlsZFRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJycpOworICAgIHNoYWRvd0hvc3QuYXBwZW5kQ2hpbGQoY2hpbGRUZXh0Tm9kZSk7CisKKyAg
ICB2YXIgY29tbWVudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7CisgICAgc2hh
ZG93SG9zdC5hcHBlbmRDaGlsZChjb21tZW50Tm9kZSk7CisKKyAgICB2YXIgc2hhZG93Um9vdCA9
IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworICAgIHZhciBzbG90
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcpOworICAgIHNoYWRvd1Jvb3QuYXBwZW5k
Q2hpbGQoc2xvdCk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGNoaWxkRWxlbWVudC5hc3NpZ25lZFNs
b3QsIG51bGwsICdhc3NpZ25lZFNsb3Qgb24gYW4gZWxlbWVudCBtdXN0IHJldHVybiB0aGUgYXNz
aWduZWQgc2xvdCBlbGVtZW50LicpOworICAgIGFzc2VydF9lcXVhbHMoY2hpbGRUZXh0Tm9kZS5h
c3NpZ25lZFNsb3QsIG51bGwsICdhc3NpZ25lZFNsb3Qgb24gYSB0ZXh0IG5vZGUgbXVzdCByZXR1
cm4gdGhlIGFzc2lnbmVkIHNsb3QgZWxlbWVudC4nKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbW1l
bnROb2RlLmFzc2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBvbiBhIGNvbW1lbnQgbm9k
ZSBtdXN0IHJldHVybiB0aGUgYXNzaWduZWQgc2xvdCBlbGVtZW50LicpOworCit9LCAnYXNzaWdu
ZWRTbG90IG11c3QgcmV0dXJuIG51bGwgd2hlbiB0aGUgYXNzaWduZWQgc2xvdCBlbGVtZW50IGlz
IGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgdHJlZScpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9TaGFkb3dSb290
LWludGVyZmFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hh
ZG93Um9vdC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3MDM2YzI1ZGJmZjk0
Zjc2MzU0NjNkMDRlMTFmYTc1NjE0Y2NlMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTUgQEAKK0Jsb2NrZWQgYWNjZXNzIHRvIGV4dGVybmFsIFVSTCBodHRwczovL3N2bi53
ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRlc3RzL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5jc3MKKworUEFTUyBDaGVjayB0aGUgZXhpc3RlbmNlIG9mIFNoYWRvd1Jvb3Qg
aW50ZXJmYWNlIAorUEFTUyBTaGFkb3dSb290IG11c3QgaW5oZXJpdCBmcm9tIERvY3VtZW50RnJh
Z21lbnQgCitQQVNTIFNoYWRvd1Jvb3QgbXVzdCBub3QgYmUgYSBjb25zdHJ1Y3RvciAKK1BBU1Mg
U2hhZG93Um9vdC5hY3RpdmVFbGVtZW50IG11c3QgcmV0dXJuIHRoZSBmb2N1c2VkIGVsZW1lbnQg
b2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gc2hhZG93IHJvb3QgaXMgb3Blbi4gCitQQVNTIFNo
YWRvd1Jvb3QuYWN0aXZlRWxlbWVudCBtdXN0IHJldHVybiB0aGUgZm9jdXNlZCBlbGVtZW50IG9m
IHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHNoYWRvdyByb290IGlzIGNsb3NlZC4gCitQQVNTIFNo
YWRvd1Jvb3QuaG9zdCBtdXN0IHJldHVybiB0aGUgc2hhZG93IGhvc3Qgb2YgdGhlIGNvbnRleHQg
b2JqZWN0LiAKK1BBU1MgU2hhZG93Um9vdC5pbm5lckhUTUwgbXVzdCByZXR1cm4gdGhlIHJlc3Vs
dCBvZiB0aGUgSFRNTCBmcmFnbWVudCBzZXJpYWxpemF0aW9uIGFsZ29yaXRobSB3aGVuIHNoYWRv
dyByb290IGlzIG9wZW4uIAorUEFTUyBTaGFkb3dSb290LmlubmVySFRNTCBtdXN0IHJldHVybiB0
aGUgcmVzdWx0IG9mIHRoZSBIVE1MIGZyYWdtZW50IHNlcmlhbGl6YXRpb24gYWxnb3JpdGhtIHdo
ZW4gc2hhZG93IHJvb3QgaXMgY2xvc2VkLiAKK1BBU1MgU2hhZG93Um9vdC5pbm5lckhUTUwgbXVz
dCByZXBsYWNlIGFsbCB3aXRoIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhlIGZyYWdtZW50IHBh
cnNpbmcgYWxnb3JpdGhtIHdoZW4gc2hhZG93IHJvb3QgaXMgb3Blbi4gCitQQVNTIFNoYWRvd1Jv
b3QuaW5uZXJIVE1MIG11c3QgcmVwbGFjZSBhbGwgd2l0aCB0aGUgcmVzdWx0IG9mIGludm9raW5n
IHRoZSBmcmFnbWVudCBwYXJzaW5nIGFsZ29yaXRobSB3aGVuIHNoYWRvdyByb290IGlzIGNsb3Nl
ZC4gCitGQUlMIFNoYWRvd1Jvb3QuaW5uZXJIVE1MIG11c3QgcmVwbGFjZSBhbGwgd2l0aCB0aGUg
cmVzdWx0IG9mIGludm9raW5nIHRoZSBmcmFnbWVudCBwYXJzaW5nIGFsZ29yaXRobSB3aGVuIHNo
YWRvdyByb290IGlzIG9wZW4uIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdzaGFkb3dSb290LnN0eWxlU2hlZXRzLmxlbmd0aCcpCitGQUlMIFNoYWRvd1Jvb3QuaW5uZXJI
VE1MIG11c3QgcmVwbGFjZSBhbGwgd2l0aCB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBmcmFn
bWVudCBwYXJzaW5nIGFsZ29yaXRobSB3aGVuIHNoYWRvdyByb290IGlzIGNsb3NlZC4gdW5kZWZp
bmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3NoYWRvd1Jvb3Quc3R5bGVTaGVldHMu
bGVuZ3RoJykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRv
d1Jvb3QtaW50ZXJmYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93
Um9vdC1pbnRlcmZhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmJmYTYzNDEwODJiMDdkZDQ2ZDM4Nzdj
MjBhY2UwOTEzZjdmN2RiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLmh0bWwKQEAgLTAsMCArMSwxMTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TaGFkb3cgRE9NOiBTaGFkb3dSb290
IGludGVyZmFjZTwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5p
d2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0iU2hhZG93Um9vdCBpbnRlcmZhY2UgYW5kIGl0cyBhdHRyaWJ1dGVzIG11c3QgYmUg
ZGVmaW5lZCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdpdGh1Yi5pby93
ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyN0aGUtc2hhZG93cm9vdC1pbnRlcmZhY2UiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0naHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBv
c2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3Nz
Jz4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rl
c3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90cnVlKCdTaGFkb3dSb290JyBpbiB3aW5kb3cs
ICciU2hhZG93Um9vdCIgZXhpc3RzIG9uIHdpbmRvdycpOworfSwgJ0NoZWNrIHRoZSBleGlzdGVu
Y2Ugb2YgU2hhZG93Um9vdCBpbnRlcmZhY2UnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAg
YXNzZXJ0X2VxdWFscyhTaGFkb3dSb290LnByb3RvdHlwZS5fX3Byb3RvX18sIERvY3VtZW50RnJh
Z21lbnQucHJvdG90eXBlLCAnU2hhZG93Um9vdCBtdXN0IGluaGVyaXQgZnJvbSBEb2N1bWVudEZy
YWdtZW50Jyk7Cit9LCAnU2hhZG93Um9vdCBtdXN0IGluaGVyaXQgZnJvbSBEb2N1bWVudEZyYWdt
ZW50Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzog
J1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7IG5ldyBTaGFkb3dSb290KCk7IH0sICduZXcgU2hh
ZG93Um9vdCgpIG11c3QgdGhyb3cgYSBUeXBlRXJyb3InKTsKK30sICdTaGFkb3dSb290IG11c3Qg
bm90IGJlIGEgY29uc3RydWN0b3InKTsKKworZnVuY3Rpb24gdGVzdEFjdGl2ZUVsZW1lbnQobW9k
ZSkgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaG9zdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGhvc3QpOworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9k
ZSc6IG1vZGV9KTsKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdpbnB1dCcpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFj
dGl2ZUVsZW1lbnQsIG51bGwsICdTaGFkb3dSb290Lmhvc3QgbXVzdCByZXR1cm4gbnVsbCBpZiBh
biAnICsgbW9kZSArICcgc2hhZG93IHRyZWUgZG9lcyBub3QgaGF2ZSBhIGZvY3VzZWQgZWxlbWVu
dCcpOworICAgICAgICBzaGFkb3dSb290LmZpcnN0Q2hpbGQuZm9jdXMoKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQsIHNoYWRvd1Jvb3QuZmlyc3RDaGls
ZCwgJ1NoYWRvd1Jvb3QuaG9zdCBtdXN0IHJldHVybiB0aGUgZm9jdXNlZCBlbGVtZW50IG9mIGFu
ICcgKyBtb2RlICsgJyBzaGFkb3cgdHJlZScpOworICAgICAgICBob3N0LnJlbW92ZSgpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCwgbnVsbCwgJ1NoYWRv
d1Jvb3QuaG9zdCBtdXN0IHJldHVybiBudWxsIGlmIGFuICcgKyBtb2RlICsgJyBzaGFkb3cgdHJl
ZSBsb3N0IGZvY3VzJyk7CisgICAgfSwgJ1NoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCBtdXN0IHJl
dHVybiB0aGUgZm9jdXNlZCBlbGVtZW50IG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHNoYWRv
dyByb290IGlzICcgKyBtb2RlICsgJy4nKTsKK30KKwordGVzdEFjdGl2ZUVsZW1lbnQoJ29wZW4n
KTsKK3Rlc3RBY3RpdmVFbGVtZW50KCdjbG9zZWQnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7Cisg
ICAgdmFyIGhvc3QxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgYXNzZXJ0
X2VxdWFscyhob3N0MS5hdHRhY2hTaGFkb3coeydtb2RlJzogJ29wZW4nfSkuaG9zdCwgaG9zdDEs
ICdTaGFkb3dSb290Lmhvc3QgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyBob3N0IG9mIGFuIG9wZW4g
c2hhZG93IHRyZWUnKQorCisgICAgdmFyIGhvc3QyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhob3N0Mi5hdHRhY2hTaGFkb3coeydtb2RlJzogJ2Ns
b3NlZCd9KS5ob3N0LCBob3N0MiwgJ1NoYWRvd1Jvb3QuaG9zdCBtdXN0IHJldHVybiB0aGUgc2hh
ZG93IGhvc3Qgb2YgYSBjbG9zZWQgc2hhZG93IHRyZWUnKTsKK30sICdTaGFkb3dSb290Lmhvc3Qg
bXVzdCByZXR1cm4gdGhlIHNoYWRvdyBob3N0IG9mIHRoZSBjb250ZXh0IG9iamVjdC4nKTsKKwor
ZnVuY3Rpb24gdGVzdElubmVySFRNTChtb2RlKSB7CisgICAgdGVzdChmdW5jdGlvbiAoKSB7Cisg
ICAgICAgIHZhciBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
IHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeydtb2RlJzogbW9kZX0pOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuaW5uZXJIVE1MLCAnJywgJ1NoYWRvd1Jvb3Qu
aW5uZXJIVE1MIG11c3QgYmUgYW4gZW1wdHkgc3RyaW5nIHdoZW4gdGhlIHNoYWRvdyByb290IGRv
ZXMgbm90IGhhdmUgYW55IGNoaWxkcmVuJyk7CisKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnaGVsbG8nKSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoc2hhZG93Um9vdC5pbm5lckhUTUwsICdoZWxsbycsICdTaGFkb3dSb290LmlubmVySFRN
TCBtdXN0IHNlcmlhbGl6ZSBhIHRleHQgbm9kZSBjaGlsZCcpOworCisgICAgICAgIHNoYWRvd1Jv
b3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKKyAgICAgICAg
YXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmlubmVySFRNTCwgJ2hlbGxvPHNwYW4+PC9zcGFuPics
ICdTaGFkb3dSb290LmlubmVySFRNTCBtdXN0IHNlcmlhbGl6ZSBhIEhUTUwgZWxlbWVudCBjaGls
ZCcpOworICAgIH0sICdTaGFkb3dSb290LmlubmVySFRNTCBtdXN0IHJldHVybiB0aGUgcmVzdWx0
IG9mIHRoZSBIVE1MIGZyYWdtZW50IHNlcmlhbGl6YXRpb24gYWxnb3JpdGhtIHdoZW4gc2hhZG93
IHJvb3QgaXMgJyArIG1vZGUgKyAnLicpOworfQorCit0ZXN0SW5uZXJIVE1MKCdvcGVuJyk7Cit0
ZXN0SW5uZXJIVE1MKCdjbG9zZWQnKTsKKworZnVuY3Rpb24gdGVzdFNldElubmVySFRNTChtb2Rl
KSB7CisgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBob3N0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRh
Y2hTaGFkb3coeydtb2RlJzogbW9kZX0pOworICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9
ICdoZWxsbyc7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5jaGlsZE5vZGVzLmxl
bmd0aCwgMSwgJ1NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gImhlbGxvIiBtdXN0IGluc2VydCBhIHNp
bmdsZSBjaGlsZCAodGV4dCBub2RlKScpOworICAgICAgICBhc3NlcnRfdHJ1ZShzaGFkb3dSb290
LmZpcnN0Q2hpbGQgaW5zdGFuY2VvZiBUZXh0LCAnVGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBzaGFk
b3cgcm9vdCBhZnRlciBTaGFkb3dSb290LmlubmVySFRNTCA9ICJoZWxsbyIgbXVzdCBiZSBhIFRl
eHQgbm9kZScpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5k
YXRhLCAnaGVsbG8nLCAnVGhlIGZpcnN0IFRleHQgbm9kZSBzaG91bGQgY29udGFpbiB0aGUgc3Ry
aW5nICJoZWxsbyIgYWZ0ZXIgU2hhZG93Um9vdC5pbm5lckhUTUwgPSAiaGVsbG8iJyk7CisKKyAg
ICAgICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGI+aGVsbG88L2I+JzsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzaGFkb3dSb290LmNoaWxkTm9kZXMubGVuZ3RoLCAxLCAnU2hhZG93Um9vdC5p
bm5lckhUTUwgPSAiPGI+aGVsbG88L2I+IiBtdXN0IGluc2VydCBhIHNpbmdsZSBjaGlsZCAoYikn
KTsKKyAgICAgICAgYXNzZXJ0X3RydWUoc2hhZG93Um9vdC5maXJzdENoaWxkIGluc3RhbmNlb2Yg
SFRNTEVsZW1lbnQsICdUaGUgZmlyc3QgY2hpbGQgb2YgdGhlIHNoYWRvdyByb290IGFmdGVyIFNo
YWRvd1Jvb3QuaW5uZXJIVE1MID0gIjxiPmhlbGxvPC9iPiIgbXVzdCBiZSBhIEhUTUwgZWxlbWVu
dCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuZmlyc3RDaGlsZC5sb2NhbE5h
bWUsICdiJywgJ1RoZSBsb2NhbCBuYW1lIG9mIHRoZSBzaGFkb3cgcm9vdFwncyBmaXJzdCBjaGls
ZCBhZnRlciBTaGFkb3dSb290LmlubmVySFRNTCA9ICI8Yj5oZWxsbzwvYj4iIG11c3QgYmUgImIi
Jyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5pbm5lckhUTUwsICc8Yj5oZWxs
bzwvYj4nLCAnU2hhZG93Um9vdC5pbm5lckhUTUwgbXVzdCBiZSAiPGI+aGVsbG88L2I+IiBhZnRl
ciBTaGFkb3dSb290LmlubmVySFRNTCA9ICI8Yj5oZWxsbzwvYj4iJyk7CisKKyAgICAgICAgc2hh
ZG93Um9vdC5pbm5lckhUTUwgPSAnJzsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290
LmNoaWxkTm9kZXMubGVuZ3RoLCAwLCAnU2hhZG93Um9vdC5pbm5lckhUTUwgPSAiIiBtdXN0IHJl
bW92ZSBhbGwgaXRzIGNoaWxkcmVuJyk7CisgICAgfSwgJ1NoYWRvd1Jvb3QuaW5uZXJIVE1MIG11
c3QgcmVwbGFjZSBhbGwgd2l0aCB0aGUgcmVzdWx0IG9mIGludm9raW5nIHRoZSBmcmFnbWVudCBw
YXJzaW5nIGFsZ29yaXRobSB3aGVuIHNoYWRvdyByb290IGlzICcgKyBtb2RlICsgJy4nKTsKK30K
KwordGVzdFNldElubmVySFRNTCgnb3BlbicpOwordGVzdFNldElubmVySFRNTCgnY2xvc2VkJyk7
CisKK2Z1bmN0aW9uIHRlc3RTdHlsZVNoZWV0cyhtb2RlKSB7CisgICAgdGVzdChmdW5jdGlvbiAo
KSB7CisgICAgICAgIHZhciBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coeydtb2RlJzogbW9kZX0p
OworCisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5zdHlsZVNoZWV0cy5sZW5ndGgs
IDAsICdzaGFkb3dSb290LnN0eWxlU2hlZXRzIG11c3QgYmUgZW1wdHkgd2hlbiB0aGUgc2hhZG93
IHJvb3QgZG9lcyBub3QgY29udGFpbiBhbnkgc3R5bGVzaGVldHMnKTsKKyAgICAgICAgc2hhZG93
Um9vdC5pbm5lckhUTUwgPSAnPHNwYW4+PC9zcGFuPjxzdHlsZT4gYS5ydWxlIHt9IDwvc3R5bGU+
PHN0eWxlPiBiLnJ1bGUge30gPC9zdHlsZT4nOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRv
d1Jvb3Quc3R5bGVTaGVldHMubGVuZ3RoLCAyLCAnc2hhZG93Um9vdC5zdHlsZVNoZWV0cyBtdXN0
IGNvbnRhaW4gdHdvIGl0ZW1zIHdoZW4gdGhlIHNoYWRvdyByb290IGhhcyB0d28gc3R5bGUgZWxl
bWVudHMnKTsKKyAgICAgICAgdmFyIHN0eWxlcyA9IHNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvckFs
bCgnc3R5bGUnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LnN0eWxlU2hlZXRz
WzBdLCBzdHlsZXNbMF0uc2hlZXQsICdzaGFkb3dSb290LnN0eWxlU2hlZXRzWzBdIG11c3QgYmUg
dGhlIGZpcnN0IHN0eWxlIGVsZW1lbnQgaW4gdGhlIHNoYWRvdyByb290Jyk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoc2hhZG93Um9vdC5zdHlsZVNoZWV0c1sxXSwgc3R5bGVzWzFdLnNoZWV0LCAn
c2hhZG93Um9vdC5zdHlsZVNoZWV0c1sxXSBtdXN0IGJlIHRoZSBzZWNvbmQgc3R5bGUgZWxlbWVu
dCBpbiB0aGUgc2hhZG93IHJvb3QnKTsKKyAgICB9LCAnU2hhZG93Um9vdC5pbm5lckhUTUwgbXVz
dCByZXBsYWNlIGFsbCB3aXRoIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgdGhlIGZyYWdtZW50IHBh
cnNpbmcgYWxnb3JpdGhtIHdoZW4gc2hhZG93IHJvb3QgaXMgJyArIG1vZGUgKyAnLicpOworfQor
Cit0ZXN0U3R5bGVTaGVldHMoJ29wZW4nKTsKK3Rlc3RTdHlsZVNoZWV0cygnY2xvc2VkJyk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1kaXN0cmlidXRpb24tZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctZGlzdHJp
YnV0aW9uLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcwNGQyNGE2OTU2YjlhNzM0ZTliYjg5
YWQ1OTA3OGI5ZmFjY2YzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctZGlzdHJpYnV0aW9uLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSw3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgICAgPHA+VGVz
dCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVs
b3cuPC9wPgorICAgIDxkaXYgc3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFj
a2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctZGlzdHJpYnV0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWRp
c3RyaWJ1dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4MDIxM2QyNDI2MDViYzk0M2NiN2ViYjJkNmEz
Njc0ODY0NmJmOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vY3NzLXNjb3Bpbmctc2hhZG93LWRpc3RyaWJ1dGlvbi5odG1sCkBAIC0wLDAgKzEsNDAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+Q1NTIFNjb3Bpbmcg
LSBlbGVtZW50cyB3aXRoIGEgZGlzdHJpYnV0aW9uIGxpc3Qgc2hvdWxkIGdlbmVyYXRlIGJveGVz
IGluIHRoZSBmb3JtYXR0aW5nIHRyZWUuPC90aXRsZT4KKyAgICA8bGluayByZWw9ImF1dGhvciIg
dGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciLz4KKyAg
ICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nzcy1zY29waW5n
LTEvI3NlbGVjdG9ycy1kYXRhLW1vZGVsIj4KKyAgICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJy
ZWZlcmVuY2UvZ3JlZW4tYm94Lmh0bWwiLz4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxzdHlsZT4K
KyAgICBteS1ob3N0IHsKKyAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsK
KyAgICB9CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgIGhlaWdodDog
NTAlOworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUg
YSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4gCisgICAgPG15LWhv
c3Q+CisgICAgICAgIDxkaXYgc2xvdD0iZ3JlZW4iIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmVlbjsi
PjwvZGl2PgorICAgICAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiByZWQ7Ij5GQUlMPC9kaXY+
CisgICAgICAgIDxkaXYgc2xvdD0iZ3JlZW4iIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmVlbjsiPjwv
ZGl2PgorICAgIDwvbXktaG9zdD4KKyAgICA8c2NyaXB0PgorCisgICAgdHJ5IHsKKyAgICAgICAg
dmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdteS1ob3N0Jyk7CisgICAg
ICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7
CisgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzbG90IG5hbWU9ImdyZWVuIj48L3Ns
b3Q+JzsKKyAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShleGNlcHRpb24pKTsKKyAgICB9CisK
KyAgICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctcmVuZGVyaW5nLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXJlbmRl
cmluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3MDRkMjRhNjk1NmI5YTczNGU5YmI4OWFk
NTkwNzhiOWZhY2NmMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXJlbmRlcmluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFz
c2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93Ljwv
cD4KKyAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91
bmQ6IGdyZWVuOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXJlbmRlcmluZy5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1yZW5kZXJpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMmIyMGRlYTY2Yjk0NmVjYmVmYTcyNmQzMzUyMjA5OWIwNjA0N2Y4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29w
aW5nLXNoYWRvdy1yZW5kZXJpbmcuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPkNTUyBTY29waW5nIC0gVGhlIGNvbnRlbnRz
IG9mIHRoZSBhY3RpdmUgc2hhZG93IHRyZWUgaW5zdGVhZCBvZiB0aGUgZGVzY2VuZGFudHMgb2Yg
YSBzaGFkb3cgaG9zdCBnZW5lcmF0ZSBib3hlczwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJhdXRo
b3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIi8+
CisgICAgPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2Nv
cGluZy0xLyNzaGFkb3ctZG9tIj4KKyAgICA8bGluayByZWw9Im1hdGNoIiBocmVmPSJyZWZlcmVu
Y2UvZ3Jlbi1ib3guaHRtbCIvPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN0eWxlPgorICAgIG15
LWhvc3QgeworICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxwPlRlc3Qg
cGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93
LjwvcD4gCisgICAgPG15LWhvc3Q+CisgICAgICAgIEZBSUwKKyAgICAgICAgPGRpdiBzdHlsZT0i
d2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogcmVkOyI+RkFJTDwvZGl2Pgor
ICAgIDwvbXktaG9zdD4KKyAgICA8c2NyaXB0PgorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHNo
YWRvd0hvc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdteS1ob3N0Jyk7CisgICAgICAgIHNo
YWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAg
ICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWln
aHQ6IDEwMCU7IGJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+JzsKKyAgICB9IGNhdGNoIChleGNl
cHRpb24pIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShleGNlcHRpb24pKTsKKyAgICB9CisKKyAgICA8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2Nv
cGluZy1zaGFkb3ctd2l0aC1ydWxlcy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy13aXRoLXJ1bGVzLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTcwNGQyNGE2OTU2YjlhNzM0ZTliYjg5YWQ1OTA3OGI5ZmFjY2YzNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFk
b3ctd2l0aC1ydWxlcy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5n
bGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4KKyAgICA8ZGl2IHN0eWxlPSJ3
aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
Y3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctd2l0aC1ydWxlcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJk
NWE0MDMxMmZiZjFjMjkwMDM4NjFkZDU4NDMxYzNiN2Q2NWNmOWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVs
ZXMuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHRpdGxlPkNTUyBTY29waW5nIC0gYSBzZWxlY3RvciBpbnNpZGUgYSBzaGFkb3cgdHJl
ZSBpcyBtYXRjaGVkIGFnYWluc3Qgbm9kZXMgaW4gdGhlIHNoYWRvdyB0cmVlPC90aXRsZT4KKyAg
ICA8bGluayByZWw9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJu
aXdhQHdlYmtpdC5vcmciLz4KKyAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL2Nzcy1zY29waW5nLTEvI3NlbGVjdG9ycy1kYXRhLW1vZGVsIj4KKyAgICA8bGlu
ayByZWw9Im1hdGNoIiBocmVmPSJyZWZlcmVuY2UvZ3JlZW4tYm94Lmh0bWwiLz4KKzwvaGVhZD4K
Kzxib2R5PgorICAgIDxzdHlsZT4KKyAgICBteS1ob3N0IHsKKyAgICAgICAgZGlzcGxheTogYmxv
Y2s7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9
CisgICAgZGl2IHsKKyAgICAgICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYmFja2dyb3Vu
ZDogcmVkOworICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBz
ZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4gYm94IGJlbG93LjwvcD4gCisgICAgPG15
LWhvc3Q+CisgICAgICAgIDxkaXY+RkFJTDwvZGl2PgorICAgIDwvbXktaG9zdD4KKyAgICA8c2Ny
aXB0PgorCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCdteS1ob3N0Jyk7CisgICAgICAgIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1M
ID0gJzxkaXY+RkFJTDwvZGl2PjxzdHlsZT4gZGl2IHt3aWR0aDogMTAwcHg7IGhlaWdodDogMTAw
cHg7IGJhY2tncm91bmQ6IGdyZWVuOyBjb2xvcjpncmVlbjsgfSA8L3N0eWxlPic7CisgICAgfSBj
YXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoZXhjZXB0aW9uKSk7CisgICAgfQorCisgICAgPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261133</attachid>
            <date>2015-09-14 15:01:44 -0700</date>
            <delta_ts>2015-09-14 15:01:44 -0700</delta_ts>
            <desc>WIP2</desc>
            <filename>wip148695b.patch</filename>
            <type>text/plain</type>
            <size>128147</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFj
ZS1hdHRhY2hTaGFkb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L0VsZW1lbnQtaW50ZXJmYWNlLWF0dGFjaFNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAwMGQzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3ctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitQQVNTIENoZWNrIHRoZSBleGlzdGVuY2Ugb2Yg
RWxlbWVudC5hdHRhY2hTaGFkb3cgCitQQVNTIE5vZGVzIG90aGVyIHRoYW4gRWxlbWVudCBzaG91
bGQgbm90IGhhdmUgYXR0YWNoU2hhZG93IAorUEFTUyBFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0
IHRocm93IGEgVHlwZUVycm9yIGlmIG1vZGUgaXMgbm90ICJvcGVuIiBvciAiY2xvc2VkIiAKK1BB
U1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgU2hhZG93
Um9vdCAKK1BBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIEludmFsaWRTdGF0
ZUVycm9yIGlmIHRoZSBjb250ZXh0IG9iamVjdCBhbHJlYWR5IGhvc3RzIGEgc2hhZG93IHRyZWUg
CitQQVNTIEVsZW1lbnQuYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJv
ciBmb3IgYnV0dG9uLCBkZXRhaWxzLCBpbnB1dCwgbWFycXVlZSwgbWV0ZXIsIHByb2dyZXNzLCBz
ZWxlY3QsIHRleHRhcmVhLCBhbmQga2V5Z2VuIGVsZW1lbnRzIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNo
U2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU4MDk5OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWlu
dGVyZmFjZS1hdHRhY2hTaGFkb3cuaHRtbApAQCAtMCwwICsxLDk1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+U2hhZG93IERPTTogQXR0YWNoaW5nIGEgU2hhZG93
Um9vdDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhy
ZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0iRWxlbWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93IHNob3VsZCBjcmVhdGUgYW4gaW5zdGFu
Y2Ugb2YgU2hhZG93Um9vdCI+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vdzNjLmdp
dGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyN3aWRsLUVsZW1lbnQtYXR0YWNoU2hh
ZG93LVNoYWRvd1Jvb3QtU2hhZG93Um9vdEluaXQtc2hhZG93Um9vdEluaXREaWN0Ij4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5j
c3MnPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwor
dGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoJ2F0dGFjaFNoYWRvdycgaW4gRWxl
bWVudC5wcm90b3R5cGUsICdFbGVtZW50LnByb3RvdHlwZS5hdHRhY2hTaGFkb3cgbXVzdCBleGlz
dCcpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpLmF0dGFjaFNoYWRvdyksICdmdW5jdGlvbicsICdBbiBpbnN0YW5jZSBvZiBkaXYgbXVzdCBo
YXZlIGF0dGFjaFNoYWRvdyB3aGljaCBpcyBhIGZ1bmN0aW9uJyk7Cit9LCAnQ2hlY2sgdGhlIGV4
aXN0ZW5jZSBvZiBFbGVtZW50LmF0dGFjaFNoYWRvdycpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsK
KyAgICBhc3NlcnRfZmFsc2UoJ2F0dGFjaFNoYWRvdycgaW4gTm9kZS5wcm90b3R5cGUsICdOb2Rl
LnByb3RvdHlwZS5hdHRhY2hTaGFkb3cgbXVzdCBub3QgZXhpc3QnKTsKKyAgICBhc3NlcnRfZmFs
c2UoJ2F0dGFjaFNoYWRvdycgaW4gQ2hhcmFjdGVyRGF0YS5wcm90b3R5cGUsICdDaGFyYWN0ZXJE
YXRhLnByb3RvdHlwZS5hdHRhY2hTaGFkb3cgbXVzdCBub3QgZXhpc3QnKTsKKyAgICBhc3NlcnRf
ZmFsc2UoJ2F0dGFjaFNoYWRvdycgaW4gQ29tbWVudC5wcm90b3R5cGUsICdDb21tZW50LnByb3Rv
dHlwZS5hdHRhY2hTaGFkb3cgbXVzdCBub3QgZXhpc3QnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZihkb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKS5hdHRhY2hTaGFkb3cpLCAndW5kZWZpbmVk
JywgJ0FuIGluc3RhbmNlIG9mIGNvbW1lbnQgbXVzdCBub3QgaGF2ZSBhdHRhY2hTaGFkb3cnKTsK
KyAgICBhc3NlcnRfZmFsc2UoJ2F0dGFjaFNoYWRvdycgaW4gRG9jdW1lbnQucHJvdG90eXBlLCAn
RG9jdW1lbnQucHJvdG90eXBlLmF0dGFjaFNoYWRvdyBtdXN0IG5vdCBleGlzdCcpOworICAgIGFz
c2VydF9lcXVhbHModHlwZW9mKGRvY3VtZW50LmF0dGFjaFNoYWRvdyksICd1bmRlZmluZWQnLCAn
QW4gaW5zdGFuY2Ugb2YgZG9jdW1lbnQgbXVzdCBub3QgaGF2ZSBhdHRhY2hTaGFkb3cgd2hpY2gg
aXMgYSBmdW5jdGlvbicpOworICAgIGFzc2VydF9mYWxzZSgnYXR0YWNoU2hhZG93JyBpbiBEb2N1
bWVudEZyYWdtZW50LnByb3RvdHlwZSwgJ0RvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmF0dGFj
aFNoYWRvdyBtdXN0IG5vdCBleGlzdCcpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mKChuZXcg
RE9NUGFyc2VyKCkpLnBhcnNlRnJvbVN0cmluZygnJywgJ3RleHQvaHRtbCcpLmF0dGFjaFNoYWRv
dyksICd1bmRlZmluZWQnLCAnQW4gaW5zdGFuY2Ugb2YgZG9jdW1lbnQgbXVzdCBub3QgaGF2ZSBh
dHRhY2hTaGFkb3cgd2hpY2ggaXMgYSBmdW5jdGlvbicpOworICAgIGFzc2VydF9mYWxzZSgnYXR0
YWNoU2hhZG93JyBpbiBUZXh0LnByb3RvdHlwZSwgJ1RleHQucHJvdG90eXBlLmF0dGFjaFNoYWRv
dyBtdXN0IG5vdCBleGlzdCcpOworICAgIGFzc2VydF9lcXVhbHModHlwZW9mKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCcnKS5hdHRhY2hTaGFkb3cpLCAndW5kZWZpbmVkJywgJ0FuIGluc3RhbmNl
IG9mIHRleHQgbm9kZSBtdXN0IG5vdCBoYXZlIGF0dGFjaFNoYWRvdycpOworfSwgJ05vZGVzIG90
aGVyIHRoYW4gRWxlbWVudCBzaG91bGQgbm90IGhhdmUgYXR0YWNoU2hhZG93Jyk7CisKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmF0dGFj
aFNoYWRvdyh7fSkKKyAgICB9LCAnYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBUeXBlRXJyb3Ig
d2hlbiBtb2RlIGlzIG9taXR0ZWQnKTsKKworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ1R5
cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpLmF0dGFjaFNoYWRvdyh7bW9kZTogdHJ1ZX0pCisgICAgfSwgJ2F0dGFjaFNoYWRvdyBt
dXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gbW9kZSBpcyBhIGJvb2xlYW4nKTsKKworICAgIGFz
c2VydF90aHJvd3MoeyduYW1lJzogJ1R5cGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmF0dGFjaFNoYWRvdyh7bW9kZTogMX0pCisg
ICAgfSwgJ2F0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgVHlwZUVycm9yIHdoZW4gbW9kZSBpcyAx
Jyk7Cit9LCAnRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciBpZiBt
b2RlIGlzIG5vdCAib3BlbiIgb3IgImNsb3NlZCInKTsKKwordGVzdChmdW5jdGlvbiAoKSB7Cisg
ICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93
KHttb2RlOiAib3BlbiJ9KSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QsCisgICAgICAgICdhdHRhY2hT
aGFkb3coe21vZGU6ICJvcGVuIn0pIHNob3VsZCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgU2hhZG93
Um9vdCcpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmF0
dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QsCisgICAg
ICAgICdhdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgc2hvdWxkIGNyZWF0ZSBhbiBpbnN0
YW5jZSBvZiBTaGFkb3dSb290Jyk7Cit9LCAnRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCBjcmVh
dGUgYW4gaW5zdGFuY2Ugb2YgU2hhZG93Um9vdCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAg
ICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCBmdW5jdGlvbiAo
KSB7CisgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICAgICAgZGl2LmF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSk7CisgICAgICAgIGRpdi5hdHRh
Y2hTaGFkb3coe21vZGU6ICJvcGVuIn0pOworICAgIH0sICdDYWxsaW5nIGF0dGFjaFNoYWRvdyh7
bW9kZTogIm9wZW4ifSkgdHdpY2Ugb24gdGhlIHNhbWUgZWxlbWVudCBtdXN0IHRocm93Jyk7CisK
KyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCBmdW5jdGlv
biAoKSB7CisgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgZGl2LmF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KTsKKyAgICAgICAgZGl2
LmF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KTsKKyAgICB9LCAnQ2FsbGluZyBhdHRhY2hT
aGFkb3coe21vZGU6ICJjbG9zZWQifSkgdHdpY2Ugb24gdGhlIHNhbWUgZWxlbWVudCBtdXN0IHRo
cm93Jyk7CisKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3RhdGVFcnJvcid9
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICAgICAgZGl2LmF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSk7CisgICAg
ICAgIGRpdi5hdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSk7CisgICAgfSwgJ0NhbGxpbmcg
YXR0YWNoU2hhZG93KHttb2RlOiAiY2xvc2VkIn0pIGFmdGVyIGF0dGFjaFNoYWRvdyh7bW9kZTog
Im9wZW4ifSkgb24gdGhlIHNhbWUgZWxlbWVudCBtdXN0IHRocm93Jyk7CisKKyAgICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2
LmF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KTsKKyAgICAgICAgZGl2LmF0dGFjaFNoYWRv
dyh7bW9kZTogIm9wZW4ifSk7CisgICAgfSwgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHttb2RlOiAi
b3BlbiJ9KSBhZnRlciBhdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgb24gdGhlIHNhbWUg
ZWxlbWVudCBtdXN0IHRocm93Jyk7Cit9LCAnRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJv
dyBhIEludmFsaWRTdGF0ZUVycm9yIGlmIHRoZSBjb250ZXh0IG9iamVjdCBhbHJlYWR5IGhvc3Rz
IGEgc2hhZG93IHRyZWUnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIgZWxl
bWVudE5hbWUgb2YgWydidXR0b24nLCAnZGV0YWlscycsICdpbnB1dCcsICdtYXJxdWVlJywgJ21l
dGVyJywgJ3Byb2dyZXNzJywgJ3NlbGVjdCcsICd0ZXh0YXJlYScsICdrZXlnZW4nXSkgeworICAg
ICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKS5h
dHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pOworICAgICAgICB9LCAnQ2FsbGluZyBhdHRhY2hT
aGFkb3coe21vZGU6ICJvcGVuIn0pIG9uICcgKyBlbGVtZW50TmFtZSArICcgZWxlbWVudCBtdXN0
IHRocm93Jyk7CisKKyAgICAgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnTm90U3VwcG9ydGVk
RXJyb3InfSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dChlbGVtZW50TmFtZSkuYXR0YWNoU2hhZG93KHttb2RlOiAiY2xvc2VkIn0pOworICAgICAgICB9
LCAnQ2FsbGluZyBhdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgb24gJyArIGVsZW1lbnRO
YW1lICsgJyBlbGVtZW50IG11c3QgdGhyb3cnKTsKKyAgICB9Cit9LCAnRWxlbWVudC5hdHRhY2hT
aGFkb3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIGZvciBidXR0b24sIGRldGFpbHMs
IGlucHV0LCBtYXJxdWVlLCBtZXRlciwgcHJvZ3Jlc3MsIHNlbGVjdCwgdGV4dGFyZWEsIGFuZCBr
ZXlnZW4gZWxlbWVudHMnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2Utc2hhZG93
Um9vdC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L0VsZW1lbnQtaW50ZXJmYWNlLXNoYWRvd1Jvb3QtYXR0cmlidXRlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OThjZmMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLXNoYWRvd1Jv
b3QtYXR0cmlidXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBzaGFkb3dS
b290IG11c3QgYmUgZGVmaW5lZCBvbiBFbGVtZW50IHByb3RvdHlwZSAKK1BBU1Mgc2hhZG93Um9v
dCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIG9wZW4gc2hhZG93IHJvb3QgYXNzb2NpYXRlZCB3
aXRoIHRoZSBlbGVtZW50IAorUEFTUyBzaGFkb3dSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiBu
dWxsIGlmIHRoZSBzaGFkb3cgcm9vdCBhdHRhY2hlZCB0byB0aGUgZWxlbWVudCBpcyBjbG9zZWQg
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVy
ZmFjZS1zaGFkb3dSb290LWF0dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ct
ZG9tL0VsZW1lbnQtaW50ZXJmYWNlLXNoYWRvd1Jvb3QtYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU5ZDJkZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1zaGFkb3dSb290LWF0
dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5TaGFkb3cgRE9NOiBFbGVtZW50IGludGVyZmFjZSBzaGFkb3dSb290IGF0
dHJpYnV0ZTwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2Ei
IGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29u
dGVudD0ic2hhZG93Um9vdCBhdHRyaWJ1dGUgb24gRWxlbWVudCBpbnRlcmZhY2UgbXVzdCByZXR1
cm4gdGhlIGFzc29jaWF0ZWQgb3BlbiBzaGFkb3cgdHJlZSBpZiB0aGVyZSBpcyBvbmUiPgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9z
cGVjL3NoYWRvdy8jdGhlLXNoYWRvd3Jvb3QtaW50ZXJmYWNlIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0
eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlv
biAoKSB7CisgICAgYXNzZXJ0X3RydWUoJ3NoYWRvd1Jvb3QnIGluIEVsZW1lbnQucHJvdG90eXBl
LCAnc2hhZG93Um9vdCBtdXN0IGJlIGRlZmluZWQgb24gRWxlbWVudCBwcm90b3R5cGUnKTsKKyAg
ICBhc3NlcnRfdHJ1ZSgnc2hhZG93Um9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JyksICdzaGFkb3dSb290IG11c3QgYmUgZGVmaW5lZCBvbiBhbiBpbnN0YW5jZSBvZiBkaXYgZWxl
bWVudCcpOworICAgIGFzc2VydF9mYWxzZSgnc2hhZG93Um9vdCcgaW4gTm9kZS5wcm90b3R5cGUs
ICdzaGFkb3dSb290IG11c3Qgbm90IGJlIGRlZmluZWQgb24gTm9kZSBwcm90b3R5cGUnKTsKKyAg
ICBhc3NlcnRfZmFsc2UoJ3NoYWRvd1Jvb3QnIGluIFRleHQucHJvdG90eXBlLCAnc2hhZG93Um9v
dCBtdXN0IG5vdCBiZSBkZWZpbmVkIG9uIFRleHQgcHJvdG90eXBlJyk7CisgICAgYXNzZXJ0X2Zh
bHNlKCdzaGFkb3dSb290JyBpbiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyksICdzaGFkb3dS
b290IG11c3Qgbm90IGJlIGRlZmluZWQgb24gYW4gaW5zdGFuY2Ugb2YgVGV4dCBub2RlJyk7Cisg
ICAgYXNzZXJ0X2ZhbHNlKCdzaGFkb3dSb290JyBpbiBDb21tZW50LnByb3RvdHlwZSwgJ3NoYWRv
d1Jvb3QgbXVzdCBub3QgYmUgZGVmaW5lZCBvbiBDb21tZW50IHByb3RvdHlwZScpOworICAgIGFz
c2VydF9mYWxzZSgnc2hhZG93Um9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnJyksICdz
aGFkb3dSb290IG11c3Qgbm90IGJlIGRlZmluZWQgb24gYW4gaW5zdGFuY2Ugb2YgQ29tbWVudCBu
b2RlJyk7CisgICAgYXNzZXJ0X2ZhbHNlKCdzaGFkb3dSb290JyBpbiBEb2N1bWVudC5wcm90b3R5
cGUsICdzaGFkb3dSb290IG11c3Qgbm90IGJlIGRlZmluZWQgb24gRG9jdW1lbnQgcHJvdG90eXBl
Jyk7CisgICAgYXNzZXJ0X2ZhbHNlKCdzaGFkb3dSb290JyBpbiBkb2N1bWVudCwgJ3NoYWRvd1Jv
b3QgbXVzdCBub3QgYmUgZGVmaW5lZCBvbiBhbiBpbnN0YW5jZSBvZiBEb2N1bWVudCcpOworICAg
IGFzc2VydF9mYWxzZSgnc2hhZG93Um9vdCcgaW4gRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUs
ICdzaGFkb3dSb290IG11c3Qgbm90IGJlIGRlZmluZWQgb24gRG9jdW1lbnRGcmFnbWVudCBwcm90
b3R5cGUnKTsKKyAgICBhc3NlcnRfZmFsc2UoJ3NoYWRvd1Jvb3QnIGluIChuZXcgRE9NUGFyc2Vy
KS5wYXJzZUZyb21TdHJpbmcoJycsICd0ZXh0L2h0bWwnKSwgJ3NoYWRvd1Jvb3QgbXVzdCBub3Qg
YmUgZGVmaW5lZCBvbiBhbiBpbnN0YW5jZSBvZiBEb2N1bWVudEZyYWdtZW50IG5vZGUnKTsKK30s
ICdzaGFkb3dSb290IG11c3QgYmUgZGVmaW5lZCBvbiBFbGVtZW50IHByb3RvdHlwZScpOworCit0
ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIGFzc2VydF9lcXVhbHMoaG9zdC5zaGFkb3dSb290LCBudWxsLCAnc2hhZG93
Um9vdCBtdXN0IHJldHVybiBudWxsIHdoZW4gdGhlIGhvc3QgZG9lcyBub3QgaGF2ZSBhIHNoYWRv
dyB0cmVlIGF0dGFjaGVkIHRvIGl0Jyk7CisKKyAgICB2YXIgb3BlblNoYWRvd1Jvb3QgPSBob3N0
LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgYXNzZXJ0X2VxdWFscyhob3N0LnNo
YWRvd1Jvb3QsIG9wZW5TaGFkb3dSb290LCAnc2hhZG93Um9vdCBtdXN0IHJldHVybiB0aGUgb3Bl
biBzaGFkb3cgcm9vdCBhdHRhY2hTaGFkb3cgYXR0YWNoZWQnKTsKK30sICdzaGFkb3dSb290IGF0
dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgb3BlbiBzaGFkb3cgcm9vdCBhc3NvY2lhdGVkIHdpdGgg
dGhlIGVsZW1lbnQnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGhvc3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTog
J2Nsb3NlZCd9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGhvc3Quc2hhZG93Um9vdCwgbnVsbCk7Cit9
LCAnc2hhZG93Um9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gbnVsbCBpZiB0aGUgc2hhZG93IHJv
b3QgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQgaXMgY2xvc2VkJyk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0hU
TUxTbG90RWxlbWVudC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL0hUTUxTbG90RWxlbWVudC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NTk1YmEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vSFRNTFNsb3RFbGVtZW50LWludGVyZmFjZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgSFRNTFNsb3RFbGVtZW50IG11c3QgYmUg
ZGVmaW5lZCBvbiB3aW5kb3cgCitQQVNTICJuYW1lIiBhdHRyaWJ1dGUgb24gSFRNTFNsb3RFbGVt
ZW50IG11c3QgcmVmbGVjdCAibmFtZSIgYXR0cmlidXRlIAorUEFTUyBnZXREaXN0cmlidXRlZE5v
ZGVzIG1ldGhvZCBvbiBIVE1MU2xvdEVsZW1lbnQgbXVzdCByZXR1cm4gdGhlIGxpc3Qgb2YgZGlz
dHJpYnV0ZWQgbm9kZXMgCitQQVNTIGdldERpc3RyaWJ1dGVkTm9kZXMgbXVzdCByZXR1cm4gdGhl
IHJlc3VsdCBvZiB0aGUgZ2V0IGRpc3RyaWJ1dGVkIG5vZGVzIGFsZ29yaXRobS4gCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9IVE1MU2xvdEVsZW1lbnQtaW50ZXJm
YWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vSFRNTFNsb3RFbGVtZW50LWlu
dGVyZmFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYTZmZTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vSFRNTFNsb3RF
bGVtZW50LWludGVyZmFjZS5odG1sCkBAIC0wLDAgKzEsODMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TaGFkb3cgRE9NOiBIVE1MU2xvdEVsZW1lbnQgaW50ZXJm
YWNlPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJl
Zj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50
PSJIVE1MU2xvdEVsZW1lbnQgbXVzdCBleGlzdCBvbiB3aW5kb3cgd2l0aCBuYW1lIGFuZCBnZXRE
aXN0cmlidXRlZE5vZGVzKCkiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5n
aXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jdGhlLXNsb3QtZWxlbWVudCI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuY3NzJz4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+
CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90cnVlKCdIVE1MU2xvdEVsZW1lbnQn
IGluIHdpbmRvdywgJ0hUTUxTbG90RWxlbWVudCBtdXN0IGJlIGRlZmluZWQgb24gd2luZG93Jyk7
CisgICAgYXNzZXJ0X2VxdWFscyhIVE1MU2xvdEVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXywg
SFRNTEVsZW1lbnQucHJvdG90eXBlLCAnSFRNTFNsb3RFbGVtZW50IHNob3VsZCBpbmhlcml0IGZy
b20gSFRNTEVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzbG90JykgaW5zdGFuY2VvZiBIVE1MU2xvdEVsZW1lbnQsICdzbG90IGVsZW1lbnQgc2hvdWxk
IGJlIGFuIGluc3RhbmNlIG9mIEhUTUxTbG90RWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50LCAnc2xv
dCBlbGVtZW50IHNob3VsZCBiZSBhbiBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCcpOworfSwgJ0hU
TUxTbG90RWxlbWVudCBtdXN0IGJlIGRlZmluZWQgb24gd2luZG93Jyk7CisKK3Rlc3QoZnVuY3Rp
b24gKCkgeworICAgIGFzc2VydF90cnVlKCduYW1lJyBpbiBIVE1MU2xvdEVsZW1lbnQucHJvdG90
eXBlLCAnIm5hbWUiIGF0dHJpYnV0ZSBtdXN0IGJlIGRlZmluZWQgb24gSFRNTFNsb3RFbGVtZW50
LnByb3RvdHlwZScpOworCisgICAgdmFyIHNsb3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2xvdCcpOworICAgIGFzc2VydF9lcXVhbHMoc2xvdEVsZW1lbnQubmFtZSwgJycsICci
bmFtZSIgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgd2hlbiAibmFtZSIg
Y29udGVudCBhdHRyaWJ1dGUgaXMgbm90IHNldCcpOworCisgICAgc2xvdEVsZW1lbnQuc2V0QXR0
cmlidXRlKCduYW1lJywgJ2ZvbycpOworICAgIGFzc2VydF9lcXVhbHMoc2xvdEVsZW1lbnQubmFt
ZSwgJ2ZvbycsICcibmFtZSIgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUg
Im5hbWUiIGNvbnRlbnQgYXR0cmlidXRlJyk7CisKKyAgICBzbG90RWxlbWVudC5uYW1lID0gJ2Jh
cic7CisgICAgYXNzZXJ0X2VxdWFscyhzbG90RWxlbWVudC5uYW1lLCAnYmFyJywgJyJuYW1lIiBh
dHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGFzc2lnbmVkIHZhbHVlJyk7CisgICAgYXNzZXJ0X2Vx
dWFscyhzbG90RWxlbWVudC5nZXRBdHRyaWJ1dGUoJ25hbWUnKSwgJ2JhcicsICcibmFtZSIgYXR0
cmlidXRlIG11c3QgdXBkYXRlIHRoZSAibmFtZSIgY29udGVudCBhdHRyaWJ1dGUnKTsKK30sICci
bmFtZSIgYXR0cmlidXRlIG9uIEhUTUxTbG90RWxlbWVudCBtdXN0IHJlZmxlY3QgIm5hbWUiIGF0
dHJpYnV0ZScpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRfdHJ1ZSgnZ2V0RGlz
dHJpYnV0ZWROb2RlcycgaW4gSFRNTFNsb3RFbGVtZW50LnByb3RvdHlwZSwgJyJnZXREaXN0cmli
dXRlZE5vZGVzIiBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIG9uIEhUTUxTbG90RWxlbWVudC5wcm90
b3R5cGUnKTsKKworICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgdmFyIGNoaWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworCisg
ICAgdmFyIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4n
fSk7CisgICAgdmFyIHNsb3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xvdCcp
OworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2xvdEVsZW1lbnQpOworCisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhzbG90RWxlbWVudC5nZXREaXN0cmlidXRlZE5vZGVzKCksIFtdLCAnZ2V0
RGlzdHJpYnV0ZWROb2RlcyBtdXN0IHJldHVybiBhbiBlbXB0eSBhcnJheSB3aGVuIHRoZXJlIGFy
ZSBubyBkaXN0cmlidXRlZCBub2RlcycpOworCisgICAgc2hhZG93SG9zdC5hcHBlbmRDaGlsZChj
aGlsZCk7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhzbG90RWxlbWVudC5nZXREaXN0cmlidXRl
ZE5vZGVzKCksIFtjaGlsZF0sICdnZXREaXN0cmlidXRlZE5vZGVzIG11c3QgcmV0dXJuIHRoZSBk
aXN0cmlidXRlZCBub2RlcycpOworCit9LCAnZ2V0RGlzdHJpYnV0ZWROb2RlcyBtZXRob2Qgb24g
SFRNTFNsb3RFbGVtZW50IG11c3QgcmV0dXJuIHRoZSBsaXN0IG9mIGRpc3RyaWJ1dGVkIG5vZGVz
Jyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdwJyk7CisgICAgdmFyIGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7CisgICAgc2hh
ZG93SG9zdC5hcHBlbmRDaGlsZChwKTsKKyAgICBzaGFkb3dIb3N0LmFwcGVuZENoaWxkKGIpOwor
CisgICAgdmFyIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ29w
ZW4nfSk7CisgICAgdmFyIHNsb3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2xv
dCcpOworICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoc2xvdEVsZW1lbnQpOworCisgICAgYXNz
ZXJ0X2FycmF5X2VxdWFscyhzbG90RWxlbWVudC5nZXREaXN0cmlidXRlZE5vZGVzKCksIFtwLCBi
XSwgJ2dldERpc3RyaWJ1dGVkTm9kZXMgbXVzdCByZXR1cm4gdGhlIGRpc3RyaWJ1dGVkIG5vZGVz
Jyk7CisKKyAgICBzbG90RWxlbWVudC5uYW1lID0gJ2Zvbyc7CisgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhzbG90RWxlbWVudC5nZXREaXN0cmlidXRlZE5vZGVzKCksIFtdLCAnZ2V0RGlzdHJpYnV0
ZWROb2RlcyBtdXN0IGJlIGVtcHR5IHdoZW4gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIGVsZW1lbnRz
IGZvciB0aGUgc2xvdCBuYW1lJyk7CisKKyAgICBiLnNsb3QgPSAnZm9vJzsKKyAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKHNsb3RFbGVtZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKSwgW2JdLCAnZ2V0
RGlzdHJpYnV0ZWROb2RlcyBtdXN0IHJldHVybiB0aGUgbm9kZXMgd2l0aCB0aGUgbWF0Y2hpbmcg
c2xvdCBuYW1lJyk7CisKKyAgICBwLnNsb3QgPSAnZm9vJzsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHNsb3RFbGVtZW50LmdldERpc3RyaWJ1dGVkTm9kZXMoKSwgW3AsIGJdLCAnZ2V0RGlzdHJp
YnV0ZWROb2RlcyBtdXN0IHJldHVybiB0aGUgbm9kZXMgd2l0aCB0aGUgbWF0Y2hpbmcgc2xvdCBu
YW1lIGluIHRoZSB0cmVlIG9yZGVyJyk7CisKKyAgICBzbG90RWxlbWVudC5uYW1lID0gbnVsbDsK
KyAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHNsb3RFbGVtZW50LmdldERpc3RyaWJ1dGVkTm9kZXMo
KSwgW10sICdnZXREaXN0cmlidXRlZE5vZGVzIG11c3QgYmUgZW1wdHkgZm9yIGEgZGVmYXVsdCBz
bG90IHdoZW4gYWxsIGVsZW1lbnRzIGhhdmUgInNsb3QiIGF0dHJpYnV0ZXMgc3BlY2lmaWVkJyk7
CisKK30sICdnZXREaXN0cmlidXRlZE5vZGVzIG11c3QgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhl
IGdldCBkaXN0cmlidXRlZCBub2RlcyBhbGdvcml0aG0uJyk7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vbkRv
Y3VtZW50VHlwZUNoaWxkTm9kZS1pbnRlcmZhY2UtYXNzaWduZWRTbG90LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUtaW50
ZXJmYWNlLWFzc2lnbmVkU2xvdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTRkNzQ3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2hhZG93LWRvbS9Ob25Eb2N1bWVudFR5cGVDaGlsZE5vZGUtaW50ZXJmYWNlLWFzc2lnbmVkU2xv
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgYXNzaWduZWRTbG90IGF0dHJp
YnV0ZSBtdXN0IGJlIGRlZmluZWQgb24gTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlIGludGVyZmFj
ZSAKK1BBU1MgYXNzaWduZWRTbG90IG11c3QgcmV0dXJuIG51bGwgd2hlbiB0aGUgbm9kZSBkb2Vz
IG5vdCBoYXZlIGFuIGFzc2lnbmVkIG5vZGUgCitQQVNTIGFzc2lnbmVkU2xvdCBtdXN0IHJldHVy
biB0aGUgYXNzaWduZWQgc2xvdCAKK1BBU1MgYXNzaWduZWRTbG90IG11c3QgcmV0dXJuIG51bGwg
d2hlbiB0aGUgYXNzaWduZWQgc2xvdCBlbGVtZW50IGlzIGluc2lkZSBhIGNsb3NlZCBzaGFkb3cg
dHJlZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vbkRvY3Vt
ZW50VHlwZUNoaWxkTm9kZS1pbnRlcmZhY2UtYXNzaWduZWRTbG90Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLWludGVyZmFjZS1hc3Np
Z25lZFNsb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjhhNmQ4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vbkRvY3Vt
ZW50VHlwZUNoaWxkTm9kZS1pbnRlcmZhY2UtYXNzaWduZWRTbG90Lmh0bWwKQEAgLTAsMCArMSwx
MDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5TaGFkb3cgRE9N
OiBFeHRlbnNpb25zIHRvIE5vbkRvY3VtZW50VHlwZUNoaWxkTm9kZSBpbnRlcmZhY2U8L3RpdGxl
PgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86
cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik5vbkRvY3Vt
ZW50VHlwZUNoaWxkTm9kZSBpbnRlcmZhY2UgbXVzdCBoYXZlIGFzc2lnbmVkU2xvdCBhdHRyaWJ1
dGUiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL3czYy5naXRodWIuaW8vd2ViY29t
cG9uZW50cy9zcGVjL3NoYWRvdy8jdGhlLXNsb3QtZWxlbWVudCI+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdz
dHlsZXNoZWV0JyBocmVmPScuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rp
b24gKCkgeworICAgIGFzc2VydF90cnVlKCdhc3NpZ25lZFNsb3QnIGluIEVsZW1lbnQucHJvdG90
eXBlLCAnYXNzaWduZWRTbG90IG11c3QgYmUgZGVmaW5lZCBvbiBFbGVtZW50LnByb3RvdHlwZScp
OworICAgIGFzc2VydF90cnVlKCdhc3NpZ25lZFNsb3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpLCAnYXNzaWduZWRTbG90IG11c3QgYmUgZGVmaW5lZCBvbiBhIGRpdiBlbGVtZW50
Jyk7CisKKyAgICBhc3NlcnRfdHJ1ZSgnYXNzaWduZWRTbG90JyBpbiBDaGFyYWN0ZXJEYXRhLnBy
b3RvdHlwZSwgJ2Fzc2lnbmVkU2xvdCBtdXN0IGJlIGRlZmluZWQgb24gQ2hhcmFjdGVyRGF0YS5w
cm90b3R5cGUnKTsKKyAgICBhc3NlcnRfdHJ1ZSgnYXNzaWduZWRTbG90JyBpbiBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnJyksICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgdGV4
dCBub2RlJyk7CisgICAgYXNzZXJ0X3RydWUoJ2Fzc2lnbmVkU2xvdCcgaW4gZG9jdW1lbnQuY3Jl
YXRlQ29tbWVudCgnJyksICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgY29tbWVu
dCBub2RlJyk7CisKK30sICdhc3NpZ25lZFNsb3QgYXR0cmlidXRlIG11c3QgYmUgZGVmaW5lZCBv
biBOb25Eb2N1bWVudFR5cGVDaGlsZE5vZGUgaW50ZXJmYWNlJyk7CisKK3Rlc3QoZnVuY3Rpb24g
KCkgeworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXNz
aWduZWRTbG90LCBudWxsLCAnYXNzaWduZWRTbG90IG11c3QgYmUgbnVsbCB3aGVuIHRoZSBlbGVt
ZW50IGlzIG5vdCBpbiBhbnkgdHJlZScpOworCisgICAgdmFyIHNoYWRvd0hvc3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgc2hhZG93Um9vdCA9IHNoYWRvd0hvc3Qu
YXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKworICAgIHZhciBjaGlsZEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdiJyk7CisgICAgc2hhZG93SG9zdC5hcHBlbmRDaGlsZChj
aGlsZEVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMoY2hpbGRFbGVtZW50LmFzc2lnbmVkU2xv
dCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBvbiBhbiBlbGVtZW50IG11c3QgYmUgbnVsbCB3aGVuIGEg
bm9kZSBpcyBub3QgYXNzaWduZWQgb2YgYW55IHNsb3QnKTsKKworICAgIHZhciBjaGlsZFRleHRO
b2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOworICAgIHNoYWRvd0hvc3QuYXBwZW5k
Q2hpbGQoY2hpbGRUZXh0Tm9kZSk7CisgICAgYXNzZXJ0X2VxdWFscyhjaGlsZFRleHROb2RlLmFz
c2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBvbiBhIHRleHQgbm9kZSBtdXN0IGJlIG51
bGwgd2hlbiBhIG5vZGUgaXMgbm90IGFzc2lnbmVkIG9mIGFueSBzbG90Jyk7CisKKyAgICB2YXIg
Y29tbWVudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KCcnKTsKKyAgICBzaGFkb3dIb3N0
LmFwcGVuZENoaWxkKGNvbW1lbnROb2RlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbW1lbnROb2Rl
LmFzc2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBvbiBhIGNvbW1lbnQgbm9kZSBtdXN0
IGJlIG51bGwgd2hlbiBhIG5vZGUgaXMgbm90IGFzc2lnbmVkIG9mIGFueSBzbG90Jyk7CisKKyAg
ICB2YXIgc2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICBzbG90Lm5h
bWUgPSAnZm9vJzsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHNsb3QpOworICAgIGFzc2Vy
dF9lcXVhbHMoY2hpbGRFbGVtZW50LmFzc2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBv
biBhbiBlbGVtZW50IG11c3QgYmUgbnVsbCB3aGVuIGEgbm9kZSBkb2VzIG5vdCBtYXRjaCBhbnkg
c2xvdCcpOworICAgIGFzc2VydF9lcXVhbHMoY2hpbGRUZXh0Tm9kZS5hc3NpZ25lZFNsb3QsIG51
bGwsICdhc3NpZ25lZFNsb3Qgb24gYSB0ZXh0IG5vZGUgbXVzdCBiZSBudWxsIHdoZW4gYSBub2Rl
IGRvZXMgbm90IG1hdGNoIGFueSBzbG90Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb21tZW50Tm9k
ZS5hc3NpZ25lZFNsb3QsIG51bGwsICdhc3NpZ25lZFNsb3Qgb24gYSBjb21tZW50IG11c3QgYmUg
bnVsbCB3aGVuIGEgbm9kZSBkb2VzIG5vdCBtYXRjaCBhbnkgc2xvdCcpOworCit9LCAnYXNzaWdu
ZWRTbG90IG11c3QgcmV0dXJuIG51bGwgd2hlbiB0aGUgbm9kZSBkb2VzIG5vdCBoYXZlIGFuIGFz
c2lnbmVkIG5vZGUnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIHNoYWRvd0hvc3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB2YXIgY2hpbGRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYicpOworICAgIHNoYWRvd0hvc3QuYXBwZW5kQ2hpbGQo
Y2hpbGRFbGVtZW50KTsKKworICAgIHZhciBjaGlsZFRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJycpOworICAgIHNoYWRvd0hvc3QuYXBwZW5kQ2hpbGQoY2hpbGRUZXh0Tm9kZSk7
CisKKyAgICB2YXIgY29tbWVudE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7Cisg
ICAgc2hhZG93SG9zdC5hcHBlbmRDaGlsZChjb21tZW50Tm9kZSk7CisKKyAgICB2YXIgc2hhZG93
Um9vdCA9IHNoYWRvd0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICB2YXIg
c2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nsb3QnKTsKKyAgICBzaGFkb3dSb290LmFw
cGVuZENoaWxkKHNsb3QpOworCisgICAgYXNzZXJ0X2VxdWFscyhjaGlsZEVsZW1lbnQuYXNzaWdu
ZWRTbG90LCBzbG90LCAnYXNzaWduZWRTbG90IG9uIGFuIGVsZW1lbnQgbXVzdCByZXR1cm4gdGhl
IGFzc2lnbmVkIGRlZmF1bHQgc2xvdCBlbGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjaGls
ZFRleHROb2RlLmFzc2lnbmVkU2xvdCwgc2xvdCwgJ2Fzc2lnbmVkU2xvdCBvbiBhIHRleHQgbm9k
ZSBtdXN0IHJldHVybiB0aGUgYXNzaWduZWQgZGVmYXVsdCBzbG90IGVsZW1lbnQnKTsKKyAgICBh
c3NlcnRfZXF1YWxzKGNvbW1lbnROb2RlLmFzc2lnbmVkU2xvdCwgc2xvdCwgJ2Fzc2lnbmVkU2xv
dCBvbiBhIGNvbW1lbnQgbm9kZSBtdXN0IHJldHVybiB0aGUgYXNzaWduZWQgZGVmYXVsdCBzbG90
IGVsZW1lbnQnKTsKKworICAgIHNsb3QubmFtZSA9ICdmb28nOworICAgIGFzc2VydF9lcXVhbHMo
Y2hpbGRFbGVtZW50LmFzc2lnbmVkU2xvdCwgbnVsbCwgJ2Fzc2lnbmVkU2xvdCBvbiBhbiBlbGVt
ZW50IG11c3QgbnVsbCB3aGVuIHRoZSBlbGVtZW50IGlzIHVuYXNzaWduZWQgZnJvbSBhIHNsb3Qg
ZWxlbWVudCcpOworICAgIGFzc2VydF9lcXVhbHMoY2hpbGRUZXh0Tm9kZS5hc3NpZ25lZFNsb3Qs
IG51bGwsICdhc3NpZ25lZFNsb3Qgb24gYSB0ZXh0IG5vZGUgbXVzdCBudWxsIHdoZW4gdGhlIG5v
ZGUgaXMgdW5hc3NpZ25lZCBmcm9tIGEgc2xvdCBlbGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFs
cyhjb21tZW50Tm9kZS5hc3NpZ25lZFNsb3QsIG51bGwsICdhc3NpZ25lZFNsb3Qgb24gYSB0ZXh0
IG5vZGUgbXVzdCBudWxsIHdoZW4gdGhlIG5vZGUgaXMgdW5hc3NpZ25lZCBmcm9tIGEgc2xvdCBl
bGVtZW50Jyk7CisKKyAgICBjaGlsZEVsZW1lbnQuc2xvdCA9ICdmb28nOworICAgIGFzc2VydF9l
cXVhbHMoY2hpbGRFbGVtZW50LmFzc2lnbmVkU2xvdCwgc2xvdCwgJ2Fzc2lnbmVkU2xvdCBvbiBh
biBlbGVtZW50IG11c3QgcmV0dXJuIHRoZSByZS1hc3NpZ25lZCBzbG90IGVsZW1lbnQnKTsKKwor
ICAgIHNsb3QubmFtZSA9IG51bGw7CisgICAgYXNzZXJ0X2VxdWFscyhjaGlsZFRleHROb2RlLmFz
c2lnbmVkU2xvdCwgc2xvdCwgJ2Fzc2lnbmVkU2xvdCBvbiBhIHRleHQgbm9kZSBtdXN0IHJldHVy
biB0aGUgcmUtYXNzaWduZWQgc2xvdCBlbGVtZW50Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb21t
ZW50Tm9kZS5hc3NpZ25lZFNsb3QsIHNsb3QsICdhc3NpZ25lZFNsb3Qgb24gYSBjb21tZW50IG5v
ZGUgbXVzdCByZXR1cm4gdGhlIHJlLWFzc2lnbmVkIHNsb3QgZWxlbWVudCcpOworCit9LCAnYXNz
aWduZWRTbG90IG11c3QgcmV0dXJuIHRoZSBhc3NpZ25lZCBzbG90Jyk7CisKK3Rlc3QoZnVuY3Rp
b24gKCkgeworICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgdmFyIGNoaWxkRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2InKTsK
KyAgICBzaGFkb3dIb3N0LmFwcGVuZENoaWxkKGNoaWxkRWxlbWVudCk7CisKKyAgICB2YXIgY2hp
bGRUZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTsKKyAgICBzaGFkb3dIb3N0
LmFwcGVuZENoaWxkKGNoaWxkVGV4dE5vZGUpOworCisgICAgdmFyIGNvbW1lbnROb2RlID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOworICAgIHNoYWRvd0hvc3QuYXBwZW5kQ2hpbGQoY29t
bWVudE5vZGUpOworCisgICAgdmFyIHNoYWRvd1Jvb3QgPSBzaGFkb3dIb3N0LmF0dGFjaFNoYWRv
dyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICB2YXIgc2xvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3Nsb3QnKTsKKyAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKHNsb3QpOworCisgICAgYXNz
ZXJ0X2VxdWFscyhjaGlsZEVsZW1lbnQuYXNzaWduZWRTbG90LCBudWxsLCAnYXNzaWduZWRTbG90
IG9uIGFuIGVsZW1lbnQgbXVzdCByZXR1cm4gdGhlIGFzc2lnbmVkIHNsb3QgZWxlbWVudC4nKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGNoaWxkVGV4dE5vZGUuYXNzaWduZWRTbG90LCBudWxsLCAnYXNz
aWduZWRTbG90IG9uIGEgdGV4dCBub2RlIG11c3QgcmV0dXJuIHRoZSBhc3NpZ25lZCBzbG90IGVs
ZW1lbnQuJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjb21tZW50Tm9kZS5hc3NpZ25lZFNsb3QsIG51
bGwsICdhc3NpZ25lZFNsb3Qgb24gYSBjb21tZW50IG5vZGUgbXVzdCByZXR1cm4gdGhlIGFzc2ln
bmVkIHNsb3QgZWxlbWVudC4nKTsKKworfSwgJ2Fzc2lnbmVkU2xvdCBtdXN0IHJldHVybiBudWxs
IHdoZW4gdGhlIGFzc2lnbmVkIHNsb3QgZWxlbWVudCBpcyBpbnNpZGUgYSBjbG9zZWQgc2hhZG93
IHRyZWUnKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vU2hhZG93Um9vdC1pbnRlcmZhY2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzAzNmMyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50
ZXJmYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitCbG9ja2VkIGFjY2VzcyB0byBl
eHRlcm5hbCBVUkwgaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVu
ay9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzCisKK1BBU1MgQ2hlY2sgdGhl
IGV4aXN0ZW5jZSBvZiBTaGFkb3dSb290IGludGVyZmFjZSAKK1BBU1MgU2hhZG93Um9vdCBtdXN0
IGluaGVyaXQgZnJvbSBEb2N1bWVudEZyYWdtZW50IAorUEFTUyBTaGFkb3dSb290IG11c3Qgbm90
IGJlIGEgY29uc3RydWN0b3IgCitQQVNTIFNoYWRvd1Jvb3QuYWN0aXZlRWxlbWVudCBtdXN0IHJl
dHVybiB0aGUgZm9jdXNlZCBlbGVtZW50IG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHNoYWRv
dyByb290IGlzIG9wZW4uIAorUEFTUyBTaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQgbXVzdCByZXR1
cm4gdGhlIGZvY3VzZWQgZWxlbWVudCBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiBzaGFkb3cg
cm9vdCBpcyBjbG9zZWQuIAorUEFTUyBTaGFkb3dSb290Lmhvc3QgbXVzdCByZXR1cm4gdGhlIHNo
YWRvdyBob3N0IG9mIHRoZSBjb250ZXh0IG9iamVjdC4gCitQQVNTIFNoYWRvd1Jvb3QuaW5uZXJI
VE1MIG11c3QgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIEhUTUwgZnJhZ21lbnQgc2VyaWFsaXph
dGlvbiBhbGdvcml0aG0gd2hlbiBzaGFkb3cgcm9vdCBpcyBvcGVuLiAKK1BBU1MgU2hhZG93Um9v
dC5pbm5lckhUTUwgbXVzdCByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgSFRNTCBmcmFnbWVudCBz
ZXJpYWxpemF0aW9uIGFsZ29yaXRobSB3aGVuIHNoYWRvdyByb290IGlzIGNsb3NlZC4gCitQQVNT
IFNoYWRvd1Jvb3QuaW5uZXJIVE1MIG11c3QgcmVwbGFjZSBhbGwgd2l0aCB0aGUgcmVzdWx0IG9m
IGludm9raW5nIHRoZSBmcmFnbWVudCBwYXJzaW5nIGFsZ29yaXRobSB3aGVuIHNoYWRvdyByb290
IGlzIG9wZW4uIAorUEFTUyBTaGFkb3dSb290LmlubmVySFRNTCBtdXN0IHJlcGxhY2UgYWxsIHdp
dGggdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZnJhZ21lbnQgcGFyc2luZyBhbGdvcml0aG0g
d2hlbiBzaGFkb3cgcm9vdCBpcyBjbG9zZWQuIAorRkFJTCBTaGFkb3dSb290LmlubmVySFRNTCBt
dXN0IHJlcGxhY2UgYWxsIHdpdGggdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZnJhZ21lbnQg
cGFyc2luZyBhbGdvcml0aG0gd2hlbiBzaGFkb3cgcm9vdCBpcyBvcGVuLiB1bmRlZmluZWQgaXMg
bm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnc2hhZG93Um9vdC5zdHlsZVNoZWV0cy5sZW5ndGgn
KQorRkFJTCBTaGFkb3dSb290LmlubmVySFRNTCBtdXN0IHJlcGxhY2UgYWxsIHdpdGggdGhlIHJl
c3VsdCBvZiBpbnZva2luZyB0aGUgZnJhZ21lbnQgcGFyc2luZyBhbGdvcml0aG0gd2hlbiBzaGFk
b3cgcm9vdCBpcyBjbG9zZWQuIHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5n
ICdzaGFkb3dSb290LnN0eWxlU2hlZXRzLmxlbmd0aCcpCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zaGFkb3ctZG9tL1NoYWRvd1Jvb3QtaW50ZXJmYWNlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJiZmE2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9TaGFkb3dSb290LWludGVyZmFjZS5odG1sCkBAIC0wLDAg
KzEsMTEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+U2hhZG93
IERPTTogU2hhZG93Um9vdCBpbnRlcmZhY2U8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0
aXRsZT0iUnlvc3VrZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0
YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9IlNoYWRvd1Jvb3QgaW50ZXJmYWNlIGFuZCBpdHMgYXR0
cmlidXRlcyBtdXN0IGJlIGRlZmluZWQiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jdGhlLXNoYWRvd3Jvb3Qt
aW50ZXJmYWNlIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J2h0dHBzOi8vc3Zu
LndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmsvTGF5b3V0VGVzdHMvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmNzcyc+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+
Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRfdHJ1ZSgnU2hhZG93
Um9vdCcgaW4gd2luZG93LCAnIlNoYWRvd1Jvb3QiIGV4aXN0cyBvbiB3aW5kb3cnKTsKK30sICdD
aGVjayB0aGUgZXhpc3RlbmNlIG9mIFNoYWRvd1Jvb3QgaW50ZXJmYWNlJyk7CisKK3Rlc3QoZnVu
Y3Rpb24gKCkgeworICAgIGFzc2VydF9lcXVhbHMoU2hhZG93Um9vdC5wcm90b3R5cGUuX19wcm90
b19fLCBEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSwgJ1NoYWRvd1Jvb3QgbXVzdCBpbmhlcml0
IGZyb20gRG9jdW1lbnRGcmFnbWVudCcpOworfSwgJ1NoYWRvd1Jvb3QgbXVzdCBpbmhlcml0IGZy
b20gRG9jdW1lbnRGcmFnbWVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRf
dGhyb3dzKHsnbmFtZSc6ICdUeXBlRXJyb3InfSwgZnVuY3Rpb24gKCkgeyBuZXcgU2hhZG93Um9v
dCgpOyB9LCAnbmV3IFNoYWRvd1Jvb3QoKSBtdXN0IHRocm93IGEgVHlwZUVycm9yJyk7Cit9LCAn
U2hhZG93Um9vdCBtdXN0IG5vdCBiZSBhIGNvbnN0cnVjdG9yJyk7CisKK2Z1bmN0aW9uIHRlc3RB
Y3RpdmVFbGVtZW50KG1vZGUpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdmFy
IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChob3N0KTsKKyAgICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBob3N0LmF0
dGFjaFNoYWRvdyh7J21vZGUnOiBtb2RlfSk7CisgICAgICAgIHNoYWRvd1Jvb3QuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBudWxsLCAnU2hhZG93Um9vdC5ob3N0IG11c3Qg
cmV0dXJuIG51bGwgaWYgYW4gJyArIG1vZGUgKyAnIHNoYWRvdyB0cmVlIGRvZXMgbm90IGhhdmUg
YSBmb2N1c2VkIGVsZW1lbnQnKTsKKyAgICAgICAgc2hhZG93Um9vdC5maXJzdENoaWxkLmZvY3Vz
KCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5hY3RpdmVFbGVtZW50LCBzaGFk
b3dSb290LmZpcnN0Q2hpbGQsICdTaGFkb3dSb290Lmhvc3QgbXVzdCByZXR1cm4gdGhlIGZvY3Vz
ZWQgZWxlbWVudCBvZiBhbiAnICsgbW9kZSArICcgc2hhZG93IHRyZWUnKTsKKyAgICAgICAgaG9z
dC5yZW1vdmUoKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmFjdGl2ZUVsZW1l
bnQsIG51bGwsICdTaGFkb3dSb290Lmhvc3QgbXVzdCByZXR1cm4gbnVsbCBpZiBhbiAnICsgbW9k
ZSArICcgc2hhZG93IHRyZWUgbG9zdCBmb2N1cycpOworICAgIH0sICdTaGFkb3dSb290LmFjdGl2
ZUVsZW1lbnQgbXVzdCByZXR1cm4gdGhlIGZvY3VzZWQgZWxlbWVudCBvZiB0aGUgY29udGV4dCBv
YmplY3Qgd2hlbiBzaGFkb3cgcm9vdCBpcyAnICsgbW9kZSArICcuJyk7Cit9CisKK3Rlc3RBY3Rp
dmVFbGVtZW50KCdvcGVuJyk7Cit0ZXN0QWN0aXZlRWxlbWVudCgnY2xvc2VkJyk7CisKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIHZhciBob3N0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIGFzc2VydF9lcXVhbHMoaG9zdDEuYXR0YWNoU2hhZG93KHsnbW9kZSc6ICdvcGVu
J30pLmhvc3QsIGhvc3QxLCAnU2hhZG93Um9vdC5ob3N0IG11c3QgcmV0dXJuIHRoZSBzaGFkb3cg
aG9zdCBvZiBhbiBvcGVuIHNoYWRvdyB0cmVlJykKKworICAgIHZhciBob3N0MiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGFzc2VydF9lcXVhbHMoaG9zdDIuYXR0YWNoU2hh
ZG93KHsnbW9kZSc6ICdjbG9zZWQnfSkuaG9zdCwgaG9zdDIsICdTaGFkb3dSb290Lmhvc3QgbXVz
dCByZXR1cm4gdGhlIHNoYWRvdyBob3N0IG9mIGEgY2xvc2VkIHNoYWRvdyB0cmVlJyk7Cit9LCAn
U2hhZG93Um9vdC5ob3N0IG11c3QgcmV0dXJuIHRoZSBzaGFkb3cgaG9zdCBvZiB0aGUgY29udGV4
dCBvYmplY3QuJyk7CisKK2Z1bmN0aW9uIHRlc3RJbm5lckhUTUwobW9kZSkgeworICAgIHRlc3Qo
ZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9k
ZSc6IG1vZGV9KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmlubmVySFRNTCwg
JycsICdTaGFkb3dSb290LmlubmVySFRNTCBtdXN0IGJlIGFuIGVtcHR5IHN0cmluZyB3aGVuIHRo
ZSBzaGFkb3cgcm9vdCBkb2VzIG5vdCBoYXZlIGFueSBjaGlsZHJlbicpOworCisgICAgICAgIHNo
YWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hlbGxvJykpOwor
ICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuaW5uZXJIVE1MLCAnaGVsbG8nLCAnU2hh
ZG93Um9vdC5pbm5lckhUTUwgbXVzdCBzZXJpYWxpemUgYSB0ZXh0IG5vZGUgY2hpbGQnKTsKKwor
ICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Nw
YW4nKSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5pbm5lckhUTUwsICdoZWxs
bzxzcGFuPjwvc3Bhbj4nLCAnU2hhZG93Um9vdC5pbm5lckhUTUwgbXVzdCBzZXJpYWxpemUgYSBI
VE1MIGVsZW1lbnQgY2hpbGQnKTsKKyAgICB9LCAnU2hhZG93Um9vdC5pbm5lckhUTUwgbXVzdCBy
ZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgSFRNTCBmcmFnbWVudCBzZXJpYWxpemF0aW9uIGFsZ29y
aXRobSB3aGVuIHNoYWRvdyByb290IGlzICcgKyBtb2RlICsgJy4nKTsKK30KKwordGVzdElubmVy
SFRNTCgnb3BlbicpOwordGVzdElubmVySFRNTCgnY2xvc2VkJyk7CisKK2Z1bmN0aW9uIHRlc3RT
ZXRJbm5lckhUTUwobW9kZSkgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIg
aG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICB2YXIgc2hhZG93
Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHsnbW9kZSc6IG1vZGV9KTsKKyAgICAgICAgc2hhZG93
Um9vdC5pbm5lckhUTUwgPSAnaGVsbG8nOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jv
b3QuY2hpbGROb2Rlcy5sZW5ndGgsIDEsICdTaGFkb3dSb290LmlubmVySFRNTCA9ICJoZWxsbyIg
bXVzdCBpbnNlcnQgYSBzaW5nbGUgY2hpbGQgKHRleHQgbm9kZSknKTsKKyAgICAgICAgYXNzZXJ0
X3RydWUoc2hhZG93Um9vdC5maXJzdENoaWxkIGluc3RhbmNlb2YgVGV4dCwgJ1RoZSBmaXJzdCBj
aGlsZCBvZiB0aGUgc2hhZG93IHJvb3QgYWZ0ZXIgU2hhZG93Um9vdC5pbm5lckhUTUwgPSAiaGVs
bG8iIG11c3QgYmUgYSBUZXh0IG5vZGUnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dS
b290LmZpcnN0Q2hpbGQuZGF0YSwgJ2hlbGxvJywgJ1RoZSBmaXJzdCBUZXh0IG5vZGUgc2hvdWxk
IGNvbnRhaW4gdGhlIHN0cmluZyAiaGVsbG8iIGFmdGVyIFNoYWRvd1Jvb3QuaW5uZXJIVE1MID0g
ImhlbGxvIicpOworCisgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxiPmhlbGxvPC9i
Pic7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93Um9vdC5jaGlsZE5vZGVzLmxlbmd0aCwg
MSwgJ1NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gIjxiPmhlbGxvPC9iPiIgbXVzdCBpbnNlcnQgYSBz
aW5nbGUgY2hpbGQgKGIpJyk7CisgICAgICAgIGFzc2VydF90cnVlKHNoYWRvd1Jvb3QuZmlyc3RD
aGlsZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50LCAnVGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBzaGFk
b3cgcm9vdCBhZnRlciBTaGFkb3dSb290LmlubmVySFRNTCA9ICI8Yj5oZWxsbzwvYj4iIG11c3Qg
YmUgYSBIVE1MIGVsZW1lbnQnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhzaGFkb3dSb290LmZp
cnN0Q2hpbGQubG9jYWxOYW1lLCAnYicsICdUaGUgbG9jYWwgbmFtZSBvZiB0aGUgc2hhZG93IHJv
b3RcJ3MgZmlyc3QgY2hpbGQgYWZ0ZXIgU2hhZG93Um9vdC5pbm5lckhUTUwgPSAiPGI+aGVsbG88
L2I+IiBtdXN0IGJlICJiIicpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3QuaW5u
ZXJIVE1MLCAnPGI+aGVsbG88L2I+JywgJ1NoYWRvd1Jvb3QuaW5uZXJIVE1MIG11c3QgYmUgIjxi
PmhlbGxvPC9iPiIgYWZ0ZXIgU2hhZG93Um9vdC5pbm5lckhUTUwgPSAiPGI+aGVsbG88L2I+Iicp
OworCisgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJyc7CisgICAgICAgIGFzc2VydF9l
cXVhbHMoc2hhZG93Um9vdC5jaGlsZE5vZGVzLmxlbmd0aCwgMCwgJ1NoYWRvd1Jvb3QuaW5uZXJI
VE1MID0gIiIgbXVzdCByZW1vdmUgYWxsIGl0cyBjaGlsZHJlbicpOworICAgIH0sICdTaGFkb3dS
b290LmlubmVySFRNTCBtdXN0IHJlcGxhY2UgYWxsIHdpdGggdGhlIHJlc3VsdCBvZiBpbnZva2lu
ZyB0aGUgZnJhZ21lbnQgcGFyc2luZyBhbGdvcml0aG0gd2hlbiBzaGFkb3cgcm9vdCBpcyAnICsg
bW9kZSArICcuJyk7Cit9CisKK3Rlc3RTZXRJbm5lckhUTUwoJ29wZW4nKTsKK3Rlc3RTZXRJbm5l
ckhUTUwoJ2Nsb3NlZCcpOworCitmdW5jdGlvbiB0ZXN0U3R5bGVTaGVldHMobW9kZSkgeworICAg
IHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgICAgICB2YXIgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93
KHsnbW9kZSc6IG1vZGV9KTsKKworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3Quc3R5
bGVTaGVldHMubGVuZ3RoLCAwLCAnc2hhZG93Um9vdC5zdHlsZVNoZWV0cyBtdXN0IGJlIGVtcHR5
IHdoZW4gdGhlIHNoYWRvdyByb290IGRvZXMgbm90IGNvbnRhaW4gYW55IHN0eWxlc2hlZXRzJyk7
CisgICAgICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxzcGFuPjwvc3Bhbj48c3R5bGU+IGEu
cnVsZSB7fSA8L3N0eWxlPjxzdHlsZT4gYi5ydWxlIHt9IDwvc3R5bGU+JzsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhzaGFkb3dSb290LnN0eWxlU2hlZXRzLmxlbmd0aCwgMiwgJ3NoYWRvd1Jvb3Qu
c3R5bGVTaGVldHMgbXVzdCBjb250YWluIHR3byBpdGVtcyB3aGVuIHRoZSBzaGFkb3cgcm9vdCBo
YXMgdHdvIHN0eWxlIGVsZW1lbnRzJyk7CisgICAgICAgIHZhciBzdHlsZXMgPSBzaGFkb3dSb290
LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2hhZG93
Um9vdC5zdHlsZVNoZWV0c1swXSwgc3R5bGVzWzBdLnNoZWV0LCAnc2hhZG93Um9vdC5zdHlsZVNo
ZWV0c1swXSBtdXN0IGJlIHRoZSBmaXJzdCBzdHlsZSBlbGVtZW50IGluIHRoZSBzaGFkb3cgcm9v
dCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHNoYWRvd1Jvb3Quc3R5bGVTaGVldHNbMV0sIHN0
eWxlc1sxXS5zaGVldCwgJ3NoYWRvd1Jvb3Quc3R5bGVTaGVldHNbMV0gbXVzdCBiZSB0aGUgc2Vj
b25kIHN0eWxlIGVsZW1lbnQgaW4gdGhlIHNoYWRvdyByb290Jyk7CisgICAgfSwgJ1NoYWRvd1Jv
b3QuaW5uZXJIVE1MIG11c3QgcmVwbGFjZSBhbGwgd2l0aCB0aGUgcmVzdWx0IG9mIGludm9raW5n
IHRoZSBmcmFnbWVudCBwYXJzaW5nIGFsZ29yaXRobSB3aGVuIHNoYWRvdyByb290IGlzICcgKyBt
b2RlICsgJy4nKTsKK30KKwordGVzdFN0eWxlU2hlZXRzKCdvcGVuJyk7Cit0ZXN0U3R5bGVTaGVl
dHMoJ2Nsb3NlZCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctZGlzdHJpYnV0
aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bp
bmctc2hhZG93LWRpc3RyaWJ1dGlvbi1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmU3MDRkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWRpc3RyaWJ1dGlvbi1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICAg
IDxwPlRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBzaW5nbGUgMTAwcHggYnkgMTAwcHggZ3JlZW4g
Ym94IGJlbG93LjwvcD4KKyAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAw
cHg7IGJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWRpc3Ry
aWJ1dGlvbi1pbnZpc2libGUtc2xvdC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1kaXN0cmlidXRpb24taW52aXNpYmxlLXNsb3Qt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzA0ZDI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29w
aW5nLXNoYWRvdy1kaXN0cmlidXRpb24taW52aXNpYmxlLXNsb3QtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0
IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxv
dy48L3A+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNr
Z3JvdW5kOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1kaXN0cmlidXRpb24t
aW52aXNpYmxlLXNsb3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2Nv
cGluZy1zaGFkb3ctZGlzdHJpYnV0aW9uLWludmlzaWJsZS1zbG90Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNiZmI3ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctZGlzdHJpYnV0aW9uLWlu
dmlzaWJsZS1zbG90Lmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDx0aXRsZT5DU1MgU2NvcGluZyAtIGVsZW1lbnRzIHdpdGggYSBkaXN0
cmlidXRpb24gbGlzdCBzaG91bGQgZ2VuZXJhdGUgYm94ZXMgaW4gdGhlIGZvcm1hdHRpbmcgdHJl
ZS48L3RpdGxlPgorICAgIDxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBo
cmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyIvPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jc2VsZWN0b3JzLWRhdGEtbW9k
ZWwiPgorICAgIDxsaW5rIHJlbD0ibWF0Y2giIGhyZWY9InJlZmVyZW5jZS9ncmVlbi1ib3guaHRt
bCIvPgorPC9oZWFkPgorPGJvZHk+CisgICAgPHN0eWxlPgorICAgIG15LWhvc3QgeworICAgICAg
ICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6
IDEwMHB4OworICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgIH0KKyAgICBkaXYgeworICAg
ICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgaGVpZ2h0OiA1MCU7CisgICAgfQorICAgIDwvc3R5
bGU+CisgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBw
eCBncmVlbiBib3ggYmVsb3cuPC9wPiAKKyAgICA8bXktaG9zdD4KKyAgICAgICAgPGRpdiBzbG90
PSJncmVlbiIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgICAgICAgIDxkaXYg
c3R5bGU9ImJhY2tncm91bmQ6IHJlZDsiPkZBSUw8L2Rpdj4KKyAgICAgICAgPGRpdiBzbG90PSJn
cmVlbiIgc3R5bGU9ImJhY2tncm91bmQ6IGdyZWVuOyI+PC9kaXY+CisgICAgPC9teS1ob3N0Pgor
ICAgIDxzY3JpcHQ+CisKKyAgICB0cnkgeworICAgICAgICB2YXIgc2hhZG93SG9zdCA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJ215LWhvc3QnKTsKKyAgICAgICAgc2hhZG93Um9vdCA9IHNoYWRv
d0hvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICAgICAgc2hhZG93Um9vdC5p
bm5lckhUTUwgPSAnPHNsb3QgbmFtZT0iZ3JlZW4iIHN0eWxlPSJib3JkZXI6IHNvbGlkIDUwcHgg
cmVkOyI+PC9zbG90Pic7CisgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZXhjZXB0aW9uKSk7
CisgICAgfQorCisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LWRpc3RyaWJ1dGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1k
aXN0cmlidXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODAy
MTNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1z
Y29waW5nLXNoYWRvdy1kaXN0cmlidXRpb24uaHRtbApAQCAtMCwwICsxLDQwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPkNTUyBTY29waW5nIC0gZWxlbWVu
dHMgd2l0aCBhIGRpc3RyaWJ1dGlvbiBsaXN0IHNob3VsZCBnZW5lcmF0ZSBib3hlcyBpbiB0aGUg
Zm9ybWF0dGluZyB0cmVlLjwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJS
eW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIi8+CisgICAgPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNzZWxl
Y3RvcnMtZGF0YS1tb2RlbCI+CisgICAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0icmVmZXJlbmNl
L2dyZWVuLWJveC5odG1sIi8+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3R5bGU+CisgICAgbXkt
aG9zdCB7CisgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgfQor
ICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICBoZWlnaHQ6IDUwJTsKKyAg
ICB9CisgICAgPC9zdHlsZT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xl
IDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+IAorICAgIDxteS1ob3N0PgorICAg
ICAgICA8ZGl2IHNsb3Q9ImdyZWVuIiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4K
KyAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZDogcmVkOyI+RkFJTDwvZGl2PgorICAgICAg
ICA8ZGl2IHNsb3Q9ImdyZWVuIiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW47Ij48L2Rpdj4KKyAg
ICA8L215LWhvc3Q+CisgICAgPHNjcmlwdD4KKworICAgIHRyeSB7CisgICAgICAgIHZhciBzaGFk
b3dIb3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbXktaG9zdCcpOworICAgICAgICBzaGFk
b3dSb290ID0gc2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgICAg
ICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c2xvdCBuYW1lPSJncmVlbiI+PC9zbG90Pic7Cisg
ICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZXhjZXB0aW9uKSk7CisgICAgfQorCisgICAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3No
YWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXJlbmRlcmluZy1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1yZW5kZXJpbmctZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzA0ZDI0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5n
LXNoYWRvdy1yZW5kZXJpbmctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDcgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEg
c2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+CisgICAgPGRpdiBzdHls
ZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPjwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ct
ZG9tL2Nzcy1zY29waW5nLXNoYWRvdy1yZW5kZXJpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctcmVuZGVyaW5nLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJiMjBkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFkb3ctcmVuZGVyaW5nLmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0
aXRsZT5DU1MgU2NvcGluZyAtIFRoZSBjb250ZW50cyBvZiB0aGUgYWN0aXZlIHNoYWRvdyB0cmVl
IGluc3RlYWQgb2YgdGhlIGRlc2NlbmRhbnRzIG9mIGEgc2hhZG93IGhvc3QgZ2VuZXJhdGUgYm94
ZXM8L3RpdGxlPgorICAgIDxsaW5rIHJlbD0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBOaXdhIiBo
cmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyIvPgorICAgIDxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzLXNjb3BpbmctMS8jc2hhZG93LWRvbSI+CisgICAg
PGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0icmVmZXJlbmNlL2dyZW4tYm94Lmh0bWwiLz4KKzwvaGVh
ZD4KKzxib2R5PgorICAgIDxzdHlsZT4KKyAgICBteS1ob3N0IHsKKyAgICAgICAgZGlzcGxheTog
YmxvY2s7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICB9CisgICAgPC9zdHlsZT4KKyAgICA8cD5UZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xl
IDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48L3A+IAorICAgIDxteS1ob3N0PgorICAg
ICAgICBGQUlMCisgICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7
IGJhY2tncm91bmQ6IHJlZDsiPkZBSUw8L2Rpdj4KKyAgICA8L215LWhvc3Q+CisgICAgPHNjcmlw
dD4KKworICAgIHRyeSB7CisgICAgICAgIHZhciBzaGFkb3dIb3N0ID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignbXktaG9zdCcpOworICAgICAgICBzaGFkb3dSb290ID0gc2hhZG93SG9zdC5hdHRh
Y2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgICAgICBzaGFkb3dSb290LmlubmVySFRNTCA9
ICc8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kOiBncmVl
bjsiPjwvZGl2Pic7CisgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZXhjZXB0aW9uKSk7Cisg
ICAgfQorCisgICAgPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9jc3Mtc2NvcGluZy1zaGFk
b3ctd2l0aC1ydWxlcy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmU3MDRkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVsZXMtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKyAgICA8cD5UZXN0IHBh
c3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48
L3A+CisgICAgPGRpdiBzdHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kOiBncmVlbjsiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNoYWRvdy13aXRoLXJ1bGVzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vY3NzLXNjb3Bpbmctc2hhZG93LXdpdGgtcnVs
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDVhNDAzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL2Nzcy1zY29waW5nLXNo
YWRvdy13aXRoLXJ1bGVzLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5DU1MgU2NvcGluZyAtIGEgc2VsZWN0b3IgaW5zaWRl
IGEgc2hhZG93IHRyZWUgaXMgbWF0Y2hlZCBhZ2FpbnN0IG5vZGVzIGluIHRoZSBzaGFkb3cgdHJl
ZTwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhy
ZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIi8+CisgICAgPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3Mtc2NvcGluZy0xLyNzZWxlY3RvcnMtZGF0YS1tb2Rl
bCI+CisgICAgPGxpbmsgcmVsPSJtYXRjaCIgaHJlZj0icmVmZXJlbmNlL2dyZWVuLWJveC5odG1s
Ii8+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c3R5bGU+CisgICAgbXktaG9zdCB7CisgICAgICAg
IGRpc3BsYXk6IGJsb2NrOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgfQorICAgIGRpdiB7CisgICAgICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEw
MCU7IGJhY2tncm91bmQ6IHJlZDsKKyAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8cD5UZXN0IHBh
c3NlcyBpZiB5b3Ugc2VlIGEgc2luZ2xlIDEwMHB4IGJ5IDEwMHB4IGdyZWVuIGJveCBiZWxvdy48
L3A+IAorICAgIDxteS1ob3N0PgorICAgICAgICA8ZGl2PkZBSUw8L2Rpdj4KKyAgICA8L215LWhv
c3Q+CisgICAgPHNjcmlwdD4KKworICAgIHRyeSB7CisgICAgICAgIHZhciBzaGFkb3dIb3N0ID0g
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbXktaG9zdCcpOworICAgICAgICBzaGFkb3dSb290ID0g
c2hhZG93SG9zdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30pOworICAgICAgICBzaGFkb3dS
b290LmlubmVySFRNTCA9ICc8ZGl2PkZBSUw8L2Rpdj48c3R5bGU+IGRpdiB7d2lkdGg6IDEwMHB4
OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsgY29sb3I6Z3JlZW47IH0gPC9zdHls
ZT4nOworICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGV4Y2VwdGlvbikpOworICAgIH0KKwor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAy
OTU3N2U1Li41ZDZmYWM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQyMyw2ICs0MjMsNyBA
QCBzZXQoV2ViQ29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGRvbS9SYW5nZS5pZGwKICAgICBk
b20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsCiAgICAgZG9tL1NlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uRXZlbnQuaWRsCisgICAgZG9tL1NoYWRvd1Jvb3QuaWRsCiAgICAgZG9tL1N0
cmluZ0NhbGxiYWNrLmlkbAogICAgIGRvbS9UZXh0LmlkbAogICAgIGRvbS9UZXh0RXZlbnQuaWRs
CkBAIC01MDgsNiArNTA5LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19JRExfRklMRVMKICAgICBo
dG1sL0hUTUxRdW90ZUVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5pZGwK
ICAgICBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmlkbAorICAgIGh0bWwvSFRNTFNsb3RFbGVtZW50
LmlkbAogICAgIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MU3BhbkVs
ZW1lbnQuaWRsCiAgICAgaHRtbC9IVE1MU3R5bGVFbGVtZW50LmlkbApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCmluZGV4IDJlNWY2MTAuLjEyNmJjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5jcHAKQEAgLTIzMiw2ICsyMzIsNyBAQAogI2luY2x1ZGUgIkpTSFRNTFF1b3RlRWxlbWVudC5j
cHAiCiAjaW5jbHVkZSAiSlNIVE1MU2NyaXB0RWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiSlNIVE1M
U2VsZWN0RWxlbWVudC5jcHAiCisjaW5jbHVkZSAiSlNIVE1MU2xvdEVsZW1lbnQuY3BwIgogI2lu
Y2x1ZGUgIkpTSFRNTFNvdXJjZUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkpTSFRNTFNwYW5FbGVt
ZW50LmNwcCIKICNpbmNsdWRlICJKU0hUTUxTdHlsZUVsZW1lbnQuY3BwIgpAQCAtMzEzLDEyICsz
MTQsNiBAQAogI2luY2x1ZGUgIkpTUmVjdC5jcHAiCiAjaW5jbHVkZSAiSlNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNSR0JDb2xvci5jcHAiCi0jaW5jbHVk
ZSAiSlNTY3JlZW4uY3BwIgotI2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZS5jcHAiCi0jaW5jbHVk
ZSAiSlNTY3JpcHRQcm9maWxlTm9kZS5jcHAiCi0jaWYgRU5BQkxFKENTUF9ORVhUKQotI2luY2x1
ZGUgIkpTU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5jcHAiCi0jZW5kaWYKICNpbmNsdWRl
ICJKU1NRTEVycm9yLmNwcCIKICNpbmNsdWRlICJKU1NRTEV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVk
ZSAiSlNTUUxSZXN1bHRTZXQuY3BwIgpAQCAtMzI5LDYgKzMyNCwxMyBAQAogI2luY2x1ZGUgIkpT
U1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNTUUxUcmFuc2FjdGlvbkVy
cm9yQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTU1ZHQUVsZW1lbnQuY3BwIgorI2luY2x1ZGUg
IkpTU2NyZWVuLmNwcCIKKyNpbmNsdWRlICJKU1NjcmlwdFByb2ZpbGUuY3BwIgorI2luY2x1ZGUg
IkpTU2NyaXB0UHJvZmlsZU5vZGUuY3BwIgorI2lmIEVOQUJMRShDU1BfTkVYVCkKKyNpbmNsdWRl
ICJKU1NlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQuY3BwIgorI2VuZGlmCisjaW5jbHVkZSAi
SlNTaGFkb3dSb290LmNwcCIKICNpbmNsdWRlICJKU1N0b3JhZ2UuY3BwIgogI2luY2x1ZGUgIkpT
U3RvcmFnZUVycm9yQ2FsbGJhY2suY3BwIgogI2luY2x1ZGUgIkpTU3RvcmFnZUV2ZW50LmNwcCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDkxY2M2MjIuLjY1NTY4NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMzE5LDYgKzMxOSw3IEBAIE5PTl9TVkdfQklO
RElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1JhbmdlLmlkbCBcCiAgICAgJChXZWJD
b3JlKS9kb20vUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNv
cmUpL2RvbS9TZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmlkbCBcCisgICAgJChXZWJDb3Jl
KS9kb20vU2hhZG93Um9vdC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1N0cmluZ0NhbGxiYWNr
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vVGV4dC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9t
L1RleHRFdmVudC5pZGwgXApAQCAtMzk5LDYgKzQwMCw3IEBAIE5PTl9TVkdfQklORElOR19JRExT
ID0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmlkbCBcCiAgICAgJChX
ZWJDb3JlKS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9odG1sL0hUTUxTbG90RWxl
bWVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU291cmNlRWxlbWVudC5pZGwgXAog
ICAgICQoV2ViQ29yZSkvaHRtbC9IVE1MU3BhbkVsZW1lbnQuaWRsIFwKICAgICAkKFdlYkNvcmUp
L2h0bWwvSFRNTFN0eWxlRWxlbWVudC5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggZDMxY2JmMi4uOWI1NTc5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0yOTUyLDYg
KzI5NTIsMjAgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1MU2xvdEVsZW1lbnQuY3BwIj4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBs
YXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0hUTUxT
b3VyY2VFbGVtZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CkBAIC0xNjkzMCw2ICsxNjk0NCwyMCBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4
NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNlbGVjdEVsZW1lbnRXaW4uY3BwIiAvPgorICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MU2xvdEVsZW1lbnQuY3BwIj4KKyAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdE
ZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNvdXJjZUVsZW1lbnQu
Y3BwIj4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTIy
Mjg0LDYgKzIyMzEyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFF1
b3RlRWxlbWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MU2Ny
aXB0RWxlbWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MU2Vs
ZWN0RWxlbWVudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MU2xv
dEVsZW1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNvdXJj
ZUVsZW1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNwYW5F
bGVtZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxTdHlsZUVs
ZW1lbnQuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCAxNzVhOTM5Li5mOGQ0ODRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0
ZXJzCkBAIC0zODg4LDYgKzM4ODgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRt
bFxIVE1MU2VsZWN0RWxlbWVudFdpbi5jcHAiPgogICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxT
bG90RWxlbWVudFdpbi5jcHAiPgorICAgICAgPEZpbHRlcj5odG1sPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxTb3VyY2VFbGVt
ZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmh0bWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
QEAgLTU0OTQsNiArNTQ5Nyw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqJChQbGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNIVE1MU2VsZWN0RWxlbWVudC5jcHAiPgogICAgICAgPEZpbHRlcj5E
ZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNoaXRlY3R1
cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRNTFNsb3RFbGVtZW50LmNwcCI+
CisgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqJChQ
bGF0Zm9ybUFyY2hpdGVjdHVyZSlcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIVE1M
U291cmNlRWxlbWVudC5jcHAiPgogICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTEwNDgsNiArMTEwNTQsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MU2VsZWN0RWxlbWVudC5oIj4KICAgICAgIDxGaWx0ZXI+
aHRtbDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caHRtbFxIVE1MU2xvdEVsZW1lbnQuaCI+CisgICAgICA8RmlsdGVyPmh0bWw8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGh0bWxcSFRNTFNv
dXJjZUVsZW1lbnQuaCI+CiAgICAgICA8RmlsdGVyPmh0bWw8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KQEAgLTEyODc0LDYgKzEyODgzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmokKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKVwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0hUTUxTZWxlY3RFbGVtZW50LmgiPgogICAgICAgPEZp
bHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iaiQoUGxhdGZvcm1BcmNo
aXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTSFRNTFNsb3RFbGVtZW50
LmgiPgorICAgICAgPEZpbHRlcj5EZXJpdmVkU291cmNlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
aiQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
SFRNTFNvdXJjZUVsZW1lbnQuaCI+CiAgICAgICA8RmlsdGVyPkRlcml2ZWRTb3VyY2VzPC9GaWx0
ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTRlYzg1YS4uMjYyYWY5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzg0Myw2
ICszODQzLDEwIEBACiAJCTlCNDE3MDY1MTI1NjYyQjMwMDZCMjhGQyAvKiBBcHBseUJsb2NrRWxl
bWVudENvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFu
ZC5jcHAgKi87IH07CiAJCTlCNTBCMURFMTdDRDRDMEYwMDg3RjYzQyAvKiBGb3JtTmFtZWRJdGVt
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjUwQjFE
QzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5hbWVkSXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTlCNTVFRUU5MUIzRTg4OTgwMDUzNDJCQyAv
KiBFZGl0b3JDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCNTVFRUU4MUIzRTg4OTgwMDUzNDJCQyAvKiBFZGl0b3JDb2NvYS5tbSAqLzsgfTsK
KwkJOUI2OUQzQjQxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCMjFCOThGRkU5
MDBFMzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmNwcCAqLzsgfTsKKwkJOUI2OUQzQjUxQjk4RkZF
OTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2OUQzQjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90
RWxlbWVudC5oICovOyB9OworCQk5QjY5RDNCODFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xv
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUI2OUQzQjYxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmNwcCAqLzsg
fTsKKwkJOUI2OUQzQjkxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjY5RDNCNzFCOTkx
MDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQuaCAqLzsgfTsKIAkJOUI2QzQxNTMxMzQ0
OTQ5MDAwMDg1QjYyIC8qIFN0cmluZ1dpdGhEaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCNkM0MTUyMTM0NDk0OTAwMDA4NUI2MiAvKiBT
dHJpbmdXaXRoRGlyZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOUJBMjczRjQxNzIyMDZCQjAwOTdDRTQ3IC8qIExvZ2ljYWxTZWxlY3Rp
b25PZmZzZXRDYWNoZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlCQTI3M0YzMTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0
Q2FjaGVzLmggKi87IH07CiAJCTlCQUI2QzZDMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQUI2
QzZBMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg1NCw2ICszODU4LDggQEAKIAkJOUJE
MEJGOTMxMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDBCRjkxMTJBNDJCRjUwMDcyRkQ0
MyAvKiBTY29wZWRFdmVudFF1ZXVlLmggKi87IH07CiAJCTlCRDBCRjk0MTJBNDJCRjUwMDcyRkQ0
MyAvKiBTY29wZWRFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlCRDBCRjkyMTJBNDJCRjUwMDcyRkQ0MyAvKiBTY29wZWRFdmVudFF1
ZXVlLmNwcCAqLzsgfTsKIAkJOUJEOEE5NUExOEJFRkM3NjAwOTg3RTlBIC8qIENvbGxlY3Rpb25J
bmRleENhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlCRDhBOTU5MThCRUZDNzYwMDk4N0U5QSAvKiBDb2xsZWN0aW9uSW5kZXhDYWNoZS5jcHAg
Ki87IH07CisJCTlCREE2NEQ3MUI5NzVDRTUwMDlDNDM4NyAvKiBKU1NoYWRvd1Jvb3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2QkM5NjAxQjk3
NTk2NjAwNUFFMUYwIC8qIEpTU2hhZG93Um9vdC5jcHAgKi87IH07CisJCTlCREE2NEQ4MUI5NzVD
RjIwMDlDNDM4NyAvKiBKU1NoYWRvd1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDlCNkJDOTYxMUI5NzU5NjYwMDVBRTFGMCAvKiBKU1NoYWRvd1Jv
b3QuaCAqLzsgfTsKIAkJOUJGOUE4ODAxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUJGOUE4N0UxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24uY3BwICovOyB9OwogCQk5QkY5QTg4MTE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUJGOUE4N0YxNjQ4REQyRjAwMUM2QjIzIC8qIEpTSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJOUQ2MzgwMTAxQUYxNzMyMjAwMzFBMTVDIC8qIFN0
eWxlU2VsZkFsaWdubWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlENjM4MDBGMUFGMTZFMTYwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1l
bnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTExMjI0LDYgKzExMjMwLDcgQEAKIAkJOUE1MjhFODIxN0Q3RjUyRjAwQUE5NTE4IC8qIEZs
b2F0aW5nT2JqZWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbG9hdGlu
Z09iamVjdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUFCMUYzN0UxOEUyNDg5
QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5QUIxRjM3RjE4RTI0ODlBMDA1MzQ3NDMgLyogQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJOUIxOUI2N0UxQjk2NEU1MjAwMzQ4NzQ1IC8qIFNoYWRvd1Jvb3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFNoYWRvd1Jvb3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYzRjIgLyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIwN0IxNjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMjRERThDMTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJ
RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQkRJRWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMzYsNiArMTEyNDMsMTMgQEAK
IAkJOUI1MEIxREMxN0NENEMwRjAwODdGNjNDIC8qIEZvcm1OYW1lZEl0ZW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9ybU5hbWVkSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QjU1RUVFODFCM0U4ODk4MDA1MzQyQkMgLyogRWRpdG9yQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0b3JDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1NUVFRUExQjNGM0ZFRjAwNTM0MkJDIC8q
IEVkaXRvckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckNvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTlCNjlEM0IxMUI5OEZGMEEwMEUzNTEyQiAvKiBIVE1MU2xvdEVs
ZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxTbG90RWxlbWVudC5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNjlEM0IyMUI5OEZGRTkwMEUzNTEyQiAvKiBI
VE1MU2xvdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTFNsb3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUI2OUQz
QjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIVE1MU2xvdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUI2OUQzQjYxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTSFRNTFNsb3RFbGVtZW50
LmNwcDsgcGF0aCA9ICJKU0hUTUxTbG90RWxlbWVudC5jcHAiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5QjY5RDNCNzFCOTkxMDA3MDBFMzUxMkIgLyogSlNIVE1MU2xvdEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNIVE1MU2xvdEVsZW1lbnQuaDsg
cGF0aCA9ICJKU0hUTUxTbG90RWxlbWVudC5oIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUI2QkM5NjAxQjk3NTk2NjAwNUFFMUYwIC8qIEpTU2hhZG93Um9vdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NoYWRvd1Jvb3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5QjZCQzk2MTFCOTc1OTY2MDA1QUUxRjAgLyogSlNTaGFkb3dS
b290LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2hhZG93Um9vdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjZDNDE1MjEzNDQ5NDkwMDAwODVCNjIgLyog
U3RyaW5nV2l0aERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJpbmdXaXRoRGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCQTI3
M0YzMTcyMjA2QkIwMDk3Q0U0NyAvKiBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNo
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJBQjZDNkExMjU1MDYzMTAwMTYy
NkQ0IC8qIEVkaXRpbmdTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
ZGl0aW5nU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NTExLDYgKzE4
NTI1LDkgQEAKIAkJCQlBODEzNjlCRDA5NzM3NEY1MDBENzQ0NjMgLyogSFRNTFNlbGVjdEVsZW1l
bnQuY3BwICovLAogCQkJCUE4MTM2OUJDMDk3Mzc0RjUwMEQ3NDQ2MyAvKiBIVE1MU2VsZWN0RWxl
bWVudC5oICovLAogCQkJCTg1NTU0Mjk5MEFBNDkzODgwMEJBODlGMiAvKiBIVE1MU2VsZWN0RWxl
bWVudC5pZGwgKi8sCisJCQkJOUI2OUQzQjExQjk4RkYwQTAwRTM1MTJCIC8qIEhUTUxTbG90RWxl
bWVudC5pZGwgKi8sCisJCQkJOUI2OUQzQjIxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxl
bWVudC5jcHAgKi8sCisJCQkJOUI2OUQzQjMxQjk4RkZFOTAwRTM1MTJCIC8qIEhUTUxTbG90RWxl
bWVudC5oICovLAogCQkJCUU0NDYxMzk1MENENjMzMTAwMEZBREE3NSAvKiBIVE1MU291cmNlRWxl
bWVudC5jcHAgKi8sCiAJCQkJRTQ0NjEzOTYwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxTb3VyY2VF
bGVtZW50LmggKi8sCiAJCQkJRTQ0NjEzOTcwQ0Q2MzMxMDAwRkFEQTc1IC8qIEhUTUxTb3VyY2VF
bGVtZW50LmlkbCAqLywKQEAgLTE5MjcyLDYgKzE5Mjg5LDggQEAKIAkJQTgzQjc5MDgwQ0NBRkYy
QjAwMEIwODI1IC8qIEhUTUwgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTlCNjlEM0I2MUI5OTEwMDcwMEUzNTEyQiAvKiBKU0hUTUxTbG90RWxlbWVudC5j
cHAgKi8sCisJCQkJOUI2OUQzQjcxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RFbGVtZW50
LmggKi8sCiAJCQkJMzFBNzk1QzQxODg4QkFEMTAwMzgyRjkwIC8qIEpTQU5HTEVJbnN0YW5jZWRB
cnJheXMuY3BwICovLAogCQkJCTMxQTc5NUM1MTg4OEJBRDEwMDM4MkY5MCAvKiBKU0FOR0xFSW5z
dGFuY2VkQXJyYXlzLmggKi8sCiAJCQkJQkU4RUYwM0UxNzFDOEZGOTAwOUI0OEMzIC8qIEpTQXVk
aW9UcmFjay5jcHAgKi8sCkBAIC0yMDAyOCw2ICsyMDA0Nyw4IEBACiAJCQkJRTRCNDIzODYwQ0JG
QjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5oICovLAogCQkJCTQ5OThBRUNCMTNGOUQ2
QzkwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmNwcCAqLywKIAkJ
CQk0OTk4QUVDQzEzRjlENkM5MDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFjay5oICovLAorCQkJCTlCNkJDOTYwMUI5NzU5NjYwMDVBRTFGMCAvKiBKU1NoYWRvd1Jvb3Qu
Y3BwICovLAorCQkJCTlCNkJDOTYxMUI5NzU5NjYwMDVBRTFGMCAvKiBKU1NoYWRvd1Jvb3QuaCAq
LywKIAkJCQk2NURGMzFFRjA5RDFDQzYwMDAwQkUzMjUgLyogSlNUZXh0LmNwcCAqLywKIAkJCQk2
NURGMzFGMDA5RDFDQzYwMDAwQkUzMjUgLyogSlNUZXh0LmggKi8sCiAJCQkJRDc2MTNBQzIxNDc1
M0U1NjAwREI4NjA2IC8qIEpTV2ViS2l0TmFtZWRGbG93LmNwcCAqLywKQEAgLTIzNTQyLDYgKzIz
NTYzLDcgQEAKIAkJCQlFNDUzMjJBQTE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5o
ICovLAogCQkJCUE2RDE2OTYxMTM0NkI0OUIwMDBFQjc3MCAvKiBTaGFkb3dSb290LmNwcCAqLywK
IAkJCQlBNkQxNjk2MzEzNDZCNEMxMDAwRUI3NzAgLyogU2hhZG93Um9vdC5oICovLAorCQkJCTlC
MTlCNjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLywKIAkJCQkzMTc0MUFB
QjE2NjM1RTQ1MDA4QTVCN0UgLyogU2ltdWxhdGVkQ2xpY2tPcHRpb25zLmggKi8sCiAJCQkJRDAx
QTI3QUIxMEM5QkZEODAwMDI2QTQyIC8qIFNwYWNlU3BsaXRTdHJpbmcuY3BwICovLAogCQkJCUQw
MUEyN0FDMTBDOUJGRDgwMDAyNkE0MiAvKiBTcGFjZVNwbGl0U3RyaW5nLmggKi8sCkBAIC0yNjQy
NSw2ICsyNjQ0Nyw3IEBACiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFBy
aW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUE1NzRGMjkxMzFEQjk2RDAwNDcxQjg4IC8q
IFF1b3Rlc0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTcyMEQwMEJGMjIwMDcxQjc4
MiAvKiBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTlCNjlE
M0I1MUI5OEZGRTkwMEUzNTEyQiAvKiBIVE1MU2xvdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1NUIzRENDMTI1MUYxMkQwMDNFRjI2OSAvKiBSYWRpb0lucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjY1OEZGQTYxNTIyRUZBQTAwREQ1NTk1IC8qIFJhZGlvTm9kZUxpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRjE5OTE4MDgyNDVFNTkwMDFFOUFCQyAvKiBSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yNjQ1Miw2ICsyNjQ3NSw3IEBACiAJCQkJOTMzMDlFMDEwOTlFNjQ5
MjAwNTZFNTgxIC8qIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDA2QzBEOEYwQ0ZEMTE0NjAwNjVGNDNGIC8qIFJlbW92ZUZvcm1hdENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5RTA1MDk5RTY0OTIwMDU2RTU4MSAvKiBSZW1vdmVOb2RlQ29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOUJEQTY0RDgxQjk3NUNGMjAwOUM0Mzg3IC8qIEpT
U2hhZG93Um9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFMDcwOTlFNjQ5MjAwNTZFNTgx
IC8qIFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCNTlFRDIzQjE4MjcyNjc5MDA2RDU2NEMgLyogUmVuZGVyQW5jZXN0b3JJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NENDk0Q0QxQTg2RUIxRDAwMEE4N0VDIC8qIFJlbmRlckF0
dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc0OTQsNiArMjc1MTgsNyBAQAogCQkJCTVE
MjFBODAzMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIxMEI2OTgwMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjEwQjY5ODIxNDBDMTc0MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOUI2OUQzQjkxQjk5MTAwNzAwRTM1MTJCIC8qIEpTSFRNTFNsb3RF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgyMDMxMDEzOTVBQ0U3MDBGOTU2QzYgLyog
V2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOTFDOUZDMzFCNjU5QTY3
MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
NTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yODY4NCw2ICsyODcwOSw3IEBACiAJCQkJRkJDMjIwREYxMjM3RkJFQjAwQkNGNzg4IC8q
IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk2QUJBNDIz
MTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMkVEOTc3MTBCMUY1NUNFMDAyNTdEMEYgLyogR3JhcGhpY3NDb250
ZXh0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUI2OUQzQjgxQjk5MTAwNzAwRTM1MTJCIC8q
IEpTSFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzdCNDA0MEIyMkYz
N0MwMDA0QkVDNiAvKiBHcmFwaGljc0NvbnRleHRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkw
RjU4MEIwQzBGMTJBMjY5MDA1MUQ2ODkgLyogR3JhcGhpY3NMYXllci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0OTlCM0VENjEyOENEMzE0MDBFNzI2QzIgLyogR3JhcGhpY3NMYXllckNBLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjg4MTUsNiArMjg4NDEsNyBAQAogCQkJCUQ2NjgxN0ZBMTY2RkU2
RDcwMEZBMDdCNCAvKiBIVE1MVGVtcGxhdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE4MTM2OUQ3MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTlCQzZDMjFDMTNDQ0M5N0IwMDhFMDMzNyAvKiBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QjY5RDNCNDFCOThGRkU5MDBF
MzUxMkIgLyogSFRNTFNsb3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzI5
MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MVGl0bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3N0IzODc3MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3MDc1NjhCMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5NjYsNiArMjg5OTMsNyBAQAogCQkJCTJFMkQ5OUNE
MTBFMkJCREEwMDQ5NjMzNyAvKiBKU0Jsb2IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODkzMURF
NUIxNEM0NEM0NDAwMERDOUQyIC8qIEpTQmxvYkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQ5RTI4NzEwN0Q0REI0MDBCNTc5M0YgLyogSlNDYWxsYmFja0RhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJOUJEQTY0RDcxQjk3NUNFNTAwOUM0Mzg3IC8qIEpTU2hhZG93Um9vdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIzOTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNH
cmFkaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NURGMzIzQjA5RDFERTY1MDAwQkUzMjUg
LyogSlNDYW52YXNQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RUVEMTQyMTA1MTk2
OTQwMDA5OUZBQiAvKiBKU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCmluZGV4IGIwODgzZDQu
LjgyMDBhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiSFRNTExhYmVsRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxNYXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSAiSFRNTFNsb3RFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI5
LDYgKzEzMCwxNyBAQCBFbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldEVsZW1lbnRCeU5h
bWUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBjb25zdAogICAgIH0pOwogfQogCitJbnNl
cnRpb25Qb2ludCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXRTbG90RWxlbWVudEJ5TmFtZShjb25z
dCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0IFRyZWVTY29wZSYgc2NvcGUpIGNvbnN0Cit7
CisgICAgLy8gRklYTUU6IGlzSW5zZXJ0aW9uUG9pbnQgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGlz
PFNsb3RFbGVtZW50PihlbGVtZW50KQorICAgIHJldHVybiBkb3duY2FzdDxJbnNlcnRpb25Qb2lu
dD4oZ2V0KGtleSwgc2NvcGUsIFtdIChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiBrZXksIGNvbnN0
IEVsZW1lbnQmIGVsZW1lbnQpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50LmlzSW5zZXJ0aW9uUG9p
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byYgbmFtZSA9IGVs
ZW1lbnQuZ2V0TmFtZUF0dHJpYnV0ZSgpOworICAgICAgICByZXR1cm4gbmFtZS5pbXBsKCkgPT0g
JmtleSB8fCAobmFtZS5pc051bGwoKSAmJiAma2V5ID09IGVtcHR5QXRvbS5pbXBsKCkpOyAvLyBG
SVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgYSBoYWNrIGZvciBlbXB0eS9udWxsIHN0cmluZyBsaWtl
IHRoaXMuCisgICAgfSkpOworfQorCiBIVE1MTWFwRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFw
OjpnZXRFbGVtZW50QnlNYXBOYW1lKGNvbnN0IEF0b21pY1N0cmluZ0ltcGwmIGtleSwgY29uc3Qg
VHJlZVNjb3BlJiBzY29wZSkgY29uc3QKIHsKICAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE1hcEVs
ZW1lbnQ+KGdldChrZXksIHNjb3BlLCBbXSAoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYga2V5LCBj
b25zdCBFbGVtZW50JiBlbGVtZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRPcmRlcmVkTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmgKaW5kZXggYWYxYjQ4ZS4uMDBkYjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dE9yZGVyZWRNYXAuaApAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRN
TEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxMYWJlbEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxl
bWVudDsKK2NsYXNzIEluc2VydGlvblBvaW50OwogY2xhc3MgVHJlZVNjb3BlOwogCiBjbGFzcyBE
b2N1bWVudE9yZGVyZWRNYXAgewpAQCAtNTAsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZGQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIEVsZW1lbnQmLCBjb25zdCBUcmVlU2NvcGUmKTsK
ICAgICB2b2lkIHJlbW92ZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwgRWxlbWVudCYpOwogICAg
IHZvaWQgY2xlYXIoKTsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX21hcC5p
c0VtcHR5KCk7IH0KIAogICAgIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYp
IGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNTaW5nbGUoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYp
IGNvbnN0OwpAQCAtNTgsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgLy8gY29uY3JldGUgaW5zdGFu
dGlhdGlvbnMgb2YgdGhlIGdldDw+KCkgbWV0aG9kIHRlbXBsYXRlCiAgICAgRWxlbWVudCogZ2V0
RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNv
bnN0OwogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nSW1w
bCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OworICAgIEluc2VydGlvblBvaW50KiBnZXRTbG90
RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwgY29uc3QgVHJlZVNjb3BlJikg
Y29uc3Q7CiAgICAgSFRNTE1hcEVsZW1lbnQqIGdldEVsZW1lbnRCeU1hcE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nSW1wbCYsIGNvbnN0IFRyZWVTY29wZSYpIGNvbnN0OwogICAgIEhUTUxNYXBFbGVt
ZW50KiBnZXRFbGVtZW50QnlMb3dlcmNhc2VkTWFwTmFtZShjb25zdCBBdG9taWNTdHJpbmdJbXBs
JiwgY29uc3QgVHJlZVNjb3BlJikgY29uc3Q7CiAgICAgSFRNTEltYWdlRWxlbWVudCogZ2V0RWxl
bWVudEJ5TG93ZXJjYXNlZFVzZW1hcChjb25zdCBBdG9taWNTdHJpbmdJbXBsJiwgY29uc3QgVHJl
ZVNjb3BlJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZmVhYzk4NC4uMzFkY2Fm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkNs
aWVudFJlY3RMaXN0LmgiCiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNp
bmNsdWRlICJET01Ub2tlbkxpc3QuaCIKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRTaGFyZWRPYmplY3RQb29sLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRWxlbWVudFJhcmVEYXRhLmgiCkBAIC0xMjM1LDYgKzEyMzYsMTIgQEAg
dm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgb2wKICAgICAgICAgICAgIGVsZW1lbnREYXRhKCktPnNldEhh
c05hbWVBdHRyaWJ1dGUoIW5ld1ZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgZWxzZSBpZiAobmFt
ZSA9PSBIVE1MTmFtZXM6OnBzZXVkb0F0dHIpCiAgICAgICAgICAgICBzaG91bGRJbnZhbGlkYXRl
U3R5bGUgfD0gdGVzdFNob3VsZEludmFsaWRhdGVTdHlsZSAmJiBpc0luU2hhZG93VHJlZSgpOwor
ICAgICAgICBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6c2xvdEF0dHIpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYXV0byogc2hhZG93Um9vdCA9IHBhcmVudC0+c2hhZG93Um9vdCgpKQorICAgICAgICAgICAg
ICAgICAgICBzaGFkb3dSb290LT5kaXN0cmlidXRvcigpLmludmFsaWRhdGVEaXN0cmlidXRpb24o
c2hhZG93Um9vdC0+aG9zdCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAog
ICAgIHBhcnNlQXR0cmlidXRlKG5hbWUsIG5ld1ZhbHVlKTsKQEAgLTE2MTMsNyArMTYyMCw2IEBA
IHZvaWQgRWxlbWVudDo6YWRkU2hhZG93Um9vdChSZWY8U2hhZG93Um9vdD4mJiBuZXdTaGFkb3dS
b290KQogCiAgICAgc2hhZG93Um9vdC5zZXRIb3N0KHRoaXMpOwogICAgIHNoYWRvd1Jvb3Quc2V0
UGFyZW50VHJlZVNjb3BlKCZ0cmVlU2NvcGUoKSk7Ci0gICAgc2hhZG93Um9vdC5kaXN0cmlidXRv
cigpLmRpZFNoYWRvd0JvdW5kYXJ5Q2hhbmdlKHRoaXMpOwogCiAgICAgTm9kZVZlY3RvciBwb3N0
SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3Rp
ZmllcigqdGhpcykubm90aWZ5KHNoYWRvd1Jvb3QsIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzKTsKQEAgLTE2NDAsMTQgKzE2NDYsMTQgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFk
b3dSb290KCkKIAogICAgIGVsZW1lbnRSYXJlRGF0YSgpLT5jbGVhclNoYWRvd1Jvb3QoKTsKIAor
ICAgIG9sZFJvb3QtPmRpc3RyaWJ1dG9yKCkuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbih0aGlzKTsK
ICAgICBvbGRSb290LT5zZXRIb3N0KG51bGxwdHIpOwogICAgIG9sZFJvb3QtPnNldFBhcmVudFRy
ZWVTY29wZSgmZG9jdW1lbnQoKSk7CiAKICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoKnRo
aXMpLm5vdGlmeSgqb2xkUm9vdCk7Ci0KLSAgICBvbGRSb290LT5kaXN0cmlidXRvcigpLmludmFs
aWRhdGVEaXN0cmlidXRpb24odGhpcyk7CiB9CiAKKy8vIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5j
dGlvbi4KIFJlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmIChhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290
KCkpCkBAIC0xNjU3LDYgKzE2NjMsNDMgQEAgUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNy
ZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKK1JlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgRGljdGlv
bmFyeSYgZGljdGlvbmFyeSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgU3RyaW5nIG1vZGU7
CisgICAgZGljdGlvbmFyeS5nZXQoIm1vZGUiLCBtb2RlKTsKKyAgICBTaGFkb3dSb290OjpFbmNh
cHN1bGF0aW9uTW9kZSBlbmNhcHN1bGF0aW9uTW9kZSA9IFNoYWRvd1Jvb3Q6OkVuY2Fwc3VsYXRp
b25Nb2RlOjpDbG9zZWQ7CisgICAgaWYgKG1vZGUgPT0gIm9wZW4iKQorICAgICAgICBlbmNhcHN1
bGF0aW9uTW9kZSA9IFNoYWRvd1Jvb3Q6OkVuY2Fwc3VsYXRpb25Nb2RlOjpPcGVuOworICAgIGVs
c2UgaWYgKG1vZGUgIT0gImNsb3NlZCIpIHsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChjYW5IYXZlVXNlckFnZW50U2hh
ZG93Um9vdCgpKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChzaGFkb3dSb290KCkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgYWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQoKSwgU2hhZG93
Um9vdDo6QXV0aG9yU2hhZG93Um9vdCwgZW5jYXBzdWxhdGlvbk1vZGUpKTsKKworICAgIHJldHVy
biBzaGFkb3dSb290KCk7Cit9CisKK1NoYWRvd1Jvb3QqIEVsZW1lbnQ6OmJpbmRpbmdTaGFkb3dS
b290KCkgY29uc3QKK3sKKyAgICBTaGFkb3dSb290KiByb290ID0gc2hhZG93Um9vdCgpOworICAg
IGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKHJvb3QtPnR5cGUo
KSAhPSBTaGFkb3dSb290OjpBdXRob3JTaGFkb3dSb290IHx8IHJvb3QtPmVuY2Fwc3VsYXRpb25N
b2RlKCkgIT0gU2hhZG93Um9vdDo6RW5jYXBzdWxhdGlvbk1vZGU6Ok9wZW4pCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIHJldHVybiByb290OworfQorCiBTaGFkb3dSb290KiBFbGVtZW50
Ojp1c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QKIHsKICAgICBpZiAoU2hhZG93Um9vdCogc2hh
ZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgewpAQCAtMTY2NiwxMSArMTcwOSwxNSBAQCBT
aGFkb3dSb290KiBFbGVtZW50Ojp1c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotU2hhZG93Um9vdCYgRWxlbWVudDo6ZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdCgpCitTaGFkb3dSb290JiBFbGVtZW50OjplbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290
KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGlzdHJpYnV0b3I+JiYgZGlzdHJpYnV0b3IpCiB7Cisg
ICAgQVNTRVJUKGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkpOwogICAgIFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgaWYgKCFzaGFkb3dSb290
KSB7Ci0gICAgICAgIGFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCks
IFNoYWRvd1Jvb3Q6OlVzZXJBZ2VudFNoYWRvd1Jvb3QpKTsKKyAgICAgICAgaWYgKGRpc3RyaWJ1
dG9yKQorICAgICAgICAgICAgYWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1l
bnQoKSwgV1RGOjptb3ZlKGRpc3RyaWJ1dG9yKSkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBhZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBTaGFkb3dSb290
OjpVc2VyQWdlbnRTaGFkb3dSb290KSk7CiAgICAgICAgIHNoYWRvd1Jvb3QgPSB1c2VyQWdlbnRT
aGFkb3dSb290KCk7CiAgICAgICAgIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qoc2hhZG93Um9v
dCk7CiAgICAgfQpAQCAtMTc5NSw4ICsxODQyLDggQEAgdm9pZCBFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgY2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVt
ZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKICAgICB9CiAKLSAgICBpZiAoU2hhZG93
Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkKLSAgICAgICAgc2hhZG93Um9v
dC0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAgIGlmIChTaGFkb3dSb290KiByb290ID0g
c2hhZG93Um9vdCgpKQorICAgICAgICByb290LT5kaXN0cmlidXRvcigpLmludmFsaWRhdGVEaXN0
cmlidXRpb24odGhpcyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoKQpAQCAtMjcxMCw2ICsyNzU3LDggQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgICAgICBjb25zdCBTVkdFbGVt
ZW50JiBjaGlsZEVsZW1lbnQgPSBkb3duY2FzdDxTVkdFbGVtZW50PihjaGlsZCk7CiAgICAgICAg
IHJldHVybiBpczxTVkdTVkdFbGVtZW50PihjaGlsZEVsZW1lbnQpICYmIGNoaWxkRWxlbWVudC5p
c1ZhbGlkKCk7CiAgICAgfQorICAgIGlmIChzaGFkb3dSb290KCkgJiYgIWhhc1NoYWRvd1Jvb3RP
ckFjdGl2ZUluc2VydGlvblBvaW50UGFyZW50KGNoaWxkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBhZTgyN2RkLi40
YTEzZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM4LDcgKzM4LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDbGllbnRSZWN0OwogY2xhc3MgQ2xpZW50UmVjdExpc3Q7CitjbGFz
cyBDb250ZW50RGlzdHJpYnV0b3I7CiBjbGFzcyBEYXRhc2V0RE9NU3RyaW5nTWFwOworY2xhc3Mg
RGljdGlvbmFyeTsKIGNsYXNzIERPTVRva2VuTGlzdDsKIGNsYXNzIEVsZW1lbnRSYXJlRGF0YTsK
IGNsYXNzIEhUTUxEb2N1bWVudDsKQEAgLTI0Nyw4ICsyNDksMTEgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2Rl
Jik7CiAKKyAgICBTaGFkb3dSb290KiBiaW5kaW5nU2hhZG93Um9vdCgpIGNvbnN0OworICAgIFJl
ZlB0cjxTaGFkb3dSb290PiBhdHRhY2hTaGFkb3coY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlv
bkNvZGUmKTsKKwogICAgIFNoYWRvd1Jvb3QqIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTaGFkb3dSb290JiBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2hhZG93Um9vdCYgZW5zdXJlVXNlckFnZW50U2hhZG93
Um9vdChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERpc3RyaWJ1dG9yPiYmID0gbnVsbHB0cik7CiAK
ICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgbm90IGJlIHZpcnR1YWwsIGRvIG5vdCBvdmVycmlk
ZSB0aGlzLgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0OwpAQCAtNTE0LDYgKzUxOSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KikgeyB9CiAgICAgdmlydHVhbCBi
b29sIGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIGZvciBB
dHRyIHRvIGNhbGwgd2lsbE1vZGlmeUF0dHJpYnV0ZS9kaWRNb2RpZnlBdHRyaWJ1dGUuCiAgICAg
ZnJpZW5kIGNsYXNzIEF0dHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggOWE4Yzk2NS4uMTE0
MmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtMTY2LDYgKzE2NiwxMiBAQAogICAgIFtD
b25kaXRpb25hbD1DU1NfUkVHSU9OU10gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3ZWJr
aXRSZWdpb25PdmVyc2V0OwogICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9OU10gc2VxdWVuY2U8
UmFuZ2U+IHdlYmtpdEdldFJlZ2lvbkZsb3dSYW5nZXMoKTsKIAorICAgIC8vIFNoYWRvdyBET00g
QVBJCisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NS
SVBUCisgICAgW1JhaXNlc0V4Y2VwdGlvbl0gU2hhZG93Um9vdCBhdHRhY2hTaGFkb3coRGljdGlv
bmFyeSBvcHRpb25zKTsKKyAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBzbG90Owor
ICAgIFtJbXBsZW1lbnRlZEFzPWJpbmRpbmdTaGFkb3dSb290XSByZWFkb25seSBhdHRyaWJ1dGUg
U2hhZG93Um9vdCBzaGFkb3dSb290OworI2VuZGlmCiAKICAgICAvLyBFdmVudCBIYW5kbGVycwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggNDJlMmM4YS4uMzYzYTY4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTFNsb3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1
ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgpA
QCAtMTA3MSw2ICsxMDcyLDIwIEBAIFNoYWRvd1Jvb3QqIE5vZGU6OmNvbnRhaW5pbmdTaGFkb3dS
b290KCkgY29uc3QKICAgICByZXR1cm4gaXM8U2hhZG93Um9vdD4ocm9vdCkgPyBkb3duY2FzdDxT
aGFkb3dSb290Pigmcm9vdCkgOiBudWxscHRyOwogfQogCitFbGVtZW50KiBOb2RlOjphc3NpZ25l
ZFNsb3QoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBwYXJlbnQgPSBwYXJlbnROb2RlKCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSBwYXJlbnQtPnNoYWRvd1Jvb3QoKSkgewor
ICAgICAgICAgICAgaWYgKHNoYWRvd1Jvb3QtPmVuY2Fwc3VsYXRpb25Nb2RlKCkgPT0gU2hhZG93
Um9vdDo6RW5jYXBzdWxhdGlvbk1vZGU6Ok9wZW4gJiYgc2hhZG93Um9vdC0+dHlwZSgpID09IFNo
YWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QpIHsKKyAgICAgICAgICAgICAgICBJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnRPZih0aGlzKTsKKyAgICAg
ICAgICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQgJiYgaW5zZXJ0aW9uUG9pbnQtPmhhc1RhZ05h
bWUoc2xvdFRhZykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
U2xvdEVsZW1lbnQqPihpbnNlcnRpb25Qb2ludCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIGJvb2wgTm9kZTo6aXNJblVzZXJBZ2Vu
dFNoYWRvd1RyZWUoKSBjb25zdAogewogICAgIGF1dG8qIHNoYWRvd1Jvb3QgPSBjb250YWluaW5n
U2hhZG93Um9vdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMjQxNjgwMS4uZmFiZGE1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCkBAIC0yODYsNiArMjg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIE5vZGUq
IGRlcHJlY2F0ZWRTaGFkb3dBbmNlc3Rvck5vZGUoKSBjb25zdDsKICAgICBTaGFkb3dSb290KiBj
b250YWluaW5nU2hhZG93Um9vdCgpIGNvbnN0OwogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qo
KSBjb25zdDsKKyAgICBFbGVtZW50KiBhc3NpZ25lZFNsb3QoKSBjb25zdDsKIAogICAgIC8vIFJl
dHVybnMgbnVsbCwgYSBjaGlsZCBvZiBTaGFkb3dSb290LCBvciBhIGxlZ2FjeSBzaGFkb3cgcm9v
dC4KICAgICBOb2RlKiBub25Cb3VuZGFyeVNoYWRvd1RyZWVSb290Tm9kZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuY3BwCmluZGV4IGM1MDljZDkuLjJj
YjYzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nVHJhdmVy
c2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5j
cHAKQEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgTm9kZVJlbmRlcmluZ1RyYXZlcnNhbCB7
CiAKIHN0YXRpYyBOb2RlKiBmaW5kRmlyc3RTaWJsaW5nRW50ZXJpbmdJbnNlcnRpb25Qb2ludHMo
Y29uc3QgTm9kZSopOwogc3RhdGljIE5vZGUqIGZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9uUG9p
bnRzKGNvbnN0IE5vZGUqKTsKLXN0YXRpYyBOb2RlKiBmaW5kRmlyc3RGcm9tRGlzdHJpYnV0ZWRO
b2RlKGNvbnN0IE5vZGUqLCBjb25zdCBJbnNlcnRpb25Qb2ludCopOworc3RhdGljIE5vZGUqIGZp
bmRGaXJzdEZyb21EaXN0cmlidXRlZE5vZGUoY29uc3QgTm9kZSosIGNvbnN0IEluc2VydGlvblBv
aW50Jik7CiBzdGF0aWMgTm9kZSogZmluZExhc3RTaWJsaW5nRW50ZXJpbmdJbnNlcnRpb25Qb2lu
dHMoY29uc3QgTm9kZSopOwogc3RhdGljIE5vZGUqIGZpbmRMYXN0RW50ZXJpbmdJbnNlcnRpb25Q
b2ludHMoY29uc3QgTm9kZSopOwotc3RhdGljIE5vZGUqIGZpbmRMYXN0RnJvbURpc3RyaWJ1dGVk
Tm9kZShjb25zdCBOb2RlKiwgY29uc3QgSW5zZXJ0aW9uUG9pbnQqKTsKK3N0YXRpYyBOb2RlKiBm
aW5kTGFzdEZyb21EaXN0cmlidXRlZE5vZGUoY29uc3QgTm9kZSosIGNvbnN0IEluc2VydGlvblBv
aW50Jik7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBub2RlQ2FuQmVEaXN0cmlidXRlZChjb25zdCBO
b2RlKiBub2RlKQogewpAQCAtNzMsMTYgKzczLDIzIEBAIHN0YXRpYyBOb2RlKiBmaW5kRmlyc3RF
bnRlcmluZ0luc2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBub2RlKQogICAgIGlmICghaXNBY3Rp
dmVJbnNlcnRpb25Qb2ludChub2RlKSkKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+
KG5vZGUpOwogICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9IGRvd25j
YXN0PEluc2VydGlvblBvaW50Pigqbm9kZSk7Ci0gICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZEZp
cnN0RnJvbURpc3RyaWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC5maXJzdERpc3RyaWJ1dGVkKCks
ICZpbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIHJldHVybiBmb3VuZDsKKyAgICBjb25zdCBhdXRv
JiBkaXN0cmlidXRpb24gPSBpbnNlcnRpb25Qb2ludC5kaXN0cmlidXRpb24oKTsKKyAgICBpZiAo
IWRpc3RyaWJ1dGlvbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKE5vZGUqIGZvdW5kID0gZmlu
ZEZpcnN0RnJvbURpc3RyaWJ1dGVkTm9kZShkaXN0cmlidXRpb24uZmlyc3QoKSwgaW5zZXJ0aW9u
UG9pbnQpKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5kOworICAgIH0KICAgICByZXR1cm4gZmlu
ZEZpcnN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmZpcnN0Q2hpbGQoKSk7
CiB9CiAKLXN0YXRpYyBOb2RlKiBmaW5kRmlyc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGNvbnN0IE5v
ZGUqIG5vZGUsIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKK3N0YXRpYyBO
b2RlKiBmaW5kRmlyc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0
IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBmb3IgKGNvbnN0IE5vZGUq
IG5leHQgPSBub2RlOyBuZXh0OyBuZXh0ID0gaW5zZXJ0aW9uUG9pbnQtPm5leHREaXN0cmlidXRl
ZFRvKG5leHQpKSB7Ci0gICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEVudGVyaW5n
SW5zZXJ0aW9uUG9pbnRzKG5leHQpKQotICAgICAgICAgICAgcmV0dXJuIGZvdW5kOworICAgIGNv
bnN0IGF1dG8mIGRpc3RyaWJ1dGlvbiA9IGluc2VydGlvblBvaW50LmRpc3RyaWJ1dGlvbigpOwor
ICAgIHNpemVfdCBpbmRleCA9IGRpc3RyaWJ1dGlvbi5maW5kKG5vZGUpOworICAgIGlmIChpbmRl
eCAhPSBub3RGb3VuZCkgeworICAgICAgICBmb3IgKDsgaW5kZXggPCBkaXN0cmlidXRpb24uc2l6
ZSgpOyBpbmRleCsrKSB7CisgICAgICAgICAgICBpZiAoTm9kZSogZm91bmQgPSBmaW5kRmlyc3RF
bnRlcmluZ0luc2VydGlvblBvaW50cyhkaXN0cmlidXRpb25baW5kZXhdKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZm91bmQ7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkBAIC0xMDIsMTYgKzEwOSwyNiBAQCBzdGF0aWMgTm9kZSogZmluZExhc3RFbnRlcmluZ0lu
c2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBub2RlKQogICAgIGlmICghaXNBY3RpdmVJbnNlcnRp
b25Qb2ludChub2RlKSkKICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUpOwog
ICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9IGRvd25jYXN0PEluc2Vy
dGlvblBvaW50Pigqbm9kZSk7Ci0gICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZExhc3RGcm9tRGlz
dHJpYnV0ZWROb2RlKGluc2VydGlvblBvaW50Lmxhc3REaXN0cmlidXRlZCgpLCAmaW5zZXJ0aW9u
UG9pbnQpKQotICAgICAgICByZXR1cm4gZm91bmQ7CisgICAgY29uc3QgYXV0byYgZGlzdHJpYnV0
aW9uID0gaW5zZXJ0aW9uUG9pbnQuZGlzdHJpYnV0aW9uKCk7CisgICAgaWYgKCFkaXN0cmlidXRp
b24uaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RnJvbURp
c3RyaWJ1dGVkTm9kZShkaXN0cmlidXRpb24ubGFzdCgpLCBpbnNlcnRpb25Qb2ludCkpCisgICAg
ICAgICAgICByZXR1cm4gZm91bmQ7CisgICAgfQogICAgIHJldHVybiBmaW5kTGFzdFNpYmxpbmdF
bnRlcmluZ0luc2VydGlvblBvaW50cyhub2RlLT5sYXN0Q2hpbGQoKSk7CiB9CiAKLXN0YXRpYyBO
b2RlKiBmaW5kTGFzdEZyb21EaXN0cmlidXRlZE5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3Qg
SW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQorc3RhdGljIE5vZGUqIGZpbmRMYXN0RnJv
bURpc3RyaWJ1dGVkTm9kZShjb25zdCBOb2RlKiBub2RlLCBjb25zdCBJbnNlcnRpb25Qb2ludCYg
aW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgZm9yIChjb25zdCBOb2RlKiBuZXh0ID0gbm9kZTsgbmV4
dDsgbmV4dCA9IGluc2VydGlvblBvaW50LT5wcmV2aW91c0Rpc3RyaWJ1dGVkVG8obmV4dCkpIHsK
LSAgICAgICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZExhc3RFbnRlcmluZ0luc2VydGlvblBvaW50
cyhuZXh0KSkKLSAgICAgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICBjb25zdCBhdXRvJiBkaXN0
cmlidXRpb24gPSBpbnNlcnRpb25Qb2ludC5kaXN0cmlidXRpb24oKTsKKyAgICBzaXplX3QgaW5k
ZXggPSBkaXN0cmlidXRpb24uZmluZChub2RlKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQp
IHsKKyAgICAgICAgd2hpbGUgKGluZGV4KSB7CisgICAgICAgICAgICBpZiAoTm9kZSogZm91bmQg
PSBmaW5kTGFzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGRpc3RyaWJ1dGlvbltpbmRleF0pKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICAgICAgICAgIGlmICghaW5kZXgpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpbmRleC0tOworICAgICAgICB9CiAg
ICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtMTM3LDcgKzE1NCw3IEBAIHN0YXRpYyBD
b250YWluZXJOb2RlKiB0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBTaGFkb3dSb290
Q3Jvc3Npbmcgc2hhZG93CiAKICAgICBpZiAoaXM8SW5zZXJ0aW9uUG9pbnQ+KCpwYXJlbnQpKSB7
CiAgICAgICAgIGNvbnN0IEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCA9IGRvd25jYXN0
PEluc2VydGlvblBvaW50PigqcGFyZW50KTsKLSAgICAgICAgaWYgKGluc2VydGlvblBvaW50Lmhh
c0Rpc3RyaWJ1dGlvbigpKQorICAgICAgICBpZiAoIWluc2VydGlvblBvaW50LmRpc3RyaWJ1dGlv
bigpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAo
aW5zZXJ0aW9uUG9pbnQuaXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBh
cmVudChwYXJlbnQsIHNoYWRvd1Jvb3RDcm9zc2luZyk7CkBAIC0xNzMsOSArMTkwLDEyIEBAIHN0
YXRpYyBOb2RlKiB0cmF2ZXJzZU5leHRTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCiAKICAgICBJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQ7CiAgICAgaWYgKG5vZGVDYW5CZURpc3RyaWJ1
dGVkKG5vZGUpICYmIChpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Qb2ludE9mKG5vZGUp
KSkgewotICAgICAgICBOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEZyb21EaXN0cmlidXRlZE5vZGUo
aW5zZXJ0aW9uUG9pbnQtPm5leHREaXN0cmlidXRlZFRvKG5vZGUpLCBpbnNlcnRpb25Qb2ludCk7
Ci0gICAgICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICAgICAg
Y29uc3QgYXV0byYgZGlzdHJpYnV0aW9uID0gaW5zZXJ0aW9uUG9pbnQtPmRpc3RyaWJ1dGlvbigp
OworICAgICAgICBzaXplX3QgaW5kZXggPSBkaXN0cmlidXRpb24uZmluZChub2RlKTsKKyAgICAg
ICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kICYmIGluZGV4ICsgMSA8IGRpc3RyaWJ1dGlvbi5zaXpl
KCkpIHsKKyAgICAgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEZyb21EaXN0cmli
dXRlZE5vZGUoZGlzdHJpYnV0aW9uW2luZGV4ICsgMV0sICppbnNlcnRpb25Qb2ludCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZvdW5kOworICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cmF2
ZXJzZU5leHRTaWJsaW5nKGluc2VydGlvblBvaW50KTsKICAgICB9CiAKQEAgLTE5NSw5ICsyMTUs
MTIgQEAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5v
ZGUpCiAKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQ7CiAgICAgaWYgKG5vZGVD
YW5CZURpc3RyaWJ1dGVkKG5vZGUpICYmIChpbnNlcnRpb25Qb2ludCA9IGZpbmRJbnNlcnRpb25Q
b2ludE9mKG5vZGUpKSkgewotICAgICAgICBOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RnJvbURpc3Ry
aWJ1dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNEaXN0cmlidXRlZFRvKG5vZGUpLCBp
bnNlcnRpb25Qb2ludCk7Ci0gICAgICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBm
b3VuZDsKKyAgICAgICAgY29uc3QgYXV0byYgZGlzdHJpYnV0aW9uID0gaW5zZXJ0aW9uUG9pbnQt
PmRpc3RyaWJ1dGlvbigpOworICAgICAgICBzaXplX3QgaW5kZXggPSBkaXN0cmlidXRpb24uZmlu
ZChub2RlKTsKKyAgICAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kICYmIGluZGV4ID4gMCkgewor
ICAgICAgICAgICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZExhc3RGcm9tRGlzdHJpYnV0ZWROb2Rl
KGRpc3RyaWJ1dGlvbltpbmRleCAtIDFdLCAqaW5zZXJ0aW9uUG9pbnQpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmb3VuZDsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJhdmVyc2VQcmV2
aW91c1NpYmxpbmcoaW5zZXJ0aW9uUG9pbnQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vbkRvY3VtZW50VHlwZUNoaWxkTm9kZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlkbAppbmRleCA3MDkzMDIzLi4xMDhkODE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2Rl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2RlLmlk
bApAQCAtMzAsNCArMzAsNyBAQAogXSBpbnRlcmZhY2UgTm9uRG9jdW1lbnRUeXBlQ2hpbGROb2Rl
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBwcmV2aW91c0VsZW1lbnRTaWJsaW5n
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IG5leHRFbGVtZW50U2libGluZzsKKwor
ICAgIC8vIFNoYWRvdyBET00KKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBhc3NpZ25l
ZFNsb3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDg4NjEwMGQuLmI3MjI1
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAKKyNpbmNsdWRlICJDb250
ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC0zOCw3
ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNTaGFkb3dS
b290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUgewogICAgIHVu
c2lnbmVkIGNvdW50ZXJzQW5kRmxhZ3NbMV07Ci0gICAgQ29udGVudERpc3RyaWJ1dG9yIGRpc3Ry
aWJ1dG9yOworICAgIENvbnRlbnREaXN0cmlidXRvciogZGlzdHJpYnV0b3I7CiAgICAgdm9pZCog
aG9zdDsKIH07CiAKQEAgLTUwLDEzICs1MSwyOCBAQCBlbnVtIFNoYWRvd1Jvb3RVc2FnZU9yaWdp
blR5cGUgewogICAgIFNoYWRvd1Jvb3RVc2FnZU9yaWdpbk1heAogfTsKIAotU2hhZG93Um9vdDo6
U2hhZG93Um9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFNoYWRvd1Jvb3RUeXBlIHR5cGUpCitSZWY8
U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgU2hhZG93
Um9vdFR5cGUgdHlwZSwgRW5jYXBzdWxhdGlvbk1vZGUgbW9kZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTaGFkb3dSb290KGRvY3VtZW50LCB0eXBlLCBtb2RlLCBzdGQ6Om1ha2VfdW5p
cXVlPENvbnRlbnREaXN0cmlidXRvcj4oKSkpOworfQorCitSZWY8U2hhZG93Um9vdD4gU2hhZG93
Um9vdDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRE
aXN0cmlidXRvcj4mJiBkaXN0cmlidXRvcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
aGFkb3dSb290KGRvY3VtZW50LCBVc2VyQWdlbnRTaGFkb3dSb290LCBFbmNhcHN1bGF0aW9uTW9k
ZTo6Q2xvc2VkLCBXVEY6Om1vdmUoZGlzdHJpYnV0b3IpKSk7Cit9CisKK1NoYWRvd1Jvb3Q6OlNo
YWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290VHlwZSB0eXBlLCBFbmNhcHN1
bGF0aW9uTW9kZSBtb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERpc3RyaWJ1dG9yPiYmIGRp
c3RyaWJ1dG9yKQogICAgIDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93
Um9vdCkKICAgICAsIFRyZWVTY29wZSgqdGhpcywgZG9jdW1lbnQpCiAgICAgLCBtX3Jlc2V0U3R5
bGVJbmhlcml0YW5jZShmYWxzZSkKLSAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9ob3N0KDAp
CisgICAgLCBtX3R5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKQorICAgICwgbV9lbmNh
cHN1bGF0aW9uTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9kZSkpCisgICAgLCBtX2hvc3Qo
bnVsbHB0cikKKyAgICAsIG1fZGlzdHJpYnV0b3IoV1RGOjptb3ZlKGRpc3RyaWJ1dG9yKSkKIHsK
KyAgICBBU1NFUlQodGhpcy0+dHlwZSgpID09IHR5cGUpOworICAgIEFTU0VSVChlbmNhcHN1bGF0
aW9uTW9kZSgpID09IG1vZGUpOworICAgIEFTU0VSVChtX2Rpc3RyaWJ1dG9yKTsKIH0KIAogU2hh
ZG93Um9vdDo6flNoYWRvd1Jvb3QoKQpAQCAtNzMsNiArODksMTEgQEAgU2hhZG93Um9vdDo6flNo
YWRvd1Jvb3QoKQogICAgIHJlbW92ZURldGFjaGVkQ2hpbGRyZW4oKTsKIH0KIAordm9pZCBTaGFk
b3dSb290OjpzZXRIb3N0KEVsZW1lbnQqIGhvc3QpCit7CisgICAgbV9ob3N0ID0gaG9zdDsKK30K
KwogUGFzc1JlZlB0cjxOb2RlPiBTaGFkb3dSb290OjpjbG9uZU5vZGUoYm9vbCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgZWMgPSBEQVRBX0NMT05FX0VSUjsKQEAgLTEyOCw3ICsxNDksNyBA
QCB2b2lkIFNoYWRvd1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hh
bmdlKQogICAgICAgICByZXR1cm47CiAKICAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5n
ZWQoY2hhbmdlKTsKLSAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgZGlzdHJpYnV0
b3IoKS5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKGhvc3QoKSk7CiB9CiAKIFJlZjxOb2RlPiBTaGFk
b3dSb290OjpjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA2MzE2MDhhLi5hMDRiZmU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmgKQEAgLTI4LDcgKzI4LDYgQEAKICNkZWZpbmUgU2hhZG93Um9vdF9oCiAKICNp
bmNsdWRlICJDb250YWluZXJOb2RlLmgiCi0jaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAj
aW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtMzcsMTYgKzM2LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgQ29udGVudERpc3RyaWJ1dG9yOworCiBjbGFzcyBTaGFkb3dSb290IGZp
bmFsIDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUgewogcHVibGlj
OgogICAgIGVudW0gU2hhZG93Um9vdFR5cGUgewogICAgICAgICBVc2VyQWdlbnRTaGFkb3dSb290
ID0gMCwKKyAgICAgICAgQXV0aG9yU2hhZG93Um9vdCA9IDEsCisgICAgfTsKKworICAgIGVudW0g
Y2xhc3MgRW5jYXBzdWxhdGlvbk1vZGUgeworICAgICAgICBDbG9zZWQgPSAwLAorICAgICAgICBP
cGVuID0gMSwKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxTaGFkb3dSb290PiBjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTaGFkb3dSb290VHlwZSB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2hhZG93Um9vdChkb2N1bWVudCwgdHlwZSkpOwotICAgIH0KKyAg
ICBzdGF0aWMgUmVmPFNoYWRvd1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCYsIFNoYWRvd1Jvb3RUeXBl
LCBFbmNhcHN1bGF0aW9uTW9kZSA9IEVuY2Fwc3VsYXRpb25Nb2RlOjpDbG9zZWQpOworICAgIHN0
YXRpYyBSZWY8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50Jiwgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnREaXN0cmlidXRvcj4mJik7CiAKICAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CiAKQEAg
LTU0LDcgKzU5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzZXRTdHlsZUluaGVyaXRhbmNl
KGJvb2wpOwogCiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdDsgfQot
ICAgIHZvaWQgc2V0SG9zdChFbGVtZW50KiBob3N0KSB7IG1faG9zdCA9IGhvc3Q7IH0KKyAgICB2
b2lkIHNldEhvc3QoRWxlbWVudCopOworCisgICAgRW5jYXBzdWxhdGlvbk1vZGUgZW5jYXBzdWxh
dGlvbk1vZGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxFbmNhcHN1bGF0aW9uTW9kZT4obV9lbmNh
cHN1bGF0aW9uTW9kZSk7IH0KIAogICAgIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdDsKICAgICB2
b2lkIHNldElubmVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CkBAIC02NSwx
MyArNzIsMTIgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9v
bCwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRv
cigpIHsgcmV0dXJuIG1fZGlzdHJpYnV0b3I7IH0KLSAgICB2b2lkIGludmFsaWRhdGVEaXN0cmli
dXRpb24oKSB7IG1fZGlzdHJpYnV0b3IuaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihtX2hvc3QpOyB9
CisgICAgQ29udGVudERpc3RyaWJ1dG9yJiBkaXN0cmlidXRvcigpIHsgcmV0dXJuICptX2Rpc3Ry
aWJ1dG9yOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBTaGFkb3dSb290KERvY3VtZW50JiwgU2hhZG93Um9v
dFR5cGUpOworICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQmLCBTaGFkb3dSb290VHlwZSwgRW5jYXBz
dWxhdGlvbk1vZGUsIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGlzdHJpYnV0b3I+JiYpOwogCiAg
ICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBv
dmVycmlkZTsKQEAgLTgzLDEwICs4OSwxMSBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9y
ZXNldFN0eWxlSW5oZXJpdGFuY2UgOiAxOwogICAgIHVuc2lnbmVkIG1fdHlwZSA6IDE7CisgICAg
dW5zaWduZWQgbV9lbmNhcHN1bGF0aW9uTW9kZSA6IDE7CiAKICAgICBFbGVtZW50KiBtX2hvc3Q7
CiAKLSAgICBDb250ZW50RGlzdHJpYnV0b3IgbV9kaXN0cmlidXRvcjsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q29udGVudERpc3RyaWJ1dG9yPiBtX2Rpc3RyaWJ1dG9yOwogfTsKIAogaW5saW5lIEVs
ZW1lbnQqIFNoYWRvd1Jvb3Q6OmFjdGl2ZUVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNDJiNTYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCitbCisgICAgSlNHZW5lcmF0ZVRvSlNP
YmplY3QKK10gaW50ZXJmYWNlIFNoYWRvd1Jvb3QgOiBEb2N1bWVudEZyYWdtZW50IHsKKworLy8g
ICAgRE9NU2VsZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2VsZWN0aW9uICgpOwor
Ly8gICAgRWxlbWVudD8gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudEZyb21Qb2lu
dCAoZG91YmxlIHgsIGRvdWJsZSB5KTsKKy8vICAgIHNlcXVlbmNlPEVsZW1lbnQ+ICAgICAgICAg
ICAgICAgICAgIGVsZW1lbnRzRnJvbVBvaW50IChkb3VibGUgeCwgZG91YmxlIHkpOworLy8gICAg
Q2FyZXRQb3NpdGlvbj8gICAgICAgICAgICAgICAgICAgICAgY2FyZXRQb3NpdGlvbkZyb21Qb2lu
dCAoZG91YmxlIHgsIGRvdWJsZSB5KTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCAg
ICAgICAgICBhY3RpdmVFbGVtZW50OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50ICAg
ICAgICAgIGhvc3Q7CisKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2Vz
RXhjZXB0aW9uXQorICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgICAgICAgICAgICAgICAgIGlubmVy
SFRNTDsKKworLy8gICAgcmVhZG9ubHkgYXR0cmlidXRlIFN0eWxlU2hlZXRMaXN0ICAgc3R5bGVT
aGVldHM7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRl
eCBlNGQ3N2E2Li4xMmM1ZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbgpAQCAtMzIyLDYgKzMyMiw3IEBAIHNlbGVjdGVkCiBzaGFwZQogc2l6ZQogc2l6ZXMK
K3Nsb3QKIHNvcnRhYmxlCiBzb3J0ZGlyZWN0aW9uCiBzcGFuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCdXR0b25FbGVtZW50LmgKaW5kZXggNWQ3ZGY4MC4uM2IyNzA4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaApAQCAtNDksNiArNDksNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudCBhbHdheXMgY3JlYXRlcyBvbmUsIGJ1dCBidXR0
b25zIGRvbid0IG5lZWQgaXQuCiAgICAgdmlydHVhbCBib29sIGFsd2F5c0NyZWF0ZVVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFp
bHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNw
cAppbmRleCA0OGNjOWI4Li41NjdiMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0
YWlsc0VsZW1lbnQuY3BwCkBAIC0yMyw5ICsyMywxMCBAQAogCiAjaWYgRU5BQkxFKERFVEFJTFNf
RUxFTUVOVCkKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCi0jaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCisjaW5jbHVkZSAiRWxl
bWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MU3VtbWFyeUVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgog
I2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCkBAIC0zNSwxMiArMzYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHN1bW1hcnlRdWVyeVNlbGVjdG9yKCkKLXsKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBzZWxlY3RvciwgKCJzdW1tYXJ5OmZpcnN0
LW9mLXR5cGUiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgcmV0
dXJuIHNlbGVjdG9yOwotfTsKLQogY2xhc3MgRGV0YWlsc0NvbnRlbnRFbGVtZW50IGZpbmFsIDog
cHVibGljIEluc2VydGlvblBvaW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERldGFpbHND
b250ZW50RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CkBAIC01MCwxMyArNDUsNiBAQCBwcml2
YXRlOgogICAgICAgICA6IEluc2VydGlvblBvaW50KHdlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRv
Y3VtZW50KQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVG
b3IoTm9kZSogbm9kZSkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgbm9kZSA9PSBub2RlLT5wYXJlbnROb2RlKCktPnF1ZXJ5U2VsZWN0
b3Ioc3VtbWFyeVF1ZXJ5U2VsZWN0b3IoKSwgQVNTRVJUX05PX0VYQ0VQVElPTikpCi0gICAgICAg
ICAgICByZXR1cm4gTmV2ZXJNYXRjaGVzOwotICAgICAgICByZXR1cm4gQWx3YXlzTWF0Y2hlczsK
LSAgICB9CiB9OwogCiBSZWY8RGV0YWlsc0NvbnRlbnRFbGVtZW50PiBEZXRhaWxzQ29udGVudEVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC03OSwxMyArNjcsNiBAQCBwcml2
YXRlOgogICAgICAgICA6IEluc2VydGlvblBvaW50KHdlYmtpdFNoYWRvd0NvbnRlbnRUYWcsIGRv
Y3VtZW50KQogICAgIHsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIE1hdGNoVHlwZSBtYXRjaFR5cGVG
b3IoTm9kZSogbm9kZSkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChub2RlLT5p
c0VsZW1lbnROb2RlKCkgJiYgbm9kZSA9PSBub2RlLT5wYXJlbnROb2RlKCktPnF1ZXJ5U2VsZWN0
b3Ioc3VtbWFyeVF1ZXJ5U2VsZWN0b3IoKSwgQVNTRVJUX05PX0VYQ0VQVElPTikpCi0gICAgICAg
ICAgICByZXR1cm4gQWx3YXlzTWF0Y2hlczsKLSAgICAgICAgcmV0dXJuIE5ldmVyTWF0Y2hlczsK
LSAgICB9CiB9OwogCiBSZWY8RGV0YWlsc1N1bW1hcnlFbGVtZW50PiBEZXRhaWxzU3VtbWFyeUVs
ZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC05OCwxMCArNzksNTQgQEAgUmVm
PERldGFpbHNTdW1tYXJ5RWxlbWVudD4gRGV0YWlsc1N1bW1hcnlFbGVtZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIHJldHVybiBkZXRhaWxzU3VtbWFyeTsKIH0KIAorY2xhc3Mg
RGV0YWlsc0NvbnRlbnREaXN0cmlidXRvciBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGlzdHJpYnV0
b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERldGFpbHNDb250ZW50RGlzdHJpYnV0b3Ip
OworcHVibGljOgorICAgIERldGFpbHNDb250ZW50RGlzdHJpYnV0b3IoKQorICAgIHsgfQorCisg
ICAgdmlydHVhbCBJbnNlcnRpb25Qb2ludCogZmluZFNsb3RFbGVtZW50QnlOb2RlKGNvbnN0IE5v
ZGUqIGNoaWxkLCBTaGFkb3dSb290JiBzaGFkb3dSb290KSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKGlzPEhUTUxTdW1tYXJ5RWxlbWVudD4oY2hpbGQpICYmIGNoaWxkID09IGNoaWxkcmVu
T2ZUeXBlPEhUTUxTdW1tYXJ5RWxlbWVudD4oKnNoYWRvd1Jvb3QuaG9zdCgpKS5maXJzdCgpKQor
ICAgICAgICAgICAgcmV0dXJuICZzdW1tYXJ5RWxlbWVudChzaGFkb3dSb290KTsKKyAgICAgICAg
cmV0dXJuICZjb250ZW50RWxlbWVudChzaGFkb3dSb290KTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3RyaWJ1dGVIb3N0Q2hpbGRyZW4oU2hhZG93Um9vdCYgc2hhZG93
Um9vdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEluc2VydGlvblBvaW50JiBzdW1tYXJ5ID0g
c3VtbWFyeUVsZW1lbnQoc2hhZG93Um9vdCk7CisgICAgICAgIEluc2VydGlvblBvaW50JiBjb250
ZW50ID0gY29udGVudEVsZW1lbnQoc2hhZG93Um9vdCk7CisKKyAgICAgICAgYm9vbCBoYXNTZWVu
U3VtbWFyeSA9IGZhbHNlOworICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gc2hhZG93Um9vdC5o
b3N0KCktPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkp
IHsKKyAgICAgICAgICAgIGlmIChpczxIVE1MU3VtbWFyeUVsZW1lbnQ+KCpjaGlsZCkgJiYgIWhh
c1NlZW5TdW1tYXJ5KSB7CisgICAgICAgICAgICAgICAgaGFzU2VlblN1bW1hcnkgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGVOb2RlKCpjaGlsZCwgc3VtbWFyeSk7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRlTm9kZSgqY2hpbGQsIGNvbnRl
bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgSW5zZXJ0aW9uUG9pbnQmIHN1bW1hcnlFbGVt
ZW50KFNoYWRvd1Jvb3QmIHJvb3QpCisgICAgeworICAgICAgICBOb2RlKiBzdW1tYXJ5RWxlbWVu
dCA9IHJvb3QuZmlyc3RDaGlsZCgpOworICAgICAgICBBU1NFUlQoc3VtbWFyeUVsZW1lbnQtPmhh
c1RhZ05hbWUod2Via2l0U2hhZG93Q29udGVudFRhZykpOworICAgICAgICByZXR1cm4gZG93bmNh
c3Q8SW5zZXJ0aW9uUG9pbnQ+KCpzdW1tYXJ5RWxlbWVudCk7CisgICAgfQorCisgICAgSW5zZXJ0
aW9uUG9pbnQmIGNvbnRlbnRFbGVtZW50KFNoYWRvd1Jvb3QmIHJvb3QpCisgICAgeworICAgICAg
ICBOb2RlKiBjb250ZW50RWxlbWVudCA9IHJvb3QubGFzdENoaWxkKCk7CisgICAgICAgIEFTU0VS
VChjb250ZW50RWxlbWVudC0+aGFzVGFnTmFtZSh3ZWJraXRTaGFkb3dDb250ZW50VGFnKSk7Cisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxJbnNlcnRpb25Qb2ludD4oKmNvbnRlbnRFbGVtZW50KTsK
KyAgICB9Cit9OworCiBSZWY8SFRNTERldGFpbHNFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6
OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgUmVmPEhUTUxEZXRhaWxzRWxlbWVudD4gZGV0YWlscyA9IGFkb3B0UmVmKCpuZXcg
SFRNTERldGFpbHNFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7Ci0gICAgZGV0YWlscy0+ZW5z
dXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworICAgIGRldGFpbHMtPmVuc3VyZVVzZXJBZ2VudFNo
YWRvd1Jvb3Qoc3RkOjptYWtlX3VuaXF1ZTxEZXRhaWxzQ29udGVudERpc3RyaWJ1dG9yPigpKTsK
ICAgICByZXR1cm4gZGV0YWlsczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRGV0YWlsc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNF
bGVtZW50LmgKaW5kZXggNGY1OTRlMS4uZDdlYzcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFk
b3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBib29sIG1faXNPcGVuOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IGE0YTczY2EuLjRhZjMxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEFuY2hv
ckVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IDM2NDJhOWEuLmFkMDhlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcApAQCAtNTMyLDcgKzUzMiw3IEBAIGlubGluZSB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnJ1
blBvc3RUeXBlVXBkYXRlVGFza3MoKQogICAgICAgICB1cGRhdGVGb2N1c0FwcGVhcmFuY2UodHJ1
ZSk7CiAKICAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHNoYWRvd1Jvb3RPZlBhcmVu
dEZvckRpc3RyaWJ1dGlvbih0aGlzKSkKLSAgICAgICAgc2hhZG93Um9vdC0+aW52YWxpZGF0ZURp
c3RyaWJ1dGlvbigpOworICAgICAgICBzaGFkb3dSb290LT5kaXN0cmlidXRvcigpLmludmFsaWRh
dGVEaXN0cmlidXRpb24oc2hhZG93Um9vdC0+aG9zdCgpKTsKIAogICAgIHNldENoYW5nZWRTaW5j
ZUxhc3RGb3JtQ29udHJvbENoYW5nZUV2ZW50KGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAppbmRleCBiOTI0MzA3Li5iYmJkMzM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMzMxLDYgKzMzMSw3IEBAIHByaXZhdGU6CiAgICAg
ZW51bSBBdXRvQ29tcGxldGVTZXR0aW5nIHsgVW5pbml0aWFsaXplZCwgT24sIE9mZiB9OwogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92
ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9v
dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsQ2hhbmdlRm9ybSgpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VGb3JtKCkgb3ZlcnJpZGUgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtl
eWdlbkVsZW1lbnQuY3BwCmluZGV4IDRhNjNiMDAuLjcxNDY3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
SFRNTEtleWdlbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUg
IkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
Rm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxLZXlnZW5FbGVtZW50LmgKaW5kZXggMmNlYzI2MS4uMzBhYzNlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaApAQCAtNTIsNiArNTIsOCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKIAorICAg
IHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzaGFkb3dT
ZWxlY3QoKSBjb25zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcnF1ZWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5oCmluZGV4IGNjNThkNjAuLmViYTNmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFy
cXVlZUVsZW1lbnQuaApAQCAtNjIsNiArNjIsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiSFRNTE1hcnF1ZWVFbGVtZW50Ijsg
fQogCisgICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgUmVuZGVyTWFycXVlZSogcmVu
ZGVyTWFycXVlZSgpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggYjg2ODE3Ny4uYThhMjIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ2xpZW50UmVjdC5oIgogI2luY2x1ZGUgIkNsaWVudFJlY3RMaXN0
LmgiCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJDb29r
aWVKYXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggMGQ4YjRl
Zi4uZDMwZmY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ4
Nyw2ICs0ODcsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGFsd2F5c0NyZWF0ZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKKyAg
ICAvLyBGSVhNRTogU2hhZG93IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gY3Jl
YXRlIHNoYWRvdyByb290IG9uIGF1ZGlvIGFuZCB2aWRlbyBlbGVtZW50cworICAgIHZpcnR1YWwg
Ym9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKaW5kZXggZTVlM2Rl
MC4uNTUzOGI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBA
IC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiSFRNTE1ldGVyRWxlbWVudC5oIgogCiAjaW5jbHVk
ZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKaW5k
ZXggZDIzNjRiMS4uYjg2MzZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50
LmgKQEAgLTc2LDYgKzc2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRWxlbWVudFN0YXRl
Q2hhbmdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hh
ZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJl
ZlB0cjxNZXRlclZhbHVlRWxlbWVudD4gbV92YWx1ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwCmluZGV4IGQ3ODZkZjQuLjc3MDljNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEhhbmRs
ZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCA2Mjk0ZDE0
Li40ZDQ5N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC0x
MTcsNiArMTE3LDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2FkRXZl
bnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOyAvLyBOb3QgaW1wbGVtZW50ZWQsIGdlbmVyYXRl
cyBhIGNvbXBpbGUgZXJyb3IgaWYgc3ViY2xhc3NlcyBjYWxsIHRoaXMgYnkgbWlzdGFrZS4KIAor
ICAgIC8vIEZJWE1FOiBTaGFkb3cgRE9NIHNwZWMgc2F5cyB3ZSBzaG91bGQgYmUgYWJsZSB0byBj
cmVhdGUgc2hhZG93IHJvb3Qgb24gYXBwbGV0LCBlbWJlZCwgYW5kIG9iamVjdC4KKyAgICB2aXJ0
dWFsIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisKICAgICAvLyBUaGlzIHdpbGwgbG9hZCB0aGUgcGx1Z2luIGlm
IG5lY2Vzc2FyeS4KICAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lkZ2V0TG9hZGlu
Z1BsdWdpbigpIGNvbnN0ID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudC5jcHAKaW5kZXggNTBlNGRhOC4uNmNiODdlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpbmNs
dWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUg
IkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCBkYjdkMDZhLi42MTBlMmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTIxLDYgKzIxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50Lmgi
CiAKKyNpbmNsdWRlICJDb250ZW50RGlzdHJpYnV0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRl
cmF0b3IuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAppbmRleCBiN2I0
NWE1Li5mN2M2NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVz
c0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
aApAQCAtNjIsNiArNjIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRFbGVtZW50U3RhdGVD
aGFuZ2UoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFk
b3dSb290Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFk
b3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wg
aXNEZXRlcm1pbmF0ZSgpIGNvbnN0OwogCiAgICAgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQqIG1fdmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggYTE1NWRmMC4u
NzZmYzFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAtMTI4
LDYgKzEyOCw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2Vs
ZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwg
Ym9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVs
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2xvdEVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcw
NDdmMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxl
bWVudC5jcHAKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIVE1MU2xvdEVs
ZW1lbnQuaCIKKworI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKKworUmVmPEhUTUxTbG90RWxlbWVudD4gSFRNTFNsb3RFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxTbG90RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkp
OworfQorCitIVE1MU2xvdEVsZW1lbnQ6OkhUTUxTbG90RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBJbnNlcnRpb25Qb2ludCh0
YWdOYW1lLCBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoaGFzVGFnTmFtZShzbG90VGFnKSk7Cit9
CisKK3ZvaWQgSFRNTFNsb3RFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFzb24pCit7Cisg
ICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVl
LCByZWFzb24pOworICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CisgICAgICAgIGlmIChTaGFk
b3dSb290KiBzaGFkb3dSb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3QoKSkgeworICAgICAgICAg
ICAgYXV0byYgZGlzdHJpYnV0b3IgPSBzaGFkb3dSb290LT5kaXN0cmlidXRvcigpOworICAgICAg
ICAgICAgZGlzdHJpYnV0b3IucmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUob2xkVmFsdWUsICp0aGlz
LCAqc2hhZG93Um9vdCk7CisgICAgICAgICAgICBkaXN0cmlidXRvci5hZGRTbG90RWxlbWVudEJ5
TmFtZShuZXdWYWx1ZSwgKnRoaXMsICpzaGFkb3dSb290KTsKKyAgICAgICAgICAgIGRpc3RyaWJ1
dG9yLmludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93Um9vdC0+aG9zdCgpKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworLy8gRklYTUU6IEhUTUxTbG90RWxlbWVudCBzaG91bGQgaGF2ZSBhIGZp
eGVkIGxpc3Qgb2YgZGlzdHJpYnV0ZWQgbm9kZXMgaW5zdGVhZC4KK1ZlY3RvcjxSZWZQdHI8Tm9k
ZT4+IEhUTUxTbG90RWxlbWVudDo6Z2V0RGlzdHJpYnV0ZWROb2RlcygpIGNvbnN0Cit7CisgICAg
VmVjdG9yPFJlZlB0cjxOb2RlPj4gZGlzdHJpYnV0ZWROb2RlczsKKyAgICBmb3IgKGF1dG8gbm9k
ZSA6IGRpc3RyaWJ1dGlvbigpKQorICAgICAgICBkaXN0cmlidXRlZE5vZGVzLmFwcGVuZChub2Rl
KTsKKyAgICByZXR1cm4gZGlzdHJpYnV0ZWROb2RlczsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNsb3RFbGVtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc2
MDA3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNsb3RFbGVt
ZW50LmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgSFRNTFNsb3RFbGVtZW50X2gKKyNkZWZpbmUgSFRNTFNsb3RF
bGVtZW50X2gKKworI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9u
UG9pbnQuaCIKKyNpbmNsdWRlICJSYW5nZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8v
IEZJWE1FOiBSZW5hbWUgSW5zZXJ0aW9uUG9pbnQgdG8gU2xvdEVsZW1lbnQKK2NsYXNzIEhUTUxT
bG90RWxlbWVudCA6IHB1YmxpYyBJbnNlcnRpb25Qb2ludCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxIVE1MU2xvdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKKworICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4+IGdldERpc3RyaWJ1dGVkTm9kZXMoKSBj
b25zdDsKKworcHJvdGVjdGVkOgorICAgIEhUTUxTbG90RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVh
c29uID0gTW9kaWZpZWREaXJlY3RseSkgb3ZlcnJpZGUgZmluYWw7Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZDY2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5pZGwKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNpZGwtZGVmLUhUTUxTbG90RWxlbWVudAor
aW50ZXJmYWNlIEhUTUxTbG90RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKKworICAgIFtSZWZsZWN0
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CisgICAgc2VxdWVuY2U8Tm9kZT4gZ2V0RGlzdHJp
YnV0ZWROb2RlcygpOworCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3VtbWFyeUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50
LmgKaW5kZXggNDgwOWNlNC4uNzhhZDYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU3VtbWFyeUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1t
YXJ5RWxlbWVudC5oCkBAIC00Miw2ICs0MiwxMCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CisKKyAg
ICAvLyBGSVhNRTogU2hhZG93IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gY3Jl
YXRlIHNoYWRvdyByb290IG9uIHRoaXMgZWxlbWVudAorICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZl
VXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KKwogICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlsc0VsZW1lbnQoKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhZ05hbWVzLmluCmluZGV4IDkxMzg3YjAuLjg2NDY1MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhZ05hbWVzLmluCkBAIC0xMTEsNiArMTExLDcgQEAgc2FtcCBpbnRlcmZhY2VO
YW1lPUhUTUxFbGVtZW50CiBzY3JpcHQgY29uc3RydWN0b3JOZWVkc0NyZWF0ZWRCeVBhcnNlcgog
c2VjdGlvbiBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBzZWxlY3QgY29uc3RydWN0b3JOZWVk
c0Zvcm1FbGVtZW50CitzbG90CiBzbWFsbCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVtZW50CiBzb3Vy
Y2Ugd3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGUsIGNvbmRpdGlvbmFsPVZJREVPCiBzcGFu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBhMmRl
NzMwLi44YWE3OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJl
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkJlZm9yZVRleHRJbnNlcnRlZEV2
ZW50LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNvbnRlbnRE
aXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgKaW5kZXggYzM1OGNjMS4uNjA4YTNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmgKQEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBlbnVtIFdy
YXBNZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9OwogCiAgICAgdmlydHVhbCB2
b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgaGFuZGxlQmVmb3JlVGV4dEluc2Vy
dGVkRXZlbnQoQmVmb3JlVGV4dEluc2VydGVkRXZlbnQqKSBjb25zdDsKICAgICBzdGF0aWMgU3Ry
aW5nIHNhbml0aXplVXNlcklucHV0VmFsdWUoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgbWF4TGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggOTA2
Mjk1ZS4uZDI1NDQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9u
TWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9y
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiSFRN
TEJSRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCBjNTE4ZWYz
Li5jYWIyMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50
RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5jcHAKQEAgLTI4LDEzICsyOCwxNCBAQAogI2luY2x1ZGUgIkNvbnRlbnREaXN0
cmlidXRvci5oIgogCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ29udGVudERpc3RyaWJ1dG9yOjpDb250
ZW50RGlzdHJpYnV0b3IoKQotICAgIDogbV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkKHRydWUp
Ci0gICAgLCBtX3ZhbGlkaXR5KFVuZGV0ZXJtaW5lZCkKKyAgICA6IG1faXNEaXN0cmlidXRpb25W
YWxpZChmYWxzZSkKIHsKIH0KIApAQCAtNDIsMTE5ICs0Myw3NiBAQCBDb250ZW50RGlzdHJpYnV0
b3I6On5Db250ZW50RGlzdHJpYnV0b3IoKQogewogfQogCi12b2lkIENvbnRlbnREaXN0cmlidXRv
cjo6aW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpCitzdGF0aWMgY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCYga2V5RnJvbVNsb3ROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIHsKLSAg
ICBtX2luc2VydGlvblBvaW50TGlzdElzVmFsaWQgPSBmYWxzZTsKLSAgICBtX2luc2VydGlvblBv
aW50TGlzdC5jbGVhcigpOworICAgIC8vIEZJWE1FOiBXZSBjdXJyZW50bHkgdHJlYXQgdGhlIGVt
cHR5IHN0cmluZyBhbmQgbnVsbCBzdHJpbmcgaW50ZXJjaGFuZ2VhYmx5LiBJcyB0aGlzIGNvcnJl
Y3Q/CisgICAgcmV0dXJuIG5hbWUuaXNOdWxsKCkgPyAqZW1wdHlBdG9tLmltcGwoKSA6ICpuYW1l
LmltcGwoKTsKIH0KIAotY29uc3QgVmVjdG9yPFJlZlB0cjxJbnNlcnRpb25Qb2ludD4+JiBDb250
ZW50RGlzdHJpYnV0b3I6OmVuc3VyZUluc2VydGlvblBvaW50TGlzdChTaGFkb3dSb290KiBzaGFk
b3dSb290KQorSW5zZXJ0aW9uUG9pbnQqIENvbnRlbnREaXN0cmlidXRvcjo6ZmluZFNsb3RFbGVt
ZW50QnlOb2RlKGNvbnN0IE5vZGUqIG5vZGUsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7Ci0gICAgaWYg
KG1faW5zZXJ0aW9uUG9pbnRMaXN0SXNWYWxpZCkKLSAgICAgICAgcmV0dXJuIG1faW5zZXJ0aW9u
UG9pbnRMaXN0OwotCi0gICAgbV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkID0gdHJ1ZTsKLSAg
ICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludExpc3QuaXNFbXB0eSgpKTsKLQotICAgIGZvciAoYXV0
byYgZWxlbWVudCA6IGRlc2NlbmRhbnRzT2ZUeXBlPEluc2VydGlvblBvaW50Pigqc2hhZG93Um9v
dCkpCi0gICAgICAgIG1faW5zZXJ0aW9uUG9pbnRMaXN0LmFwcGVuZCgmZWxlbWVudCk7Ci0KLSAg
ICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludExpc3Q7CisgICAgQVNTRVJUKG5vZGUtPnBhcmVudEVs
ZW1lbnQoKSA9PSByb290Lmhvc3QoKSk7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
aXM8RWxlbWVudD4obm9kZSkgPyBkb3duY2FzdDxFbGVtZW50Pigqbm9kZSkuZmFzdEdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OnNsb3RBdHRyKSA6IG51bGxBdG9tOworICAgIHJldHVybiBtX3Nsb3RF
bGVtZW50c0J5TmFtZS5nZXRTbG90RWxlbWVudEJ5TmFtZShrZXlGcm9tU2xvdE5hbWUobmFtZSks
IHJvb3QpOwogfQogCi1JbnNlcnRpb25Qb2ludCogQ29udGVudERpc3RyaWJ1dG9yOjpmaW5kSW5z
ZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25zdAordm9pZCBDb250ZW50RGlzdHJp
YnV0b3I6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgSW5z
ZXJ0aW9uUG9pbnQmIGVsZW1lbnQsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7Ci0gICAgcmV0dXJuIG1f
bm9kZVRvSW5zZXJ0aW9uUG9pbnQuZ2V0KGtleSk7CisgICAgbV9zbG90cy5hZGQoJmVsZW1lbnQp
OworICAgIG1fc2xvdEVsZW1lbnRzQnlOYW1lLmFkZChrZXlGcm9tU2xvdE5hbWUobmFtZSksIGVs
ZW1lbnQsIHJvb3QpOworICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24ocm9vdC5ob3N0KCkpOwog
fQogCi12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQor
dm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgSW5zZXJ0aW9uUG9pbnQmIGVsZW1lbnQsIFNoYWRvd1Jvb3QmIHJv
b3QpCiB7Ci0gICAgQVNTRVJUKG5lZWRzRGlzdHJpYnV0aW9uKCkpOwotICAgIEFTU0VSVChtX25v
ZGVUb0luc2VydGlvblBvaW50LmlzRW1wdHkoKSk7Ci0gICAgQVNTRVJUKCFob3N0LT5jb250YWlu
aW5nU2hhZG93Um9vdCgpIHx8IGhvc3QtPmNvbnRhaW5pbmdTaGFkb3dSb290KCktPmRpc3RyaWJ1
dG9yKCkuaXNWYWxpZCgpKTsKLQotICAgIG1fdmFsaWRpdHkgPSBWYWxpZDsKLQotICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gaG9zdC0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+PiYgaW5zZXJ0aW9uUG9pbnRzID0gZW5zdXJlSW5z
ZXJ0aW9uUG9pbnRMaXN0KHJvb3QpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
c2VydGlvblBvaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgSW5zZXJ0aW9uUG9pbnQq
IHBvaW50ID0gaW5zZXJ0aW9uUG9pbnRzW2ldLmdldCgpOwotICAgICAgICAgICAgaWYgKCFwb2lu
dC0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhwb2ludCwgaG9zdCk7Ci0gICAgICAgIH0KLSAgICB9Cisg
ICAgbV9zbG90cy5yZW1vdmUoJmVsZW1lbnQpOworICAgIG1fc2xvdEVsZW1lbnRzQnlOYW1lLnJl
bW92ZShrZXlGcm9tU2xvdE5hbWUobmFtZSksIGVsZW1lbnQpOworICAgIGludmFsaWRhdGVEaXN0
cmlidXRpb24ocm9vdC5ob3N0KCkpOwogfQogCi1ib29sIENvbnRlbnREaXN0cmlidXRvcjo6aW52
YWxpZGF0ZShFbGVtZW50KiBob3N0KQordm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OnJlZGlzdHJp
YnV0ZShTaGFkb3dSb290JiByb290KQogewotICAgIEFTU0VSVChuZWVkc0ludmFsaWRhdGlvbigp
KTsKLSAgICBib29sIG5lZWRzUmVhdHRhY2ggPSAobV92YWxpZGl0eSA9PSBVbmRldGVybWluZWQp
IHx8ICFtX25vZGVUb0luc2VydGlvblBvaW50LmlzRW1wdHkoKTsKLQotICAgIGlmIChTaGFkb3dS
b290KiByb290ID0gaG9zdC0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+PiYgaW5zZXJ0aW9uUG9pbnRzID0gZW5zdXJlSW5zZXJ0aW9u
UG9pbnRMaXN0KHJvb3QpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlv
blBvaW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgbmVlZHNSZWF0dGFjaCA9IHRydWU7
Ci0gICAgICAgICAgICBpbnNlcnRpb25Qb2ludHNbaV0tPmNsZWFyRGlzdHJpYnV0aW9uKCk7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgbV9pc0Rpc3RyaWJ1dGlvblZhbGlkID0gdHJ1ZTsKKyAgICAK
KyAgICBmb3IgKGF1dG8gc2xvdCA6IG1fc2xvdHMpCisgICAgICAgIHNsb3QtPm1fZGlzdHJpYnV0
aW9uLmNsZWFyKCk7CiAKLSAgICBtX3ZhbGlkaXR5ID0gSW52YWxpZGF0aW5nOwotICAgIG1fbm9k
ZVRvSW5zZXJ0aW9uUG9pbnQuY2xlYXIoKTsKLSAgICByZXR1cm4gbmVlZHNSZWF0dGFjaDsKKyAg
ICBkaXN0cmlidXRlSG9zdENoaWxkcmVuKHJvb3QpOwogfQogCi12b2lkIENvbnRlbnREaXN0cmli
dXRvcjo6ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQsIEVsZW1lbnQqIGhvc3QpCit2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZUhv
c3RDaGlsZHJlbihTaGFkb3dSb290JiByb290KQogewotICAgIGZvciAoTm9kZSogY2hpbGQgPSBo
b3N0LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
Ci0gICAgICAgIEFTU0VSVCghY2hpbGQtPmlzSW5zZXJ0aW9uUG9pbnQoKSk7Ci0KLSAgICAgICAg
aWYgKGluc2VydGlvblBvaW50LT5tYXRjaFR5cGVGb3IoY2hpbGQpICE9IEluc2VydGlvblBvaW50
OjpBbHdheXNNYXRjaGVzKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgbV9ub2Rl
VG9JbnNlcnRpb25Qb2ludC5hZGQoY2hpbGQsIGluc2VydGlvblBvaW50KTsKKyAgICBhdXRvKiBk
ZWZhdWx0U2xvdCA9IG1fc2xvdEVsZW1lbnRzQnlOYW1lLmdldFNsb3RFbGVtZW50QnlOYW1lKGtl
eUZyb21TbG90TmFtZShudWxsQXRvbSksIHJvb3QpOworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9
IHJvb3QuaG9zdCgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PigqY2hpbGQpKSB7CisgICAgICAgICAg
ICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKmNoaWxkKTsKKyAgICAgICAgICAg
IGF1dG8mIHNsb3ROYW1lID0gZWxlbWVudC5mYXN0R2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c2xv
dEF0dHIpOworICAgICAgICAgICAgaWYgKCFzbG90TmFtZS5pc051bGwoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBzbG90ID0gbV9zbG90RWxlbWVudHNCeU5hbWUuZ2V0U2xvdEVsZW1l
bnRCeU5hbWUoKnNsb3ROYW1lLmltcGwoKSwgcm9vdCkpCisgICAgICAgICAgICAgICAgICAgIGRp
c3RyaWJ1dGVOb2RlKCpjaGlsZCwgKnNsb3QpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChkZWZhdWx0U2xvdCkKKyAgICAg
ICAgICAgIGRpc3RyaWJ1dGVOb2RlKCpjaGlsZCwgKmRlZmF1bHRTbG90KTsKICAgICB9Ci0KLSAg
ICBpZiAobV9ub2RlVG9JbnNlcnRpb25Qb2ludC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LSAgICBpbnNlcnRpb25Qb2ludC0+c2V0SGFzRGlzdHJpYnV0aW9uKCk7CiB9CiAKLXZvaWQgQ29u
dGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24oU2hhZG93Um9vdCogc2hhZG93Um9v
dCkKK3ZvaWQgQ29udGVudERpc3RyaWJ1dG9yOjpkaXN0cmlidXRlTm9kZShOb2RlJiBob3N0Q2hp
bGQsIEluc2VydGlvblBvaW50JiBzbG90KQogewotICAgIEFTU0VSVChzaGFkb3dSb290KTsKLQot
ICAgIFZlY3RvcjxTaGFkb3dSb290KiwgOD4gc2hhZG93Um9vdHM7Ci0gICAgZm9yIChFbGVtZW50
KiBjdXJyZW50ID0gc2hhZG93Um9vdC0+aG9zdCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+c2hhZG93SG9zdCgpKSB7Ci0gICAgICAgIFNoYWRvd1Jvb3QqIGN1cnJlbnRSb290ID0gY3Vy
cmVudC0+c2hhZG93Um9vdCgpOwotICAgICAgICBpZiAoIWN1cnJlbnRSb290LT5kaXN0cmlidXRv
cigpLm5lZWRzRGlzdHJpYnV0aW9uKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc2hh
ZG93Um9vdHMuYXBwZW5kKGN1cnJlbnRSb290KTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBp
ID0gc2hhZG93Um9vdHMuc2l6ZSgpOyBpID4gMDsgLS1pKQotICAgICAgICBzaGFkb3dSb290c1tp
IC0gMV0tPmRpc3RyaWJ1dG9yKCkuZGlzdHJpYnV0ZShzaGFkb3dSb290c1tpIC0gMV0tPmhvc3Qo
KSk7CisgICAgQVNTRVJUKGhvc3RDaGlsZC5wYXJlbnRFbGVtZW50KCktPnNoYWRvd1Jvb3QoKSA9
PSBzbG90LmNvbnRhaW5pbmdTaGFkb3dSb290KCkpOworICAgIHNsb3QubV9kaXN0cmlidXRpb24u
YXBwZW5kKCZob3N0Q2hpbGQpOwogfQogCiB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6aW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KQogewotICAgIGJvb2wgZGlkTmVlZEludmFs
aWRhdGlvbiA9IG5lZWRzSW52YWxpZGF0aW9uKCk7Ci0gICAgYm9vbCBuZWVkc1JlYXR0YWNoID0g
ZGlkTmVlZEludmFsaWRhdGlvbiA/IGludmFsaWRhdGUoaG9zdCkgOiBmYWxzZTsKLQotICAgIGlm
IChuZWVkc1JlYXR0YWNoKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBkbyBs
ZXNzIHdvcmsgaGVyZSBpbiBzb21lIGNhc2VzLgorICAgIGlmIChob3N0KQogICAgICAgICBob3N0
LT5zZXROZWVkc1N0eWxlUmVjYWxjKFJlY29uc3RydWN0UmVuZGVyVHJlZSk7CiAKLSAgICBpZiAo
ZGlkTmVlZEludmFsaWRhdGlvbikgewotICAgICAgICBBU1NFUlQobV92YWxpZGl0eSA9PSBJbnZh
bGlkYXRpbmcpOwotICAgICAgICBtX3ZhbGlkaXR5ID0gSW52YWxpZGF0ZWQ7Ci0gICAgfQotfQot
Ci12b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlkU2hhZG93Qm91bmRhcnlDaGFuZ2UoRWxlbWVu
dCogaG9zdCkKLXsKLSAgICBzZXRWYWxpZGl0eShVbmRldGVybWluZWQpOwotICAgIGludmFsaWRh
dGVEaXN0cmlidXRpb24oaG9zdCk7CisgICAgYm9vbCBkaXN0cmlidXRpb25Jc0Fsd2F5c1ZhbGlk
ID0gbV9zbG90cy5pc0VtcHR5KCk7CisgICAgbV9pc0Rpc3RyaWJ1dGlvblZhbGlkID0gZGlzdHJp
YnV0aW9uSXNBbHdheXNWYWxpZDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAppbmRleCBmMGVkOGFmLi5iMTNjMDIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuaApAQCAtMzEs
OCArMzEsMTAgQEAKICNpZm5kZWYgQ29udGVudERpc3RyaWJ1dG9yX2gKICNkZWZpbmUgQ29udGVu
dERpc3RyaWJ1dG9yX2gKIAorI2luY2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC00MCw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7
CiBjbGFzcyBJbnNlcnRpb25Qb2ludDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTaGFkb3dSb290OwpA
QCAtNDcsNTAgKzUwLDMxIEBAIGNsYXNzIFNoYWRvd1Jvb3Q7CiBjbGFzcyBDb250ZW50RGlzdHJp
YnV0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnREaXN0cmlidXRvcik7CiBw
dWJsaWM6Ci0gICAgZW51bSBWYWxpZGl0eSB7Ci0gICAgICAgIFZhbGlkID0gMCwKLSAgICAgICAg
SW52YWxpZGF0ZWQgPSAxLAotICAgICAgICBJbnZhbGlkYXRpbmcgPSAyLAotICAgICAgICBVbmRl
dGVybWluZWQgPSAzCi0gICAgfTsKLQogICAgIENvbnRlbnREaXN0cmlidXRvcigpOwotICAgIH5D
b250ZW50RGlzdHJpYnV0b3IoKTsKKyAgICB2aXJ0dWFsIH5Db250ZW50RGlzdHJpYnV0b3IoKTsK
IAotICAgIHZvaWQgaW52YWxpZGF0ZUluc2VydGlvblBvaW50TGlzdCgpOwotICAgIAotICAgIElu
c2VydGlvblBvaW50KiBmaW5kSW5zZXJ0aW9uUG9pbnRGb3IoY29uc3QgTm9kZSoga2V5KSBjb25z
dDsKKyAgICB2aXJ0dWFsIEluc2VydGlvblBvaW50KiBmaW5kU2xvdEVsZW1lbnRCeU5vZGUoY29u
c3QgTm9kZSosIFNoYWRvd1Jvb3QmKTsKIAotICAgIHZvaWQgZGlzdHJpYnV0ZVNlbGVjdGlvbnNU
byhJbnNlcnRpb25Qb2ludCosIEVsZW1lbnQqIGhvc3QpOworICAgIHZvaWQgYWRkU2xvdEVsZW1l
bnRCeU5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiwgSW5zZXJ0aW9uUG9pbnQmLCBTaGFkb3dSb290
Jik7CisgICAgdm9pZCByZW1vdmVTbG90RWxlbWVudEJ5TmFtZShjb25zdCBBdG9taWNTdHJpbmcm
LCBJbnNlcnRpb25Qb2ludCYsIFNoYWRvd1Jvb3QmKTsKIAorICAgIGJvb2wgaXNEaXN0cmlidXRp
b25WYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXN0cmlidXRpb25WYWxpZDsgfQogICAgIHZv
aWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KTsKLSAgICB2b2lkIGRpZFNo
YWRvd0JvdW5kYXJ5Q2hhbmdlKEVsZW1lbnQqIGhvc3QpOwotCi0gICAgc3RhdGljIHZvaWQgZW5z
dXJlRGlzdHJpYnV0aW9uKFNoYWRvd1Jvb3QqKTsKLSAgICB2b2lkIGRpc3RyaWJ1dGUoRWxlbWVu
dCogaG9zdCk7Ci0gICAgYm9vbCBuZWVkc0Rpc3RyaWJ1dGlvbigpIGNvbnN0OwogCi1wcml2YXRl
OgotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+PiYgZW5zdXJlSW5zZXJ0
aW9uUG9pbnRMaXN0KFNoYWRvd1Jvb3QqKTsKKyAgICB2b2lkIHJlZGlzdHJpYnV0ZShTaGFkb3dS
b290Jik7CiAKLSAgICBib29sIGludmFsaWRhdGUoRWxlbWVudCogaG9zdCk7Citwcm90ZWN0ZWQ6
CisgICAgdm9pZCBkaXN0cmlidXRlTm9kZShOb2RlJiwgSW5zZXJ0aW9uUG9pbnQmKTsKIAotICAg
IHZvaWQgc2V0VmFsaWRpdHkoVmFsaWRpdHkgdmFsaWRpdHkpIHsgbV92YWxpZGl0eSA9IHZhbGlk
aXR5OyB9Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV92YWxpZGl0eSA9PSBW
YWxpZDsgfQotICAgIGJvb2wgbmVlZHNJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Zh
bGlkaXR5ICE9IEludmFsaWRhdGVkOyB9Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBkaXN0
cmlidXRlSG9zdENoaWxkcmVuKFNoYWRvd1Jvb3QmKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8SW5z
ZXJ0aW9uUG9pbnQ+PiBtX2luc2VydGlvblBvaW50TGlzdDsKLSAgICBIYXNoTWFwPGNvbnN0IE5v
ZGUqLCBSZWZQdHI8SW5zZXJ0aW9uUG9pbnQ+PiBtX25vZGVUb0luc2VydGlvblBvaW50OwotICAg
IGJvb2wgbV9pbnNlcnRpb25Qb2ludExpc3RJc1ZhbGlkOwotICAgIHVuc2lnbmVkIG1fdmFsaWRp
dHkgOiAyOworICAgIC8vIEZJWE1FOiBSZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQgYnkgbWVy
Z2luZyBtX3Nsb3RFbGVtZW50c0J5TmFtZSBhbmQgbV9zbG90cy4KKyAgICBEb2N1bWVudE9yZGVy
ZWRNYXAgbV9zbG90RWxlbWVudHNCeU5hbWU7CisgICAgdW5zaWduZWQgbV9pc0Rpc3RyaWJ1dGlv
blZhbGlkIDogMTsKKyAgICBIYXNoU2V0PEluc2VydGlvblBvaW50Kj4gbV9zbG90czsKIH07CiAK
LWlubGluZSBib29sIENvbnRlbnREaXN0cmlidXRvcjo6bmVlZHNEaXN0cmlidXRpb24oKSBjb25z
dAotewotICAgIC8vIER1cmluZyB0aGUgaW52YWxpZGF0aW9uLCByZS1kaXN0cmlidXRpb24gc2hv
dWxkIGJlIHN1cHJlc3NlZC4KLSAgICByZXR1cm4gbV92YWxpZGl0eSAhPSBWYWxpZCAmJiBtX3Zh
bGlkaXR5ICE9IEludmFsaWRhdGluZzsKLX0KLQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCA5Y2NlMjE0Li4zNDA3N2I2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBA
IC00MSw3ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEluc2VydGlvblBv
aW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRl
SW5zZXJ0aW9uUG9pbnQpCi0gICAgLCBtX2hhc0Rpc3RyaWJ1dGlvbihmYWxzZSkKIHsKIH0KIApA
QCAtNTEsNyArNTAsNyBAQCBJbnNlcnRpb25Qb2ludDo6fkluc2VydGlvblBvaW50KCkKIAogYm9v
bCBJbnNlcnRpb25Qb2ludDo6c2hvdWxkVXNlRmFsbGJhY2tFbGVtZW50cygpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGlzQWN0aXZlKCkgJiYgIWhhc0Rpc3RyaWJ1dGlvbigpOworICAgIHJldHVybiBp
c0FjdGl2ZSgpICYmIGRpc3RyaWJ1dGlvbigpLmlzRW1wdHkoKTsKIH0KIAogYm9vbCBJbnNlcnRp
b25Qb2ludDo6aXNBY3RpdmUoKSBjb25zdApAQCAtNzMsOTAgKzcyLDQzIEBAIGJvb2wgSW5zZXJ0
aW9uUG9pbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAg
IHJldHVybiAhaXNBY3RpdmUoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHls
ZSk7CiB9CiAKLXZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYgY2hhbmdlKQotewotICAgIEhUTUxFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlKTsKLSAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IGNvbnRhaW5pbmdTaGFkb3dSb290KCkp
Ci0gICAgICAgIHJvb3QtPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKLX0KLQogTm9kZTo6SW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBJbnNlcnRpb25Qb2ludDo6aW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQogewogICAgIEhUTUxFbGVtZW50OjppbnNlcnRl
ZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogCi0gICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBjb250
YWluaW5nU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIHJvb3QtPmRpc3RyaWJ1dG9yKCkuZGlkU2hh
ZG93Qm91bmRhcnlDaGFuZ2Uocm9vdC0+aG9zdCgpKTsKLSAgICAgICAgcm9vdC0+ZGlzdHJpYnV0
b3IoKS5pbnZhbGlkYXRlSW5zZXJ0aW9uUG9pbnRMaXN0KCk7Ci0gICAgfQorICAgIGlmIChTaGFk
b3dSb290KiBzaGFkb3cgPSBjb250YWluaW5nU2hhZG93Um9vdCgpKQorICAgICAgICBzaGFkb3ct
PmRpc3RyaWJ1dG9yKCkuYWRkU2xvdEVsZW1lbnRCeU5hbWUoZmFzdEdldEF0dHJpYnV0ZShuYW1l
QXR0ciksICp0aGlzLCAqc2hhZG93KTsKIAogICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwogfQog
CiB2b2lkIEluc2VydGlvblBvaW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRp
b25Qb2ludCkKIHsKLSAgICBTaGFkb3dSb290KiByb290ID0gY29udGFpbmluZ1NoYWRvd1Jvb3Qo
KTsKLSAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJvb3QgPSBpbnNlcnRpb25Qb2ludC5jb250YWlu
aW5nU2hhZG93Um9vdCgpOwotCi0gICAgaWYgKHJvb3QgJiYgcm9vdC0+aG9zdCgpKSB7Ci0gICAg
ICAgIHJvb3QtPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgcm9vdC0+ZGlzdHJp
YnV0b3IoKS5pbnZhbGlkYXRlSW5zZXJ0aW9uUG9pbnRMaXN0KCk7CisgICAgaWYgKGlzSW5TaGFk
b3dUcmVlKCkpIHsKKyAgICAgICAgU2hhZG93Um9vdCYgb2xkU2hhZG93Um9vdCA9IGRvd25jYXN0
PFNoYWRvd1Jvb3Q+KHRyZWVTY29wZSgpLnJvb3ROb2RlKCkpOworICAgICAgICBvbGRTaGFkb3dS
b290LmRpc3RyaWJ1dG9yKCkucmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoZmFzdEdldEF0dHJpYnV0
ZShuYW1lQXR0ciksICp0aGlzLCBvbGRTaGFkb3dSb290KTsKKyAgICAgICAgbV9kaXN0cmlidXRp
b24uY2xlYXIoKTsKICAgICB9Ci0KLSAgICAvLyBTaW5jZSB0aGlzIGluc2VydGlvbiBwb2ludCBp
cyBubyBsb25nZXIgdmlzaWJsZSBmcm9tIHRoZSBzaGFkb3cgc3VidHJlZSwgaXQgbmVlZCB0byBj
bGVhbiBpdHNlbGYgdXAuCi0gICAgY2xlYXJEaXN0cmlidXRpb24oKTsKKyAgICBBU1NFUlQobV9k
aXN0cmlidXRpb24uaXNFbXB0eSgpKTsKIAogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbShp
bnNlcnRpb25Qb2ludCk7CiB9Ci0gICAgCi1Ob2RlKiBJbnNlcnRpb25Qb2ludDo6Zmlyc3REaXN0
cmlidXRlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2hhc0Rpc3RyaWJ1dGlvbikKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgZm9yIChOb2RlKiBjdXJyZW50ID0gc2hhZG93SG9zdCgpLT5maXJzdENo
aWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGluZygpKSB7Ci0gICAg
ICAgIGlmIChtYXRjaFR5cGVGb3IoY3VycmVudCkgPT0gSW5zZXJ0aW9uUG9pbnQ6OkFsd2F5c01h
dGNoZXMpCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7
Ci19CiAKLU5vZGUqIEluc2VydGlvblBvaW50OjpsYXN0RGlzdHJpYnV0ZWQoKSBjb25zdAorY29u
c3QgVmVjdG9yPE5vZGUqPiYgSW5zZXJ0aW9uUG9pbnQ6OmRpc3RyaWJ1dGlvbigpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX2hhc0Rpc3RyaWJ1dGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZm9y
IChOb2RlKiBjdXJyZW50ID0gc2hhZG93SG9zdCgpLT5sYXN0Q2hpbGQoKTsgY3VycmVudDsgY3Vy
cmVudCA9IGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIGlmIChtYXRjaFR5
cGVGb3IoY3VycmVudCkgPT0gSW5zZXJ0aW9uUG9pbnQ6OkFsd2F5c01hdGNoZXMpCi0gICAgICAg
ICAgICByZXR1cm4gY3VycmVudDsKKyAgICBpZiAoYXV0byogcm9vdCA9IGNvbnRhaW5pbmdTaGFk
b3dSb290KCkpIHsKKyAgICAgICAgaWYgKHJvb3QtPmRpc3RyaWJ1dG9yKCkuaXNEaXN0cmlidXRp
b25WYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIG1fZGlzdHJpYnV0aW9uOworICAgICAgICBy
b290LT5kaXN0cmlidXRvcigpLnJlZGlzdHJpYnV0ZSgqcm9vdCk7CiAgICAgfQotICAgIHJldHVy
biAwOwotfQotCi1Ob2RlKiBJbnNlcnRpb25Qb2ludDo6bmV4dERpc3RyaWJ1dGVkVG8oY29uc3Qg
Tm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBmb3IgKE5vZGUqIGN1cnJlbnQgPSBub2RlLT5uZXh0
U2libGluZygpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICBpZiAobWF0Y2hUeXBlRm9yKGN1cnJlbnQpID09IEluc2VydGlvblBvaW50OjpBbHdh
eXNNYXRjaGVzKQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAgfQotICAgIHJldHVy
biAwOwotfQotCi1Ob2RlKiBJbnNlcnRpb25Qb2ludDo6cHJldmlvdXNEaXN0cmlidXRlZFRvKGNv
bnN0IE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgZm9yIChOb2RlKiBjdXJyZW50ID0gbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5wcmV2aW91c1Np
YmxpbmcoKSkgewotICAgICAgICBpZiAobWF0Y2hUeXBlRm9yKGN1cnJlbnQpID09IEluc2VydGlv
blBvaW50OjpBbHdheXNNYXRjaGVzKQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAg
fQotICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2Rpc3RyaWJ1dGlvbjsKIH0KIAogSW5zZXJ0
aW9uUG9pbnQqIGZpbmRJbnNlcnRpb25Qb2ludE9mKGNvbnN0IE5vZGUqIHByb2plY3RlZE5vZGUp
CiB7Ci0gICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBzaGFkb3dSb290T2ZQYXJlbnRG
b3JEaXN0cmlidXRpb24ocHJvamVjdGVkTm9kZSkpIHsKLSAgICAgICAgaWYgKFNoYWRvd1Jvb3Qq
IHJvb3QgPSBwcm9qZWN0ZWROb2RlLT5jb250YWluaW5nU2hhZG93Um9vdCgpKQotICAgICAgICAg
ICAgQ29udGVudERpc3RyaWJ1dG9yOjplbnN1cmVEaXN0cmlidXRpb24ocm9vdCk7Ci0gICAgICAg
IHJldHVybiBzaGFkb3dSb290LT5kaXN0cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihw
cm9qZWN0ZWROb2RlKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QgPSBzaGFkb3dSb290T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24ocHJvamVjdGVk
Tm9kZSkpCisgICAgICAgIHJldHVybiBzaGFkb3dSb290LT5kaXN0cmlidXRvcigpLmZpbmRTbG90
RWxlbWVudEJ5Tm9kZShwcm9qZWN0ZWROb2RlLCAqc2hhZG93Um9vdCk7CisgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGM2M2I3MjguLjE2YzNkYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNDEsMzggKzQxLDI2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zZXJ0aW9uUG9pbnQgOiBwdWJsaWMg
SFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIGVudW0gTWF0Y2hUeXBlIHsKLSAgICAgICAgQWx3
YXlzTWF0Y2hlcywKLSAgICAgICAgTmV2ZXJNYXRjaGVzLAotICAgIH07Ci0KICAgICB2aXJ0dWFs
IH5JbnNlcnRpb25Qb2ludCgpOwogCi0gICAgYm9vbCBoYXNEaXN0cmlidXRpb24oKSBjb25zdCB7
IHJldHVybiBtX2hhc0Rpc3RyaWJ1dGlvbjsgfQotICAgIHZvaWQgc2V0SGFzRGlzdHJpYnV0aW9u
KCkgeyBtX2hhc0Rpc3RyaWJ1dGlvbiA9IHRydWU7IH0KLSAgICB2b2lkIGNsZWFyRGlzdHJpYnV0
aW9uKCkgeyBtX2hhc0Rpc3RyaWJ1dGlvbiA9IGZhbHNlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBNYXRjaFR5cGUgbWF0Y2hUeXBl
Rm9yKE5vZGUqKSBjb25zdCB7IHJldHVybiBBbHdheXNNYXRjaGVzOyB9Ci0KICAgICBib29sIHNo
b3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdDsKIAotICAgIE5vZGUqIGZpcnN0RGlzdHJp
YnV0ZWQoKSBjb25zdDsKLSAgICBOb2RlKiBsYXN0RGlzdHJpYnV0ZWQoKSBjb25zdDsKLSAgICBO
b2RlKiBuZXh0RGlzdHJpYnV0ZWRUbyhjb25zdCBOb2RlKikgY29uc3Q7Ci0gICAgTm9kZSogcHJl
dmlvdXNEaXN0cmlidXRlZFRvKGNvbnN0IE5vZGUqKSBjb25zdDsKKyAgICBjb25zdCBWZWN0b3I8
Tm9kZSo+JiBkaXN0cmlidXRpb24oKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIEluc2VydGlv
blBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250
YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzSW5z
ZXJ0aW9uUG9pbnROb2RlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgYm9vbCBtX2hhc0Rpc3RyaWJ1dGlvbjsKKyAgICBtdXRhYmxlIFZlY3RvcjxOb2RlKj4g
bV9kaXN0cmlidXRpb247CisKKyAgICBmcmllbmQgY2xhc3MgQ29udGVudERpc3RyaWJ1dG9yOwog
fTsKIAogaW5saW5lIGJvb2wgaXNBY3RpdmVJbnNlcnRpb25Qb2ludChjb25zdCBOb2RlKiBub2Rl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCmluZGV4IDIyY2UzMzkuLjNhZDMxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpZiBFTkFCTEUoVklERU8pCiAjaW5jbHVkZSAiTWVkaWFDb250cm9sRWxlbWVudHMuaCIKIAor
I2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRvci5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5o
IgogI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5k
bGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5kZXJUcmVlUG9zaXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUmVuZGVyVHJlZVBvc2l0aW9uLmNwcAppbmRl
eCBhZjliOTEzLi5hMTc4YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SZW5k
ZXJUcmVlUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1JlbmRlclRyZWVQ
b3NpdGlvbi5jcHAKQEAgLTM4LDYgKzM4LDkgQEAgdm9pZCBSZW5kZXJUcmVlUG9zaXRpb246OmNv
bXB1dGVOZXh0U2libGluZyhjb25zdCBOb2RlJiBub2RlKQogICAgIEFTU0VSVCghbm9kZS5yZW5k
ZXJlcigpKTsKICAgICBpZiAobV9oYXNWYWxpZE5leHRTaWJsaW5nKSB7CiAgICAgICAgIC8vIFN0
b3AgdmFsaWRhdGluZyBhdCBzb21lIHBvaW50IHNvIHRoZSBhc3NlcnQgZG9lc24ndCBtYWtlIHVz
IE8oTl4yKSBvbiBkZWJ1ZyBidWlsZHMuCisgICAgICAgIGlmIChuZXh0U2libGluZ1JlbmRlcmVy
KG5vZGUsIG1fcGFyZW50KSAhPSBtX25leHRTaWJsaW5nKSB7CisgICAgICAgICAgICBuZXh0U2li
bGluZ1JlbmRlcmVyKG5vZGUsIG1fcGFyZW50KTsKKyAgICAgICAgfQogICAgICAgICBBU1NFUlQo
bV9wYXJlbnQuaXNSZW5kZXJWaWV3KCkgfHwgKyttX2Fzc2VydGlvbkxpbWl0Q291bnRlciA+IDIw
IHx8IG5leHRTaWJsaW5nUmVuZGVyZXIobm9kZSwgbV9wYXJlbnQpID09IG1fbmV4dFNpYmxpbmcp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjIsOCArNjUsMTEgQEAgUmVuZGVyT2JqZWN0
KiBSZW5kZXJUcmVlUG9zaXRpb246OnByZXZpb3VzU2libGluZ1JlbmRlcmVyKGNvbnN0IFRleHQm
IHRleHROb2RlKQogICAgICAgICBpZiAocmVuZGVyZXIgJiYgIVJlbmRlclRyZWVQb3NpdGlvbjo6
aXNSZW5kZXJlclJlcGFyZW50ZWQoKnJlbmRlcmVyKSkKICAgICAgICAgICAgIHJldHVybiByZW5k
ZXJlcjsKICAgICB9Ci0gICAgaWYgKFBzZXVkb0VsZW1lbnQqIGJlZm9yZSA9IHRleHROb2RlLnBh
cmVudEVsZW1lbnQoKS0+YmVmb3JlUHNldWRvRWxlbWVudCgpKQotICAgICAgICByZXR1cm4gYmVm
b3JlLT5yZW5kZXJlcigpOworICAgIGlmIChhdXRvIHBhcmVudCA9IHRleHROb2RlLnBhcmVudEVs
ZW1lbnQoKSkgeworICAgICAgICBpZiAoUHNldWRvRWxlbWVudCogYmVmb3JlID0gcGFyZW50LT5i
ZWZvcmVQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgICAgICByZXR1cm4gYmVmb3JlLT5yZW5kZXJl
cigpOworICAgIH0KKwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCmluZGV4IDJkODU0ODQuLmVkNjY1Y2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwCkBAIC0zNTksMTAgKzM1OSw4IEBA
IHN0YXRpYyB2b2lkIGF0dGFjaENoaWxkcmVuKENvbnRhaW5lck5vZGUmIGN1cnJlbnQsIFJlbmRl
clN0eWxlJiBpbmhlcml0ZWRTdHlsZSwKIAogc3RhdGljIHZvaWQgYXR0YWNoRGlzdHJpYnV0ZWRD
aGlsZHJlbihJbnNlcnRpb25Qb2ludCYgaW5zZXJ0aW9uUG9pbnQsIFJlbmRlclN0eWxlJiBpbmhl
cml0ZWRTdHlsZSwgUmVuZGVyVHJlZVBvc2l0aW9uJiByZW5kZXJUcmVlUG9zaXRpb24pCiB7Ci0g
ICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBpbnNlcnRpb25Qb2ludC5jb250YWluaW5n
U2hhZG93Um9vdCgpKQotICAgICAgICBDb250ZW50RGlzdHJpYnV0b3I6OmVuc3VyZURpc3RyaWJ1
dGlvbihzaGFkb3dSb290KTsKLQotICAgIGZvciAoTm9kZSogY3VycmVudCA9IGluc2VydGlvblBv
aW50LmZpcnN0RGlzdHJpYnV0ZWQoKTsgY3VycmVudDsgY3VycmVudCA9IGluc2VydGlvblBvaW50
Lm5leHREaXN0cmlidXRlZFRvKGN1cnJlbnQpKSB7CisgICAgYXV0byYgZGlzdHJpYnV0aW9uID0g
aW5zZXJ0aW9uUG9pbnQuZGlzdHJpYnV0aW9uKCk7CisgICAgZm9yIChOb2RlKiBjdXJyZW50IDog
ZGlzdHJpYnV0aW9uKSB7CiAgICAgICAgIGlmIChjdXJyZW50LT5yZW5kZXJlcigpKQogICAgICAg
ICAgICAgcmVuZGVyVHJlZVBvc2l0aW9uLmludmFsaWRhdGVOZXh0U2libGluZygqY3VycmVudC0+
cmVuZGVyZXIoKSk7CiAgICAgICAgIGlmIChpczxUZXh0PigqY3VycmVudCkpIHsKQEAgLTM3OSw3
ICszNzcsNyBAQCBzdGF0aWMgdm9pZCBhdHRhY2hEaXN0cmlidXRlZENoaWxkcmVuKEluc2VydGlv
blBvaW50JiBpbnNlcnRpb25Qb2ludCwgUmVuZGVyU3R5bAogICAgICAgICB9CiAgICAgfQogICAg
IC8vIFVzZSBhY3R1YWwgY2hpbGRyZW4gYXMgZmFsbGJhY2sgY29udGVudC4KLSAgICBpZiAoIWlu
c2VydGlvblBvaW50Lmhhc0Rpc3RyaWJ1dGlvbigpKQorICAgIGlmIChkaXN0cmlidXRpb24uaXNF
bXB0eSgpKQogICAgICAgICBhdHRhY2hDaGlsZHJlbihpbnNlcnRpb25Qb2ludCwgaW5oZXJpdGVk
U3R5bGUsIHJlbmRlclRyZWVQb3NpdGlvbik7CiB9CiAKQEAgLTUxOSw3ICs1MTcsNyBAQCBzdGF0
aWMgdm9pZCBhdHRhY2hSZW5kZXJUcmVlKEVsZW1lbnQmIGN1cnJlbnQsIFJlbmRlclN0eWxlJiBp
bmhlcml0ZWRTdHlsZSwgUmVuZAogCiBzdGF0aWMgdm9pZCBkZXRhY2hEaXN0cmlidXRlZENoaWxk
cmVuKEluc2VydGlvblBvaW50JiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBmb3IgKE5vZGUqIGN1
cnJlbnQgPSBpbnNlcnRpb25Qb2ludC5maXJzdERpc3RyaWJ1dGVkKCk7IGN1cnJlbnQ7IGN1cnJl
bnQgPSBpbnNlcnRpb25Qb2ludC5uZXh0RGlzdHJpYnV0ZWRUbyhjdXJyZW50KSkgeworICAgIGZv
ciAoTm9kZSogY3VycmVudCA6IGluc2VydGlvblBvaW50LmRpc3RyaWJ1dGlvbigpKSB7CiAgICAg
ICAgIGlmIChpczxUZXh0PigqY3VycmVudCkpIHsKICAgICAgICAgICAgIGRldGFjaFRleHRSZW5k
ZXJlcihkb3duY2FzdDxUZXh0PigqY3VycmVudCkpOwogICAgICAgICAgICAgY29udGludWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAzYjU4NzhlLi4xYmVlZDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdUUmVmRWxlbWVudC5oIgogCisjaW5jbHVk
ZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA2NGUxMGFhLi4zMmQ1OWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0Rv
Y3VtZW50LmgiCisjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAjaW5jbHVkZSAiRWxl
bWVudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdS
ZXNvdXJjZS5oIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>