<?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>110524</bug_id>
          
          <creation_ts>2013-02-21 15:58:12 -0800</creation_ts>
          <short_desc>Add a way to watch pages for elements matching a CSS selector</short_desc>
          <delta_ts>2015-01-27 13:53:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jeffrey Yasskin">jyasskin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eoconnor</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>838963</commentid>
    <comment_count>0</comment_count>
      <attachid>189626</attachid>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-02-21 15:58:12 -0800</bug_when>
    <thetext>Created attachment 189626
Preliminary patch adding a -webkit-callback CSS property

In order to implement http://developer.chrome.com/trunk/extensions/declarativeContent.html efficiently, I&apos;d like to add a way to cause certain CSS selectors to fire a callback in the WebKit embedder when they match an element on the page.


The attached patch is a possible direction for this: I&apos;ve added a -webkit-callback CSS property with values of &apos;none&apos; and &apos;-webkit-presence&apos;. If a rule with -webkit-callback: -webkit-presence matches any element in a frame, WebCore::FrameLoaderClient::selectorMatchChanged(selector, true), where &apos;selector&apos; is the result of SelectorList::selectorsText() on the matching rule. Unlike most (all?) other CSS properties, if multiple rules match with this property, all of their selectors get passed back to the client.  The WebKit/chromium embedding then batches these within a microtask to present a summary of the changes out to Chromium itself.

If the DOM changes so that a particular rule doesn&apos;t match any element on the page anymore, selectorMatchChanged(selector, false) is called.

Setting &apos;-webkit-callback: none&apos; in a rule unregisters interest in the particular selector used for that rule, but not other selectors. &apos;initial&apos; and &apos;inherit&apos; have no effect.

I chose &quot;-webkit-presence&quot; because this callback is watching for the presence of a type of element on the page. There&apos;s an obvious extension to watch for each element&apos;s creation or destruction, but handling that would be more complex and would require me to make this sort of RenderStyle unshareable. Since I don&apos;t need to watch particular elements for my use case, I didn&apos;t do this.  I also don&apos;t see any need to expose these callbacks to Javascript.

A preliminary use of this API is at https://codereview.chromium.org/12326052/.


This patch still lacks tests, and probably does many things in totally the wrong way. I&apos;d appreciate any suggestions for how to do it better, even if that means completely redoing the approach.  One other interface that might work would be to extend mutation observers to filter by css selector. I didn&apos;t pick this route because it would seem to require a web platform change, and I don&apos;t immediately see a way to do it without notifying on every element change, which, as I said above, is heavier-weight than I actually need.

Let me know what you think. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838991</commentid>
    <comment_count>1</comment_count>
      <attachid>189626</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-02-21 16:30:41 -0800</bug_when>
    <thetext>Comment on attachment 189626
Preliminary patch adding a -webkit-callback CSS property

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

&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1240
&gt; +class FrameLoaderClientImpl::SelectorMatchAggregator : public WebThread::TaskObserver {

Per our offline discussion, since this doesn&apos;t need to run ASAP, it should just be posted as a regular task to the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839926</commentid>
    <comment_count>2</comment_count>
      <attachid>189626</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-22 14:04:18 -0800</bug_when>
    <thetext>Comment on attachment 189626
Preliminary patch adding a -webkit-callback CSS property

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

High level questions:
- How hard do we want to work at hiding -webkit-callback from the web?  Should it show up in getComputedStyle or what should happen if the webpage decides to add it themselves (should that trigger the callback)?
- Should we fire a callback if a node that matches is set to display:none?  We don&apos;t construct a RenderObject or RenderStyle for nodes that are display:none.

There are a bunch of style violations.  You&apos;ll see them when running Tools/Scripts/check-webkit-style.

&gt; Source/WebCore/dom/Document.cpp:2016
&gt; +void Document::removeSelectorMatch(String selector) {

I think if there&apos;s a single match and if you move it in the document, we will destroy the RenderStyle and re-create it. That would fire spurious events (maybe that&apos;s OK?).

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:172
&gt; +    if (!rareNonInheritedData-&gt;m_callbackSelectors.isEmpty()) {

I wonder if this extra check would show up in one of our existing page cyclers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840112</commentid>
    <comment_count>3</comment_count>
      <attachid>189861</attachid>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-02-22 16:42:30 -0800</bug_when>
    <thetext>Created attachment 189861
Preliminary patch adding a -webkit-callback CSS property

This patch implements Adam&apos;s suggestion to just post a task to the main thread, and fixes the style problems.

- I don&apos;t have any personal preference about how much to hide -webkit-callback from the web. I can look into hiding it from getComputedStyle; not sure how to prevent web pages from setting it. At the moment, if a web page uses it itself, that does trigger (or suppress) the callback, so embedders need to handle this, but it&apos;s straightforward to avoid losing callbacks by putting embedder-relevant uses in user- rather than author- stylesheets. (I&apos;ll test this.)
- For the declarativeContent use case, I think it&apos;s actually better to suppress callbacks for display:none nodes, although clearly I&apos;ll have to document that.

- Re &quot;spurious events&quot;, because I&apos;m aggregating these across a task, destroying the RenderStyle and recreating it will cause an extra task to run, but won&apos;t send an extra callback to the FrameLoaderClient.
- I&apos;ll check with you how to test this against a page cycler.

I still need to write tests and a benchmark proving this helps my use case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840214</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-22 18:08:03 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=189861) [details]
&gt; - Re &quot;spurious events&quot;, because I&apos;m aggregating these across a task, destroying the RenderStyle and recreating it will cause an extra task to run, but won&apos;t send an extra callback to the FrameLoaderClient.

Oh, I was more concerned about moving a node causing you to fire the callback(false) even though nothing was removed.

I&apos;ll do a more thorough style review on Monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841234</commentid>
    <comment_count>5</comment_count>
      <attachid>189861</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-02-25 13:13:08 -0800</bug_when>
    <thetext>Comment on attachment 189861
Preliminary patch adding a -webkit-callback CSS property

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

&gt; Source/Platform/chromium/public/WebVector.h:115
&gt; +    void resize(size_t newSize)

I don&apos;t see any callers of this, so I assume it&apos;s used on the Chromium side.

&gt; Source/Platform/chromium/public/WebVector.h:118
&gt; +        for (size_t i = 0, e = std::min(m_size, newSize); i &lt; e; ++i)

Nit: Please use a longer variable name than |e|.  Maybe sizeToCopy?

&gt; Source/WebCore/css/StyleResolver.cpp:3401
&gt; +                state.style()-&gt;removeCallbackSelector(
&gt; +                    rule-&gt;selectorList().selectorsText());

It might be possible to move removeCallbackSelector/addCallbackSelector to ElementRareData.  Instead of hooking a destructor, you could hook RenderObject::styleDidChange to watch for style removal.  You would still need to add a bit to StyleRareNonInheritedData.cpp, but it would just have a simple setter/getter.  It would also avoid having to add a document pointer.

&gt; Source/WebCore/dom/Document.cpp:2011
&gt; +        OwnPtr&lt;pair&lt;HashSet&lt;String&gt;, HashSet&lt;String&gt; &gt; &gt; callbackSelectorChange =

Maybe use a typedef?

&gt; Source/WebCore/dom/Document.h:1190
&gt; +    void addSelectorMatch(String);
&gt; +    void removeSelectorMatch(String);

Nit: I would name these params to make it clear what the parameter is.

&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1242
&gt; +    if (m_webFrame-&gt;client()) {

I&apos;m not sure if you need to check client() for NULL here.  Maybe someone with more knowledge of FrameLoader can comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851690</commentid>
    <comment_count>6</comment_count>
      <attachid>192328</attachid>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-03-08 20:10:17 -0800</bug_when>
    <thetext>Created attachment 192328
Patch adding a -webkit-callback CSS property

* WebVector::resize() is used by WTF::copyToVector in FrameLoaderClientImpl::selectorMatchChanged().

* I didn&apos;t try moving {add,remove}CallbackSelector to ElementRareData because I believe it wouldn&apos;t save any storage: since RenderStyles can be shared between elements, I&apos;d have to save the selector list from StyleResolver into the RenderStyle anyway in order to propagate it to the Elements.

* Re checking client() for NULL, everything in FrameLoaderClientImpl does that, so I think it&apos;s needed.

* Other style comments are addressed, I think.

* I ran this through a couple pagecyclers and saw a fairly consistent ~3% slowdown. Moving the destruction behavior from ~RenderStyle to ~StyleRareNonInheritedData and moving the current StyleRule* from an argument to applyProperty into m_state resolved that slowdown.

* I&apos;ve added a test, too.

Is there anything else you&apos;d like me to do before this is ready for review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852540</commentid>
    <comment_count>7</comment_count>
      <attachid>192328</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-11 11:59:02 -0700</bug_when>
    <thetext>Comment on attachment 192328
Patch adding a -webkit-callback CSS property

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

We&apos;ll want to add a compile time flag for this feature and you&apos;ll need to generate a ChangeLog.  I think we can upload for review after that.

&gt; Source/WebCore/dom/Document.h:1176
&gt; +    void addSelectorMatch(String selector);
&gt; +    void removeSelectorMatch(String selector);

Nit: const String&amp; to avoid some refcount churn.

&gt; Source/WebCore/rendering/style/RenderStyle.h:1266
&gt; +    void addCallbackSelector(String selector, Document*);
&gt; +    void removeCallbackSelector(String selector);

Nit: const String&amp;

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:298
&gt; +    doc.insertUserStyleSheet(&quot;span{-webkit-callback:-webkit-presence !important}&quot;,

Is !important necessary in this test case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853994</commentid>
    <comment_count>8</comment_count>
      <attachid>192855</attachid>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-03-12 19:05:49 -0700</bug_when>
    <thetext>Created attachment 192855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854001</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 19:14:08 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854007</commentid>
    <comment_count>10</comment_count>
      <attachid>192857</attachid>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-03-12 19:19:18 -0700</bug_when>
    <thetext>Created attachment 192857
Patch adding a -webkit-callback CSS property

Now with complete fixes for Tony&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854010</commentid>
    <comment_count>11</comment_count>
      <attachid>192328</attachid>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-03-12 19:21:04 -0700</bug_when>
    <thetext>Comment on attachment 192328
Patch adding a -webkit-callback CSS property

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

&gt;&gt; Source/WebCore/dom/Document.h:1176
&gt;&gt; +    void removeSelectorMatch(String selector);
&gt; 
&gt; Nit: const String&amp; to avoid some refcount churn.

Done

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:1266
&gt;&gt; +    void removeCallbackSelector(String selector);
&gt; 
&gt; Nit: const String&amp;

Done

&gt;&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:298
&gt;&gt; +    doc.insertUserStyleSheet(&quot;span{-webkit-callback:-webkit-presence !important}&quot;,
&gt; 
&gt; Is !important necessary in this test case?

In this one it&apos;s not necessary, although it reflects what I think will be the common use case. I&apos;ve removed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854051</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-12 21:48:24 -0700</bug_when>
    <thetext>Why does this have to be exposed via a new css property? Why isn&apos;t it just native code API (or some special JS bindings or something)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854057</commentid>
    <comment_count>13</comment_count>
      <attachid>192857</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2013-03-12 21:59:25 -0700</bug_when>
    <thetext>Comment on attachment 192857
Patch adding a -webkit-callback CSS property

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

&gt; Source/Platform/chromium/public/WebVector.h:115
&gt; +    void resize(size_t newSize)

It was part of the design of WebVector that it is not resizable.  The idea was that people
should primarily be working with WTF::Vector when inside WebKit and std::vector when outside
of WebKit.  WebVector is just a go-between.

Also, this function does not appear to be used as part of this patch.  We should probably
discuss this change separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854060</commentid>
    <comment_count>14</comment_count>
      <attachid>192857</attachid>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-03-12 22:14:41 -0700</bug_when>
    <thetext>Comment on attachment 192857
Patch adding a -webkit-callback CSS property

@Simon: I would have loved to make this just a native code API, but I couldn&apos;t see how to tell the CSS matching system to execute some code when a particular selector matches without creating a property. Could you point out roughly how to do it?

View in context: https://bugs.webkit.org/attachment.cgi?id=192857&amp;action=review
&gt;&gt; Source/Platform/chromium/public/WebVector.h:115
&gt;&gt; +    void resize(size_t newSize)
&gt; 
&gt; It was part of the design of WebVector that it is not resizable.  The idea was that people
&gt; should primarily be working with WTF::Vector when inside WebKit and std::vector when outside
&gt; of WebKit.  WebVector is just a go-between.
&gt; 
&gt; Also, this function does not appear to be used as part of this patch.  We should probably
&gt; discuss this change separately.

This function is called by WTF::copyToVector (http://trac.webkit.org/browser/trunk/Source/WTF/wtf/HashSet.h#L247) in FrameLoaderClientImpl::selectorMatchChanged. Is there some other way you normally transfer WTF::HashSets into WebVectors? Clearly I can just write out a copy, but that seems like a waste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854072</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2013-03-12 23:06:46 -0700</bug_when>
    <thetext>(In reply to comment #14)
...
&gt; This function is called by WTF::copyToVector (http://trac.webkit.org/browser/trunk/Source/WTF/wtf/HashSet.h#L247) in FrameLoaderClientImpl::selectorMatchChanged. Is there some other way you normally transfer WTF::HashSets into WebVectors? Clearly I can just write out a copy, but that seems like a waste.

Ah.  I don&apos;t think this scenario comes up that often.  I couldn&apos;t find any examples while digging through the code.  In most cases where we want a WebVector, we start out with a WTF::Vector.

I&apos;d be tempted to just create an intermediate WTF::Vector in this case.  While that is a bit costly in the case where resize() is not needed, I suspect it won&apos;t matter in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854078</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-12 23:21:27 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 192857 [details])
&gt; @Simon: I would have loved to make this just a native code API, but I couldn&apos;t see how to tell the CSS matching system to execute some code when a particular selector matches without creating a property. Could you point out roughly how to do it?

When a selector matches what? Anything? Does it matter if there are any rules in the selector?

Presumably you could get StyleResolver to track these magic selectors, but I&apos;m not quite sure what the goal is here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854079</commentid>
    <comment_count>17</comment_count>
      <attachid>192857</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-12 23:24:12 -0700</bug_when>
    <thetext>Comment on attachment 192857
Patch adding a -webkit-callback CSS property

r- under we have a better understanding of whether this new property is necessary, and why it won&apos;t leak onto the open web.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854152</commentid>
    <comment_count>18</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-13 02:37:19 -0700</bug_when>
    <thetext>The purpose of this is not clear to me either. I read the linked document, but I&apos;m not sure if that&apos;s supposed to explain it or not.

It is risky to expose a feature to the web. If this is something to do with extensions, why not make it a JS API within your extension framework? If you want a callback to be invoked whenever something happens, then the way you do that on the Web is via Javascript, not CSS. If this has no use on the open Web, then it should not be exposed there. If it does have a use on the open Web, then it should be proposed to the W3C/WHATWG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854153</commentid>
    <comment_count>19</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-03-13 02:37:39 -0700</bug_when>
    <thetext>Maybe this should be discussed on webkit-dev?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854342</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-03-13 09:09:42 -0700</bug_when>
    <thetext>This may not need to be a WebExposed feature.

I could be wrong, but maybe we could side-load a vector RuleDatas that passed to collectMatchingRules with some s3kr3t RuleData (maybe two, one for &quot;on&quot; and one for &quot;off&quot; states) that contains the watched selector, then reuse the rest of your plumbing and celebrate by continually pumping fists in the air -- modulo possible performance or memory hits, increased code complexity, yada-yada...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854401</commentid>
    <comment_count>21</comment_count>
    <who name="Jeffrey Yasskin">jyasskin</who>
    <bug_when>2013-03-13 10:52:10 -0700</bug_when>
    <thetext>@Dean, This is exposed to extensions via a JS API, not by having them insert CSS rules, for the reason you said. My difficulty was that I couldn&apos;t find a C++ API to use to tell WebCore to watch for the presence or absence of elements matching the relevant selectors.

I&apos;ll try Dmitri&apos;s suggestion of adding an ElementRuleCollector::matchCallbackSelectors that pulls the watched selectors off of the Document, and returns matched ones through the MatchResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854408</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-13 11:00:36 -0700</bug_when>
    <thetext>Trying to make this a JS only feature seems worth exploring.

FWIW, I think the current patch is only web exposed in that it will show up in getComputedStyle and will parse in an @supports condition.  I bet we could fix those so the property isn&apos;t exposed at all (i.e., would behave the same as adding a CSS property that we don&apos;t support like a -moz prefixed property).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854411</commentid>
    <comment_count>23</comment_count>
      <attachid>192857</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-13 11:10:02 -0700</bug_when>
    <thetext>Comment on attachment 192857
Patch adding a -webkit-callback CSS property

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

&gt; Source/WebCore/dom/Document.cpp:2033
&gt; +class Document::ReportCallbackSelectorChange : public Task {
&gt; +public:
&gt; +    virtual void performTask(ScriptExecutionContext* context)

You can just use wtf/Functional.h to create a closure rather than making yet another task object.  Document has a weak pointer factory if you need to bind to a weak ptr.

&gt; Source/WebCore/dom/Document.cpp:2057
&gt; +        postTask(adoptPtr(new ReportCallbackSelectorChange));

Given that you&apos;re on the main thread, it might be easier to just use a Timer though.

&gt; Source/WebCore/rendering/style/StyleRareNonInheritedData.h:160
&gt; +    Document* m_document;

This looks dangerous.  What ensures that this document isn&apos;t used after free?

&gt; Source/WebKit/chromium/public/WebFrameClient.h:129
&gt; +    virtual void cssMatches(WebFrame*, const WebVector&lt;WebString&gt;&amp; newlyMatchingSelectors, const WebVector&lt;WebString&gt;&amp; stoppedMatchingSelectors) { }

cssMatches --&gt; we prefer names like didMatchFoo

&gt; Source/WebKit/chromium/tests/WebFrameTest.cpp:223
&gt; +static std::string AsString(const WebString&amp; utf16Input)

Should we add this sort of method to WebString?  I&apos;m surprised it doesn&apos;t already have a way to convert to a std::string.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189626</attachid>
            <date>2013-02-21 15:58:12 -0800</date>
            <delta_ts>2013-02-22 16:42:30 -0800</delta_ts>
            <desc>Preliminary patch adding a -webkit-callback CSS property</desc>
            <filename>webkit-css-notification.patch</filename>
            <type>text/plain</type>
            <size>34826</size>
            <attacher name="Jeffrey Yasskin">jyasskin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggMzFhZDczNi4uNjZmYjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI2ODQsNiArMjY4NCwxMCBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFk6CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q2FsbGJhY2s6CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRl
SWRlbnRpZmllclZhbHVlKAorICAgICAgICAgICAgICAgIHN0eWxlLT5jYWxsYmFja1NlbGVjdG9y
cygpLmlzRW1wdHkoKSA/IENTU1ZhbHVlTm9uZSA6IENTU1ZhbHVlV2Via2l0UHJlc2VuY2UpOwor
CiAgICAgICAgIC8qIFVuaW1wbGVtZW50ZWQgQ1NTIDMgcHJvcGVydGllcyAoaW5jbHVkaW5nIENT
UzMgc2hvcnRoYW5kIHByb3BlcnRpZXMpICovCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXM6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0TGluZVRocm91Z2g6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDAxNGE2NmIuLjU1ZThmMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC04NTcsNiArODU3LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlk
LCBpbnQKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDZW50ZXIgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUp1c3RpZnkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENhbGxiYWNrOgorICAgICAgICBpZiAodmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFByZXNlbmNlKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlU3JnYiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGVmYXVsdCkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtMTEwMCw2ICsxMTA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzS2V5d29y
ZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hMaW5lczoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDYWxsYmFjazoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9u
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0JlZm9yZToKQEAgLTI5NTUsNiArMjk2MCw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94
UGFjazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtC
ZWZvcmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAppbmRleCAzYTQwMmNmLi4yM2VlMmEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKQEAgLTU0MCw2ICs1NDAsNyBAQCBib29s
IENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm94UmVmbGVjdDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94U2hhZG93
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxsYmFjazoKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q2xpcFBhdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkF4aXM6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IGFjM2ZkZTUuLjdhODc1MDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0yNTMsNiArMjUzLDcgQEAgei1pbmRl
eAogLXdlYmtpdC1ib3gtcGFjawogLXdlYmtpdC1ib3gtcmVmbGVjdAogLXdlYmtpdC1ib3gtc2hh
ZG93Cistd2Via2l0LWNhbGxiYWNrCiAtd2Via2l0LWNvbG9yLWNvcnJlY3Rpb24KIC13ZWJraXQt
Y29sdW1uLWF4aXMKIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IDc1OTI2ZjYuLmQwYmY5MDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC00NDMsNiArNDQzLDcgQEAgcG9ydHJhaXQKIHBy
ZQogcHJlLWxpbmUKIHByZS13cmFwCistd2Via2l0LXByZXNlbmNlCiByZWxhdGl2ZQogc2Nyb2xs
CiBzZXBhcmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGYyMjJiYjEu
LjVjZTE5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIxNjIsNyAr
MjE2Miw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0aWVzKFN0YXRlJiBzdGF0
ZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVyCiAgICAgICAgIGNhc2UgVmFyaWFibGVE
ZWZpbml0aW9uczoKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKENTU1Byb3BlcnR5VmFyaWFi
bGUgPCBmaXJzdENTU1Byb3BlcnR5LCBDU1NfdmFyaWFibGVfaXNfYmVmb3JlX2ZpcnN0X3Byb3Bl
cnR5KTsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVZhcmlhYmxlKQot
ICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIGN1cnJlbnQuaWQoKSwgY3VycmVu
dC52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBjdXJyZW50
LmlkKCksIGN1cnJlbnQudmFsdWUoKSwgcnVsZSk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRp
ZgogICAgICAgICBjYXNlIEhpZ2hQcmlvcml0eVByb3BlcnRpZXM6CkBAIC0yMTc1LDE0ICsyMTc1
LDE0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0aWVzKFN0YXRlJiBzdGF0ZSwg
Y29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVyCiAjZW5kaWYKICAgICAgICAgICAgIC8vIGdp
dmUgc3BlY2lhbCBwcmlvcml0eSB0byBmb250LXh4eCwgY29sb3IgcHJvcGVydGllcywgZXRjCiAg
ICAgICAgICAgICBpZiAocHJvcGVydHkgPCBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQpCi0gICAgICAg
ICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgY3VycmVudC5pZCgpLCBjdXJyZW50LnZhbHVl
KCkpOworICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIGN1cnJlbnQuaWQoKSwg
Y3VycmVudC52YWx1ZSgpLCBydWxlKTsKICAgICAgICAgICAgIC8vIHdlIGFwcGx5IGxpbmUtaGVp
Z2h0IGxhdGVyCiAgICAgICAgICAgICBlbHNlIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUxp
bmVIZWlnaHQpCiAgICAgICAgICAgICAgICAgc3RhdGUuc2V0TGluZUhlaWdodFZhbHVlKGN1cnJl
bnQudmFsdWUoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMb3dQcmlvcml0
eVByb3BlcnRpZXM6CiAgICAgICAgICAgICBpZiAocHJvcGVydHkgPiBDU1NQcm9wZXJ0eUxpbmVI
ZWlnaHQpCi0gICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgY3VycmVudC5pZCgp
LCBjdXJyZW50LnZhbHVlKCkpOworICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUs
IGN1cnJlbnQuaWQoKSwgY3VycmVudC52YWx1ZSgpLCBydWxlKTsKICAgICAgICAgfQogICAgIH0K
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFByb2Nlc3NSdWxlKGNvb2tpZSk7CkBA
IC0yNDcyLDExICsyNDcyLDExIEBAIFN0cmluZyBTdHlsZVJlc29sdmVyOjpwYWdlTmFtZShpbnQg
LyogcGFnZUluZGV4ICovKSBjb25zdAogICAgIHJldHVybiAiIjsKIH0KIAotdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBseVByb3BlcnR5V2l0aE51bGxDaGVjayhTdGF0ZSYgc3RhdGUsIENTU1Byb3Bl
cnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eVdpdGhOdWxsQ2hlY2soU3RhdGUmIHN0YXRlLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1
ZSogdmFsdWUsIFN0eWxlUnVsZSogcnVsZSkKIHsKICAgICBpZiAoIXZhbHVlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgaWQsIHZhbHVlKTsKKyAgICBhcHBseVBy
b3BlcnR5KHN0YXRlLCBpZCwgdmFsdWUsIHJ1bGUpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5Rm9udFByb3BlcnR5VG9TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IFN0eWxl
UHJvcGVydHlTZXQqIHBhcnNlZFN0eWxlKQpAQCAtMjcxNiw3ICsyNzE2LDcgQEAgc3RhdGljIGJv
b2wgaGFzVmFyaWFibGVSZWZlcmVuY2UoQ1NTVmFsdWUqIHZhbHVlKQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBTdHlsZVJlc29sdmVyOjpyZXNvbHZlVmFyaWFibGVzKFN0YXRlJiBzdGF0
ZSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBWZWN0b3I8c3RkOjpwYWlyPENT
U1Byb3BlcnR5SUQsIFN0cmluZz4gPiYga25vd25FeHByZXNzaW9ucykKK3ZvaWQgU3R5bGVSZXNv
bHZlcjo6cmVzb2x2ZVZhcmlhYmxlcyhTdGF0ZSYgc3RhdGUsIENTU1Byb3BlcnR5SUQgaWQsIENT
U1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+ID4m
IGtub3duRXhwcmVzc2lvbnMsIFN0eWxlUnVsZSogcnVsZSkKIHsKICAgICBzdGQ6OnBhaXI8Q1NT
UHJvcGVydHlJRCwgU3RyaW5nPiBleHByZXNzaW9uKGlkLCB2YWx1ZS0+c2VyaWFsaXplUmVzb2x2
aW5nVmFyaWFibGVzKCpzdGF0ZS5zdHlsZSgpLT52YXJpYWJsZXMoKSkpOwogCkBAIC0yNzMzLDE5
ICsyNzMzLDE5IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZVZhcmlhYmxlcyhTdGF0ZSYg
c3RhdGUsIENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHJlc3VsdFNldC0+cHJvcGVydHlDb3VudCgpOyBpKyspIHsKICAgICAgICAgU3R5
bGVQcm9wZXJ0eVNldDo6UHJvcGVydHlSZWZlcmVuY2UgcHJvcGVydHkgPSByZXN1bHRTZXQtPnBy
b3BlcnR5QXQoaSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eS5pZCgpICE9IENTU1Byb3BlcnR5VmFy
aWFibGUgJiYgaGFzVmFyaWFibGVSZWZlcmVuY2UocHJvcGVydHkudmFsdWUoKSkpCi0gICAgICAg
ICAgICByZXNvbHZlVmFyaWFibGVzKHN0YXRlLCBwcm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1
ZSgpLCBrbm93bkV4cHJlc3Npb25zKTsKKyAgICAgICAgICAgIHJlc29sdmVWYXJpYWJsZXMoc3Rh
dGUsIHByb3BlcnR5LmlkKCksIHByb3BlcnR5LnZhbHVlKCksIGtub3duRXhwcmVzc2lvbnMsIHJ1
bGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBwcm9w
ZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJvcGVydHko
c3RhdGUsIHByb3BlcnR5LmlkKCksIHByb3BlcnR5LnZhbHVlKCksIHJ1bGUpOwogICAgIH0KIH0K
ICNlbmRpZgogCi12b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoU3RhdGUmIHN0YXRl
LCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHkoU3RhdGUmIHN0YXRlLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSog
dmFsdWUsIFN0eWxlUnVsZSogcnVsZSkKIHsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAg
ICBpZiAoaWQgIT0gQ1NTUHJvcGVydHlWYXJpYWJsZSAmJiBoYXNWYXJpYWJsZVJlZmVyZW5jZSh2
YWx1ZSkpIHsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+
ID4ga25vd25FeHByZXNzaW9uczsKLSAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhzdGF0ZSwgaWQs
IHZhbHVlLCBrbm93bkV4cHJlc3Npb25zKTsKKyAgICAgICAgcmVzb2x2ZVZhcmlhYmxlcyhzdGF0
ZSwgaWQsIHZhbHVlLCBrbm93bkV4cHJlc3Npb25zLCBydWxlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtMzA3OCwxOSArMzA3OCwxOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OmFwcGx5UHJvcGVydHkoU3RhdGUmIHN0YXRlLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSog
dmFsdQogICAgICAgICAgICAgaWYgKCFmb250LT5zdHlsZSB8fCAhZm9udC0+dmFyaWFudCB8fCAh
Zm9udC0+d2VpZ2h0CiAgICAgICAgICAgICAgICAgfHwgIWZvbnQtPnNpemUgfHwgIWZvbnQtPmxp
bmVIZWlnaHQgfHwgIWZvbnQtPmZhbWlseSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgZm9udC0+
c3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgQ1NTUHJvcGVy
dHlGb250VmFyaWFudCwgZm9udC0+dmFyaWFudC5nZXQoKSk7Ci0gICAgICAgICAgICBhcHBseVBy
b3BlcnR5KHN0YXRlLCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGZvbnQtPndlaWdodC5nZXQoKSk7
CisgICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwg
Zm9udC0+c3R5bGUuZ2V0KCksIHJ1bGUpOworICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0
ZSwgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgZm9udC0+dmFyaWFudC5nZXQoKSwgcnVsZSk7Cisg
ICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsIGZv
bnQtPndlaWdodC5nZXQoKSwgcnVsZSk7CiAgICAgICAgICAgICAvLyBUaGUgcHJldmlvdXMgcHJv
cGVydGllcyBjYW4gZGlydHkgb3VyIGZvbnQgYnV0IHRoZXkgZG9uJ3QgdHJ5IHRvIHJlYWQgdGhl
IGZvbnQncwogICAgICAgICAgICAgLy8gcHJvcGVydGllcyBiYWNrLCB3aGljaCBpcyBzYWZlLiBI
b3dldmVyIGlmIGZvbnQtc2l6ZSBpcyB1c2luZyB0aGUgJ2V4JyB1bml0LCBpdCB3aWxsCiAgICAg
ICAgICAgICAvLyBuZWVkIHF1ZXJ5IHRoZSBkaXJ0aWVkIGZvbnQncyB4LWhlaWdodCB0byBnZXQg
dGhlIGNvbXB1dGVkIHNpemUuIFRvIGJlIHNhZmUgaW4gdGhpcwogICAgICAgICAgICAgLy8gY2Fz
ZSwgbGV0J3MganVzdCB1cGRhdGUgdGhlIGZvbnQgbm93LgogICAgICAgICAgICAgdXBkYXRlRm9u
dChzdGF0ZSk7Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBDU1NQcm9wZXJ0eUZv
bnRTaXplLCBmb250LT5zaXplLmdldCgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3Rh
dGUsIENTU1Byb3BlcnR5Rm9udFNpemUsIGZvbnQtPnNpemUuZ2V0KCksIHJ1bGUpOwogCiAgICAg
ICAgICAgICBzdGF0ZS5zZXRMaW5lSGVpZ2h0VmFsdWUoZm9udC0+bGluZUhlaWdodC5nZXQoKSk7
CiAKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIENTU1Byb3BlcnR5Rm9udEZhbWls
eSwgZm9udC0+ZmFtaWx5LmdldCgpKTsKKyAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUs
IENTU1Byb3BlcnR5Rm9udEZhbWlseSwgZm9udC0+ZmFtaWx5LmdldCgpLCBydWxlKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm47CiAKQEAgLTMzOTEsNiArMzM5MSwyNiBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoU3RhdGUmIHN0YXRlLCBDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENhbGxiYWNrOiB7CisgICAgICAgIGlmIChpc0luaGVyaXQgfHwgaXNJ
bml0aWFsKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25lOgorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPnJlbW92ZUNhbGxiYWNrU2VsZWN0b3IoCisgICAgICAgICAgICAgICAgICAgIHJ1bGUtPnNl
bGVjdG9yTGlzdCgpLnNlbGVjdG9yc1RleHQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdFByZXNlbmNlOgorICAgICAgICAgICAgICAg
IHN0YXRlLnN0eWxlKCktPmFkZENhbGxiYWNrU2VsZWN0b3IoCisgICAgICAgICAgICAgICAgICAg
IHJ1bGUtPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yc1RleHQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGUuZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIENTU1Byb3Bl
cnR5SW52YWxpZDoKICAgICAgICAgcmV0dXJuOwogICAgIC8vIERpcmVjdGlvbmFsIHByb3BlcnRp
ZXMgYXJlIHJlc29sdmVkIGJ5IHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KCkgYmVmb3Jl
IHRoZSBzd2l0Y2guCkBAIC0zNDMyLDcgKzM0NTIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHkoU3RhdGUmIHN0YXRlLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFs
dQogICAgIHsKICAgICAgICAgQ1NTUHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNv
bHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgc3RhdGUuc3R5bGUoKS0+ZGlyZWN0aW9uKCks
IHN0YXRlLnN0eWxlKCktPndyaXRpbmdNb2RlKCkpOwogICAgICAgICBBU1NFUlQobmV3SWQgIT0g
aWQpOwotICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0eShzdGF0ZSwgbmV3SWQsIHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkoc3RhdGUsIG5ld0lkLCB2YWx1ZSwgcnVsZSk7
CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3RyZXRjaDoKICAgICBjYXNlIENTU1By
b3BlcnR5UGFnZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDI4NTZkNzMuLmY5
N2YwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMzg1LDcgKzM4NSw3IEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPFN0eWxlQXBwbGljYXRpb25QYXNzIHBhc3M+CiAgICAg
dm9pZCBhcHBseVByb3BlcnRpZXMoU3RhdGUmLCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9w
ZXJ0aWVzLCBTdHlsZVJ1bGUqLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRlZE9ubHks
IFByb3BlcnR5V2hpdGVsaXN0VHlwZSA9IFByb3BlcnR5V2hpdGVsaXN0Tm9uZSk7CiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCi0gICAgdm9pZCByZXNvbHZlVmFyaWFibGVzKFN0YXRlJiwgQ1NT
UHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBWZWN0b3I8c3RkOjpwYWlyPENTU1Byb3BlcnR5SUQsIFN0
cmluZz4gPiYga25vd25FeHByZXNzaW9ucyk7CisgICAgdm9pZCByZXNvbHZlVmFyaWFibGVzKFN0
YXRlJiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBWZWN0b3I8c3RkOjpwYWlyPENTU1Byb3Bl
cnR5SUQsIFN0cmluZz4gPiYga25vd25FeHByZXNzaW9ucywgU3R5bGVSdWxlKik7CiAjZW5kaWYK
ICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
KTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC01NzYsOCArNTc2LDggQEAgcHJpdmF0ZToK
IHByaXZhdGU6CiAgICAgYm9vbCBjYW5TaGFyZVN0eWxlV2l0aENvbnRyb2woY29uc3QgU3RhdGUm
LCBTdHlsZWRFbGVtZW50KikgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGx5UHJvcGVydHlXaXRoTnVs
bENoZWNrKFN0YXRlJiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIGFwcGx5
UHJvcGVydHkoU3RhdGUmLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOworICAgIHZvaWQgYXBw
bHlQcm9wZXJ0eVdpdGhOdWxsQ2hlY2soU3RhdGUmLCBDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSos
IFN0eWxlUnVsZSogPSAwKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHkoU3RhdGUmLCBDU1NQcm9w
ZXJ0eUlELCBDU1NWYWx1ZSosIFN0eWxlUnVsZSogPSAwKTsKIAogI2lmIEVOQUJMRShTVkcpCiAg
ICAgdm9pZCBhcHBseVNWR1Byb3BlcnR5KGNvbnN0IFN0YXRlJiwgQ1NTUHJvcGVydHlJRCwgQ1NT
VmFsdWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDAyYzkyYTEuLjdjZjZiMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjAwMyw2ICsyMDAzLDI3IEBAIHZvaWQgRG9jdW1l
bnQ6OmNsZWFyU3R5bGVSZXNvbHZlcigpCiAgICAgbV9zdHlsZVJlc29sdmVyLmNsZWFyKCk7CiB9
CiAKK3ZvaWQgRG9jdW1lbnQ6OmFkZFNlbGVjdG9yTWF0Y2goU3RyaW5nIHNlbGVjdG9yKSB7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIGludD46Oml0ZXJhdG9yIGNvdW50ID0gbV9tYXRjaGluZ0NhbGxi
YWNrU2VsZWN0b3JzLmZpbmQoc2VsZWN0b3IpOworICAgIGlmIChjb3VudCAhPSBtX21hdGNoaW5n
Q2FsbGJhY2tTZWxlY3RvcnMuZW5kKCkpIHsKKyAgICAgICAgKytjb3VudC0+dmFsdWU7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLnNldChz
ZWxlY3RvciwgMSk7CisgICAgZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5zZWxlY3Rvck1h
dGNoQ2hhbmdlZChzZWxlY3RvciwgdHJ1ZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZVNl
bGVjdG9yTWF0Y2goU3RyaW5nIHNlbGVjdG9yKSB7CisgICAgSGFzaE1hcDxTdHJpbmcsIGludD46
Oml0ZXJhdG9yIGNvdW50ID0gbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLmZpbmQoc2VsZWN0
b3IpOworICAgIGlmIChjb3VudCA9PSBtX21hdGNoaW5nQ2FsbGJhY2tTZWxlY3RvcnMuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKyAgICAtLWNvdW50LT52YWx1ZTsKKyAgICBpZiAoY291bnQtPnZh
bHVlID09IDApIHsKKyAgICAgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLnJlbW92ZShj
b3VudCk7CisgICAgICAgIGZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+c2VsZWN0b3JNYXRj
aENoYW5nZWQoc2VsZWN0b3IsIGZhbHNlKTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmF0
dGFjaCgpCiB7CiAgICAgQVNTRVJUKCFhdHRhY2hlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggMTI2NDM4ZC4uZGFmNThmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTExODYsNiArMTE4
Niw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaW5TdHlsZVJlY2FsYygpIHsgcmV0dXJuIG1faW5T
dHlsZVJlY2FsYzsgfQogCisgICAgdm9pZCBhZGRTZWxlY3Rvck1hdGNoKFN0cmluZyk7CisgICAg
dm9pZCByZW1vdmVTZWxlY3Rvck1hdGNoKFN0cmluZyk7CisKICAgICAvLyBSZXR1cm4gYSBMb2Nh
bGUgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgYXJndW1lbnQgaXMgbnVsbCBvciBlbXB0
eS4KICAgICBMb2NhbGUmIGdldENhY2hlZExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZSA9IG51bGxBdG9tKTsKIApAQCAtMTU1MCw2ICsxNTUzLDEwIEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9uYW1lZEZsb3dzOwogCisgICAgLy8gTWFwcyBh
IENTUyBzZWxlY3RvciBzdHJpbmcgd2l0aCBhIC13ZWJraXQtY2FsbGJhY2sgcHJvcGVydHkgdG8g
dGhlIG51bWJlcgorICAgIC8vIG9mIG1hdGNoaW5nIFJlbmRlclN0eWxlIG9iamVjdHMgaW4gdGhp
cyBkb2N1bWVudC4KKyAgICBIYXNoTWFwPFN0cmluZywgaW50PiBtX21hdGNoaW5nQ2FsbGJhY2tT
ZWxlY3RvcnM7CisKICNpZiBFTkFCTEUoQ1NQX05FWFQpCiAgICAgUmVmUHRyPERPTVNlY3VyaXR5
UG9saWN5PiBtX2RvbVNlY3VyaXR5UG9saWN5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgKaW5kZXggMWUxYTE0Yy4uZTBhYTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaApAQCAtMzQ0LDYgKzM0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRS
dW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9CisgICAgdmly
dHVhbCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKFN0cmluZyBzZWxlY3RvciwgYm9vbCBtYXRj
aGVzKSB7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmLCBib29sLCBpbnQsIGludCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdp
ZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNv
bnN0IEtVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
Y29uc3QgU3RyaW5nJiwgYm9vbCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlY3JlYXRl
UGx1Z2luKFdpZGdldCopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAppbmRleCBjYWMwZDJhLi4zNjdhMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjI1LDYgKzIyNSwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBLVVJMJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0
ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOwogCisgICAg
ICAgIC8vIHxtYXRjaGVzfCBpcyB0cnVlIGlmIHxzZWxlY3RvcnwgbWF0Y2hlcyBhbnkgZWxlbWVu
dCBpbiB0aGUgZnJhbWUuCisgICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBsb2dpY2FsIHZhbHVl
IG9mIHxtYXRjaGVzfCBjaGFuZ2VzLiAgfHNlbGVjdG9yfCB3aWxsCisgICAgICAgIC8vIGJlIHRo
ZSBzZWxlY3RvciBvZiBhIENTUyBydWxlIHdpdGggdGhlIC13ZWJraXQtY2FsbGJhY2sgcHJvcGVy
dHkuCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChTdHJpbmcgc2Vs
ZWN0b3IsIGJvb2wgbWF0Y2hlcykgPSAwOworCiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
PSAwOwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGJhNWQ2NjAuLjBkMTAzNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTY4LDYgKzE2
OCwxNSBAQCBBTFdBWVNfSU5MSU5FIFJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShjb25zdCBSZW5k
ZXJTdHlsZSYgbykKIHsKIH0KIAorUmVuZGVyU3R5bGU6On5SZW5kZXJTdHlsZSgpIHsKKyAgICBp
ZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzLmlzRW1wdHkoKSkg
eworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9k
b2N1bWVudDsKKyAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jYWxsYmFja1NlbGVjdG9ycy5iZWdpbigpLCBlbmQg
PSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jYWxsYmFja1NlbGVjdG9ycy5lbmQoKTsKKyAgICAg
ICAgICAgICBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBkb2N1bWVudC0+cmVtb3ZlU2Vs
ZWN0b3JNYXRjaCgqaXQpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJTdHlsZTo6aW5oZXJpdEZy
b20oY29uc3QgUmVuZGVyU3R5bGUqIGluaGVyaXRQYXJlbnQsIElzQXRTaGFkb3dCb3VuZGFyeSBp
c0F0U2hhZG93Qm91bmRhcnkpCiB7CiAgICAgaWYgKGlzQXRTaGFkb3dCb3VuZGFyeSA9PSBBdFNo
YWRvd0JvdW5kYXJ5KSB7CkBAIC03NTYsNiArNzY1LDI0IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmNs
ZWFyQ3Vyc29yTGlzdCgpCiAgICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLT5jdXJz
b3JEYXRhID0gMDsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ2FsbGJhY2tTZWxlY3RvcihT
dHJpbmcgc2VsZWN0b3IsIERvY3VtZW50KiBkb2N1bWVudCkgeworICAgIEFTU0VSVChyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9kb2N1bWVudCA9PSBOVUxMIHx8CisgICAgICAgICAgIHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2RvY3VtZW50ID09IGRvY3VtZW50KTsKKyAgICBpZiAoIXJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yKSkgewor
ICAgICAgICBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKiBkYXRhID0gcmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCk7CisgICAgICAgIGRhdGEtPm1fY2FsbGJhY2tTZWxlY3RvcnMuYXBwZW5k
KHNlbGVjdG9yKTsKKyAgICAgICAgZGF0YS0+bV9kb2N1bWVudCA9IGRvY3VtZW50OworICAgICAg
ICBkb2N1bWVudC0+YWRkU2VsZWN0b3JNYXRjaChzZWxlY3Rvcik7CisgICAgfQorfQordm9pZCBS
ZW5kZXJTdHlsZTo6cmVtb3ZlQ2FsbGJhY2tTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpIHsKKyAg
ICBzaXplX3QgaW5kZXggPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jYWxsYmFja1NlbGVjdG9y
cy5maW5kKHNlbGVjdG9yKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY2FsbGJhY2tTZWxlY3RvcnMucmVtb3Zl
KGluZGV4KTsKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZG9jdW1lbnQtPnJlbW92
ZVNlbGVjdG9yTWF0Y2goc2VsZWN0b3IpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJTdHlsZTo6
Y2xlYXJDb250ZW50KCkKIHsKICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY29udGVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXgg
NzZkOGI4ZC4uMWMyMmE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKQEAgLTM0MCw2ICszNDAsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoY29uc3Qg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBFRGlzcGxheSk7CiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IGNsb25lKGNvbnN0IFJlbmRlclN0eWxlKik7CiAKKyAgICB+UmVuZGVy
U3R5bGUoKTsKKwogICAgIGVudW0gSXNBdFNoYWRvd0JvdW5kYXJ5IHsKICAgICAgICAgQXRTaGFk
b3dCb3VuZGFyeSwKICAgICAgICAgTm90QXRTaGFkb3dCb3VuZGFyeSwKQEAgLTc0OSw2ICs3NTEs
NyBAQCBwdWJsaWM6CiAgICAgRUJveFBhY2sgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVCb3hQYWNrPihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGli
bGVCb3gtPnBhY2spOyB9CiAKICAgICBpbnQgb3JkZXIoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9vcmRlcjsgfQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjYWxs
YmFja1NlbGVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Nh
bGxiYWNrU2VsZWN0b3JzOyB9CiAgICAgZmxvYXQgZmxleEdyb3coKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4R3JvdzsgfQogICAgIGZs
b2F0IGZsZXhTaHJpbmsoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9m
bGV4aWJsZUJveC0+bV9mbGV4U2hyaW5rOyB9CiAgICAgTGVuZ3RoIGZsZXhCYXNpcygpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhCYXNp
czsgfQpAQCAtMTI0NCw2ICsxMjQ3LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RmxleFNocmlu
ayhmbG9hdCBmKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxl
eGlibGVCb3gsIG1fZmxleFNocmluaywgZik7IH0KICAgICB2b2lkIHNldEZsZXhCYXNpcyhMZW5n
dGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxl
eGlibGVCb3gsIG1fZmxleEJhc2lzLCBsZW5ndGgpOyB9CiAgICAgdm9pZCBzZXRPcmRlcihpbnQg
bykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX29yZGVyLCBvKTsgfQorICAgIHZv
aWQgYWRkQ2FsbGJhY2tTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IsIERvY3VtZW50KiBkb2N1bWVu
dCk7CisgICAgdm9pZCByZW1vdmVDYWxsYmFja1NlbGVjdG9yKFN0cmluZyBzZWxlY3Rvcik7CiAg
ICAgdm9pZCBzZXRBbGlnbkNvbnRlbnQoRUFsaWduQ29udGVudCBwKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fYWxpZ25Db250ZW50LCBwKTsgfQogICAgIHZvaWQgc2V0QWxpZ25J
dGVtcyhFQWxpZ25JdGVtcyBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxp
Z25JdGVtcywgYSk7IH0KICAgICB2b2lkIHNldEFsaWduU2VsZihFQWxpZ25JdGVtcyBhKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25TZWxmLCBhKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGEuY3BwCmluZGV4IGI1YTZlZmYuLmZkMjZkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBtX2NsaXBQYXRoKFJlbmRlclN0eWxlOjppbml0
aWFsQ2xpcFBhdGgoKSkKICAgICAsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVy
U3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSkKICAgICAsIG1fb3JkZXIoUmVuZGVyU3R5
bGU6OmluaXRpYWxPcmRlcigpKQorICAgICwgbV9kb2N1bWVudCgpCiAgICAgLCBtX2Zsb3dUaHJl
YWQoUmVuZGVyU3R5bGU6OmluaXRpYWxGbG93VGhyZWFkKCkpCiAgICAgLCBtX3JlZ2lvblRocmVh
ZChSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvblRocmVhZCgpKQogICAgICwgbV9yZWdpb25PdmVy
ZmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvbk92ZXJmbG93KCkpCkBAIC0xMzYsNiArMTM3
LDcgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWQKICAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJU
b3BDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcikKICAgICAsIG1fdmlzaXRlZExp
bmtCb3JkZXJCb3R0b21Db2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcikKICAg
ICAsIG1fb3JkZXIoby5tX29yZGVyKQorICAgICwgbV9kb2N1bWVudCgpCiAgICAgLCBtX2Zsb3dU
aHJlYWQoby5tX2Zsb3dUaHJlYWQpCiAgICAgLCBtX3JlZ2lvblRocmVhZChvLm1fcmVnaW9uVGhy
ZWFkKQogICAgICwgbV9yZWdpb25PdmVyZmxvdyhvLm1fcmVnaW9uT3ZlcmZsb3cpCkBAIC0yMjEs
NiArMjIzLDggQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNv
bnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV92aXNpdGVk
TGlua0JvcmRlclRvcENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yCiAgICAg
ICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciA9PSBvLm1fdmlzaXRlZExpbmtC
b3JkZXJCb3R0b21Db2xvcgogICAgICAgICAmJiBtX29yZGVyID09IG8ubV9vcmRlcgorICAgICAg
ICAmJiBtX2NhbGxiYWNrU2VsZWN0b3JzID09IG8ubV9jYWxsYmFja1NlbGVjdG9ycworICAgICAg
ICAmJiBtX2RvY3VtZW50ID09IG8ubV9kb2N1bWVudAogICAgICAgICAmJiBtX2Zsb3dUaHJlYWQg
PT0gby5tX2Zsb3dUaHJlYWQKICAgICAgICAgJiYgbV9yZWdpb25UaHJlYWQgPT0gby5tX3JlZ2lv
blRocmVhZAogICAgICAgICAmJiBtX3JlZ2lvbk92ZXJmbG93ID09IG8ubV9yZWdpb25PdmVyZmxv
dwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggYzRhYzBmNi4uZDAwYmEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oCkBAIC00MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEFuaW1hdGlvbkxpc3Q7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFz
cyBTdHlsZURlcHJlY2F0ZWRGbGV4aWJsZUJveERhdGE7CiAjaWYgRU5BQkxFKENTU19GSUxURVJT
KQpAQCAtMTU0LDYgKzE1NSw5IEBAIHB1YmxpYzoKIAogICAgIGludCBtX29yZGVyOwogCisgICAg
VmVjdG9yPFN0cmluZz4gbV9jYWxsYmFja1NlbGVjdG9yczsKKyAgICBEb2N1bWVudCogbV9kb2N1
bWVudDsKKwogICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWQ7CiAgICAgQXRvbWljU3RyaW5n
IG1fcmVnaW9uVGhyZWFkOwogICAgIHVuc2lnbmVkIG1fcmVnaW9uT3ZlcmZsb3cgOiAxOyAvLyBS
ZWdpb25PdmVyZmxvdwpAQCAtMTk1LDYgKzE5OSw5IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBt
X2VmZmVjdGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9kZQogI2VuZGlmCiAKKyAgICAvLyBS
ZWNvcmQgd2hpY2ggc2VsZWN0b3JzIG1hdGNoZWQgc28gY2FsbGJhY2tzIGNhbiBiZSBhY2N1cmF0
ZT8gIE9yIGp1c3QKKyAgICAvLyByZWNvcmQgdGhhdCBhbnkgbWF0Y2hlZCwgYW5kIHJlLXNjYW4g
dGhlIHBhZ2Ugd2hlbiB0aGlzIGNoYW5nZXM/CisKIHByaXZhdGU6CiAgICAgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50Qmxh
Y2tCZXJyeS5oCmluZGV4IGVkOGYxMTguLjYyYjBlNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRJY29uRXh0ZXJuYWxseShjb25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVy
bCwgY29uc3QgU3RyaW5nJiBmaW5hbFBhZ2VVcmwsIGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoU3RyaW5nIHNlbGVjdG9yLCBib29s
IG1hdGNoZXMpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKElj
b25UeXBlKSB7IG5vdEltcGxlbWVudGVkKCk7IH07CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
V2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAzMGI4MDhiLi5m
NGJmN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xp
ZW50LmgKQEAgLTEyMCw2ICsxMjAsOSBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmcmFtZSdzIG5h
bWUgaGFzIGNoYW5nZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZU5hbWUoV2ViRnJhbWUq
LCBjb25zdCBXZWJTdHJpbmcmKSB7IH0KIAorICAgIC8vIENhbGxlZCB3aGVuIGEgLXdlYmtpdC1j
YWxsYmFjayBDU1MgcnVsZSBtYXRjaGVzIG9yIHN0b3BzIG1hdGNoaW5nLgorICAgIHZpcnR1YWwg
dm9pZCBjc3NNYXRjaGVzKFdlYkZyYW1lKiwgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5l
d2x5TWF0Y2hpbmdTZWxlY3RvcnMsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBzdG9wcGVk
TWF0Y2hpbmdTZWxlY3RvcnMpIHsgfQorCiAgICAgLy8gTG9hZCBjb21tYW5kcyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICAvLyBU
aGUgY2xpZW50IHNob3VsZCBoYW5kbGUgdGhlIG5hdmlnYXRpb24gZXh0ZXJuYWxseS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
CmluZGV4IDQ5OWRkYTAuLjQzYmNlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtODcsNiArODcsNyBAQAogI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNaW1lUmVnaXN0
cnkuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlRocmVhZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkwuaD4KICNpbmNs
dWRlIDxwdWJsaWMvV2ViVVJMRXJyb3IuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVmVjdG9yLmg+
CkBAIC0xMjM2LDYgKzEyMzcsODIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZERl
dGVjdFhTUyhjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCwgYm9vbCBkaWRCbG9ja0UKICAgICAgICAg
bV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZERldGVjdFhTUyhtX3dlYkZyYW1lLCBpbnNlY3VyZVVS
TCwgZGlkQmxvY2tFbnRpcmVQYWdlKTsKIH0KIAorY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRJbXBs
OjpTZWxlY3Rvck1hdGNoQWdncmVnYXRvciA6IHB1YmxpYyBXZWJUaHJlYWQ6OlRhc2tPYnNlcnZl
ciB7CitwdWJsaWM6CisgICAgU2VsZWN0b3JNYXRjaEFnZ3JlZ2F0b3IoRnJhbWVMb2FkZXJDbGll
bnRJbXBsKiBsb2FkZXJDbGllbnQpCisgICAgICAgICAgICA6IG1fbG9hZGVyQ2xpZW50KGxvYWRl
ckNsaWVudCkgeworICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmN1cnJlbnRU
aHJlYWQoKS0+YWRkVGFza09ic2VydmVyKHRoaXMpOworICAgIH0KKworICAgIH5TZWxlY3Rvck1h
dGNoQWdncmVnYXRvcigpIHsKKyAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5j
dXJyZW50VGhyZWFkKCktPnJlbW92ZVRhc2tPYnNlcnZlcih0aGlzKTsKKyAgICB9CisKKyAgICB2
b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGJvb2wgbWF0
Y2hlcykgeworICAgICAgICAvLyBXaGVuIGEgc2VsZWN0b3IgbWF0Y2hlcyBhbmQgdGhlbiB1bi1t
YXRjaGVzIHdpdGhpbiB0aGUgc2FtZSBtaWNyb3Rhc2sKKyAgICAgICAgLy8gKG9yIHZpY2UgdmVy
c2EpLCB3ZSB3YW50IHRvIHJlbW92ZSBpdCBmcm9tIHRoZSBvcmlnaW5hbCBsaXN0LCBub3QgYWRk
CisgICAgICAgIC8vIGl0IHRvIGJvdGggbGlzdHMuCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiog
ZnJvbTsKKyAgICAgICAgSGFzaFNldDxTdHJpbmc+KiB0bzsKKyAgICAgICAgaWYgKG1hdGNoZXMp
IHsKKyAgICAgICAgICAgIGZyb20gPSAmbV9zdG9wcGVkTWF0Y2hpbmdTZWxlY3RvcnM7CisgICAg
ICAgICAgICB0byA9ICZtX25ld2x5TWF0Y2hpbmdTZWxlY3RvcnM7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBmcm9tID0gJm1fbmV3bHlNYXRjaGluZ1NlbGVjdG9yczsKKyAgICAgICAg
ICAgIHRvID0gJm1fc3RvcHBlZE1hdGNoaW5nU2VsZWN0b3JzOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGZyb20tPmNvbnRhaW5zKHNlbGVjdG9yKSkKKyAgICAgICAgICAgIGZyb20tPnJlbW92
ZShzZWxlY3Rvcik7CisgICAgICAgIGVsc2UgaWYgKCF0by0+Y29udGFpbnMoc2VsZWN0b3IpKQor
ICAgICAgICAgICAgdG8tPmFkZChzZWxlY3Rvcik7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lk
IHdpbGxQcm9jZXNzVGFzaygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQcm9jZXNzVGFzaygp
IHsKKyAgICAgICAgLy8gQXZvaWQgbm90aWZ5aW5nIGZvciBubyBjaGFuZ2UuCisgICAgICAgIGlm
IChtX25ld2x5TWF0Y2hpbmdTZWxlY3RvcnMuaXNFbXB0eSgpICYmIG1fc3RvcHBlZE1hdGNoaW5n
U2VsZWN0b3JzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJG
cmFtZUltcGwqIGZyYW1lID0gbV9sb2FkZXJDbGllbnQtPm1fd2ViRnJhbWU7CisgICAgICAgIFdl
YlZlY3RvcjxXZWJTdHJpbmc+IG5ld2x5TWF0Y2hpbmdTZWxlY3RvcnMoKHNpemVfdCltX25ld2x5
TWF0Y2hpbmdTZWxlY3RvcnMuc2l6ZSgpKTsKKyAgICAgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4g
c3RvcHBlZE1hdGNoaW5nU2VsZWN0b3JzKChzaXplX3QpbV9zdG9wcGVkTWF0Y2hpbmdTZWxlY3Rv
cnMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKCFtX25ld2x5TWF0Y2hpbmdTZWxlY3RvcnMuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBXZWJTdHJpbmcqIHRhcmdldCA9ICZuZXdseU1hdGNoaW5nU2Vs
ZWN0b3JzWzBdOworICAgICAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIHNyYyA9IG1fbmV3bHlNYXRjaGluZ1NlbGVjdG9ycy5iZWdpbigpOworICAgICAgICAgICAg
ICAgICBzcmMgIT0gbV9uZXdseU1hdGNoaW5nU2VsZWN0b3JzLmVuZCgpOyArK3NyYywgKyt0YXJn
ZXQpIHsKKyAgICAgICAgICAgICAgICAqdGFyZ2V0ID0gKnNyYzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBpZiAoIW1fc3RvcHBlZE1hdGNoaW5nU2VsZWN0b3JzLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgV2ViU3RyaW5nKiB0YXJnZXQgPSAmc3RvcHBlZE1hdGNoaW5nU2Vs
ZWN0b3JzWzBdOworICAgICAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46OmNvbnN0X2l0ZXJh
dG9yIHNyYyA9IG1fc3RvcHBlZE1hdGNoaW5nU2VsZWN0b3JzLmJlZ2luKCk7CisgICAgICAgICAg
ICAgICAgIHNyYyAhPSBtX3N0b3BwZWRNYXRjaGluZ1NlbGVjdG9ycy5lbmQoKTsgKytzcmMsICsr
dGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgKnRhcmdldCA9ICpzcmM7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3RpZnkgdGhlIFdlYkZyYW1lQ2xpZW50IGluIHRo
ZSBlbWJlZGRlci4KKyAgICAgICAgZnJhbWUtPmNsaWVudCgpLT5jc3NNYXRjaGVzKGZyYW1lLCBu
ZXdseU1hdGNoaW5nU2VsZWN0b3JzLCBzdG9wcGVkTWF0Y2hpbmdTZWxlY3RvcnMpOworCisgICAg
ICAgIC8vIERlbGV0ZXMgdGhpcy4KKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPm1fc2VsZWN0b3JN
YXRjaEFnZ3JlZ2F0b3IuY2xlYXIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsKiBtX2xvYWRlckNsaWVudDsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9uZXds
eU1hdGNoaW5nU2VsZWN0b3JzOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3N0b3BwZWRNYXRjaGlu
Z1NlbGVjdG9yczsKK307CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZWxlY3Rvck1h
dGNoQ2hhbmdlZChTdHJpbmcgc2VsZWN0b3IsIGJvb2wgbWF0Y2hlcykgeworICAgIGlmICghbV93
ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fc2VsZWN0b3JN
YXRjaEFnZ3JlZ2F0b3IpCisgICAgICAgIG1fc2VsZWN0b3JNYXRjaEFnZ3JlZ2F0b3IgPSBhZG9w
dFB0cihuZXcgU2VsZWN0b3JNYXRjaEFnZ3JlZ2F0b3IodGhpcykpOworICAgIG1fc2VsZWN0b3JN
YXRjaEFnZ3JlZ2F0b3ItPnNlbGVjdG9yTWF0Y2hDaGFuZ2VkKHNlbGVjdG9yLCBtYXRjaGVzKTsK
K30KKwogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEltcGw6OmJsb2NrZWRFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKQogewogICAgIC8vIEZJWE1FCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IGU5YTVlODAu
LjczZDAxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5oCkBAIC0xNDIsNiArMTQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGluc2VjdXJlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2
b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKFN0cmluZyBzZWxlY3RvciwgYm9vbCBtYXRjaGVzKTsK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpAQCAtMjYwLDYgKzI2MSwxMCBAQCBwcml2YXRl
OgogCiAgICAgLy8gVGhlIG5hdmlnYXRpb24gcG9saWN5IHRvIHVzZSBmb3IgdGhlIG5leHQgY2Fs
bCB0byBkaXNwYXRjaENyZWF0ZVBhZ2UuCiAgICAgV2ViTmF2aWdhdGlvblBvbGljeSBtX25leHRO
YXZpZ2F0aW9uUG9saWN5OworCisgICAgLy8gQWdncmVnYXRlcyBjYWxscyB0byBzZWxlY3Rvck1h
dGNoQ2hhbmdlZCB3aXRoaW4gYSBtaWNyb3Rhc2suCisgICAgY2xhc3MgU2VsZWN0b3JNYXRjaEFn
Z3JlZ2F0b3I7CisgICAgT3duUHRyPFNlbGVjdG9yTWF0Y2hBZ2dyZWdhdG9yPiBtX3NlbGVjdG9y
TWF0Y2hBZ2dyZWdhdG9yOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5o
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
aAppbmRleCBiZjJjYjE1Li44MTM3MWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAgLTE2MSw2ICsxNjEs
NyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVu
dCB7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
S1VSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5n
ZWQoU3RyaW5nIHNlbGVjdG9yLCBib29sIG1hdGNoZXMpIHsgfQogCiAgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaAppbmRleCBkM2Y5ZDI2Li5mOTU5NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKQEAg
LTE0NCw2ICsxNDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c2VsZWN0b3JNYXRjaENoYW5nZWQoU3RyaW5nIHNlbGVjdG9yLCBib29sIG1hdGNoZXMpIHsgfQog
CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDg2ZDA3MzMuLjEyNjQ5ZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMTU1LDYgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoU3RyaW5nIHNlbGVjdG9yLCBib29sIG1hdGNoZXMp
IE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNl
bGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDEzMzk0ZGYuLjEx
YjNjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5oCkBAIC0xNjQsNiArMTY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJl
UGFnZSk7CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKFN0cmluZyBzZWxl
Y3RvciwgYm9vbCBtYXRjaGVzKSB7IH0KIAogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5j
ZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
aW5kZXggY2EwMmY4Ny4uZjIwNWYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC05Nyw2ICs5Nyw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVj
dFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOworICAg
IHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChTdHJpbmcgc2VsZWN0b3IsIGJvb2wg
bWF0Y2hlcykgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCmluZGV4IDgxYzFhOTcuLjNjMjk4YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXaW5DRS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIHNl
bGVjdG9yTWF0Y2hDaGFuZ2VkKFN0cmluZyBzZWxlY3RvciwgYm9vbCBtYXRjaGVzKSB7IH0KIAog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmgKaW5kZXggNGY5MTVjNy4uM2Q4ZWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAorKysgYi9Tb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCkBAIC0xNzMsNiArMTczLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChTdHJpbmcgc2VsZWN0b3IsIGJvb2wg
bWF0Y2hlcykgeyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9y
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDIzZGI3MDYuLjc0Y2U2MzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFn
ZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKFN0cmlu
ZyBzZWxlY3RvciwgYm9vbCBtYXRjaGVzKSBPVkVSUklERSB7IH0KIAogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189861</attachid>
            <date>2013-02-22 16:42:30 -0800</date>
            <delta_ts>2013-03-08 20:10:17 -0800</delta_ts>
            <desc>Preliminary patch adding a -webkit-callback CSS property</desc>
            <filename>webkit-css-notification.patch</filename>
            <type>text/plain</type>
            <size>34844</size>
            <attacher name="Jeffrey Yasskin">jyasskin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oCmluZGV4IGJiMDJh
YmMuLmNkOTQ1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViVmVjdG9yLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0
b3IuaApAQCAtMTEyLDYgKzExMiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGluaXRpYWxpemVGcm9t
KHZhbHVlcywgc2l6ZSk7CiAgICAgfQogCisgICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld1NpemUp
CisgICAgeworICAgICAgICBXZWJWZWN0b3IgbmV3VmFsdWUobmV3U2l6ZSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBlID0gc3RkOjptaW4obV9zaXplLCBuZXdTaXplKTsgaSA8IGU7ICsr
aSkKKyAgICAgICAgICAgIG5ld1ZhbHVlW2ldID0gbV9wdHJbaV07CisgICAgICAgIHN3YXAobmV3
VmFsdWUpOworICAgIH0KKwogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDMxYWQ3MzYuLjY2ZmIxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yNjg0LDYgKzI2ODQsMTAgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXRZOgogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENhbGxiYWNrOgorICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZSgKKyAgICAgICAgICAgICAgICBzdHlsZS0+Y2FsbGJhY2tTZWxlY3RvcnMoKS5p
c0VtcHR5KCkgPyBDU1NWYWx1ZU5vbmUgOiBDU1NWYWx1ZVdlYmtpdFByZXNlbmNlKTsKKwogICAg
ICAgICAvKiBVbmltcGxlbWVudGVkIENTUyAzIHByb3BlcnRpZXMgKGluY2x1ZGluZyBDU1MzIHNo
b3J0aGFuZCBwcm9wZXJ0aWVzKSAqLwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dEVtcGhhc2lzOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVUaHJvdWdoOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAwMTRhNjZiLi41NWU4ZjJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcApAQCAtODU3LDYgKzg1NywxMCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNW
YWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgaW50
CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVKdXN0aWZ5KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQcmVzZW5jZSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sb3JDb3JyZWN0aW9uOgogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVNy
Z2IgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURlZmF1bHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTExMDAsNiArMTEwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9w
ZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Qm94TGluZXM6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveE9yaWVudDoKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Q2FsbGJhY2s6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CkBAIC0yOTU1LDYgKzI5NjAsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVzOgogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRCb3hPcmllbnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENhbGxiYWNrOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQmVmb3Jl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggM2E0MDJjZi4uMjNlZTJhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC01NDAsNiArNTQwLDcgQEAgYm9vbCBDU1NQ
cm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveFJlZmxlY3Q6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdzoKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENsaXBQYXRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5BeGlzOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVyOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCBhYzNmZGU1Li43YTg3NTA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtMjUzLDYgKzI1Myw3IEBAIHotaW5kZXgKIC13
ZWJraXQtYm94LXBhY2sKIC13ZWJraXQtYm94LXJlZmxlY3QKIC13ZWJraXQtYm94LXNoYWRvdwor
LXdlYmtpdC1jYWxsYmFjawogLXdlYmtpdC1jb2xvci1jb3JyZWN0aW9uCiAtd2Via2l0LWNvbHVt
bi1heGlzCiAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgppbmRleCA3NTkyNmY2Li5kMGJmOTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtNDQzLDYgKzQ0Myw3IEBAIHBvcnRyYWl0CiBwcmUKIHBy
ZS1saW5lCiBwcmUtd3JhcAorLXdlYmtpdC1wcmVzZW5jZQogcmVsYXRpdmUKIHNjcm9sbAogc2Vw
YXJhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBmMjIyYmIxLi41Y2Ux
OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0yMTYyLDcgKzIxNjIs
NyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcgogICAgICAgICBjYXNlIFZhcmlhYmxlRGVmaW5p
dGlvbnM6CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChDU1NQcm9wZXJ0eVZhcmlhYmxlIDwg
Zmlyc3RDU1NQcm9wZXJ0eSwgQ1NTX3ZhcmlhYmxlX2lzX2JlZm9yZV9maXJzdF9wcm9wZXJ0eSk7
CiAgICAgICAgICAgICBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlWYXJpYWJsZSkKLSAgICAg
ICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBjdXJyZW50LmlkKCksIGN1cnJlbnQudmFs
dWUoKSk7CisgICAgICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgY3VycmVudC5pZCgp
LCBjdXJyZW50LnZhbHVlKCksIHJ1bGUpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg
ICAgICAgY2FzZSBIaWdoUHJpb3JpdHlQcm9wZXJ0aWVzOgpAQCAtMjE3NSwxNCArMjE3NSwxNCBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydGllcyhTdGF0ZSYgc3RhdGUsIGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcgogI2VuZGlmCiAgICAgICAgICAgICAvLyBnaXZlIHNw
ZWNpYWwgcHJpb3JpdHkgdG8gZm9udC14eHgsIGNvbG9yIHByb3BlcnRpZXMsIGV0YwogICAgICAg
ICAgICAgaWYgKHByb3BlcnR5IDwgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0KQotICAgICAgICAgICAg
ICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIGN1cnJlbnQuaWQoKSwgY3VycmVudC52YWx1ZSgpKTsK
KyAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBjdXJyZW50LmlkKCksIGN1cnJl
bnQudmFsdWUoKSwgcnVsZSk7CiAgICAgICAgICAgICAvLyB3ZSBhcHBseSBsaW5lLWhlaWdodCBs
YXRlcgogICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlMaW5lSGVp
Z2h0KQogICAgICAgICAgICAgICAgIHN0YXRlLnNldExpbmVIZWlnaHRWYWx1ZShjdXJyZW50LnZh
bHVlKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTG93UHJpb3JpdHlQcm9w
ZXJ0aWVzOgogICAgICAgICAgICAgaWYgKHByb3BlcnR5ID4gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0
KQotICAgICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIGN1cnJlbnQuaWQoKSwgY3Vy
cmVudC52YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBjdXJy
ZW50LmlkKCksIGN1cnJlbnQudmFsdWUoKSwgcnVsZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQcm9jZXNzUnVsZShjb29raWUpOwpAQCAtMjQ3
MiwxMSArMjQ3MiwxMSBAQCBTdHJpbmcgU3R5bGVSZXNvbHZlcjo6cGFnZU5hbWUoaW50IC8qIHBh
Z2VJbmRleCAqLykgY29uc3QKICAgICByZXR1cm4gIiI7CiB9CiAKLXZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eVdpdGhOdWxsQ2hlY2soU3RhdGUmIHN0YXRlLCBDU1NQcm9wZXJ0eUlE
IGlkLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHlX
aXRoTnVsbENoZWNrKFN0YXRlJiBzdGF0ZSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZh
bHVlLCBTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJu
OwotICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIGlkLCB2YWx1ZSk7CisgICAgYXBwbHlQcm9wZXJ0
eShzdGF0ZSwgaWQsIHZhbHVlLCBydWxlKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjphcHBs
eUZvbnRQcm9wZXJ0eVRvU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBTdHlsZVByb3Bl
cnR5U2V0KiBwYXJzZWRTdHlsZSkKQEAgLTI3MTYsNyArMjcxNiw3IEBAIHN0YXRpYyBib29sIGhh
c1ZhcmlhYmxlUmVmZXJlbmNlKENTU1ZhbHVlKiB2YWx1ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgU3R5bGVSZXNvbHZlcjo6cmVzb2x2ZVZhcmlhYmxlcyhTdGF0ZSYgc3RhdGUsIENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9w
ZXJ0eUlELCBTdHJpbmc+ID4mIGtub3duRXhwcmVzc2lvbnMpCit2b2lkIFN0eWxlUmVzb2x2ZXI6
OnJlc29sdmVWYXJpYWJsZXMoU3RhdGUmIHN0YXRlLCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1
ZSogdmFsdWUsIFZlY3RvcjxzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiA+JiBrbm93
bkV4cHJlc3Npb25zLCBTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAgICAgc3RkOjpwYWlyPENTU1Byb3Bl
cnR5SUQsIFN0cmluZz4gZXhwcmVzc2lvbihpZCwgdmFsdWUtPnNlcmlhbGl6ZVJlc29sdmluZ1Zh
cmlhYmxlcygqc3RhdGUuc3R5bGUoKS0+dmFyaWFibGVzKCkpKTsKIApAQCAtMjczMywxOSArMjcz
MywxOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc29sdmVWYXJpYWJsZXMoU3RhdGUmIHN0YXRl
LCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCByZXN1bHRTZXQtPnByb3BlcnR5Q291bnQoKTsgaSsrKSB7CiAgICAgICAgIFN0eWxlUHJv
cGVydHlTZXQ6OlByb3BlcnR5UmVmZXJlbmNlIHByb3BlcnR5ID0gcmVzdWx0U2V0LT5wcm9wZXJ0
eUF0KGkpOwogICAgICAgICBpZiAocHJvcGVydHkuaWQoKSAhPSBDU1NQcm9wZXJ0eVZhcmlhYmxl
ICYmIGhhc1ZhcmlhYmxlUmVmZXJlbmNlKHByb3BlcnR5LnZhbHVlKCkpKQotICAgICAgICAgICAg
cmVzb2x2ZVZhcmlhYmxlcyhzdGF0ZSwgcHJvcGVydHkuaWQoKSwgcHJvcGVydHkudmFsdWUoKSwg
a25vd25FeHByZXNzaW9ucyk7CisgICAgICAgICAgICByZXNvbHZlVmFyaWFibGVzKHN0YXRlLCBw
cm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgpLCBrbm93bkV4cHJlc3Npb25zLCBydWxlKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgcHJvcGVydHku
aWQoKSwgcHJvcGVydHkudmFsdWUoKSk7CisgICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRl
LCBwcm9wZXJ0eS5pZCgpLCBwcm9wZXJ0eS52YWx1ZSgpLCBydWxlKTsKICAgICB9CiB9CiAjZW5k
aWYKIAotdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KFN0YXRlJiBzdGF0ZSwgQ1NT
UHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBTdHlsZVJlc29sdmVyOjphcHBs
eVByb3BlcnR5KFN0YXRlJiBzdGF0ZSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBTdHlsZVJ1bGUqIHJ1bGUpCiB7CiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgaWYg
KGlkICE9IENTU1Byb3BlcnR5VmFyaWFibGUgJiYgaGFzVmFyaWFibGVSZWZlcmVuY2UodmFsdWUp
KSB7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q1NTUHJvcGVydHlJRCwgU3RyaW5nPiA+IGtu
b3duRXhwcmVzc2lvbnM7Ci0gICAgICAgIHJlc29sdmVWYXJpYWJsZXMoc3RhdGUsIGlkLCB2YWx1
ZSwga25vd25FeHByZXNzaW9ucyk7CisgICAgICAgIHJlc29sdmVWYXJpYWJsZXMoc3RhdGUsIGlk
LCB2YWx1ZSwga25vd25FeHByZXNzaW9ucywgcnVsZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKQEAgLTMwNzgsMTkgKzMwNzgsMTkgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBs
eVByb3BlcnR5KFN0YXRlJiBzdGF0ZSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHUK
ICAgICAgICAgICAgIGlmICghZm9udC0+c3R5bGUgfHwgIWZvbnQtPnZhcmlhbnQgfHwgIWZvbnQt
PndlaWdodAogICAgICAgICAgICAgICAgIHx8ICFmb250LT5zaXplIHx8ICFmb250LT5saW5lSGVp
Z2h0IHx8ICFmb250LT5mYW1pbHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgQ1NTUHJvcGVydHlGb250U3R5bGUsIGZvbnQtPnN0eWxl
LmdldCgpKTsKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCkpOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0
eShzdGF0ZSwgQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBmb250LT53ZWlnaHQuZ2V0KCkpOworICAg
ICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgQ1NTUHJvcGVydHlGb250U3R5bGUsIGZvbnQt
PnN0eWxlLmdldCgpLCBydWxlKTsKKyAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoc3RhdGUsIENT
U1Byb3BlcnR5Rm9udFZhcmlhbnQsIGZvbnQtPnZhcmlhbnQuZ2V0KCksIHJ1bGUpOworICAgICAg
ICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgQ1NTUHJvcGVydHlGb250V2VpZ2h0LCBmb250LT53
ZWlnaHQuZ2V0KCksIHJ1bGUpOwogICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIHByb3BlcnRp
ZXMgY2FuIGRpcnR5IG91ciBmb250IGJ1dCB0aGV5IGRvbid0IHRyeSB0byByZWFkIHRoZSBmb250
J3MKICAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgYmFjaywgd2hpY2ggaXMgc2FmZS4gSG93ZXZl
ciBpZiBmb250LXNpemUgaXMgdXNpbmcgdGhlICdleCcgdW5pdCwgaXQgd2lsbAogICAgICAgICAg
ICAgLy8gbmVlZCBxdWVyeSB0aGUgZGlydGllZCBmb250J3MgeC1oZWlnaHQgdG8gZ2V0IHRoZSBj
b21wdXRlZCBzaXplLiBUbyBiZSBzYWZlIGluIHRoaXMKICAgICAgICAgICAgIC8vIGNhc2UsIGxl
dCdzIGp1c3QgdXBkYXRlIHRoZSBmb250IG5vdy4KICAgICAgICAgICAgIHVwZGF0ZUZvbnQoc3Rh
dGUpOwotICAgICAgICAgICAgYXBwbHlQcm9wZXJ0eShzdGF0ZSwgQ1NTUHJvcGVydHlGb250U2l6
ZSwgZm9udC0+c2l6ZS5nZXQoKSk7CisgICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBD
U1NQcm9wZXJ0eUZvbnRTaXplLCBmb250LT5zaXplLmdldCgpLCBydWxlKTsKIAogICAgICAgICAg
ICAgc3RhdGUuc2V0TGluZUhlaWdodFZhbHVlKGZvbnQtPmxpbmVIZWlnaHQuZ2V0KCkpOwogCi0g
ICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGZv
bnQtPmZhbWlseS5nZXQoKSk7CisgICAgICAgICAgICBhcHBseVByb3BlcnR5KHN0YXRlLCBDU1NQ
cm9wZXJ0eUZvbnRGYW1pbHksIGZvbnQtPmZhbWlseS5nZXQoKSwgcnVsZSk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzkxLDYgKzMzOTEsMjYgQEAgdm9pZCBTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnR5KFN0YXRlJiBzdGF0ZSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFs
dWUqIHZhbHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDYWxsYmFjazogeworICAgICAgICBpZiAoaXNJbmhlcml0IHx8IGlzSW5pdGlh
bCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAg
ICAgICBjYXNlIENTU1ZhbHVlTm9uZToKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5y
ZW1vdmVDYWxsYmFja1NlbGVjdG9yKAorICAgICAgICAgICAgICAgICAgICBydWxlLT5zZWxlY3Rv
ckxpc3QoKS5zZWxlY3RvcnNUZXh0KCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRQcmVzZW5jZToKKyAgICAgICAgICAgICAgICBzdGF0
ZS5zdHlsZSgpLT5hZGRDYWxsYmFja1NlbGVjdG9yKAorICAgICAgICAgICAgICAgICAgICBydWxl
LT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvcnNUZXh0KCksCisgICAgICAgICAgICAgICAgICAgIHN0
YXRlLmVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUlu
dmFsaWQ6CiAgICAgICAgIHJldHVybjsKICAgICAvLyBEaXJlY3Rpb25hbCBwcm9wZXJ0aWVzIGFy
ZSByZXNvbHZlZCBieSByZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eSgpIGJlZm9yZSB0aGUg
c3dpdGNoLgpAQCAtMzQzMiw3ICszNDUyLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVBy
b3BlcnR5KFN0YXRlJiBzdGF0ZSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHUKICAg
ICB7CiAgICAgICAgIENTU1Byb3BlcnR5SUQgbmV3SWQgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURp
cmVjdGlvbkF3YXJlUHJvcGVydHkoaWQsIHN0YXRlLnN0eWxlKCktPmRpcmVjdGlvbigpLCBzdGF0
ZS5zdHlsZSgpLT53cml0aW5nTW9kZSgpKTsKICAgICAgICAgQVNTRVJUKG5ld0lkICE9IGlkKTsK
LSAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkoc3RhdGUsIG5ld0lkLCB2YWx1ZSk7CisgICAg
ICAgIHJldHVybiBhcHBseVByb3BlcnR5KHN0YXRlLCBuZXdJZCwgdmFsdWUsIHJ1bGUpOwogICAg
IH0KICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0cmV0Y2g6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVBhZ2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAyODU2ZDczLi5mOTdmMGJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTM4NSw3ICszODUsNyBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlIDxTdHlsZUFwcGxpY2F0aW9uUGFzcyBwYXNzPgogICAgIHZvaWQg
YXBwbHlQcm9wZXJ0aWVzKFN0YXRlJiwgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGll
cywgU3R5bGVSdWxlKiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpbmhlcml0ZWRPbmx5LCBQcm9w
ZXJ0eVdoaXRlbGlzdFR5cGUgPSBQcm9wZXJ0eVdoaXRlbGlzdE5vbmUpOwogI2lmIEVOQUJMRShD
U1NfVkFSSUFCTEVTKQotICAgIHZvaWQgcmVzb2x2ZVZhcmlhYmxlcyhTdGF0ZSYsIENTU1Byb3Bl
cnR5SUQsIENTU1ZhbHVlKiwgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlELCBTdHJpbmc+
ID4mIGtub3duRXhwcmVzc2lvbnMpOworICAgIHZvaWQgcmVzb2x2ZVZhcmlhYmxlcyhTdGF0ZSYs
IENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKiwgVmVjdG9yPHN0ZDo6cGFpcjxDU1NQcm9wZXJ0eUlE
LCBTdHJpbmc+ID4mIGtub3duRXhwcmVzc2lvbnMsIFN0eWxlUnVsZSopOwogI2VuZGlmCiAgICAg
c3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtNTc2LDggKzU3Niw4IEBAIHByaXZhdGU6CiBwcml2
YXRlOgogICAgIGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKGNvbnN0IFN0YXRlJiwgU3R5
bGVkRWxlbWVudCopIGNvbnN0OwogCi0gICAgdm9pZCBhcHBseVByb3BlcnR5V2l0aE51bGxDaGVj
ayhTdGF0ZSYsIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBhcHBseVByb3Bl
cnR5KFN0YXRlJiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIGFwcGx5UHJv
cGVydHlXaXRoTnVsbENoZWNrKFN0YXRlJiwgQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBTdHls
ZVJ1bGUqID0gMCk7CisgICAgdm9pZCBhcHBseVByb3BlcnR5KFN0YXRlJiwgQ1NTUHJvcGVydHlJ
RCwgQ1NTVmFsdWUqLCBTdHlsZVJ1bGUqID0gMCk7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgIHZv
aWQgYXBwbHlTVkdQcm9wZXJ0eShjb25zdCBTdGF0ZSYsIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAwMmM5MmExLi40N2QxZDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIwMDMsNiArMjAwMyw1OSBAQCB2b2lkIERvY3VtZW50Ojpj
bGVhclN0eWxlUmVzb2x2ZXIoKQogICAgIG1fc3R5bGVSZXNvbHZlci5jbGVhcigpOwogfQogCitj
bGFzcyBEb2N1bWVudDo6UmVwb3J0Q2FsbGJhY2tTZWxlY3RvckNoYW5nZSA6IHB1YmxpYyBUYXNr
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIE93blB0cjxwYWlyPEhhc2hT
ZXQ8U3RyaW5nPiwgSGFzaFNldDxTdHJpbmc+ID4gPiBjYWxsYmFja1NlbGVjdG9yQ2hhbmdlID0K
KyAgICAgICAgICAgIGRvY3VtZW50LT5tX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UucmVsZWFzZSgp
OworICAgICAgICBpZiAoY2FsbGJhY2tTZWxlY3RvckNoYW5nZS5maXJzdC5pc0VtcHR5KCkgJiYg
Y2FsbGJhY2tTZWxlY3RvckNoYW5nZS5zZWNvbmQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPnNlbGVjdG9yTWF0Y2hDaGFuZ2VkKAor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPmZpcnN0LCBjYWxsYmFja1Nl
bGVjdG9yQ2hhbmdlLT5zZWNvbmQpOworICAgICAgICB9CisgICAgfQorfTsKKwordm9pZCBEb2N1
bWVudDo6YWRkU2VsZWN0b3JNYXRjaChTdHJpbmcgc2VsZWN0b3IpCit7CisgICAgSGFzaE1hcDxT
dHJpbmcsIGludD46Oml0ZXJhdG9yIGNvdW50ID0gbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3Jz
LmZpbmQoc2VsZWN0b3IpOworICAgIGlmIChjb3VudCAhPSBtX21hdGNoaW5nQ2FsbGJhY2tTZWxl
Y3RvcnMuZW5kKCkpIHsKKyAgICAgICAgKytjb3VudC0+dmFsdWU7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLnNldChzZWxlY3RvciwgMSk7
CisgICAgaWYgKCFtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UpIHsKKyAgICAgICAgbV9jYWxsYmFj
a1NlbGVjdG9yQ2hhbmdlID0gYWRvcHRQdHIobmV3IHBhaXI8SGFzaFNldDxTdHJpbmc+LCBIYXNo
U2V0PFN0cmluZz4gPik7CisgICAgICAgIHBvc3RUYXNrKGFkb3B0UHRyKG5ldyBSZXBvcnRDYWxs
YmFja1NlbGVjdG9yQ2hhbmdlKSk7CisgICAgfQorICAgIGlmIChtX2NhbGxiYWNrU2VsZWN0b3JD
aGFuZ2UtPnNlY29uZC5jb250YWlucyhzZWxlY3RvcikpCisgICAgICAgIG1fY2FsbGJhY2tTZWxl
Y3RvckNoYW5nZS0+c2Vjb25kLnJlbW92ZShzZWxlY3Rvcik7CisgICAgZWxzZQorICAgICAgICBt
X2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPmZpcnN0LmFkZChzZWxlY3Rvcik7Cit9CisKK3ZvaWQg
RG9jdW1lbnQ6OnJlbW92ZVNlbGVjdG9yTWF0Y2goU3RyaW5nIHNlbGVjdG9yKQoreworICAgIEhh
c2hNYXA8U3RyaW5nLCBpbnQ+OjppdGVyYXRvciBjb3VudCA9IG1fbWF0Y2hpbmdDYWxsYmFja1Nl
bGVjdG9ycy5maW5kKHNlbGVjdG9yKTsKKyAgICBpZiAoY291bnQgPT0gbV9tYXRjaGluZ0NhbGxi
YWNrU2VsZWN0b3JzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgLS1jb3VudC0+dmFsdWU7
CisgICAgaWYgKCFjb3VudC0+dmFsdWUpIHsKKyAgICAgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2Vs
ZWN0b3JzLnJlbW92ZShjb3VudCk7CisgICAgICAgIGlmICghbV9jYWxsYmFja1NlbGVjdG9yQ2hh
bmdlKSB7CisgICAgICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgPSBhZG9wdFB0cihu
ZXcgcGFpcjxIYXNoU2V0PFN0cmluZz4sIEhhc2hTZXQ8U3RyaW5nPiA+KTsKKyAgICAgICAgICAg
IHBvc3RUYXNrKGFkb3B0UHRyKG5ldyBSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hhbmdlKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS0+Zmlyc3QuY29u
dGFpbnMoc2VsZWN0b3IpKQorICAgICAgICAgICAgbV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlLT5m
aXJzdC5yZW1vdmUoc2VsZWN0b3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2NhbGxi
YWNrU2VsZWN0b3JDaGFuZ2UtPnNlY29uZC5hZGQoc2VsZWN0b3IpOworICAgIH0KK30KKwogdm9p
ZCBEb2N1bWVudDo6YXR0YWNoKCkKIHsKICAgICBBU1NFUlQoIWF0dGFjaGVkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCAxMjY0MzhkLi5mMzJmZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMTE4Niw2ICsxMTg2LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBpblN0eWxlUmVjYWxjKCkg
eyByZXR1cm4gbV9pblN0eWxlUmVjYWxjOyB9CiAKKyAgICB2b2lkIGFkZFNlbGVjdG9yTWF0Y2go
U3RyaW5nKTsKKyAgICB2b2lkIHJlbW92ZVNlbGVjdG9yTWF0Y2goU3RyaW5nKTsKKwogICAgIC8v
IFJldHVybiBhIExvY2FsZSBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlIGlmIHRoZSBhcmd1bWVudCBp
cyBudWxsIG9yIGVtcHR5LgogICAgIExvY2FsZSYgZ2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxlID0gbnVsbEF0b20pOwogCkBAIC0xNTUwLDYgKzE1NTMsMTYgQEAgcHJp
dmF0ZToKIAogICAgIFJlZlB0cjxOYW1lZEZsb3dDb2xsZWN0aW9uPiBtX25hbWVkRmxvd3M7CiAK
KyAgICBjbGFzcyBSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hhbmdlOworICAgIC8vIE1hcHMgYSBD
U1Mgc2VsZWN0b3Igc3RyaW5nIHdpdGggYSAtd2Via2l0LWNhbGxiYWNrIHByb3BlcnR5IHRvIHRo
ZSBudW1iZXIKKyAgICAvLyBvZiBtYXRjaGluZyBSZW5kZXJTdHlsZSBvYmplY3RzIGluIHRoaXMg
ZG9jdW1lbnQuCisgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gbV9tYXRjaGluZ0NhbGxiYWNrU2Vs
ZWN0b3JzOworICAgIC8vIE5vbi1udWxsIGlmIGEgUmVwb3J0Q2FsbGJhY2tTZWxlY3RvckNoYW5n
ZSB0YXNrIGlzIHBvc3RlZCwKKyAgICAvLyB3aGljaCB3aWxsIGNhbGwgRnJhbWVMb2FkZXJDbGll
bnQ6OnNlbGVjdG9yTWF0Y2hDaGFuZ2VkIHdoZW4gaXQKKyAgICAvLyBydW5zLiBTdG9yZXMgYSBw
YWlyIG9mIChhZGRlZCBrZXlzLCByZW1vdmVkIGtleXMpIHJlbGF0aXZlIHRvCisgICAgLy8gdGhl
IHN0YXRlIG9mIG1fbWF0Y2hpbmdDYWxsYmFja1NlbGVjdG9ycyBvbiB0aGUgbGFzdCByZXBvcnQu
CisgICAgT3duUHRyPHBhaXI8SGFzaFNldDxTdHJpbmc+LCBIYXNoU2V0PFN0cmluZz4gPiA+IG1f
Y2FsbGJhY2tTZWxlY3RvckNoYW5nZTsKKwogI2lmIEVOQUJMRShDU1BfTkVYVCkKICAgICBSZWZQ
dHI8RE9NU2VjdXJpdHlQb2xpY3k+IG1fZG9tU2VjdXJpdHlQb2xpY3k7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCAxZTFhMTRjLi5iNDIxNWUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0zNDQsNiArMzQ0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtV
UkwmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29s
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JikgeyB9CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJ
bnRTaXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSBPVkVSUklERTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggY2FjMGQyYS4u
MzIxZjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJY29uVVJMLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWls
ZXN0b25lcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0y
MjUsNiArMjI2LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wgZGlk
QmxvY2tFbnRpcmVQYWdlKSA9IDA7CiAKKyAgICAgICAgLy8gVHJhbnNtaXRzIHRoZSBjaGFuZ2Ug
aW4gdGhlIHNldCBvZiBDU1Mgc2VsZWN0b3JzIHdpdGggdGhlCisgICAgICAgIC8vIC13ZWJraXQt
Y2FsbGJhY2sgcHJvcGVydHkgdGhhdCBtYXRjaCBhbnkgZWxlbWVudCBvbiB0aGUgZnJhbWUuCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHJlbW92ZWRTZWxl
Y3RvcnMpID0gMDsKKwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAg
dmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAppbmRleCBiYTVkNjYwLi45ZWNkOTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTE2OCw2ICsxNjgsMTYgQEAgQUxXQVlT
X0lOTElORSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIG8pCiB7
CiB9CiAKK1JlbmRlclN0eWxlOjp+UmVuZGVyU3R5bGUoKQoreworICAgIGlmICghcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fY2FsbGJhY2tTZWxlY3RvcnMuaXNFbXB0eSgpKSB7CisgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RvY3VtZW50OworICAg
ICAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzLmJlZ2luKCksIGVuZCA9IHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzLmVuZCgpOworICAgICAgICAgICAgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZVNlbGVjdG9yTWF0Y2goKml0
KTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyU3R5bGU6OmluaGVyaXRGcm9tKGNvbnN0IFJlbmRl
clN0eWxlKiBpbmhlcml0UGFyZW50LCBJc0F0U2hhZG93Qm91bmRhcnkgaXNBdFNoYWRvd0JvdW5k
YXJ5KQogewogICAgIGlmIChpc0F0U2hhZG93Qm91bmRhcnkgPT0gQXRTaGFkb3dCb3VuZGFyeSkg
ewpAQCAtNzU2LDYgKzc2NiwyNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpjbGVhckN1cnNvckxpc3Qo
KQogICAgICAgICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+Y3Vyc29yRGF0YSA9IDA7CiB9
CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OmFkZENhbGxiYWNrU2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9y
LCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgQVNTRVJUKCFyYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9kb2N1bWVudAorICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kb2N1bWVu
dCA9PSBkb2N1bWVudCk7CisgICAgaWYgKCFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jYWxsYmFj
a1NlbGVjdG9ycy5jb250YWlucyhzZWxlY3RvcikpIHsKKyAgICAgICAgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSogZGF0YSA9IHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpOworICAgICAg
ICBkYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzLmFwcGVuZChzZWxlY3Rvcik7CisgICAgICAgIGRh
dGEtPm1fZG9jdW1lbnQgPSBkb2N1bWVudDsKKyAgICAgICAgZG9jdW1lbnQtPmFkZFNlbGVjdG9y
TWF0Y2goc2VsZWN0b3IpOworICAgIH0KK30KKwordm9pZCBSZW5kZXJTdHlsZTo6cmVtb3ZlQ2Fs
bGJhY2tTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpCit7CisgICAgc2l6ZV90IGluZGV4ID0gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fY2FsbGJhY2tTZWxlY3RvcnMuZmluZChzZWxlY3Rvcik7Cisg
ICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX2NhbGxiYWNrU2VsZWN0b3JzLnJlbW92ZShpbmRleCk7CisgICAgICAgIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX2RvY3VtZW50LT5yZW1vdmVTZWxlY3Rvck1hdGNoKHNlbGVj
dG9yKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ29udGVudCgpCiB7CiAg
ICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDc2ZDhiOGQuLmYyODk3ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0zNDAs
NiArMzQwLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBj
cmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSwgRURpc3BsYXkpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjbG9u
ZShjb25zdCBSZW5kZXJTdHlsZSopOwogCisgICAgflJlbmRlclN0eWxlKCk7CisKICAgICBlbnVt
IElzQXRTaGFkb3dCb3VuZGFyeSB7CiAgICAgICAgIEF0U2hhZG93Qm91bmRhcnksCiAgICAgICAg
IE5vdEF0U2hhZG93Qm91bmRhcnksCkBAIC03NDksNiArNzUxLDcgQEAgcHVibGljOgogICAgIEVC
b3hQYWNrIGJveFBhY2soKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94UGFjaz4ocmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5wYWNrKTsgfQogCiAg
ICAgaW50IG9yZGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3Jk
ZXI7IH0KKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2FsbGJhY2tTZWxlY3RvcnMoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jYWxsYmFja1NlbGVjdG9yczsgfQog
ICAgIGZsb2F0IGZsZXhHcm93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fZmxleGlibGVCb3gtPm1fZmxleEdyb3c7IH0KICAgICBmbG9hdCBmbGV4U2hyaW5rKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxleGlibGVCb3gtPm1fZmxleFNo
cmluazsgfQogICAgIExlbmd0aCBmbGV4QmFzaXMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4QmFzaXM7IH0KQEAgLTEyNDQsNiArMTI0
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZsZXhTaHJpbmsoZmxvYXQgZikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhTaHJp
bmssIGYpOyB9CiAgICAgdm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhCYXNp
cywgbGVuZ3RoKTsgfQogICAgIHZvaWQgc2V0T3JkZXIoaW50IG8pIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9vcmRlciwgbyk7IH0KKyAgICB2b2lkIGFkZENhbGxiYWNrU2VsZWN0
b3IoU3RyaW5nIHNlbGVjdG9yLCBEb2N1bWVudCopOworICAgIHZvaWQgcmVtb3ZlQ2FsbGJhY2tT
ZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IpOwogICAgIHZvaWQgc2V0QWxpZ25Db250ZW50KEVBbGln
bkNvbnRlbnQgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduQ29udGVu
dCwgcCk7IH0KICAgICB2b2lkIHNldEFsaWduSXRlbXMoRUFsaWduSXRlbXMgYSkgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduSXRlbXMsIGEpOyB9CiAgICAgdm9pZCBzZXRB
bGlnblNlbGYoRUFsaWduSXRlbXMgYSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2FsaWduU2VsZiwgYSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCBiNWE2ZWZmLi5m
ZDI2ZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwg
bV9jbGlwUGF0aChSZW5kZXJTdHlsZTo6aW5pdGlhbENsaXBQYXRoKCkpCiAgICAgLCBtX3Zpc2l0
ZWRMaW5rQmFja2dyb3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9y
KCkpCiAgICAgLCBtX29yZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKKyAgICAsIG1f
ZG9jdW1lbnQoKQogICAgICwgbV9mbG93VGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsRmxvd1Ro
cmVhZCgpKQogICAgICwgbV9yZWdpb25UaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdpb25U
aHJlYWQoKSkKICAgICAsIG1fcmVnaW9uT3ZlcmZsb3coUmVuZGVyU3R5bGU6OmluaXRpYWxSZWdp
b25PdmVyZmxvdygpKQpAQCAtMTM2LDYgKzEzNyw3IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
CiAgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVy
VG9wQ29sb3IpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ioby5tX3Zpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpCiAgICAgLCBtX29yZGVyKG8ubV9vcmRlcikKKyAgICAs
IG1fZG9jdW1lbnQoKQogICAgICwgbV9mbG93VGhyZWFkKG8ubV9mbG93VGhyZWFkKQogICAgICwg
bV9yZWdpb25UaHJlYWQoby5tX3JlZ2lvblRocmVhZCkKICAgICAsIG1fcmVnaW9uT3ZlcmZsb3co
by5tX3JlZ2lvbk92ZXJmbG93KQpAQCAtMjIxLDYgKzIyMyw4IEBAIGJvb2wgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
JiBvKSBjCiAgICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciA9PSBvLm1fdmlz
aXRlZExpbmtCb3JkZXJUb3BDb2xvcgogICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IKICAgICAgICAgJiYg
bV9vcmRlciA9PSBvLm1fb3JkZXIKKyAgICAgICAgJiYgbV9jYWxsYmFja1NlbGVjdG9ycyA9PSBv
Lm1fY2FsbGJhY2tTZWxlY3RvcnMKKyAgICAgICAgJiYgbV9kb2N1bWVudCA9PSBvLm1fZG9jdW1l
bnQKICAgICAgICAgJiYgbV9mbG93VGhyZWFkID09IG8ubV9mbG93VGhyZWFkCiAgICAgICAgICYm
IG1fcmVnaW9uVGhyZWFkID09IG8ubV9yZWdpb25UaHJlYWQKICAgICAgICAgJiYgbV9yZWdpb25P
dmVyZmxvdyA9PSBvLm1fcmVnaW9uT3ZlcmZsb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IGM0
YWMwZjYuLjlkNjY1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAtNDEsNiArNDEsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRpb25MaXN0OworY2xhc3MgRG9jdW1l
bnQ7CiBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVEZXByZWNhdGVkRmxleGlibGVCb3hE
YXRhOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTE1NCw2ICsxNTUsOSBAQCBwdWJsaWM6
CiAKICAgICBpbnQgbV9vcmRlcjsKIAorICAgIFZlY3RvcjxTdHJpbmc+IG1fY2FsbGJhY2tTZWxl
Y3RvcnM7CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisKICAgICBBdG9taWNTdHJpbmcgbV9m
bG93VGhyZWFkOwogICAgIEF0b21pY1N0cmluZyBtX3JlZ2lvblRocmVhZDsKICAgICB1bnNpZ25l
ZCBtX3JlZ2lvbk92ZXJmbG93IDogMTsgLy8gUmVnaW9uT3ZlcmZsb3cKQEAgLTE5NSw2ICsxOTks
OSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbV9lZmZlY3RpdmVCbGVuZE1vZGU6IDU7IC8vIEVC
bGVuZE1vZGUKICNlbmRpZgogCisgICAgLy8gUmVjb3JkIHdoaWNoIHNlbGVjdG9ycyBtYXRjaGVk
IHNvIGNhbGxiYWNrcyBjYW4gYmUgYWNjdXJhdGU/IE9yIGp1c3QKKyAgICAvLyByZWNvcmQgdGhh
dCBhbnkgbWF0Y2hlZCwgYW5kIHJlLXNjYW4gdGhlIHBhZ2Ugd2hlbiB0aGlzIGNoYW5nZXM/CisK
IHByaXZhdGU6CiAgICAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oCmluZGV4IGVkOGYxMTguLmQ0ZTIx
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmgKQEAgLTE2MSw2
ICsxNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRXh0ZXJuYWxseShj
b25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3QgU3RyaW5nJiBmaW5hbFBhZ2VVcmws
IGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNT
KGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENo
YW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9ycywgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9OwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3Rh
dGU+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgKaW5kZXggMzBiODA4Yi4uZjRiZjdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC0xMjAsNiArMTIwLDkgQEAgcHVibGljOgogICAg
IC8vIFRoaXMgZnJhbWUncyBuYW1lIGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VOYW1lKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJikgeyB9CiAKKyAgICAvLyBDYWxs
ZWQgd2hlbiBhIC13ZWJraXQtY2FsbGJhY2sgQ1NTIHJ1bGUgbWF0Y2hlcyBvciBzdG9wcyBtYXRj
aGluZy4KKyAgICB2aXJ0dWFsIHZvaWQgY3NzTWF0Y2hlcyhXZWJGcmFtZSosIGNvbnN0IFdlYlZl
Y3RvcjxXZWJTdHJpbmc+JiBuZXdseU1hdGNoaW5nU2VsZWN0b3JzLCBjb25zdCBXZWJWZWN0b3I8
V2ViU3RyaW5nPiYgc3RvcHBlZE1hdGNoaW5nU2VsZWN0b3JzKSB7IH0KKwogICAgIC8vIExvYWQg
Y29tbWFuZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiAgICAgLy8gVGhlIGNsaWVudCBzaG91bGQgaGFuZGxlIHRoZSBuYXZpZ2F0aW9u
IGV4dGVybmFsbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA0OTlkZGEwLi5jYmM0MDc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAg
LTg3LDYgKzg3LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNvY2tldFN0cmVh
bUhhbmRsZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTEVycm9yLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlZlY3Rvci5oPgpAQCAtMTIzNiw2ICsxMjM3LDE2IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYgaW5zZWN1cmVVUkwsIGJvb2wg
ZGlkQmxvY2tFCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWREZXRlY3RYU1MobV93
ZWJGcmFtZSwgaW5zZWN1cmVVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSk7CiB9CiAKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpzZWxlY3Rvck1hdGNoQ2hhbmdlZChjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHJlbW92ZWRTZWxl
Y3RvcnMpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKSB7CisgICAgICAgIFdlYlZl
Y3RvcjxXZWJTdHJpbmc+IHdlYkFkZGVkU2VsZWN0b3JzLCB3ZWJSZW1vdmVkU2VsZWN0b3JzOwor
ICAgICAgICBjb3B5VG9WZWN0b3IoYWRkZWRTZWxlY3RvcnMsIHdlYkFkZGVkU2VsZWN0b3JzKTsK
KyAgICAgICAgY29weVRvVmVjdG9yKHJlbW92ZWRTZWxlY3RvcnMsIHdlYlJlbW92ZWRTZWxlY3Rv
cnMpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+Y3NzTWF0Y2hlcyhtX3dlYkZyYW1l
LCB3ZWJBZGRlZFNlbGVjdG9ycywgd2ViUmVtb3ZlZFNlbGVjdG9ycyk7CisgICAgfQorfQorCiBS
ZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YmxvY2tlZEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpCiB7CiAgICAgLy8gRklYTUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggZTlhNWU4MC4uODdjM2Q1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGll
bnRJbXBsLmgKQEAgLTE0Miw2ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
aW5zZWN1cmVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vs
ZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9ycywg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKTsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKaW5kZXggYmYyY2IxNS4uYzJmNjQ4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oCkBAIC0xNjEsNiArMTYxLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwg
OiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0
ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVh
bCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWRkZWRT
ZWxlY3RvcnMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcmVtb3ZlZFNlbGVjdG9ycykgeyB9CiAK
ICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGQzZjlkMjYuLmNmZmYwZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaApAQCAtMTQ0LDYgKzE0NCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0
WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHJlbW92ZWRTZWxlY3Rv
cnMpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxs
ZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDg2ZDA3MzMuLmQyYzNhZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBhZGRlZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3Jz
KSBPVkVSUklERSB7IH0KIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5j
ZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCAxMzM5NGRmLi44
YWI3ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaApAQCAtMTY0LDYgKzE2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGly
ZVBhZ2UpOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHJlbW92
ZWRTZWxlY3RvcnMpIHsgfQogCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBi
bG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBj
YTAyZjg3Li43ZjAwNTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbios
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVh
bCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWRkZWRT
ZWxlY3RvcnMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcmVtb3ZlZFNlbGVjdG9ycykgeyB9CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURv
Y3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlN1YnN0aXR1dGVEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaCBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5oCmluZGV4IDgxYzFhOTcuLjAxNTcyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
aW5DRS5oCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRE
aXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFu
Z2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWRkZWRTZWxlY3RvcnMsIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgcmVtb3ZlZFNlbGVjdG9ycykgeyB9CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmggYi9Tb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCmluZGV4IDRmOTE1YzcuLmYzMmU5
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFd4LmgKKysrIGIvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V3guaApAQCAtMTczLDYgKzE3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0
IEtVUkwmKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwg
Ym9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JN
YXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9ycywgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSB7IH0KIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgY2hhciosIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggMjNkYjcwNi4uZjg2N2QzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MTM2LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVD
b250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9y
cywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSBPVkVSUklERSB7IH0K
IAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIE9WRVJSSURFOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192328</attachid>
            <date>2013-03-08 20:10:17 -0800</date>
            <delta_ts>2013-03-12 19:21:04 -0700</delta_ts>
            <desc>Patch adding a -webkit-callback CSS property</desc>
            <filename>webkit-css-notification.patch</filename>
            <type>text/plain</type>
            <size>37168</size>
            <attacher name="Jeffrey Yasskin">jyasskin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oCmluZGV4IGJiMDJh
YmMuLmY0ZGU1OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViVmVjdG9yLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0
b3IuaApAQCAtMTEyLDYgKzExMiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGluaXRpYWxpemVGcm9t
KHZhbHVlcywgc2l6ZSk7CiAgICAgfQogCisgICAgdm9pZCByZXNpemUoc2l6ZV90IG5ld1NpemUp
CisgICAgeworICAgICAgICBXZWJWZWN0b3IgbmV3VmFsdWUobmV3U2l6ZSk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBzaXplVG9Db3B5ID0gc3RkOjptaW4obV9zaXplLCBuZXdTaXplKTsg
aSA8IHNpemVUb0NvcHk7ICsraSkKKyAgICAgICAgICAgIG5ld1ZhbHVlW2ldID0gbV9wdHJbaV07
CisgICAgICAgIHN3YXAobmV3VmFsdWUpOworICAgIH0KKwogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
IW1fc2l6ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDU4YjIyOTMuLjllYWUzZDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yNzEwLDYg
KzI3MTAsMTAgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRZOgogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENhbGxiYWNrOgorICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZSgKKyAgICAgICAgICAgICAgICBzdHlsZS0+Y2Fs
bGJhY2tTZWxlY3RvcnMoKS5pc0VtcHR5KCkgPyBDU1NWYWx1ZU5vbmUgOiBDU1NWYWx1ZVdlYmtp
dFByZXNlbmNlKTsKKwogICAgICAgICAvKiBVbmltcGxlbWVudGVkIENTUyAzIHByb3BlcnRpZXMg
KGluY2x1ZGluZyBDU1MzIHNob3J0aGFuZCBwcm9wZXJ0aWVzKSAqLwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dExpbmVUaHJvdWdoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkNDhmNjFmLi5lMTA4
ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtODU3LDYgKzg1NywxMCBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCwgaW50CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVKdXN0aWZ5KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyAgICAg
ICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJr
aXRQcmVzZW5jZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgogICAgICAgICBpZiAodmFs
dWVJRCA9PSBDU1NWYWx1ZVNyZ2IgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURlZmF1bHQpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwOTYsNiArMTEwMCw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0Qm94TGluZXM6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dEJveE9yaWVudDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94UGFjazoKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENv
bG9yQ29ycmVjdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtBZnRl
cjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQnJlYWtCZWZvcmU6CkBAIC0yOTg0
LDYgKzI5ODksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveExpbmVz
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hPcmllbnQ6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdEJveFBhY2s6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENhbGxiYWNrOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQmVmb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggNWI4
NGRiNS4uMTRkODQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC01NDcsNiAr
NTQ3LDcgQEAgYm9vbCBDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveFNoYWRvdzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENsaXBQYXRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5BeGlzOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5CcmVha0FmdGVy
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgppbmRleCBjMGMzMGFhLi42NzQ1
Y2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtMjU1LDYgKzI1
NSw3IEBAIHotaW5kZXgKIC13ZWJraXQtYm94LXBhY2sKIC13ZWJraXQtYm94LXJlZmxlY3QKIC13
ZWJraXQtYm94LXNoYWRvdworLXdlYmtpdC1jYWxsYmFjawogLXdlYmtpdC1jb2xvci1jb3JyZWN0
aW9uCiAtd2Via2l0LWNvbHVtbi1heGlzCiAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCBmODQwMmM1Li5lYjhjMWEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtNDQ3LDYgKzQ0Nyw3IEBA
IHBvcnRyYWl0CiBwcmUKIHByZS1saW5lCiBwcmUtd3JhcAorLXdlYmtpdC1wcmVzZW5jZQogcmVs
YXRpdmUKIHNjcm9sbAogc2VwYXJhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApp
bmRleCAxMzhhOWFiLi5kYTNjZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CkBAIC0yNTIsNiArMjUyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVSZXNvbHZlcjo6U3RhdGU6OmNs
ZWFyKCkKICAgICBtX3BhcmVudE5vZGUgPSAwOwogICAgIG1fcmVnaW9uRm9yU3R5bGluZyA9IDA7
CiAgICAgbV9ydWxlTGlzdCA9IDA7CisgICAgbV9ydWxlID0gMDsKICAgICBtX21hdGNoZWRSdWxl
cy5jbGVhcigpOwogICAgIG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcy5jbGVhcigpOwogI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKQEAgLTIxNjUsNiArMjE2Niw3IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0
eWxlUnVsCiB7CiAgICAgQVNTRVJUKChwcm9wZXJ0eVdoaXRlbGlzdFR5cGUgIT0gUHJvcGVydHlX
aGl0ZWxpc3RSZWdpb24pIHx8IG1fc3RhdGUucmVnaW9uRm9yU3R5bGluZygpKTsKICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsUHJvY2Vzc1J1bGUoZG9jdW1lbnQoKSwgcnVsZSwgdGhpcyk7CisgICAgbV9zdGF0
ZS5zZXRSdWxlKHJ1bGUpOwogCiAgICAgdW5zaWduZWQgcHJvcGVydHlDb3VudCA9IHByb3BlcnRp
ZXMtPnByb3BlcnR5Q291bnQoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvcGVy
dHlDb3VudDsgKytpKSB7CkBAIC0zNDA0LDYgKzM0MDYsMjYgQEAgdm9pZCBTdHlsZVJlc29sdmVy
OjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxs
YmFjazogeworICAgICAgICBpZiAoaXNJbmhlcml0IHx8IGlzSW5pdGlhbCkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1Zh
bHVlTm9uZToKKyAgICAgICAgICAgICAgICBzdGF0ZS5zdHlsZSgpLT5yZW1vdmVDYWxsYmFja1Nl
bGVjdG9yKAorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5ydWxlKCktPnNlbGVjdG9yTGlzdCgp
LnNlbGVjdG9yc1RleHQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZVdlYmtpdFByZXNlbmNlOgorICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPmFkZENhbGxiYWNrU2VsZWN0b3IoCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnJ1bGUo
KS0+c2VsZWN0b3JMaXN0KCkuc2VsZWN0b3JzVGV4dCgpLAorICAgICAgICAgICAgICAgICAgICBz
dGF0ZS5lbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlJ
bnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAgLy8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBh
cmUgcmVzb2x2ZWQgYnkgcmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhl
IHN3aXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDU1ODRkODcuLmM2ODgy
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNDUxLDYgKzQ1MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX2Rpc3RyaWJ1dGVkVG9JbnNlcnRpb25Qb2ludChmYWxzZSkKICAg
ICAgICAgLCBtX2VsZW1lbnRBZmZlY3RlZEJ5Q2xhc3NSdWxlcyhmYWxzZSkKICAgICAgICAgLCBt
X21vZGUoU2VsZWN0b3JDaGVja2VyOjpSZXNvbHZpbmdTdHlsZSkKKyAgICAgICAgLCBtX3J1bGUo
MCkKICAgICAgICAgLCBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKQogICAgICAg
ICAsIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShmYWxzZSkKICNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCkBAIC00OTIsNiArNDkzLDggQEAgcHVibGljOgogICAgICAgICB2b2lkIHNl
dE1vZGUoU2VsZWN0b3JDaGVja2VyOjpNb2RlIG1vZGUpIHsgbV9tb2RlID0gbW9kZTsgfQogICAg
ICAgICBTZWxlY3RvckNoZWNrZXI6Ok1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsg
fQogICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRSdWxlKFN0eWxlUnVsZSogcnVsZSkgeyBtX3J1
bGUgPSBydWxlOyB9CisgICAgICAgIGNvbnN0IFN0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcnVsZTsgfQogICAgICAgICB2b2lkIHNldEFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZShib29sIGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGUgPSBpc0FwcGx5
OyB9CiAgICAgICAgIHZvaWQgc2V0QXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZShib29s
IGlzQXBwbHkpIHsgbV9hcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlID0gaXNBcHBseTsg
fQogICAgICAgICBib29sIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlOyB9CkBAIC01NTQsNiArNTU3LDcgQEAg
cHVibGljOgogICAgICAgICAvLyBhbmQgYSB0ZW1wb3JhcnkgYnVmZmVyIHVzZWQgZm9yIG1lcmdl
IHNvcnRpbmcuCiAgICAgICAgIFZlY3Rvcjxjb25zdCBSdWxlRGF0YSosIDMyPiBtX21hdGNoZWRS
dWxlczsKICAgICAgICAgUmVmUHRyPFN0YXRpY0NTU1J1bGVMaXN0PiBtX3J1bGVMaXN0OworICAg
ICAgICBTdHlsZVJ1bGUqIG1fcnVsZTsKIAogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRv
UmVndWxhclN0eWxlOwogICAgICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtT
dHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI2ZjFjZGIuLmM3YjQwZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjAyNiw2ICsyMDI2LDU5IEBAIHZvaWQgRG9jdW1lbnQ6
OmNsZWFyU3R5bGVSZXNvbHZlcigpCiAgICAgbV9zdHlsZVJlc29sdmVyLmNsZWFyKCk7CiB9CiAK
K2NsYXNzIERvY3VtZW50OjpSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hhbmdlIDogcHVibGljIFRh
c2sgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KTsKKyAgICAgICAgT3duUHRyPENhbGxiYWNr
U2VsZWN0b3JDaGFuZ2U+IGNhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgPQorICAgICAgICAgICAgZG9j
dW1lbnQtPm1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS5yZWxlYXNlKCk7CisgICAgICAgIGlmIChj
YWxsYmFja1NlbGVjdG9yQ2hhbmdlLT5hZGRlZFNlbGVjdG9ycy5pc0VtcHR5KCkgJiYgY2FsbGJh
Y2tTZWxlY3RvckNoYW5nZS0+cmVtb3ZlZFNlbGVjdG9ycy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIGlmIChkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgICAgICAgICAg
ZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+c2VsZWN0b3JNYXRjaENoYW5n
ZWQoCisgICAgICAgICAgICAgICAgY2FsbGJhY2tTZWxlY3RvckNoYW5nZS0+YWRkZWRTZWxlY3Rv
cnMsIGNhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPnJlbW92ZWRTZWxlY3RvcnMpOworICAgICAgICB9
CisgICAgfQorfTsKKwordm9pZCBEb2N1bWVudDo6YWRkU2VsZWN0b3JNYXRjaChTdHJpbmcgc2Vs
ZWN0b3IpCit7CisgICAgSGFzaE1hcDxTdHJpbmcsIGludD46Oml0ZXJhdG9yIGNvdW50ID0gbV9t
YXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLmZpbmQoc2VsZWN0b3IpOworICAgIGlmIChjb3VudCAh
PSBtX21hdGNoaW5nQ2FsbGJhY2tTZWxlY3RvcnMuZW5kKCkpIHsKKyAgICAgICAgKytjb3VudC0+
dmFsdWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2Vs
ZWN0b3JzLnNldChzZWxlY3RvciwgMSk7CisgICAgaWYgKCFtX2NhbGxiYWNrU2VsZWN0b3JDaGFu
Z2UpIHsKKyAgICAgICAgbV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlID0gYWRvcHRQdHIobmV3IENh
bGxiYWNrU2VsZWN0b3JDaGFuZ2UpOworICAgICAgICBwb3N0VGFzayhhZG9wdFB0cihuZXcgUmVw
b3J0Q2FsbGJhY2tTZWxlY3RvckNoYW5nZSkpOworICAgIH0KKyAgICBpZiAobV9jYWxsYmFja1Nl
bGVjdG9yQ2hhbmdlLT5yZW1vdmVkU2VsZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yKSkKKyAgICAg
ICAgbV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlLT5yZW1vdmVkU2VsZWN0b3JzLnJlbW92ZShzZWxl
Y3Rvcik7CisgICAgZWxzZQorICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPmFkZGVk
U2VsZWN0b3JzLmFkZChzZWxlY3Rvcik7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlbW92ZVNlbGVj
dG9yTWF0Y2goU3RyaW5nIHNlbGVjdG9yKQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+Ojpp
dGVyYXRvciBjb3VudCA9IG1fbWF0Y2hpbmdDYWxsYmFja1NlbGVjdG9ycy5maW5kKHNlbGVjdG9y
KTsKKyAgICBpZiAoY291bnQgPT0gbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLmVuZCgpKQor
ICAgICAgICByZXR1cm47CisgICAgLS1jb3VudC0+dmFsdWU7CisgICAgaWYgKCFjb3VudC0+dmFs
dWUpIHsKKyAgICAgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLnJlbW92ZShjb3VudCk7
CisgICAgICAgIGlmICghbV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlKSB7CisgICAgICAgICAgICBt
X2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgPSBhZG9wdFB0cihuZXcgQ2FsbGJhY2tTZWxlY3RvckNo
YW5nZSk7CisgICAgICAgICAgICBwb3N0VGFzayhhZG9wdFB0cihuZXcgUmVwb3J0Q2FsbGJhY2tT
ZWxlY3RvckNoYW5nZSkpOworICAgICAgICB9CisgICAgICAgIGlmIChtX2NhbGxiYWNrU2VsZWN0
b3JDaGFuZ2UtPmFkZGVkU2VsZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yKSkKKyAgICAgICAgICAg
IG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS0+YWRkZWRTZWxlY3RvcnMucmVtb3ZlKHNlbGVjdG9y
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlLT5y
ZW1vdmVkU2VsZWN0b3JzLmFkZChzZWxlY3Rvcik7CisgICAgfQorfQorCiB2b2lkIERvY3VtZW50
OjphdHRhY2goKQogewogICAgIEFTU0VSVCghYXR0YWNoZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IDFlZjAzMzguLjI0MDFmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTcyLDYg
KzExNzIsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGluU3R5bGVSZWNhbGMoKSB7IHJldHVybiBt
X2luU3R5bGVSZWNhbGM7IH0KIAorICAgIHZvaWQgYWRkU2VsZWN0b3JNYXRjaChTdHJpbmcgc2Vs
ZWN0b3IpOworICAgIHZvaWQgcmVtb3ZlU2VsZWN0b3JNYXRjaChTdHJpbmcgc2VsZWN0b3IpOwor
CiAgICAgLy8gUmV0dXJuIGEgTG9jYWxlIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUgaWYgdGhlIGFy
Z3VtZW50IGlzIG51bGwgb3IgZW1wdHkuCiAgICAgTG9jYWxlJiBnZXRDYWNoZWRMb2NhbGUoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbGUgPSBudWxsQXRvbSk7CiAKQEAgLTE1MzgsNiArMTU0MSwy
MSBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPE5hbWVkRmxvd0NvbGxlY3Rpb24+IG1fbmFtZWRG
bG93czsKIAorICAgIC8vIE1hcHMgYSBDU1Mgc2VsZWN0b3Igc3RyaW5nIHdpdGggYSAtd2Via2l0
LWNhbGxiYWNrIHByb3BlcnR5IHRvIHRoZSBudW1iZXIKKyAgICAvLyBvZiBtYXRjaGluZyBSZW5k
ZXJTdHlsZSBvYmplY3RzIGluIHRoaXMgZG9jdW1lbnQuCisgICAgSGFzaE1hcDxTdHJpbmcsIGlu
dD4gbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzOworICAgIC8vIFJ1bnMgRnJhbWVMb2FkZXJD
bGllbnQ6OnNlbGVjdG9yTWF0Y2hDaGFuZ2VkIHdpdGggdGhlIHVwZGF0ZWQgdmFsdWUgb2YKKyAg
ICAvLyBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UuCisgICAgY2xhc3MgUmVwb3J0Q2FsbGJhY2tT
ZWxlY3RvckNoYW5nZTsKKyAgICBzdHJ1Y3QgQ2FsbGJhY2tTZWxlY3RvckNoYW5nZSB7CisgICAg
ICAgIC8vIFNlbGVjdG9ycyBhcmUgcmVsYXRpdmUgdG8gbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0
b3JzJ3MgY29udGVudHMgYXQKKyAgICAgICAgLy8gdGhlIHByZXZpb3VzIGNhbGwgdG8gc2VsZWN0
b3JNYXRjaENoYW5nZWQuCisgICAgICAgIEhhc2hTZXQ8U3RyaW5nPiBhZGRlZFNlbGVjdG9yczsK
KyAgICAgICAgSGFzaFNldDxTdHJpbmc+IHJlbW92ZWRTZWxlY3RvcnM7CisgICAgfTsKKyAgICAv
LyBOb24tbnVsbCBpZiBhIFJlcG9ydENhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgdGFzayBpcyBwb3N0
ZWQuCisgICAgT3duUHRyPENhbGxiYWNrU2VsZWN0b3JDaGFuZ2U+IG1fY2FsbGJhY2tTZWxlY3Rv
ckNoYW5nZTsKKwogI2lmIEVOQUJMRShDU1BfTkVYVCkKICAgICBSZWZQdHI8RE9NU2VjdXJpdHlQ
b2xpY3k+IG1fZG9tU2VjdXJpdHlQb2xpY3k7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAppbmRleCAxZTFhMTRjLi5iNDIxNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCkBAIC0zNDQsNiArMzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiwgY29u
c3QgSGFzaFNldDxTdHJpbmc+JikgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBj
cmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBs
dWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDM5YTViOC4uNjI4NGJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJp
b3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMjMz
LDYgKzIzNCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJs
b2NrRW50aXJlUGFnZSkgPSAwOwogCisgICAgICAgIC8vIFRyYW5zbWl0cyB0aGUgY2hhbmdlIGlu
IHRoZSBzZXQgb2YgQ1NTIHNlbGVjdG9ycyB3aXRoIHRoZQorICAgICAgICAvLyAtd2Via2l0LWNh
bGxiYWNrIHByb3BlcnR5IHRoYXQgbWF0Y2ggYW55IGVsZW1lbnQgb24gdGhlIGZyYW1lLgorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBhZGRlZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0
b3JzKSA9IDA7CisKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmlydHVhbCBSZXNvdXJjZUVy
cm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKaW5kZXggMWUyNDliNy4uYTUxZDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC03NTUsNiArNzU1LDI3IEBAIHZvaWQgUmVu
ZGVyU3R5bGU6OmNsZWFyQ3Vyc29yTGlzdCgpCiAgICAgICAgIHJhcmVJbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5jdXJzb3JEYXRhID0gMDsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ2FsbGJh
Y2tTZWxlY3RvcihTdHJpbmcgc2VsZWN0b3IsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBB
U1NFUlQoIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RvY3VtZW50CisgICAgICAgIHx8IHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2RvY3VtZW50ID09IGRvY3VtZW50KTsKKyAgICBpZiAoIXJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yKSkg
eworICAgICAgICBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKiBkYXRhID0gcmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCk7CisgICAgICAgIGRhdGEtPm1fY2FsbGJhY2tTZWxlY3RvcnMuYXBw
ZW5kKHNlbGVjdG9yKTsKKyAgICAgICAgZGF0YS0+bV9kb2N1bWVudCA9IGRvY3VtZW50OworICAg
ICAgICBkb2N1bWVudC0+YWRkU2VsZWN0b3JNYXRjaChzZWxlY3Rvcik7CisgICAgfQorfQorCit2
b2lkIFJlbmRlclN0eWxlOjpyZW1vdmVDYWxsYmFja1NlbGVjdG9yKFN0cmluZyBzZWxlY3RvcikK
K3sKKyAgICBzaXplX3QgaW5kZXggPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jYWxsYmFja1Nl
bGVjdG9ycy5maW5kKHNlbGVjdG9yKTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY2FsbGJhY2tTZWxlY3RvcnMu
cmVtb3ZlKGluZGV4KTsKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZG9jdW1lbnQt
PnJlbW92ZVNlbGVjdG9yTWF0Y2goc2VsZWN0b3IpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJT
dHlsZTo6Y2xlYXJDb250ZW50KCkKIHsKICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Y29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggMjNhYzc5Mi4uN2YxYmNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKQEAgLTc2MSw2ICs3NjEsNyBAQCBwdWJsaWM6CiAgICAgRUJveFBh
Y2sgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hQYWNrPihyYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPnBhY2spOyB9CiAKICAgICBp
bnQgb3JkZXIoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9vcmRlcjsg
fQorICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjYWxsYmFja1NlbGVjdG9ycygpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzOyB9CiAgICAg
ZmxvYXQgZmxleEdyb3coKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9m
bGV4aWJsZUJveC0+bV9mbGV4R3JvdzsgfQogICAgIGZsb2F0IGZsZXhTaHJpbmsoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4U2hyaW5r
OyB9CiAgICAgTGVuZ3RoIGZsZXhCYXNpcygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhCYXNpczsgfQpAQCAtMTI2MSw2ICsxMjYyLDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0RmxleFNocmluayhmbG9hdCBmKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVCb3gsIG1fZmxleFNocmluaywg
Zik7IH0KICAgICB2b2lkIHNldEZsZXhCYXNpcyhMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVCb3gsIG1fZmxleEJhc2lzLCBs
ZW5ndGgpOyB9CiAgICAgdm9pZCBzZXRPcmRlcihpbnQgbykgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCBtX29yZGVyLCBvKTsgfQorICAgIHZvaWQgYWRkQ2FsbGJhY2tTZWxlY3RvcihT
dHJpbmcgc2VsZWN0b3IsIERvY3VtZW50Kik7CisgICAgdm9pZCByZW1vdmVDYWxsYmFja1NlbGVj
dG9yKFN0cmluZyBzZWxlY3Rvcik7CiAgICAgdm9pZCBzZXRBbGlnbkNvbnRlbnQoRUFsaWduQ29u
dGVudCBwKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25Db250ZW50LCBw
KTsgfQogICAgIHZvaWQgc2V0QWxpZ25JdGVtcyhFQWxpZ25JdGVtcyBhKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25JdGVtcywgYSk7IH0KICAgICB2b2lkIHNldEFsaWdu
U2VsZihFQWxpZ25JdGVtcyBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxp
Z25TZWxmLCBhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IGI1YTZlZmYuLmJmMmJj
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBtX2Ns
aXBQYXRoKFJlbmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSkK
ICAgICAsIG1fb3JkZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcigpKQorICAgICwgbV9kb2N1
bWVudCgpCiAgICAgLCBtX2Zsb3dUaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxGbG93VGhyZWFk
KCkpCiAgICAgLCBtX3JlZ2lvblRocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvblRocmVh
ZCgpKQogICAgICwgbV9yZWdpb25PdmVyZmxvdyhSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvbk92
ZXJmbG93KCkpCkBAIC0xMzYsNiArMTM3LDcgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWQKICAg
ICAsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BD
b2xvcikKICAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihvLm1fdmlzaXRlZExp
bmtCb3JkZXJCb3R0b21Db2xvcikKICAgICAsIG1fb3JkZXIoby5tX29yZGVyKQorICAgICwgbV9k
b2N1bWVudCgpCiAgICAgLCBtX2Zsb3dUaHJlYWQoby5tX2Zsb3dUaHJlYWQpCiAgICAgLCBtX3Jl
Z2lvblRocmVhZChvLm1fcmVnaW9uVGhyZWFkKQogICAgICwgbV9yZWdpb25PdmVyZmxvdyhvLm1f
cmVnaW9uT3ZlcmZsb3cpCkBAIC0xNzMsNiArMTc1LDEyIEBAIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJp
dGVkCiAKIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6On5TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhKCkKIHsKKyAgICBpZiAoIW1fY2FsbGJhY2tTZWxlY3RvcnMuaXNFbXB0eSgpKSB7CisgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9jdW1lbnQ7CisgICAgICAgIGZvciAoVmVjdG9y
PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jYWxsYmFja1NlbGVjdG9ycy5iZWdpbigp
LCBlbmQgPSBtX2NhbGxiYWNrU2VsZWN0b3JzLmVuZCgpOworICAgICAgICAgICAgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZVNlbGVjdG9yTWF0Y2goKml0KTsK
KyAgICB9CiB9CiAKIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShj
b25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjb25zdApAQCAtMjIxLDYgKzIyOSw4
IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PShjb25zdCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjCiAgICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3Jk
ZXJUb3BDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcgogICAgICAgICAmJiBt
X3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3IKICAgICAgICAgJiYgbV9vcmRlciA9PSBvLm1fb3JkZXIKKyAgICAgICAgJiYgbV9j
YWxsYmFja1NlbGVjdG9ycyA9PSBvLm1fY2FsbGJhY2tTZWxlY3RvcnMKKyAgICAgICAgJiYgbV9k
b2N1bWVudCA9PSBvLm1fZG9jdW1lbnQKICAgICAgICAgJiYgbV9mbG93VGhyZWFkID09IG8ubV9m
bG93VGhyZWFkCiAgICAgICAgICYmIG1fcmVnaW9uVGhyZWFkID09IG8ubV9yZWdpb25UaHJlYWQK
ICAgICAgICAgJiYgbV9yZWdpb25PdmVyZmxvdyA9PSBvLm1fcmVnaW9uT3ZlcmZsb3cKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5oCmluZGV4IGM0YWMwZjYuLjlkNjY1Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEu
aApAQCAtNDEsNiArNDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRp
b25MaXN0OworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVE
ZXByZWNhdGVkRmxleGlibGVCb3hEYXRhOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTE1
NCw2ICsxNTUsOSBAQCBwdWJsaWM6CiAKICAgICBpbnQgbV9vcmRlcjsKIAorICAgIFZlY3RvcjxT
dHJpbmc+IG1fY2FsbGJhY2tTZWxlY3RvcnM7CisgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisK
ICAgICBBdG9taWNTdHJpbmcgbV9mbG93VGhyZWFkOwogICAgIEF0b21pY1N0cmluZyBtX3JlZ2lv
blRocmVhZDsKICAgICB1bnNpZ25lZCBtX3JlZ2lvbk92ZXJmbG93IDogMTsgLy8gUmVnaW9uT3Zl
cmZsb3cKQEAgLTE5NSw2ICsxOTksOSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbV9lZmZlY3Rp
dmVCbGVuZE1vZGU6IDU7IC8vIEVCbGVuZE1vZGUKICNlbmRpZgogCisgICAgLy8gUmVjb3JkIHdo
aWNoIHNlbGVjdG9ycyBtYXRjaGVkIHNvIGNhbGxiYWNrcyBjYW4gYmUgYWNjdXJhdGU/IE9yIGp1
c3QKKyAgICAvLyByZWNvcmQgdGhhdCBhbnkgbWF0Y2hlZCwgYW5kIHJlLXNjYW4gdGhlIHBhZ2Ug
d2hlbiB0aGlzIGNoYW5nZXM/CisKIHByaXZhdGU6CiAgICAgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YSgpOwogICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5o
CmluZGV4IDEyODE4ZTYuLmY3NjBiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmgKQEAgLTE2Miw2ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGxvYWRJY29uRXh0ZXJuYWxseShjb25zdCBTdHJpbmcmIG9yaWdpbmFsUGFnZVVybCwgY29uc3Qg
U3RyaW5nJiBmaW5hbFBhZ2VVcmwsIGNvbnN0IFN0cmluZyYgaWNvblVybCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRlZFNl
bGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgeyBub3RJbXBs
ZW1lbnRlZCgpOyB9OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZl
bnQoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggYjMwNzZlMC4uMzdhZTc4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC0xMjUsNiAr
MTI1LDkgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZnJhbWUncyBuYW1lIGhhcyBjaGFuZ2VkLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VOYW1lKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5n
JikgeyB9CiAKKyAgICAvLyBDYWxsZWQgd2hlbiBhIC13ZWJraXQtY2FsbGJhY2sgQ1NTIHJ1bGUg
bWF0Y2hlcyBvciBzdG9wcyBtYXRjaGluZy4KKyAgICB2aXJ0dWFsIHZvaWQgY3NzTWF0Y2hlcyhX
ZWJGcmFtZSosIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuZXdseU1hdGNoaW5nU2VsZWN0
b3JzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgc3RvcHBlZE1hdGNoaW5nU2VsZWN0b3Jz
KSB7IH0KKwogICAgIC8vIExvYWQgY29tbWFuZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gVGhlIGNsaWVudCBzaG91bGQg
aGFuZGxlIHRoZSBuYXZpZ2F0aW9uIGV4dGVybmFsbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCBjZWNhNzNiLi42
NmFjMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTg3LDYgKzg3LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvUGxh
dGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJl
YWQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlVS
TEVycm9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgpAQCAtMTI0OSw2ICsxMjUw
LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWREZXRlY3RYU1MoY29uc3QgS1VS
TCYgaW5zZWN1cmVVUkwsIGJvb2wgZGlkQmxvY2tFCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVu
dCgpLT5kaWREZXRlY3RYU1MobV93ZWJGcmFtZSwgaW5zZWN1cmVVUkwsIGRpZEJsb2NrRW50aXJl
UGFnZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZWxlY3Rvck1hdGNoQ2hh
bmdlZChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNoU2V0
PFN0cmluZz4mIHJlbW92ZWRTZWxlY3RvcnMpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVu
dCgpKSB7CisgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHdlYkFkZGVkU2VsZWN0b3JzLCB3
ZWJSZW1vdmVkU2VsZWN0b3JzOworICAgICAgICBjb3B5VG9WZWN0b3IoYWRkZWRTZWxlY3RvcnMs
IHdlYkFkZGVkU2VsZWN0b3JzKTsKKyAgICAgICAgY29weVRvVmVjdG9yKHJlbW92ZWRTZWxlY3Rv
cnMsIHdlYlJlbW92ZWRTZWxlY3RvcnMpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+
Y3NzTWF0Y2hlcyhtX3dlYkZyYW1lLCB3ZWJBZGRlZFNlbGVjdG9ycywgd2ViUmVtb3ZlZFNlbGVj
dG9ycyk7CisgICAgfQorfQorCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiB7CiAgICAgLy8gRklYTUUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgK
aW5kZXggM2YwYzgxZi4uMWFlODRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgaW5zZWN1cmVVUkwpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBhZGRlZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0
b3JzKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IGRmNWI2ZGEuLjRkY2Y5YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKQEAgLTY0LDgg
KzY0LDExIEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJ
bXBsLmgiCiAjaW5jbHVkZSAidjguaCIKKyNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5nLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYkZsb2F0UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUaHJlYWQuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KQEAgLTIxNiw2ICsyMTksMTYwIEBAIFRFU1RfRihX
ZWJGcmFtZVRlc3QsIENocm9tZVBhZ2VOb0phdmFzY3JpcHQpCiAgICAgRVhQRUNUX0VRKHN0ZDo6
c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIkNsb2JiZXJlZCIpKTsKIH0KIAorc3RhdGljIHN0
ZDo6c3RyaW5nIEFzU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYgdXRmMTZfaW5wdXQpIHsKKyAgICBX
ZWJDU3RyaW5nIHV0ZjhfaW5wdXQgPSB1dGYxNl9pbnB1dC51dGY4KCk7CisgICAgcmV0dXJuIHN0
ZDo6c3RyaW5nKHV0ZjhfaW5wdXQuZGF0YSgpLCB1dGY4X2lucHV0Lmxlbmd0aCgpKTsKK30KKwor
c3RydWN0IENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQg
eworICAgIENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQoKSA6IG1fdXBkYXRlQ291bnQoMCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIGNzc01hdGNoZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiYgbmV3bHlNYXRjaGluZ1NlbGVjdG9ycywgY29uc3QgV2ViVmVjdG9y
PFdlYlN0cmluZz4mIHN0b3BwZWRNYXRjaGluZ1NlbGVjdG9ycykgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgICsrbV91cGRhdGVDb3VudDsKKyAgICAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+JiBm
cmFtZVNlbGVjdG9ycyA9IG1fbWF0Y2hlZFNlbGVjdG9yc1tmcmFtZV07CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbmV3bHlNYXRjaGluZ1NlbGVjdG9ycy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgc2VsZWN0b3IgPSBBc1N0cmluZyhuZXdseU1hdGNoaW5n
U2VsZWN0b3JzW2ldKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgwVSwgZnJhbWVTZWxlY3RvcnMu
Y291bnQoc2VsZWN0b3IpKSA8PCBzZWxlY3RvcjsKKyAgICAgICAgICAgIGZyYW1lU2VsZWN0b3Jz
Lmluc2VydChzZWxlY3Rvcik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdG9wcGVkTWF0Y2hpbmdTZWxlY3RvcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIHNlbGVjdG9yID0gQXNTdHJpbmcoc3RvcHBlZE1hdGNoaW5nU2VsZWN0b3Jz
W2ldKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWVTZWxlY3RvcnMuY291bnQoc2Vs
ZWN0b3IpKSA8PCBzZWxlY3RvcjsKKyAgICAgICAgICAgIGZyYW1lU2VsZWN0b3JzLmVyYXNlKHNl
bGVjdG9yKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6bWFwPFdlYkZyYW1lKiwgc3Rk
OjpzZXQ8c3RkOjpzdHJpbmc+ID4gbV9tYXRjaGVkU2VsZWN0b3JzOworICAgIGludCBtX3VwZGF0
ZUNvdW50OworfTsKKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ3NzQ2FsbGJhY2tBdXRob3JTdHls
ZVNoZWV0KQoreworICAgIENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQgY2xpZW50OworICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgi
YWJvdXQ6YmxhbmsiLCB0cnVlLCAmY2xpZW50KTsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJW
aWV3LT5tYWluRnJhbWUoKTsKKworICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZygKKyAgICAgICAg
IjxzdHlsZT4iCisgICAgICAgICJkaXYuaW5pdGlhbF9vbiB7IC13ZWJraXQtY2FsbGJhY2s6IC13
ZWJraXQtcHJlc2VuY2U7IH0iCisgICAgICAgICJkaXYuaW5pdGlhbF9vZmYgeyAtd2Via2l0LWNh
bGxiYWNrOiBub25lICFpbXBvcnRhbnQ7IH0iCisgICAgICAgICI8L3N0eWxlPiIKKyAgICAgICAg
IjxkaXYgY2xhc3M9XCJpbml0aWFsX29uXCI+PC9kaXY+IgorICAgICAgICAiPGRpdiBjbGFzcz1c
ImluaXRpYWxfb2ZmXCI+PC9kaXY+IiwKKyAgICAgICAgdG9LVVJMKCJhYm91dDpibGFuayIpKTsK
KyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm1fdXBkYXRl
Q291bnQpOworICAgIEVYUEVDVF9USEFUKGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVd
LAorICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKCJkaXYuaW5pdGlhbF9vbiIp
KTsKKworICAgIFdlYkRvY3VtZW50IGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIC8vIENo
ZWNrIHRoYXQgYWRkaW5nIGEgc3R5bGUgcnVsZSBjYWxscyBiYWNrIGZvciBhbHJlYWR5LXByZXNl
bnQgbm9kZXMuCisgICAgZG9jLmluc2VydFVzZXJTdHlsZVNoZWV0KCJkaXYuaW5pdGlhbF9vZmZ7
LXdlYmtpdC1jYWxsYmFjazotd2Via2l0LXByZXNlbmNlICFpbXBvcnRhbnR9IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViRG9jdW1lbnQ6OlVzZXJTdHlsZVVzZXJMZXZlbCk7Cisg
ICAgcnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0VRKDIsIGNsaWVudC5tX3VwZGF0ZUNv
dW50KTsKKyAgICBFWFBFQ1RfVEhBVChjbGllbnQubV9tYXRjaGVkU2VsZWN0b3JzW2ZyYW1lXSwK
KyAgICAgICAgICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZSgiZGl2LmluaXRpYWxfb2ZmIiwg
ImRpdi5pbml0aWFsX29uIikpOworCisgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gdHVybiBvZmYg
Y2FsbGJhY2tzIGZvciBjZXJ0YWluIHNlbGVjdG9ycy4KKyAgICBkb2MuaW5zZXJ0VXNlclN0eWxl
U2hlZXQoImRpdi5pbml0aWFsX29mZnstd2Via2l0LWNhbGxiYWNrOm5vbmUgIWltcG9ydGFudH0i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXYuaW5pdGlhbF9vbnstd2Via2l0LWNh
bGxiYWNrOm5vbmUgIWltcG9ydGFudH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJEb2N1bWVudDo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsK
KyAgICBFWFBFQ1RfRVEoMywgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFU
KGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICAgICAgICAgIHRlc3Rp
bmc6OkVsZW1lbnRzQXJlKCkpOworCisgICAgRVhQRUNUX0VRKDFVLCBjbGllbnQubV9tYXRjaGVk
U2VsZWN0b3JzLnNpemUoKSk7CisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworVEVTVF9GKFdl
YkZyYW1lVGVzdCwgQ3NzQ2FsbGJhY2tTaGFyZWRSZW5kZXJTdHlsZSkKK3sKKyAgICBDc3NDYWxs
YmFja1dlYkZyYW1lQ2xpZW50IGNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVU
ZXN0SGVscGVyczo6Y3JlYXRlV2ViVmlld0FuZExvYWQoImFib3V0OmJsYW5rIiwgdHJ1ZSwgJmNs
aWVudCk7CisgICAgV2ViRnJhbWUqIGZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1lKCk7CisgICAg
V2ViRG9jdW1lbnQgZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisKKyAgICAvLyBDaGVjayB0aGF0
IGFkZGluZyBhbiBlbGVtZW50IGNhbGxzIGJhY2sgd2hlbiBpdCBtYXRjaGVzIGFuIGV4aXN0aW5n
IHJ1bGUuCisgICAgZG9jLmluc2VydFVzZXJTdHlsZVNoZWV0KCJzcGFuey13ZWJraXQtY2FsbGJh
Y2s6LXdlYmtpdC1wcmVzZW5jZSAhaW1wb3J0YW50fSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYkRvY3VtZW50OjpVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAgIGZyYW1lLT5leGVj
dXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgKKyAgICAgICAgImkxID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc3BhbicpOyIKKyAgICAgICAgImkxLmlkID0gJ2ZpcnN0X3NwYW4nOyIKKyAgICAg
ICAgImRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaTEpIikpOworICAgIHJ1blBlbmRpbmdUYXNr
cygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubV91cGRhdGVDb3VudCk7CisgICAgRVhQRUNU
X1RIQVQoY2xpZW50Lm1fbWF0Y2hlZFNlbGVjdG9yc1tmcmFtZV0sCisgICAgICAgICAgICAgICAg
dGVzdGluZzo6RWxlbWVudHNBcmUoInNwYW4iKSk7CisKKyAgICAvLyBBZGRpbmcgYSBzZWNvbmQg
ZWxlbWVudCB0aGF0IHNoYXJlcyBhIFJlbmRlclN0eWxlIHNob3VsZG4ndCBjYWxsIGJhY2suCisg
ICAgLy8gV2UgdXNlIDxzcGFuPnMgdG8gYXZvaWQgZGVmYXVsdCBzdHlsZSBydWxlcyB0aGF0IGNh
biBzZXQKKyAgICAvLyBSZW5kZXJTdHlsZTo6dW5pcXVlKCkuCisgICAgZnJhbWUtPmV4ZWN1dGVT
Y3JpcHQoV2ViU2NyaXB0U291cmNlKAorICAgICAgICAiaTIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzcGFuJyk7IgorICAgICAgICAiaTIuaWQgPSAnc2Vjb25kX3NwYW4nOyIKKyAgICAgICAg
ImkxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ZpcnN0X3NwYW4nKTsiCisgICAgICAgICJp
MS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpMiwgaTEubmV4dFNpYmxpbmcpOyIpKTsKKyAgICBy
dW5QZW5kaW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm1fdXBkYXRlQ291bnQp
OworICAgIEVYUEVDVF9USEFUKGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAg
ICAgICAgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKCJzcGFuIikpOworCisgICAgLy8gUmVt
b3ZpbmcgdGhlIGZpcnN0IGVsZW1lbnQgc2hvdWxkbid0IGNhbGwgYmFjay4KKyAgICBmcmFtZS0+
ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoCisgICAgICAgICJpMSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdmaXJzdF9zcGFuJyk7IgorICAgICAgICAiaTEucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChpMSk7IikpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9FUSgx
LCBjbGllbnQubV91cGRhdGVDb3VudCk7CisgICAgRVhQRUNUX1RIQVQoY2xpZW50Lm1fbWF0Y2hl
ZFNlbGVjdG9yc1tmcmFtZV0sCisgICAgICAgICAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUo
InNwYW4iKSk7CisKKyAgICAvLyBCdXQgcmVtb3ZpbmcgdGhlIHNlY29uZCBlbGVtZW50ICpzaG91
bGQqIGNhbGwgYmFjay4KKyAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2Uo
CisgICAgICAgICJpMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWNvbmRfc3BhbicpOyIK
KyAgICAgICAgImkyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaTIpOyIpKTsKKyAgICBydW5QZW5k
aW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAg
IEVYUEVDVF9USEFUKGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICAg
ICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKCkpOworCisgICAgRVhQRUNUX0VRKDFVLCBjbGll
bnQubV9tYXRjaGVkU2VsZWN0b3JzLnNpemUoKSk7CisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30K
KworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ3NzQ2FsbGJhY2tNdWx0aVNlbGVjdG9yKQoreworICAg
IENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQgY2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcg
PSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6YmxhbmsiLCB0
cnVlLCAmY2xpZW50KTsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUo
KTsKKyAgICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoIjxzcGFuPjwvc3Bhbj4iLCB0b0tVUkwoImFi
b3V0OmJsYW5rIikpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOworICAgIFdlYkRvY3VtZW50IGRv
YyA9IGZyYW1lLT5kb2N1bWVudCgpOworCisgICAgLy8gQ2hlY2sgdGhhdCBzZWxlY3RvciBsaXN0
cyBtYXRjaCBhcyB0aGUgd2hvbGUgbGlzdCwgbm90IGFzIGVhY2ggZWxlbWVudAorICAgIC8vIGlu
ZGVwZW5kZW50bHkuCisgICAgZG9jLmluc2VydFVzZXJTdHlsZVNoZWV0KCJzcGFuey13ZWJraXQt
Y2FsbGJhY2s6LXdlYmtpdC1wcmVzZW5jZSAhaW1wb3J0YW50fSIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInNwYW4scHstd2Via2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2UgIWlt
cG9ydGFudH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJEb2N1bWVudDo6VXNl
clN0eWxlVXNlckxldmVsKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRVEo
MSwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFUKGNsaWVudC5tX21hdGNo
ZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJl
KCJzcGFuIiwgInNwYW4sIHAiKSk7CisKKyAgICAvLyAic3BhbixwIiBjb3ZlcnMgInNwYW4iLCBi
dXQgZXJhc2luZyAic3BhbixwIiBkb2Vzbid0IHByZXZlbnQgInNwYW4iIGZyb20KKyAgICAvLyBt
YXRjaGluZy4KKyAgICBkb2MuaW5zZXJ0VXNlclN0eWxlU2hlZXQoInNwYW4scHstd2Via2l0LWNh
bGxiYWNrOm5vbmUgIWltcG9ydGFudH0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJEb2N1bWVudDo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsK
KyAgICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFU
KGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICAgICAgICAgIHRlc3Rp
bmc6OkVsZW1lbnRzQXJlKCJzcGFuIikpOworCisgICAgRVhQRUNUX0VRKDFVLCBjbGllbnQubV9t
YXRjaGVkU2VsZWN0b3JzLnNpemUoKSk7CisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKwogVEVT
VF9GKFdlYkZyYW1lVGVzdCwgRGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2spCiB7
CiAgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgicG9zdG1lc3NhZ2VfdGVzdC5odG1sIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAppbmRleCBiZjJjYjE1Li5jMmY2NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKQEAg
LTE2MSw2ICsxNjEsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFt
ZUxvYWRlckNsaWVudCB7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgS1VSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3Qg
S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0
b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9ycywgY29u
c3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSB7IH0KIAogICAgIHZpcnR1YWwg
UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAg
ICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgKaW5kZXggZDNmOWQyNi4uY2ZmZjBmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
CkBAIC0xNDQsNiArMTQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWRkZWRTZWxl
Y3RvcnMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcmVtb3ZlZFNlbGVjdG9ycykgeyB9CiAKICAg
ICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggODZkMDczMy4uZDJjM2FlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBA
IC0xNTUsNiArMTU1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpL
VVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFkZGVkU2VsZWN0
b3JzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHJlbW92ZWRTZWxlY3RvcnMpIE9WRVJSSURFIHsg
fQogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCmluZGV4IDEzMzk0ZGYuLjhhYjdmMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oCkBAIC0xNjQsNiArMTY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRE
aXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAg
dmlydHVhbCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
YWRkZWRTZWxlY3RvcnMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcmVtb3ZlZFNlbGVjdG9ycykg
eyB9CiAKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGNhMDJmODcuLjdmMDA1
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0
b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9ycywgY29u
c3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSB7IH0KIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oIGIv
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmgKaW5kZXggODFjMWE5Ny4uMDE1NzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKKysrIGIvU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgKQEAgLTEz
OCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRp
cmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1v
dmVkU2VsZWN0b3JzKSB7IH0KIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBj
YW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaCBiL1NvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFd4LmgKaW5kZXggNGY5MTVjNy4uZjMyZTkyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAor
KysgYi9Tb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5o
CkBAIC0xNzMsNiArMTczLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sIGRpZEJsb2Nr
RW50aXJlUGFnZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNoQ2hhbmdlZChj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIHJlbW92ZWRTZWxlY3RvcnMpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNYWlu
RG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBj
aGFyKiwgaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAyM2RiNzA2Li5m
ODY3ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC0xMzYsNiArMTM2LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBkaWRC
bG9ja0VudGlyZVBhZ2UpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rvck1hdGNo
Q2hhbmdlZChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIHJlbW92ZWRTZWxlY3RvcnMpIE9WRVJSSURFIHsgfQogCiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJ
REU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192855</attachid>
            <date>2013-03-12 19:05:49 -0700</date>
            <delta_ts>2013-03-12 19:19:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110524-20130312190147.patch</filename>
            <type>text/plain</type>
            <size>38730</size>
            <attacher name="Jeffrey Yasskin">jyasskin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NGQ1NTkxNmJlZmY1
YmFmMjk2MmZkNzU4NTY0NWYyYTQ1M2ExYWI3Li5hMmNjNGE2YWRiZWQ4NDJlMTdmZjlhN2EyZWIy
ODQ1ODZlMTQwNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMy0xMiAg
SmVmZnJleSBZYXNza2luICA8anlhc3NraW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBh
IHdheSB0byB3YXRjaCBwYWdlcyBmb3IgZWxlbWVudHMgbWF0Y2hpbmcgYSBDU1Mgc2VsZWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC13ZWJraXQt
Y2FsbGJhY2s6LXdlYmtpdC1wcmVzZW5jZSB3aWxsIGNhbGwgRnJhbWVMb2FkZXJDbGllbnQ6OnNl
bGVjdG9yTWF0Y2hDaGFuZ2VkKCkgdG8KKyAgICAgICAgdHJhY2sgdGhlIHByZXNlbmNlIG9mIGVs
ZW1lbnRzIG1hdGNoaW5nIHRoZSBydWxlcycgQ1NTIHNlbGVjdG9ycy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJWZWN0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmVjdG9yOjpy
ZXNpemUpOiBNYWtlIFdlYlZlY3RvciB1c2FibGUgd2l0aCBXVEY6OmNvcHlUb1ZlY3RvcigpLgor
CiAyMDEzLTAzLTExICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIE1vdmUgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB0byBQbGF0Zm9ybS8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZjQ4YmU1NWQwNDEwMDBmNjEzYjA5ODM4MWNkMGNhZDdiMjEzOWQ3ZC4uYzVkYjgxODQ4
NGM2NGJkNmQ5NzQ5YzUyMzQ1ZTE4NjE3MDU1YzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
My0wMy0xMiAgSmVmZnJleSBZYXNza2luICA8anlhc3NraW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEFkZCBhIHdheSB0byB3YXRjaCBwYWdlcyBmb3IgZWxlbWVudHMgbWF0Y2hpbmcgYSBDU1Mg
c2VsZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMDUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAt
d2Via2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2Ugd2lsbCBjYWxsIEZyYW1lTG9hZGVyQ2xp
ZW50OjpzZWxlY3Rvck1hdGNoQ2hhbmdlZCgpIHRvCisgICAgICAgIHRyYWNrIHRoZSBwcmVzZW5j
ZSBvZiBlbGVtZW50cyBtYXRjaGluZyB0aGUgcnVsZXMnIENTUyBzZWxlY3RvcnMuCisKKyAgICAg
ICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDogQWRkIGEgQ1NTX0NBTExCQUNLUyBmZWF0dXJlIGZs
YWcuCisKIDIwMTMtMDMtMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguICBSb2xsaW5nIG91dCBpbmFkdmVydGVudCBz
ZXR0aW5nIG9mIERBVEFfTE9HX1RPX0ZJTEUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiOWIxZDU4NDczNjY1
NGE0N2EzYWU5MjA3ODFiY2EzMjJlZGQyNy4uN2Y3MTI1MDc0ZDU4YjQyNjQ2NTBjODZhNTNkYjgz
NjdiMzNiM2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAzLTEyICBKZWZm
cmV5IFlhc3NraW4gIDxqeWFzc2tpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGEgd2F5
IHRvIHdhdGNoIHBhZ2VzIGZvciBlbGVtZW50cyBtYXRjaGluZyBhIENTUyBzZWxlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTI0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLXdlYmtpdC1jYWxs
YmFjazotd2Via2l0LXByZXNlbmNlIHdpbGwgY2FsbCBGcmFtZUxvYWRlckNsaWVudDo6c2VsZWN0
b3JNYXRjaENoYW5nZWQoKSB0bworICAgICAgICB0cmFjayB0aGUgcHJlc2VuY2Ugb2YgZWxlbWVu
dHMgbWF0Y2hpbmcgdGhlIHJ1bGVzJyBDU1Mgc2VsZWN0b3JzLgorCisgICAgICAgIFRlc3Q6IFdl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisKKyAgICAgICAgKiBjc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5
QW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXl3b3JkUHJvcGVydHlJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQ
cm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQ
cm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46IC13ZWJraXQtY2Fs
bGJhY2sKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjogLXdlYmtpdC1wcmVzZW5j
ZQorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OlN0YXRlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eSk6IENvcHkgdGhlIHJ1bGUncyBzZWxlY3RvciBpbnRvIHRoZSBSZW5kZXJT
dHlsZS4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFN0YXRlKTogQWRkIG1fcnVs
ZSBjYWNoZSBmb3IgdGhlIGN1cnJlbnQgU3R5bGVSdWxlKiBzbyBpdCBkb2Vzbid0IGNvbnN1bWUg
YSByZWdpc3RlciBkdXJpbmcgYXBwbHlQcm9wZXJ0eSBjYWxscy4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OlN0YXRlOjpydWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEb2N1bWVudDo6UmVwb3J0Q2FsbGJhY2tTZWxlY3Rv
ckNoYW5nZSk6IEFnZ3JlZ2F0ZSBzZWxlY3RvciBtYXRjaCBjaGFuZ2VzIHNvIGxhcmdlIERPTQor
ICAgICAgICBjaGFuZ2VzIG9ubHkgY2F1c2Ugb25lIGNhbGwgYmFjayBpbnRvIHRoZSBlbWJlZGRl
ci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hh
bmdlOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkU2VsZWN0
b3JNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlU2VsZWN0b3JNYXRj
aCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAg
ICAgIChDYWxsYmFja1NlbGVjdG9yQ2hhbmdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgIChFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNlbGVjdG9yTWF0Y2hDaGFuZ2VkKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FsbGJhY2tT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVtb3ZlQ2FsbGJhY2tT
ZWxlY3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
Ojp+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKTogU3RvcmUgdGhlIHN0eWxlJ3MgZG9jdW1l
bnQgYW5kIHNldCBvZiBjYWxsYmFjayBzZWxlY3RvcnMuCisKIDIwMTMtMDMtMTIgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
UmVzb3VyY2VTY3JpcHRGaWxlIGRpdmVyZ2VkIHN0YXRlIHNob3VsZCBiZSBjb3JyZWN0bHkgcmVz
ZXQgYWZ0ZXIgZGVidWdnZXIgcmVzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDJm
ODJiNjhhMWY2NDdlYTQ0ZGE1OWQwNDcwMzExY2M3MDgzY2U2NDEuLmE2MDRiODI4NGUzZGM1YWM2
ZGE3NTM4OTdmNTY0ZWUyZWZmMzI0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTMtMDMtMTIgIEplZmZyZXkgWWFzc2tpbiAgPGp5YXNza2luQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgYSB3YXkgdG8gd2F0Y2ggcGFnZXMgZm9yIGVsZW1lbnRz
IG1hdGNoaW5nIGEgQ1NTIHNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA1MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtd2Via2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2Ugd2lsbCBj
YWxsIEZyYW1lTG9hZGVyQ2xpZW50OjpzZWxlY3Rvck1hdGNoQ2hhbmdlZCgpIHRvCisgICAgICAg
IHRyYWNrIHRoZSBwcmVzZW5jZSBvZiBlbGVtZW50cyBtYXRjaGluZyB0aGUgcnVsZXMnIENTUyBz
ZWxlY3RvcnMuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudDo6Y3NzTWF0Y2hlcyk6CisgICAgICAgICogc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6c2VsZWN0b3JNYXRjaENoYW5nZWQpOiBDb252ZXJ0IFdlYkNvcmUgY2FsbGJhY2sgdG8gYSBw
dWJsaWMgZm9ybWF0LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEltcGwpOgorICAgICAg
ICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisKIDIwMTMtMDMtMTEgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNDU0NjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlZlY3Rvci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0
b3IuaAppbmRleCBiYjAyYWJjZGZmMmNjMTU3MzYyNTA3YjNjZTg2ZThkZDc4MjE0NWEyLi5mNGRl
NThhMGIyYTZhY2YzZTMyN2I4NDFjYzQ2ZDNjODE0YmVmYjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgKQEAgLTExMiw2ICsxMTIsMTQgQEAgcHVibGlj
OgogICAgICAgICBpbml0aWFsaXplRnJvbSh2YWx1ZXMsIHNpemUpOwogICAgIH0KIAorICAgIHZv
aWQgcmVzaXplKHNpemVfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgV2ViVmVjdG9yIG5ld1Zh
bHVlKG5ld1NpemUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZVRvQ29weSA9IHN0
ZDo6bWluKG1fc2l6ZSwgbmV3U2l6ZSk7IGkgPCBzaXplVG9Db3B5OyArK2kpCisgICAgICAgICAg
ICBuZXdWYWx1ZVtpXSA9IG1fcHRyW2ldOworICAgICAgICBzd2FwKG5ld1ZhbHVlKTsKKyAgICB9
CisKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVz
LmgKaW5kZXggZWI2NTczNWMyNzI3NTIyNTUwOTM4YTJiMGU1OWM5MTUxZTNlMjA4YS4uMWI0Mjg5
MDRkNDRkOGE5ZGJkZjUyZjQzNjA1NzVlOWJkYjliNTE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oCkBAIC0zNzEsNiArMzcxLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJ
T05fQlJFQUsgMQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfQ1NTX0NBTExCQUNLUykK
KyNkZWZpbmUgRU5BQkxFX0NTU19DQUxMQkFDS1MgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChF
TkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogI2RlZmluZSBFTkFCTEVfQ1NTX0RFVklDRV9B
REFQVEFUSU9OIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAxYzA0OGE1OTg3YTljMmQxOWQ1Njk3MGI3YmVl
ZjQ3NzA4NGFlOGY0Li5iNTFlNjk0YTBlZGEwODMwZmMwY2Y2ZmViOTY2NzRlMTk0YmI2OTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMjcxMyw2ICsyNzEzLDEyIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKICAgICAgICAgICAgIGJyZWFr
OwogCisjaWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDYWxsYmFjazoKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoCisgICAgICAgICAgICAgICAgc3R5bGUtPmNhbGxiYWNrU2VsZWN0b3Jz
KCkuaXNFbXB0eSgpID8gQ1NTVmFsdWVOb25lIDogQ1NTVmFsdWVXZWJraXRQcmVzZW5jZSk7Cisj
ZW5kaWYKKwogICAgICAgICAvKiBVbmltcGxlbWVudGVkIENTUyAzIHByb3BlcnRpZXMgKGluY2x1
ZGluZyBDU1MzIHNob3J0aGFuZCBwcm9wZXJ0aWVzKSAqLwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVU
aHJvdWdoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkMWI4OTc1NTEwYzNlMGFjNjRl
NjkyYzc2ZmUyNGE3MzdiYjljNzYxLi5mZWM4Y2QwMmIwZmRlMGRkNGIzMzFhMTVmMDJlMWUzNmNk
MmNjZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtODU3LDYgKzg1NywxMiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJZCwgaW50CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3Rh
cnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVy
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVKdXN0aWZ5KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQcmVzZW5jZSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3Jn
YiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGVmYXVsdCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTA5Niw2ICsxMTAyLDkgQEAgc3RhdGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3Bl
cnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hMaW5lczoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyNlbmRpZgogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
QmVmb3JlOgpAQCAtMjk4OCw2ICsyOTk3LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hMaW5lczoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorI2lmIEVOQUJMRShDU1NfQ0FMTEJB
Q0tTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyNlbmRpZgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkJyZWFrQmVmb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggZjRkNGVjYThl
NzE2MTA1NWU2NzgyYzhlNDgyMDhjNWUxN2MzYzBmOC4uMGNkYTc3OTU2ODZlYzQ0MGE4MDk0Y2Ey
ZTM3ZWNlNGI3ZjA4OGM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC01NDgs
NiArNTQ4LDkgQEAgYm9vbCBDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveFNoYWRvdzoKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q2xpcFBhdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkF4aXM6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDYwMDY4NjJhZDM3MDljMmQ5ZGIxZjZhYzMyNGQyOTEw
NjgzNWM0NjYuLjI3YTI2OGRiNjc1ODg4ZTNhYWVjYzYzMWU2ZjkzODA3NzIwN2Q4N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0yNTUsNiArMjU1LDkgQEAgei1p
bmRleAogLXdlYmtpdC1ib3gtcGFjawogLXdlYmtpdC1ib3gtcmVmbGVjdAogLXdlYmtpdC1ib3gt
c2hhZG93CisjaWYgZGVmaW5lZChFTkFCTEVfQ1NTX0NBTExCQUNLUykgJiYgRU5BQkxFX0NTU19D
QUxMQkFDS1MKKy13ZWJraXQtY2FsbGJhY2sKKyNlbmRpZgogLXdlYmtpdC1jb2xvci1jb3JyZWN0
aW9uCiAtd2Via2l0LWNvbHVtbi1heGlzCiAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCBmMWU2YjQ3MzUzMGE2Y2ZiZThm
M2YzNGQ0MmRkOTg2ZTUxNGY0YjNhLi4xNjYyMjViM2JlM2UyZjM1NWYyZjlkM2M5ZGZlMWYxYjI2
MTg5ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtNDQ3LDYg
KzQ0Nyw5IEBAIHBvcnRyYWl0CiBwcmUKIHByZS1saW5lCiBwcmUtd3JhcAorI2lmIGRlZmluZWQo
RU5BQkxFX0NTU19DQUxMQkFDS1MpICYmIEVOQUJMRV9DU1NfQ0FMTEJBQ0tTCistd2Via2l0LXBy
ZXNlbmNlCisjZW5kaWYKIHJlbGF0aXZlCiBzY3JvbGwKIHNlcGFyYXRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZDU3ZjVhZGVmYmY4YmI2N2I1ZDRmZGJiZGUyYWExYWM4
ZTZlZWRlNS4uMWEwNmMwNDNmNGUyYzQ2NTMzOGM0NjVhMTJjMTJlNjgwZmNlMTA3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMjI4LDYgKzIyOCw5IEBAIGlubGluZSB2
b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjbGVhcigpCiAgICAgbV9wYXJlbnRTdHlsZSA9IDA7
CiAgICAgbV9wYXJlbnROb2RlID0gMDsKICAgICBtX3JlZ2lvbkZvclN0eWxpbmcgPSAwOworI2lm
IEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgIG1fcnVsZSA9IDA7CisjZW5kaWYKICAgICBtX3Bl
bmRpbmdJbWFnZVByb3BlcnRpZXMuY2xlYXIoKTsKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAg
ICAgbV9oYXNQZW5kaW5nU2hhZGVycyA9IGZhbHNlOwpAQCAtMTY5NSw2ICsxNjk4LDkgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCog
cHJvcGVydGllcywgU3R5bGVSdWwKIHsKICAgICBBU1NFUlQoKHByb3BlcnR5V2hpdGVsaXN0VHlw
ZSAhPSBQcm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbikgfHwgbV9zdGF0ZS5yZWdpb25Gb3JTdHlsaW5n
KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxQcm9jZXNzUnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlz
KTsKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICBtX3N0YXRlLnNldFJ1bGUocnVsZSk7
CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5Q291bnQgPSBwcm9wZXJ0aWVzLT5wcm9w
ZXJ0eUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7
ICsraSkgewpAQCAtMjg1NCw2ICsyODYwLDI4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6IHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCB8fCBpc0lu
aXRpYWwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkg
eworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUo
KS0+cmVtb3ZlQ2FsbGJhY2tTZWxlY3RvcigKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUucnVs
ZSgpLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvcnNUZXh0KCkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRQcmVzZW5jZToKKyAgICAgICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5hZGRDYWxsYmFja1NlbGVjdG9yKAorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS5ydWxlKCktPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yc1RleHQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUuZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyNl
bmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAg
Ly8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVzb2x2ZURpcmVjdGlv
bkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCmluZGV4IGM0NjViYjI3NDBmZTVjZGU1MzY4NGZiMDg1MjgzM2U4YTMwNTgwZDkuLmY5
NzE3NWE3M2JlYjQ1ZjkzNGI0NzNjZDA4MGVjNTkzNzM0OTc3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaApAQCAtNDQwLDcgKzQ0MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9s
aW5lSGVpZ2h0VmFsdWUoMCkKICAgICAgICAgLCBtX2ZvbnREaXJ0eShmYWxzZSkKICAgICAgICAg
LCBtX2hhc1VBQXBwZWFyYW5jZShmYWxzZSkKLSAgICAgICAgLCBtX2JhY2tncm91bmREYXRhKEJh
Y2tncm91bmRGaWxsTGF5ZXIpIHsgfQorICAgICAgICAsIG1fYmFja2dyb3VuZERhdGEoQmFja2dy
b3VuZEZpbGxMYXllcikKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICAgICAgLCBtX3J1
bGUoMCkKKyNlbmRpZgorICAgICAgICB7IH0KIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBp
bml0RWxlbWVudChFbGVtZW50Kik7CkBAIC00NjQsNyArNDY4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgYm9vbCBkaXN0cmlidXRlZFRvSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3RyaWJ1dGVkVG9JbnNlcnRpb25Qb2ludDsgfQogICAgICAgICB2b2lkIHNldEVsZW1lbnRBZmZl
Y3RlZEJ5Q2xhc3NSdWxlcyhib29sIGlzQWZmZWN0ZWQpIHsgbV9lbGVtZW50QWZmZWN0ZWRCeUNs
YXNzUnVsZXMgPSBpc0FmZmVjdGVkOyB9CiAgICAgICAgIGJvb2wgZWxlbWVudEFmZmVjdGVkQnlD
bGFzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50QWZmZWN0ZWRCeUNsYXNzUnVsZXM7
IH0KLQorICAgICAgICAKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICAgICAgdm9pZCBz
ZXRSdWxlKFN0eWxlUnVsZSogcnVsZSkgeyBtX3J1bGUgPSBydWxlOyB9CisgICAgICAgIGNvbnN0
IFN0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZTsgfQorI2VuZGlmCiAgICAg
ICAgIHZvaWQgc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKGJvb2wgaXNBcHBseSkgeyBt
X2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSA9IGlzQXBwbHk7IH0KICAgICAgICAgdm9pZCBz
ZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGJvb2wgaXNBcHBseSkgeyBtX2FwcGx5
UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBpc0FwcGx5OyB9CiAgICAgICAgIGJvb2wgYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGU7IH0KQEAgLTUzNiw2ICs1NDQsMTAgQEAgcHVibGljOgogICAgICAgICBC
b3JkZXJEYXRhIG1fYm9yZGVyRGF0YTsKICAgICAgICAgRmlsbExheWVyIG1fYmFja2dyb3VuZERh
dGE7CiAgICAgICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOworCisjaWYgRU5BQkxFKENTU19D
QUxMQkFDS1MpCisgICAgICAgIFN0eWxlUnVsZSogbV9ydWxlOworI2VuZGlmCiAgICAgfTsKIAog
ICAgIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVOb3RZZXRBdmFpbGFibGUoKSB7IHJldHVybiBz
X3N0eWxlTm90WWV0QXZhaWxhYmxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjNTg0
N2FmZDgyMGEyMTdkNDgxMTQwOTk5MDQwYWJlOTdiMGY3ZWU2Li45ZDJmNWFmNTAxMzMzMWIxMjA4
YjE2MTRkYmQ4N2MxMDhiYzgyMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIwMjcs
NiArMjAyNyw2MSBAQCB2b2lkIERvY3VtZW50OjpjbGVhclN0eWxlUmVzb2x2ZXIoKQogICAgIG1f
c3R5bGVSZXNvbHZlci5jbGVhcigpOwogfQogCisjaWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCitj
bGFzcyBEb2N1bWVudDo6UmVwb3J0Q2FsbGJhY2tTZWxlY3RvckNoYW5nZSA6IHB1YmxpYyBUYXNr
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIE93blB0cjxDYWxsYmFja1Nl
bGVjdG9yQ2hhbmdlPiBjYWxsYmFja1NlbGVjdG9yQ2hhbmdlID0KKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5tX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UucmVsZWFzZSgpOworICAgICAgICBpZiAoY2Fs
bGJhY2tTZWxlY3RvckNoYW5nZS0+YWRkZWRTZWxlY3RvcnMuaXNFbXB0eSgpICYmIGNhbGxiYWNr
U2VsZWN0b3JDaGFuZ2UtPnJlbW92ZWRTZWxlY3RvcnMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGRv
Y3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPnNlbGVjdG9yTWF0Y2hDaGFuZ2Vk
KAorICAgICAgICAgICAgICAgIGNhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPmFkZGVkU2VsZWN0b3Jz
LCBjYWxsYmFja1NlbGVjdG9yQ2hhbmdlLT5yZW1vdmVkU2VsZWN0b3JzKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKK3ZvaWQgRG9jdW1lbnQ6OmFkZFNlbGVjdG9yTWF0Y2goY29uc3QgU3RyaW5n
JiBzZWxlY3RvcikKK3sKKyAgICBIYXNoTWFwPFN0cmluZywgaW50Pjo6aXRlcmF0b3IgY291bnQg
PSBtX21hdGNoaW5nQ2FsbGJhY2tTZWxlY3RvcnMuZmluZChzZWxlY3Rvcik7CisgICAgaWYgKGNv
dW50ICE9IG1fbWF0Y2hpbmdDYWxsYmFja1NlbGVjdG9ycy5lbmQoKSkgeworICAgICAgICArK2Nv
dW50LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX21hdGNoaW5nQ2FsbGJh
Y2tTZWxlY3RvcnMuc2V0KHNlbGVjdG9yLCAxKTsKKyAgICBpZiAoIW1fY2FsbGJhY2tTZWxlY3Rv
ckNoYW5nZSkgeworICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgPSBhZG9wdFB0cihu
ZXcgQ2FsbGJhY2tTZWxlY3RvckNoYW5nZSk7CisgICAgICAgIHBvc3RUYXNrKGFkb3B0UHRyKG5l
dyBSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hhbmdlKSk7CisgICAgfQorICAgIGlmIChtX2NhbGxi
YWNrU2VsZWN0b3JDaGFuZ2UtPnJlbW92ZWRTZWxlY3RvcnMuY29udGFpbnMoc2VsZWN0b3IpKQor
ICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPnJlbW92ZWRTZWxlY3RvcnMucmVtb3Zl
KHNlbGVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS0+
YWRkZWRTZWxlY3RvcnMuYWRkKHNlbGVjdG9yKTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3Zl
U2VsZWN0b3JNYXRjaChjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQoreworICAgIEhhc2hNYXA8U3Ry
aW5nLCBpbnQ+OjppdGVyYXRvciBjb3VudCA9IG1fbWF0Y2hpbmdDYWxsYmFja1NlbGVjdG9ycy5m
aW5kKHNlbGVjdG9yKTsKKyAgICBpZiAoY291bnQgPT0gbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0
b3JzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgLS1jb3VudC0+dmFsdWU7CisgICAgaWYg
KCFjb3VudC0+dmFsdWUpIHsKKyAgICAgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLnJl
bW92ZShjb3VudCk7CisgICAgICAgIGlmICghbV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlKSB7Cisg
ICAgICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgPSBhZG9wdFB0cihuZXcgQ2FsbGJh
Y2tTZWxlY3RvckNoYW5nZSk7CisgICAgICAgICAgICBwb3N0VGFzayhhZG9wdFB0cihuZXcgUmVw
b3J0Q2FsbGJhY2tTZWxlY3RvckNoYW5nZSkpOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Nh
bGxiYWNrU2VsZWN0b3JDaGFuZ2UtPmFkZGVkU2VsZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yKSkK
KyAgICAgICAgICAgIG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS0+YWRkZWRTZWxlY3RvcnMucmVt
b3ZlKHNlbGVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jYWxsYmFja1NlbGVj
dG9yQ2hhbmdlLT5yZW1vdmVkU2VsZWN0b3JzLmFkZChzZWxlY3Rvcik7CisgICAgfQorfQorI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorCiB2b2lkIERvY3VtZW50OjphdHRhY2goKQog
ewogICAgIEFTU0VSVCghYXR0YWNoZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0MWEw
NWRlMTM0ODEyYTg1M2RjZjUwYWEyMDlhZjNhZWRhMDdmZWIuLjdjYjE4ZmU3NjRkNTlhZDhhNmFj
NjA1MTNlNTlhYjg4NGM1YTVjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTc1LDYgKzEx
NzUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpblN0eWxlUmVjYWxjKCkgeyByZXR1cm4gbV9p
blN0eWxlUmVjYWxjOyB9CiAKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICB2b2lkIGFk
ZFNlbGVjdG9yTWF0Y2goY29uc3QgU3RyaW5nJiBzZWxlY3Rvcik7CisgICAgdm9pZCByZW1vdmVT
ZWxlY3Rvck1hdGNoKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpOworI2VuZGlmCisKICAgICAvLyBS
ZXR1cm4gYSBMb2NhbGUgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgYXJndW1lbnQgaXMg
bnVsbCBvciBlbXB0eS4KICAgICBMb2NhbGUmIGdldENhY2hlZExvY2FsZShjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSA9IG51bGxBdG9tKTsKIApAQCAtMTU0NCw2ICsxNTQ5LDIzIEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9uYW1lZEZsb3dzOwogCisj
aWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAgLy8gTWFwcyBhIENTUyBzZWxlY3RvciBzdHJp
bmcgd2l0aCBhIC13ZWJraXQtY2FsbGJhY2sgcHJvcGVydHkgdG8gdGhlIG51bWJlcgorICAgIC8v
IG9mIG1hdGNoaW5nIFJlbmRlclN0eWxlIG9iamVjdHMgaW4gdGhpcyBkb2N1bWVudC4KKyAgICBI
YXNoTWFwPFN0cmluZywgaW50PiBtX21hdGNoaW5nQ2FsbGJhY2tTZWxlY3RvcnM7CisgICAgLy8g
UnVucyBGcmFtZUxvYWRlckNsaWVudDo6c2VsZWN0b3JNYXRjaENoYW5nZWQgd2l0aCB0aGUgdXBk
YXRlZCB2YWx1ZSBvZgorICAgIC8vIG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS4KKyAgICBjbGFz
cyBSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hhbmdlOworICAgIHN0cnVjdCBDYWxsYmFja1NlbGVj
dG9yQ2hhbmdlIHsKKyAgICAgICAgLy8gU2VsZWN0b3JzIGFyZSByZWxhdGl2ZSB0byBtX21hdGNo
aW5nQ2FsbGJhY2tTZWxlY3RvcnMncyBjb250ZW50cyBhdAorICAgICAgICAvLyB0aGUgcHJldmlv
dXMgY2FsbCB0byBzZWxlY3Rvck1hdGNoQ2hhbmdlZC4KKyAgICAgICAgSGFzaFNldDxTdHJpbmc+
IGFkZGVkU2VsZWN0b3JzOworICAgICAgICBIYXNoU2V0PFN0cmluZz4gcmVtb3ZlZFNlbGVjdG9y
czsKKyAgICB9OworICAgIC8vIE5vbi1udWxsIGlmIGEgUmVwb3J0Q2FsbGJhY2tTZWxlY3RvckNo
YW5nZSB0YXNrIGlzIHBvc3RlZC4KKyAgICBPd25QdHI8Q2FsbGJhY2tTZWxlY3RvckNoYW5nZT4g
bV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NQX05FWFQp
CiAgICAgUmVmUHRyPERPTVNlY3VyaXR5UG9saWN5PiBtX2RvbVNlY3VyaXR5UG9saWN5OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggMWUxYTE0YzU2MmY2NTU3
YjkwOTAxZThhYTk5ODg4N2E5NTFkODU5YS4uNGI1ZmQ4MzQ3OGEzMTdhMTkyYzFjOWNkOTQyYjg4
ZjQ1ZmM4ZjRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzQ0LDYg
KzM0NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9CisjaWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAg
dmlydHVhbCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYpIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDM5YTViOGVhYmMw
YTk1YTUzYWYwZDdhZDJiNDFkMmJmMzliOGZiOS4uZDg4ODY1YWQ1ZWM5Y2QyMjlhZjExOWJjMzFj
NzAyZTUwM2U1NjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMjMzLDYgKzIzNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOwogCisjaWYgRU5BQkxFKENT
U19DQUxMQkFDS1MpCisgICAgICAgIC8vIFRyYW5zbWl0cyB0aGUgY2hhbmdlIGluIHRoZSBzZXQg
b2YgQ1NTIHNlbGVjdG9ycyB3aXRoIHRoZQorICAgICAgICAvLyAtd2Via2l0LWNhbGxiYWNrIHBy
b3BlcnR5IHRoYXQgbWF0Y2ggYW55IGVsZW1lbnQgb24gdGhlIGZyYW1lLgorICAgICAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRl
ZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSA9IDA7
CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAppbmRleCAxZTI0OWI3ZTQ5ODI5NWY0MzUwNjU1Y2YwZjg1ZjQ0Y2NjYjRlNWE5Li5lNGMw
MDhjMTEwMGY5NDgwNDhkNTdiZWE2OTJjYzJjOTU4NTFhZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTc1NSw2ICs3NTUsMjkgQEAg
dm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJDdXJzb3JMaXN0KCkKICAgICAgICAgcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEgPSAwOwogfQogCisjaWYgRU5BQkxFKENTU19DQUxM
QkFDS1MpCit2b2lkIFJlbmRlclN0eWxlOjphZGRDYWxsYmFja1NlbGVjdG9yKFN0cmluZyBzZWxl
Y3RvciwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIEFTU0VSVCghcmFyZU5vbkluaGVyaXRl
ZERhdGEtPm1fZG9jdW1lbnQKKyAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZG9j
dW1lbnQgPT0gZG9jdW1lbnQpOworICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2Fs
bGJhY2tTZWxlY3RvcnMuY29udGFpbnMoc2VsZWN0b3IpKSB7CisgICAgICAgIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEqIGRhdGEgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKTsKKyAg
ICAgICAgZGF0YS0+bV9jYWxsYmFja1NlbGVjdG9ycy5hcHBlbmQoc2VsZWN0b3IpOworICAgICAg
ICBkYXRhLT5tX2RvY3VtZW50ID0gZG9jdW1lbnQ7CisgICAgICAgIGRvY3VtZW50LT5hZGRTZWxl
Y3Rvck1hdGNoKHNlbGVjdG9yKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVuZGVyU3R5bGU6OnJlbW92
ZUNhbGxiYWNrU2VsZWN0b3IoU3RyaW5nIHNlbGVjdG9yKQoreworICAgIHNpemVfdCBpbmRleCA9
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzLmZpbmQoc2VsZWN0b3Ip
OworICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICByYXJlTm9uSW5oZXJpdGVk
RGF0YS5hY2Nlc3MoKS0+bV9jYWxsYmFja1NlbGVjdG9ycy5yZW1vdmUoaW5kZXgpOworICAgICAg
ICByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kb2N1bWVudC0+cmVtb3ZlU2VsZWN0b3JNYXRjaChz
ZWxlY3Rvcik7CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyU3R5bGU6OmNsZWFyQ29u
dGVudCgpCiB7CiAgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2NvbnRlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDEyOTJhNDY1
MjQ0M2ZkMTdhN2ZkMmMyMzgzMTVmY2YyNjhhYjQ4YmMuLjg0YWRjZGM5YzNhODRlYWJkMWYyMjZm
NmQyZjgzNjBkNjEzZDMxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCkBAIC03NjIsNiArNzYyLDkgQEAgcHVibGljOgogICAgIEVCb3hQYWNrIGJv
eFBhY2soKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94UGFjaz4ocmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fZGVwcmVjYXRlZEZsZXhpYmxlQm94LT5wYWNrKTsgfQogCiAgICAgaW50IG9y
ZGVyKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fb3JkZXI7IH0KKyNp
ZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgY2FsbGJh
Y2tTZWxlY3RvcnMoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9jYWxs
YmFja1NlbGVjdG9yczsgfQorI2VuZGlmCiAgICAgZmxvYXQgZmxleEdyb3coKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4R3JvdzsgfQog
ICAgIGZsb2F0IGZsZXhTaHJpbmsoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9mbGV4aWJsZUJveC0+bV9mbGV4U2hyaW5rOyB9CiAgICAgTGVuZ3RoIGZsZXhCYXNpcygp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2Zs
ZXhCYXNpczsgfQpAQCAtMTI4MSw2ICsxMjg0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZs
ZXhTaHJpbmsoZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhTaHJpbmssIGYpOyB9CiAgICAgdm9pZCBzZXRGbGV4QmFz
aXMoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vzcygp
LT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhCYXNpcywgbGVuZ3RoKTsgfQogICAgIHZvaWQgc2V0T3Jk
ZXIoaW50IG8pIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vcmRlciwgbyk7IH0K
KyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICB2b2lkIGFkZENhbGxiYWNrU2VsZWN0b3Io
U3RyaW5nIHNlbGVjdG9yLCBEb2N1bWVudCopOworICAgIHZvaWQgcmVtb3ZlQ2FsbGJhY2tTZWxl
Y3RvcihTdHJpbmcgc2VsZWN0b3IpOworI2VuZGlmCiAgICAgdm9pZCBzZXRBbGlnbkNvbnRlbnQo
RUFsaWduQ29udGVudCBwKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25D
b250ZW50LCBwKTsgfQogICAgIHZvaWQgc2V0QWxpZ25JdGVtcyhFQWxpZ25JdGVtcyBhKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25JdGVtcywgYSk7IH0KICAgICB2b2lk
IHNldEFsaWduU2VsZihFQWxpZ25JdGVtcyBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fYWxpZ25TZWxmLCBhKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCmluZGV4IGI1YTZl
ZmYyN2ViZTlkOGViMTBhNGUzOTQ1N2VkOTIyZGNkN2U1NWMuLjBkY2RiOTkxZDkxNjQ5YTYwNjA2
OWFmYTU2ZmYyMzEyYWY3N2RmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTU3LDYg
KzU3LDkgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YSgpCiAgICAgLCBtX2NsaXBQYXRoKFJlbmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgoKSkK
ICAgICAsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxC
YWNrZ3JvdW5kQ29sb3IoKSkKICAgICAsIG1fb3JkZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRl
cigpKQorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgICwgbV9kb2N1bWVudCgpCisjZW5k
aWYKICAgICAsIG1fZmxvd1RocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQoKSkK
ICAgICAsIG1fcmVnaW9uVGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkp
CiAgICAgLCBtX3JlZ2lvbk92ZXJmbG93KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uT3ZlcmZs
b3coKSkKQEAgLTEzNiw2ICsxMzksOSBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogICAgICwg
bV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9y
KQogICAgICwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8ubV92aXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yKQogICAgICwgbV9vcmRlcihvLm1fb3JkZXIpCisjaWYgRU5BQkxFKENT
U19DQUxMQkFDS1MpCisgICAgLCBtX2RvY3VtZW50KCkKKyNlbmRpZgogICAgICwgbV9mbG93VGhy
ZWFkKG8ubV9mbG93VGhyZWFkKQogICAgICwgbV9yZWdpb25UaHJlYWQoby5tX3JlZ2lvblRocmVh
ZCkKICAgICAsIG1fcmVnaW9uT3ZlcmZsb3coby5tX3JlZ2lvbk92ZXJmbG93KQpAQCAtMTczLDYg
KzE3OSwxNCBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogCiBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjp+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpCiB7CisjaWYgRU5BQkxFKENTU19D
QUxMQkFDS1MpCisgICAgaWYgKCFtX2NhbGxiYWNrU2VsZWN0b3JzLmlzRW1wdHkoKSkgeworICAg
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvY3VtZW50OworICAgICAgICBmb3IgKFZlY3Rv
cjxTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2FsbGJhY2tTZWxlY3RvcnMuYmVnaW4o
KSwgZW5kID0gbV9jYWxsYmFja1NlbGVjdG9ycy5lbmQoKTsKKyAgICAgICAgICAgIGl0ICE9IGVu
ZDsgKytpdCkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZW1vdmVTZWxlY3Rvck1hdGNoKCppdCk7
CisgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3Bl
cmF0b3I9PShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBvKSBjb25zdApAQCAtMjIx
LDYgKzIzNSwxMCBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX3Zpc2l0
ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IKICAg
ICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yID09IG8ubV92aXNpdGVkTGlu
a0JvcmRlckJvdHRvbUNvbG9yCiAgICAgICAgICYmIG1fb3JkZXIgPT0gby5tX29yZGVyCisjaWYg
RU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAgICAgICYmIG1fY2FsbGJhY2tTZWxlY3RvcnMgPT0g
by5tX2NhbGxiYWNrU2VsZWN0b3JzCisgICAgICAgICYmIG1fZG9jdW1lbnQgPT0gby5tX2RvY3Vt
ZW50CisjZW5kaWYKICAgICAgICAgJiYgbV9mbG93VGhyZWFkID09IG8ubV9mbG93VGhyZWFkCiAg
ICAgICAgICYmIG1fcmVnaW9uVGhyZWFkID09IG8ubV9yZWdpb25UaHJlYWQKICAgICAgICAgJiYg
bV9yZWdpb25PdmVyZmxvdyA9PSBvLm1fcmVnaW9uT3ZlcmZsb3cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
CmluZGV4IGM0YWMwZjZmMzhmODkyMTFlYzA4NDM5OGQxOWY1Mjg3NTVmMGRkOGIuLjE0MzMyZDkw
YzRkODRmZDE5N2UyMmE4YTNjZjZiN2NlN2UzNDk5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApA
QCAtNDEsNiArNDEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRpb25M
aXN0OworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVEZXBy
ZWNhdGVkRmxleGlibGVCb3hEYXRhOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTE1NCw2
ICsxNTUsMTEgQEAgcHVibGljOgogCiAgICAgaW50IG1fb3JkZXI7CiAKKyNpZiBFTkFCTEUoQ1NT
X0NBTExCQUNLUykKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2NhbGxiYWNrU2VsZWN0b3JzOworICAg
IERvY3VtZW50KiBtX2RvY3VtZW50OworI2VuZGlmCisKICAgICBBdG9taWNTdHJpbmcgbV9mbG93
VGhyZWFkOwogICAgIEF0b21pY1N0cmluZyBtX3JlZ2lvblRocmVhZDsKICAgICB1bnNpZ25lZCBt
X3JlZ2lvbk92ZXJmbG93IDogMTsgLy8gUmVnaW9uT3ZlcmZsb3cKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
ZmVhdHVyZXMuZ3lwaQppbmRleCBkMzc3ZjY5ODI3NDUxYzI2YWU3NGVjYWNhMmEwNWExZDBlYmIx
NTE3Li45MmMwMWJmYjUzZTU3NmUwZTNhNzIwMTgxYjI2Y2M1M2ZlNjM1NzIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9mZWF0dXJlcy5neXBpCkBAIC00NCw2ICs0NCw3IEBACiAgICAgICAnRU5BQkxF
X0NTUzNfVEVYVD0wJywKICAgICAgICdFTkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUs9MCcsCiAg
ICAgICAnRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSz0xJywKKyAgICAgICdFTkFCTEVf
Q1NTX0NBTExCQUNLUz0xJywKICAgICAgICdFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HPTAnLAogICAg
ICAgJ0VOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT049MCcsCiAgICAgICAnRU5BQkxFX0NTU19F
WENMVVNJT05TPTEnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgKaW5kZXggYjMwNzZlMGVmY2E2Zjc5NTc5MGU4NzA5ODMyMmE5ZjgzZWEyMjcyMC4u
MzdhZTc4OGUzMWE3YTEyZDEzMTI3OWVkMjdkYTY2ZGI5MDAzODAyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC0xMjUsNiArMTI1LDkg
QEAgcHVibGljOgogICAgIC8vIFRoaXMgZnJhbWUncyBuYW1lIGhhcyBjaGFuZ2VkLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VOYW1lKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJikgeyB9
CiAKKyAgICAvLyBDYWxsZWQgd2hlbiBhIC13ZWJraXQtY2FsbGJhY2sgQ1NTIHJ1bGUgbWF0Y2hl
cyBvciBzdG9wcyBtYXRjaGluZy4KKyAgICB2aXJ0dWFsIHZvaWQgY3NzTWF0Y2hlcyhXZWJGcmFt
ZSosIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuZXdseU1hdGNoaW5nU2VsZWN0b3JzLCBj
b25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgc3RvcHBlZE1hdGNoaW5nU2VsZWN0b3JzKSB7IH0K
KwogICAgIC8vIExvYWQgY29tbWFuZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgLy8gVGhlIGNsaWVudCBzaG91bGQgaGFuZGxl
IHRoZSBuYXZpZ2F0aW9uIGV4dGVybmFsbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA4MDkxNTg5MzJmNmE2Yjg2
YjU2YWVhYzgwYzM1NzI5MTVmNDAyODg3Li5hNTY2YTQ1NWQwYzM1Yjk2ODIxMTY1NTZiNGVhODI1
MzM2ODdkYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMv
UGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJU
aHJlYWQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlVSTEVycm9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlZlY3Rvci5oPgpAQCAtMTI1MCw2ICsx
MjUxLDE2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaWREZXRlY3RYU1MoY29uc3Qg
S1VSTCYgaW5zZWN1cmVVUkwsIGJvb2wgZGlkQmxvY2tFCiAgICAgICAgIG1fd2ViRnJhbWUtPmNs
aWVudCgpLT5kaWREZXRlY3RYU1MobV93ZWJGcmFtZSwgaW5zZWN1cmVVUkwsIGRpZEJsb2NrRW50
aXJlUGFnZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzZWxlY3Rvck1hdGNo
Q2hhbmdlZChjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFkZGVkU2VsZWN0b3JzLCBjb25zdCBIYXNo
U2V0PFN0cmluZz4mIHJlbW92ZWRTZWxlY3RvcnMpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNs
aWVudCgpKSB7CisgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHdlYkFkZGVkU2VsZWN0b3Jz
LCB3ZWJSZW1vdmVkU2VsZWN0b3JzOworICAgICAgICBjb3B5VG9WZWN0b3IoYWRkZWRTZWxlY3Rv
cnMsIHdlYkFkZGVkU2VsZWN0b3JzKTsKKyAgICAgICAgY29weVRvVmVjdG9yKHJlbW92ZWRTZWxl
Y3RvcnMsIHdlYlJlbW92ZWRTZWxlY3RvcnMpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+Y3NzTWF0Y2hlcyhtX3dlYkZyYW1lLCB3ZWJBZGRlZFNlbGVjdG9ycywgd2ViUmVtb3ZlZFNl
bGVjdG9ycyk7CisgICAgfQorfQorCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiB7CiAgICAgLy8gRklYTUUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgKaW5kZXggM2YwYzgxZjlmNTczMWEwNjY0MjMwYTMxY2MwYjljZjAyMzAzYzU0Ny4uMWFlODRl
Y2Y2MzQ1ODk0NDk2NGE0ZWU0NDM2YzlmMTJkZTE4NTJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTE0NCw2ICsxNDQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgaW5zZWN1cmVVUkwpOwogICAgIHZpcnR1
YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgZGlkQmxvY2tF
bnRpcmVQYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBhZGRlZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBy
ZW1vdmVkU2VsZWN0b3JzKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90
U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCmluZGV4IGRmNWI2ZGFiZWM4
YjI1ODUxMjYxMGZjOGRiZjQ2MjA4MWNhYjk0ODguLjI4OWM2MjUwNDhkMWQ2MGNiNDI0ZTIzNGRj
NjNjODViOTNmNzJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZy
YW1lVGVzdC5jcHAKQEAgLTY0LDggKzY0LDExIEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5o
IgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSAidjguaCIKKyNpbmNsdWRlIDxn
bW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8bWFwPgog
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDU3RyaW5n
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJUaHJlYWQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMUmVzcG9uc2UuaD4KQEAgLTIxNiw2
ICsyMTksMTY1IEBAIFRFU1RfRihXZWJGcmFtZVRlc3QsIENocm9tZVBhZ2VOb0phdmFzY3JpcHQp
CiAgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIkNsb2JiZXJl
ZCIpKTsKIH0KIAorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorc3RhdGljIHN0ZDo6c3RyaW5n
IEFzU3RyaW5nKGNvbnN0IFdlYlN0cmluZyYgdXRmMTZJbnB1dCkKK3sKKyAgICBXZWJDU3RyaW5n
IHV0ZjhJbnB1dCA9IHV0ZjE2SW5wdXQudXRmOCgpOworICAgIHJldHVybiBzdGQ6OnN0cmluZyh1
dGY4SW5wdXQuZGF0YSgpLCB1dGY4SW5wdXQubGVuZ3RoKCkpOworfQorCitzdHJ1Y3QgQ3NzQ2Fs
bGJhY2tXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CisgICAgQ3NzQ2Fs
bGJhY2tXZWJGcmFtZUNsaWVudCgpIDogbV91cGRhdGVDb3VudCgwKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgY3NzTWF0Y2hlcyhXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJp
bmc+JiBuZXdseU1hdGNoaW5nU2VsZWN0b3JzLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYg
c3RvcHBlZE1hdGNoaW5nU2VsZWN0b3JzKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgKyttX3Vw
ZGF0ZUNvdW50OworICAgICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4mIGZyYW1lU2VsZWN0b3Jz
ID0gbV9tYXRjaGVkU2VsZWN0b3JzW2ZyYW1lXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBuZXdseU1hdGNoaW5nU2VsZWN0b3JzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBz
dGQ6OnN0cmluZyBzZWxlY3RvciA9IEFzU3RyaW5nKG5ld2x5TWF0Y2hpbmdTZWxlY3RvcnNbaV0p
OworICAgICAgICAgICAgRVhQRUNUX0VRKDBVLCBmcmFtZVNlbGVjdG9ycy5jb3VudChzZWxlY3Rv
cikpIDw8IHNlbGVjdG9yOworICAgICAgICAgICAgZnJhbWVTZWxlY3RvcnMuaW5zZXJ0KHNlbGVj
dG9yKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0b3BwZWRN
YXRjaGluZ1NlbGVjdG9ycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcg
c2VsZWN0b3IgPSBBc1N0cmluZyhzdG9wcGVkTWF0Y2hpbmdTZWxlY3RvcnNbaV0pOworICAgICAg
ICAgICAgRVhQRUNUX0VRKDFVLCBmcmFtZVNlbGVjdG9ycy5jb3VudChzZWxlY3RvcikpIDw8IHNl
bGVjdG9yOworICAgICAgICAgICAgZnJhbWVTZWxlY3RvcnMuZXJhc2Uoc2VsZWN0b3IpOworICAg
ICAgICB9CisgICAgfQorCisgICAgc3RkOjptYXA8V2ViRnJhbWUqLCBzdGQ6OnNldDxzdGQ6OnN0
cmluZz4gPiBtX21hdGNoZWRTZWxlY3RvcnM7CisgICAgaW50IG1fdXBkYXRlQ291bnQ7Cit9Owor
CitURVNUX0YoV2ViRnJhbWVUZXN0LCBDc3NDYWxsYmFja0F1dGhvclN0eWxlU2hlZXQpCit7Cisg
ICAgQ3NzQ2FsbGJhY2tXZWJGcmFtZUNsaWVudCBjbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmll
dyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKCJhYm91dDpibGFuayIs
IHRydWUsICZjbGllbnQpOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IHdlYlZpZXctPm1haW5GcmFt
ZSgpOworCisgICAgZnJhbWUtPmxvYWRIVE1MU3RyaW5nKAorICAgICAgICAiPHN0eWxlPiIKKyAg
ICAgICAgImRpdi5pbml0aWFsX29uIHsgLXdlYmtpdC1jYWxsYmFjazogLXdlYmtpdC1wcmVzZW5j
ZTsgfSIKKyAgICAgICAgImRpdi5pbml0aWFsX29mZiB7IC13ZWJraXQtY2FsbGJhY2s6IG5vbmU7
IH0iCisgICAgICAgICI8L3N0eWxlPiIKKyAgICAgICAgIjxkaXYgY2xhc3M9XCJpbml0aWFsX29u
XCI+PC9kaXY+IgorICAgICAgICAiPGRpdiBjbGFzcz1cImluaXRpYWxfb2ZmXCI+PC9kaXY+IiwK
KyAgICAgICAgdG9LVVJMKCJhYm91dDpibGFuayIpKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsK
KyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFU
KGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICB0ZXN0aW5nOjpFbGVt
ZW50c0FyZSgiZGl2LmluaXRpYWxfb24iKSk7CisKKyAgICBXZWJEb2N1bWVudCBkb2MgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICAvLyBDaGVjayB0aGF0IGFkZGluZyBhIHN0eWxlIHJ1bGUgY2Fs
bHMgYmFjayBmb3IgYWxyZWFkeS1wcmVzZW50IG5vZGVzLgorICAgIGRvYy5pbnNlcnRVc2VyU3R5
bGVTaGVldCgiZGl2LmluaXRpYWxfb2Zmey13ZWJraXQtY2FsbGJhY2s6LXdlYmtpdC1wcmVzZW5j
ZSAhaW1wb3J0YW50fSIsCisgICAgICAgIFdlYkRvY3VtZW50OjpVc2VyU3R5bGVVc2VyTGV2ZWwp
OworICAgIHJ1blBlbmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubV91cGRh
dGVDb3VudCk7CisgICAgRVhQRUNUX1RIQVQoY2xpZW50Lm1fbWF0Y2hlZFNlbGVjdG9yc1tmcmFt
ZV0sCisgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKCJkaXYuaW5pdGlhbF9vZmYiLCAiZGl2
LmluaXRpYWxfb24iKSk7CisKKyAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiB0dXJuIG9mZiBjYWxs
YmFja3MgZm9yIGNlcnRhaW4gc2VsZWN0b3JzLgorICAgIGRvYy5pbnNlcnRVc2VyU3R5bGVTaGVl
dCgKKyAgICAgICAgImRpdi5pbml0aWFsX29mZnstd2Via2l0LWNhbGxiYWNrOm5vbmUgIWltcG9y
dGFudH0iCisgICAgICAgICJkaXYuaW5pdGlhbF9vbnstd2Via2l0LWNhbGxiYWNrOm5vbmUgIWlt
cG9ydGFudH0iLAorICAgICAgICBXZWJEb2N1bWVudDo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAg
ICBydW5QZW5kaW5nVGFza3MoKTsKKyAgICBFWFBFQ1RfRVEoMywgY2xpZW50Lm1fdXBkYXRlQ291
bnQpOworICAgIEVYUEVDVF9USEFUKGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAor
ICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZSgpKTsKKworICAgIEVYUEVDVF9FUSgxVSwgY2xp
ZW50Lm1fbWF0Y2hlZFNlbGVjdG9ycy5zaXplKCkpOworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9
CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENzc0NhbGxiYWNrU2hhcmVkUmVuZGVyU3R5bGUpCit7
CisgICAgQ3NzQ2FsbGJhY2tXZWJGcmFtZUNsaWVudCBjbGllbnQ7CisgICAgV2ViVmlldyogd2Vi
VmlldyA9IEZyYW1lVGVzdEhlbHBlcnM6OmNyZWF0ZVdlYlZpZXdBbmRMb2FkKCJhYm91dDpibGFu
ayIsIHRydWUsICZjbGllbnQpOworICAgIFdlYkZyYW1lKiBmcmFtZSA9IHdlYlZpZXctPm1haW5G
cmFtZSgpOworICAgIFdlYkRvY3VtZW50IGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworCisgICAg
Ly8gQ2hlY2sgdGhhdCBhZGRpbmcgYW4gZWxlbWVudCBjYWxscyBiYWNrIHdoZW4gaXQgbWF0Y2hl
cyBhbiBleGlzdGluZyBydWxlLgorICAgIGRvYy5pbnNlcnRVc2VyU3R5bGVTaGVldCgic3Bhbnst
d2Via2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2V9IiwKKyAgICAgICAgV2ViRG9jdW1lbnQ6
OlVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0
U291cmNlKAorICAgICAgICAiaTEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7Igor
ICAgICAgICAiaTEuaWQgPSAnZmlyc3Rfc3Bhbic7IgorICAgICAgICAiZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpMSkiKSk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0VR
KDEsIGNsaWVudC5tX3VwZGF0ZUNvdW50KTsKKyAgICBFWFBFQ1RfVEhBVChjbGllbnQubV9tYXRj
aGVkU2VsZWN0b3JzW2ZyYW1lXSwKKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoInNwYW4i
KSk7CisKKyAgICAvLyBBZGRpbmcgYSBzZWNvbmQgZWxlbWVudCB0aGF0IHNoYXJlcyBhIFJlbmRl
clN0eWxlIHNob3VsZG4ndCBjYWxsIGJhY2suCisgICAgLy8gV2UgdXNlIDxzcGFuPnMgdG8gYXZv
aWQgZGVmYXVsdCBzdHlsZSBydWxlcyB0aGF0IGNhbiBzZXQKKyAgICAvLyBSZW5kZXJTdHlsZTo6
dW5pcXVlKCkuCisgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKAorICAg
ICAgICAiaTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7IgorICAgICAgICAiaTIu
aWQgPSAnc2Vjb25kX3NwYW4nOyIKKyAgICAgICAgImkxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ZpcnN0X3NwYW4nKTsiCisgICAgICAgICJpMS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShp
MiwgaTEubmV4dFNpYmxpbmcpOyIpKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAgICBFWFBF
Q1RfRVEoMSwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFUKGNsaWVudC5t
X21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZSgi
c3BhbiIpKTsKKworICAgIC8vIFJlbW92aW5nIHRoZSBmaXJzdCBlbGVtZW50IHNob3VsZG4ndCBj
YWxsIGJhY2suCisgICAgZnJhbWUtPmV4ZWN1dGVTY3JpcHQoV2ViU2NyaXB0U291cmNlKAorICAg
ICAgICAiaTEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlyc3Rfc3BhbicpOyIKKyAgICAg
ICAgImkxLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaTEpOyIpKTsKKyAgICBydW5QZW5kaW5nVGFz
a3MoKTsKKyAgICBFWFBFQ1RfRVEoMSwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVD
VF9USEFUKGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICB0ZXN0aW5n
OjpFbGVtZW50c0FyZSgic3BhbiIpKTsKKworICAgIC8vIEJ1dCByZW1vdmluZyB0aGUgc2Vjb25k
IGVsZW1lbnQgKnNob3VsZCogY2FsbCBiYWNrLgorICAgIGZyYW1lLT5leGVjdXRlU2NyaXB0KFdl
YlNjcmlwdFNvdXJjZSgKKyAgICAgICAgImkyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Nl
Y29uZF9zcGFuJyk7IgorICAgICAgICAiaTIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpMik7Iikp
OworICAgIHJ1blBlbmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubV91cGRh
dGVDb3VudCk7CisgICAgRVhQRUNUX1RIQVQoY2xpZW50Lm1fbWF0Y2hlZFNlbGVjdG9yc1tmcmFt
ZV0sCisgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKCkpOworCisgICAgRVhQRUNUX0VRKDFV
LCBjbGllbnQubV9tYXRjaGVkU2VsZWN0b3JzLnNpemUoKSk7CisgICAgd2ViVmlldy0+Y2xvc2Uo
KTsKK30KKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ3NzQ2FsbGJhY2tNdWx0aVNlbGVjdG9yKQor
eworICAgIENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQgY2xpZW50OworICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6Ymxh
bmsiLCB0cnVlLCAmY2xpZW50KTsKKyAgICBXZWJGcmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWlu
RnJhbWUoKTsKKyAgICBmcmFtZS0+bG9hZEhUTUxTdHJpbmcoIjxzcGFuPjwvc3Bhbj4iLCB0b0tV
UkwoImFib3V0OmJsYW5rIikpOworICAgIHJ1blBlbmRpbmdUYXNrcygpOworICAgIFdlYkRvY3Vt
ZW50IGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworCisgICAgLy8gQ2hlY2sgdGhhdCBzZWxlY3Rv
ciBsaXN0cyBtYXRjaCBhcyB0aGUgd2hvbGUgbGlzdCwgbm90IGFzIGVhY2ggZWxlbWVudAorICAg
IC8vIGluZGVwZW5kZW50bHkuCisgICAgZG9jLmluc2VydFVzZXJTdHlsZVNoZWV0KAorICAgICAg
ICAic3Bhbnstd2Via2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2V9IgorICAgICAgICAic3Bh
bixwey13ZWJraXQtY2FsbGJhY2s6LXdlYmtpdC1wcmVzZW5jZX0iLAorICAgICAgICBXZWJEb2N1
bWVudDo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAgICBF
WFBFQ1RfRVEoMSwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFUKGNsaWVu
dC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0Fy
ZSgic3BhbiIsICJzcGFuLCBwIikpOworCisgICAgLy8gInNwYW4scCIgY292ZXJzICJzcGFuIiwg
YnV0IGVyYXNpbmcgInNwYW4scCIgZG9lc24ndCBwcmV2ZW50ICJzcGFuIiBmcm9tCisgICAgLy8g
bWF0Y2hpbmcuCisgICAgZG9jLmluc2VydFVzZXJTdHlsZVNoZWV0KCJzcGFuLHB7LXdlYmtpdC1j
YWxsYmFjazpub25lfSIsCisgICAgICAgIFdlYkRvY3VtZW50OjpVc2VyU3R5bGVVc2VyTGV2ZWwp
OworICAgIHJ1blBlbmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9FUSgyLCBjbGllbnQubV91cGRh
dGVDb3VudCk7CisgICAgRVhQRUNUX1RIQVQoY2xpZW50Lm1fbWF0Y2hlZFNlbGVjdG9yc1tmcmFt
ZV0sCisgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKCJzcGFuIikpOworCisgICAgRVhQRUNU
X0VRKDFVLCBjbGllbnQubV9tYXRjaGVkU2VsZWN0b3JzLnNpemUoKSk7CisgICAgd2ViVmlldy0+
Y2xvc2UoKTsKK30KKyNlbmRpZgorCiBURVNUX0YoV2ViRnJhbWVUZXN0LCBEaXNwYXRjaE1lc3Nh
Z2VFdmVudFdpdGhPcmlnaW5DaGVjaykKIHsKICAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJwb3N0bWVzc2FnZV90ZXN0Lmh0bWwiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192857</attachid>
            <date>2013-03-12 19:19:18 -0700</date>
            <delta_ts>2013-03-13 11:10:02 -0700</delta_ts>
            <desc>Patch adding a -webkit-callback CSS property</desc>
            <filename>bug-110524-20130312191517.patch</filename>
            <type>text/plain</type>
            <size>38758</size>
            <attacher name="Jeffrey Yasskin">jyasskin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2NGQ1NTkxNmJlZmY1
YmFmMjk2MmZkNzU4NTY0NWYyYTQ1M2ExYWI3Li5hMmNjNGE2YWRiZWQ4NDJlMTdmZjlhN2EyZWIy
ODQ1ODZlMTQwNmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMy0xMiAg
SmVmZnJleSBZYXNza2luICA8anlhc3NraW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBh
IHdheSB0byB3YXRjaCBwYWdlcyBmb3IgZWxlbWVudHMgbWF0Y2hpbmcgYSBDU1Mgc2VsZWN0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDUyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC13ZWJraXQt
Y2FsbGJhY2s6LXdlYmtpdC1wcmVzZW5jZSB3aWxsIGNhbGwgRnJhbWVMb2FkZXJDbGllbnQ6OnNl
bGVjdG9yTWF0Y2hDaGFuZ2VkKCkgdG8KKyAgICAgICAgdHJhY2sgdGhlIHByZXNlbmNlIG9mIGVs
ZW1lbnRzIG1hdGNoaW5nIHRoZSBydWxlcycgQ1NTIHNlbGVjdG9ycy4KKworICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJWZWN0b3IuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmVjdG9yOjpy
ZXNpemUpOiBNYWtlIFdlYlZlY3RvciB1c2FibGUgd2l0aCBXVEY6OmNvcHlUb1ZlY3RvcigpLgor
CiAyMDEzLTAzLTExICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbQ2hyb21pdW1dIE1vdmUgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyB0byBQbGF0Zm9ybS8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZjQ4YmU1NWQwNDEwMDBmNjEzYjA5ODM4MWNkMGNhZDdiMjEzOWQ3ZC4uYzVkYjgxODQ4
NGM2NGJkNmQ5NzQ5YzUyMzQ1ZTE4NjE3MDU1YzI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
My0wMy0xMiAgSmVmZnJleSBZYXNza2luICA8anlhc3NraW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIEFkZCBhIHdheSB0byB3YXRjaCBwYWdlcyBmb3IgZWxlbWVudHMgbWF0Y2hpbmcgYSBDU1Mg
c2VsZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMDUyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAt
d2Via2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2Ugd2lsbCBjYWxsIEZyYW1lTG9hZGVyQ2xp
ZW50OjpzZWxlY3Rvck1hdGNoQ2hhbmdlZCgpIHRvCisgICAgICAgIHRyYWNrIHRoZSBwcmVzZW5j
ZSBvZiBlbGVtZW50cyBtYXRjaGluZyB0aGUgcnVsZXMnIENTUyBzZWxlY3RvcnMuCisKKyAgICAg
ICAgKiB3dGYvRmVhdHVyZURlZmluZXMuaDogQWRkIGEgQ1NTX0NBTExCQUNLUyBmZWF0dXJlIGZs
YWcuCisKIDIwMTMtMDMtMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguICBSb2xsaW5nIG91dCBpbmFkdmVydGVudCBz
ZXR0aW5nIG9mIERBVEFfTE9HX1RPX0ZJTEUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiOWIxZDU4NDczNjY1
NGE0N2EzYWU5MjA3ODFiY2EzMjJlZGQyNy4uN2Y3MTI1MDc0ZDU4YjQyNjQ2NTBjODZhNTNkYjgz
NjdiMzNiM2Y1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAzLTEyICBKZWZm
cmV5IFlhc3NraW4gIDxqeWFzc2tpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGEgd2F5
IHRvIHdhdGNoIHBhZ2VzIGZvciBlbGVtZW50cyBtYXRjaGluZyBhIENTUyBzZWxlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNTI0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLXdlYmtpdC1jYWxs
YmFjazotd2Via2l0LXByZXNlbmNlIHdpbGwgY2FsbCBGcmFtZUxvYWRlckNsaWVudDo6c2VsZWN0
b3JNYXRjaENoYW5nZWQoKSB0bworICAgICAgICB0cmFjayB0aGUgcHJlc2VuY2Ugb2YgZWxlbWVu
dHMgbWF0Y2hpbmcgdGhlIHJ1bGVzJyBDU1Mgc2VsZWN0b3JzLgorCisgICAgICAgIFRlc3Q6IFdl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCisKKyAgICAgICAgKiBjc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlkS2V5d29yZFByb3BlcnR5
QW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNLZXl3b3JkUHJvcGVydHlJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQ
cm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQ
cm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46IC13ZWJraXQtY2Fs
bGJhY2sKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbjogLXdlYmtpdC1wcmVzZW5j
ZQorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OlN0YXRlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjphcHBseVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
YXBwbHlQcm9wZXJ0eSk6IENvcHkgdGhlIHJ1bGUncyBzZWxlY3RvciBpbnRvIHRoZSBSZW5kZXJT
dHlsZS4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFN0YXRlKTogQWRkIG1fcnVs
ZSBjYWNoZSBmb3IgdGhlIGN1cnJlbnQgU3R5bGVSdWxlKiBzbyBpdCBkb2Vzbid0IGNvbnN1bWUg
YSByZWdpc3RlciBkdXJpbmcgYXBwbHlQcm9wZXJ0eSBjYWxscy4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpzZXRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OlN0YXRlOjpydWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChEb2N1bWVudDo6UmVwb3J0Q2FsbGJhY2tTZWxlY3Rv
ckNoYW5nZSk6IEFnZ3JlZ2F0ZSBzZWxlY3RvciBtYXRjaCBjaGFuZ2VzIHNvIGxhcmdlIERPTQor
ICAgICAgICBjaGFuZ2VzIG9ubHkgY2F1c2Ugb25lIGNhbGwgYmFjayBpbnRvIHRoZSBlbWJlZGRl
ci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hh
bmdlOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkU2VsZWN0
b3JNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlU2VsZWN0b3JNYXRj
aCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAg
ICAgIChDYWxsYmFja1NlbGVjdG9yQ2hhbmdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGll
bnRzLmg6CisgICAgICAgIChFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNlbGVjdG9yTWF0Y2hDaGFuZ2VkKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVyQ2xp
ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ2FsbGJhY2tT
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVtb3ZlQ2FsbGJhY2tT
ZWxlY3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
Ojp+U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKTogU3RvcmUgdGhlIHN0eWxlJ3MgZG9jdW1l
bnQgYW5kIHNldCBvZiBjYWxsYmFjayBzZWxlY3RvcnMuCisKIDIwMTMtMDMtMTIgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
UmVzb3VyY2VTY3JpcHRGaWxlIGRpdmVyZ2VkIHN0YXRlIHNob3VsZCBiZSBjb3JyZWN0bHkgcmVz
ZXQgYWZ0ZXIgZGVidWdnZXIgcmVzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDJm
ODJiNjhhMWY2NDdlYTQ0ZGE1OWQwNDcwMzExY2M3MDgzY2U2NDEuLmE2MDRiODI4NGUzZGM1YWM2
ZGE3NTM4OTdmNTY0ZWUyZWZmMzI0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTMtMDMtMTIgIEplZmZyZXkgWWFzc2tpbiAgPGp5YXNza2luQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgYSB3YXkgdG8gd2F0Y2ggcGFnZXMgZm9yIGVsZW1lbnRz
IG1hdGNoaW5nIGEgQ1NTIHNlbGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTA1MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtd2Via2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2Ugd2lsbCBj
YWxsIEZyYW1lTG9hZGVyQ2xpZW50OjpzZWxlY3Rvck1hdGNoQ2hhbmdlZCgpIHRvCisgICAgICAg
IHRyYWNrIHRoZSBwcmVzZW5jZSBvZiBlbGVtZW50cyBtYXRjaGluZyB0aGUgcnVsZXMnIENTUyBz
ZWxlY3RvcnMuCisKKyAgICAgICAgKiBmZWF0dXJlcy5neXBpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViRnJhbWVDbGllbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudDo6Y3NzTWF0Y2hlcyk6CisgICAgICAgICogc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6c2VsZWN0b3JNYXRjaENoYW5nZWQpOiBDb252ZXJ0IFdlYkNvcmUgY2FsbGJhY2sgdG8gYSBw
dWJsaWMgZm9ybWF0LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChGcmFtZUxvYWRlckNsaWVudEltcGwpOgorICAgICAg
ICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6CisKIDIwMTMtMDMtMTEgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxNDU0NjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlZlY3Rvci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWZWN0
b3IuaAppbmRleCBiYjAyYWJjZGZmMmNjMTU3MzYyNTA3YjNjZTg2ZThkZDc4MjE0NWEyLi5mNGRl
NThhMGIyYTZhY2YzZTMyN2I4NDFjYzQ2ZDNjODE0YmVmYjczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZlY3Rvci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViVmVjdG9yLmgKQEAgLTExMiw2ICsxMTIsMTQgQEAgcHVibGlj
OgogICAgICAgICBpbml0aWFsaXplRnJvbSh2YWx1ZXMsIHNpemUpOwogICAgIH0KIAorICAgIHZv
aWQgcmVzaXplKHNpemVfdCBuZXdTaXplKQorICAgIHsKKyAgICAgICAgV2ViVmVjdG9yIG5ld1Zh
bHVlKG5ld1NpemUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZVRvQ29weSA9IHN0
ZDo6bWluKG1fc2l6ZSwgbmV3U2l6ZSk7IGkgPCBzaXplVG9Db3B5OyArK2kpCisgICAgICAgICAg
ICBuZXdWYWx1ZVtpXSA9IG1fcHRyW2ldOworICAgICAgICBzd2FwKG5ld1ZhbHVlKTsKKyAgICB9
CisKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX3NpemU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmVhdHVyZURlZmluZXMuaCBiL1NvdXJjZS9XVEYvd3RmL0ZlYXR1cmVEZWZpbmVz
LmgKaW5kZXggZWI2NTczNWMyNzI3NTIyNTUwOTM4YTJiMGU1OWM5MTUxZTNlMjA4YS4uMWI0Mjg5
MDRkNDRkOGE5ZGJkZjUyZjQzNjA1NzVlOWJkYjliNTE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvRmVhdHVyZURlZmluZXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GZWF0dXJlRGVmaW5l
cy5oCkBAIC0zNzEsNiArMzcxLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfQk9YX0RFQ09SQVRJ
T05fQlJFQUsgMQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfQ1NTX0NBTExCQUNLUykK
KyNkZWZpbmUgRU5BQkxFX0NTU19DQUxMQkFDS1MgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChF
TkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKQogI2RlZmluZSBFTkFCTEVfQ1NTX0RFVklDRV9B
REFQVEFUSU9OIDAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCAxYzA0OGE1OTg3YTljMmQxOWQ1Njk3MGI3YmVl
ZjQ3NzA4NGFlOGY0Li5iNTFlNjk0YTBlZGEwODMwZmMwY2Y2ZmViOTY2NzRlMTk0YmI2OTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcApAQCAtMjcxMyw2ICsyNzEzLDEyIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WToKICAgICAgICAgICAgIGJyZWFr
OwogCisjaWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDYWxsYmFjazoKKyAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoCisgICAgICAgICAgICAgICAgc3R5bGUtPmNhbGxiYWNrU2VsZWN0b3Jz
KCkuaXNFbXB0eSgpID8gQ1NTVmFsdWVOb25lIDogQ1NTVmFsdWVXZWJraXRQcmVzZW5jZSk7Cisj
ZW5kaWYKKwogICAgICAgICAvKiBVbmltcGxlbWVudGVkIENTUyAzIHByb3BlcnRpZXMgKGluY2x1
ZGluZyBDU1MzIHNob3J0aGFuZCBwcm9wZXJ0aWVzKSAqLwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dExpbmVU
aHJvdWdoOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBkMWI4OTc1NTEwYzNlMGFjNjRl
NjkyYzc2ZmUyNGE3MzdiYjljNzYxLi5mZWM4Y2QwMmIwZmRlMGRkNGIzMzFhMTVmMDJlMWUzNmNk
MmNjZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtODU3LDYgKzg1NywxMiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJZCwgaW50CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3Rh
cnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVy
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVKdXN0aWZ5KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRQcmVzZW5jZSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlU3Jn
YiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGVmYXVsdCkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTA5Niw2ICsxMTAyLDkgQEAgc3RhdGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3Bl
cnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3hMaW5lczoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50OgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyNlbmRpZgogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtbkJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFr
QmVmb3JlOgpAQCAtMjk4OCw2ICsyOTk3LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3hMaW5lczoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94T3JpZW50Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hQYWNrOgorI2lmIEVOQUJMRShDU1NfQ0FMTEJB
Q0tTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDYWxsYmFjazoKKyNlbmRpZgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkJyZWFrQmVmb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggZjRkNGVjYThl
NzE2MTA1NWU2NzgyYzhlNDgyMDhjNWUxN2MzYzBmOC4uMGNkYTc3OTU2ODZlYzQ0MGE4MDk0Y2Ey
ZTM3ZWNlNGI3ZjA4OGM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC01NDgs
NiArNTQ4LDkgQEAgYm9vbCBDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFBhY2s6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3Q6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJveFNoYWRvdzoKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0Q2xpcFBhdGg6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkF4aXM6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkJyZWFrQWZ0ZXI6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDYwMDY4NjJhZDM3MDljMmQ5ZGIxZjZhYzMyNGQyOTEw
NjgzNWM0NjYuLjI3YTI2OGRiNjc1ODg4ZTNhYWVjYzYzMWU2ZjkzODA3NzIwN2Q4N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCkBAIC0yNTUsNiArMjU1LDkgQEAgei1p
bmRleAogLXdlYmtpdC1ib3gtcGFjawogLXdlYmtpdC1ib3gtcmVmbGVjdAogLXdlYmtpdC1ib3gt
c2hhZG93CisjaWYgZGVmaW5lZChFTkFCTEVfQ1NTX0NBTExCQUNLUykgJiYgRU5BQkxFX0NTU19D
QUxMQkFDS1MKKy13ZWJraXQtY2FsbGJhY2sKKyNlbmRpZgogLXdlYmtpdC1jb2xvci1jb3JyZWN0
aW9uCiAtd2Via2l0LWNvbHVtbi1heGlzCiAtd2Via2l0LWNvbHVtbi1icmVhay1hZnRlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCBmMWU2YjQ3MzUzMGE2Y2ZiZThm
M2YzNGQ0MmRkOTg2ZTUxNGY0YjNhLi4xNjYyMjViM2JlM2UyZjM1NWYyZjlkM2M5ZGZlMWYxYjI2
MTg5ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtNDQ3LDYg
KzQ0Nyw5IEBAIHBvcnRyYWl0CiBwcmUKIHByZS1saW5lCiBwcmUtd3JhcAorI2lmIGRlZmluZWQo
RU5BQkxFX0NTU19DQUxMQkFDS1MpICYmIEVOQUJMRV9DU1NfQ0FMTEJBQ0tTCistd2Via2l0LXBy
ZXNlbmNlCisjZW5kaWYKIHJlbGF0aXZlCiBzY3JvbGwKIHNlcGFyYXRlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZDU3ZjVhZGVmYmY4YmI2N2I1ZDRmZGJiZGUyYWExYWM4
ZTZlZWRlNS4uMWEwNmMwNDNmNGUyYzQ2NTMzOGM0NjVhMTJjMTJlNjgwZmNlMTA3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMjI4LDYgKzIyOCw5IEBAIGlubGluZSB2
b2lkIFN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpjbGVhcigpCiAgICAgbV9wYXJlbnRTdHlsZSA9IDA7
CiAgICAgbV9wYXJlbnROb2RlID0gMDsKICAgICBtX3JlZ2lvbkZvclN0eWxpbmcgPSAwOworI2lm
IEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgIG1fcnVsZSA9IDA7CisjZW5kaWYKICAgICBtX3Bl
bmRpbmdJbWFnZVByb3BlcnRpZXMuY2xlYXIoKTsKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAg
ICAgbV9oYXNQZW5kaW5nU2hhZGVycyA9IGZhbHNlOwpAQCAtMTY5NSw2ICsxNjk4LDkgQEAgdm9p
ZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCog
cHJvcGVydGllcywgU3R5bGVSdWwKIHsKICAgICBBU1NFUlQoKHByb3BlcnR5V2hpdGVsaXN0VHlw
ZSAhPSBQcm9wZXJ0eVdoaXRlbGlzdFJlZ2lvbikgfHwgbV9zdGF0ZS5yZWdpb25Gb3JTdHlsaW5n
KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxQcm9jZXNzUnVsZShkb2N1bWVudCgpLCBydWxlLCB0aGlz
KTsKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICBtX3N0YXRlLnNldFJ1bGUocnVsZSk7
CisjZW5kaWYKIAogICAgIHVuc2lnbmVkIHByb3BlcnR5Q291bnQgPSBwcm9wZXJ0aWVzLT5wcm9w
ZXJ0eUNvdW50KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5Q291bnQ7
ICsraSkgewpAQCAtMjg1NCw2ICsyODYwLDI4IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q2FsbGJhY2s6IHsKKyAgICAgICAgaWYgKGlzSW5oZXJpdCB8fCBpc0lu
aXRpYWwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZSkg
eworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKSkgeworICAg
ICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CisgICAgICAgICAgICAgICAgc3RhdGUuc3R5bGUo
KS0+cmVtb3ZlQ2FsbGJhY2tTZWxlY3RvcigKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUucnVs
ZSgpLT5zZWxlY3Rvckxpc3QoKS5zZWxlY3RvcnNUZXh0KCkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRQcmVzZW5jZToKKyAgICAgICAg
ICAgICAgICBzdGF0ZS5zdHlsZSgpLT5hZGRDYWxsYmFja1NlbGVjdG9yKAorICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS5ydWxlKCktPnNlbGVjdG9yTGlzdCgpLnNlbGVjdG9yc1RleHQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUuZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyNl
bmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlJbnZhbGlkOgogICAgICAgICByZXR1cm47CiAgICAg
Ly8gRGlyZWN0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVzb2x2ZWQgYnkgcmVzb2x2ZURpcmVjdGlv
bkF3YXJlUHJvcGVydHkoKSBiZWZvcmUgdGhlIHN3aXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCmluZGV4IGM0NjViYjI3NDBmZTVjZGU1MzY4NGZiMDg1MjgzM2U4YTMwNTgwZDkuLmY5
NzE3NWE3M2JlYjQ1ZjkzNGI0NzNjZDA4MGVjNTkzNzM0OTc3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaApAQCAtNDQwLDcgKzQ0MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9s
aW5lSGVpZ2h0VmFsdWUoMCkKICAgICAgICAgLCBtX2ZvbnREaXJ0eShmYWxzZSkKICAgICAgICAg
LCBtX2hhc1VBQXBwZWFyYW5jZShmYWxzZSkKLSAgICAgICAgLCBtX2JhY2tncm91bmREYXRhKEJh
Y2tncm91bmRGaWxsTGF5ZXIpIHsgfQorICAgICAgICAsIG1fYmFja2dyb3VuZERhdGEoQmFja2dy
b3VuZEZpbGxMYXllcikKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICAgICAgLCBtX3J1
bGUoMCkKKyNlbmRpZgorICAgICAgICB7IH0KIAogICAgIHB1YmxpYzoKICAgICAgICAgdm9pZCBp
bml0RWxlbWVudChFbGVtZW50Kik7CkBAIC00NjQsNyArNDY4LDExIEBAIHB1YmxpYzoKICAgICAg
ICAgYm9vbCBkaXN0cmlidXRlZFRvSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2Rp
c3RyaWJ1dGVkVG9JbnNlcnRpb25Qb2ludDsgfQogICAgICAgICB2b2lkIHNldEVsZW1lbnRBZmZl
Y3RlZEJ5Q2xhc3NSdWxlcyhib29sIGlzQWZmZWN0ZWQpIHsgbV9lbGVtZW50QWZmZWN0ZWRCeUNs
YXNzUnVsZXMgPSBpc0FmZmVjdGVkOyB9CiAgICAgICAgIGJvb2wgZWxlbWVudEFmZmVjdGVkQnlD
bGFzc1J1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50QWZmZWN0ZWRCeUNsYXNzUnVsZXM7
IH0KLQorICAgICAgICAKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICAgICAgdm9pZCBz
ZXRSdWxlKFN0eWxlUnVsZSogcnVsZSkgeyBtX3J1bGUgPSBydWxlOyB9CisgICAgICAgIGNvbnN0
IFN0eWxlUnVsZSogcnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVsZTsgfQorI2VuZGlmCiAgICAg
ICAgIHZvaWQgc2V0QXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKGJvb2wgaXNBcHBseSkgeyBt
X2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSA9IGlzQXBwbHk7IH0KICAgICAgICAgdm9pZCBz
ZXRBcHBseVByb3BlcnR5VG9WaXNpdGVkTGlua1N0eWxlKGJvb2wgaXNBcHBseSkgeyBtX2FwcGx5
UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUgPSBpc0FwcGx5OyB9CiAgICAgICAgIGJvb2wgYXBw
bHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9hcHBseVByb3BlcnR5
VG9SZWd1bGFyU3R5bGU7IH0KQEAgLTUzNiw2ICs1NDQsMTAgQEAgcHVibGljOgogICAgICAgICBC
b3JkZXJEYXRhIG1fYm9yZGVyRGF0YTsKICAgICAgICAgRmlsbExheWVyIG1fYmFja2dyb3VuZERh
dGE7CiAgICAgICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOworCisjaWYgRU5BQkxFKENTU19D
QUxMQkFDS1MpCisgICAgICAgIFN0eWxlUnVsZSogbV9ydWxlOworI2VuZGlmCiAgICAgfTsKIAog
ICAgIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVOb3RZZXRBdmFpbGFibGUoKSB7IHJldHVybiBz
X3N0eWxlTm90WWV0QXZhaWxhYmxlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjNTg0
N2FmZDgyMGEyMTdkNDgxMTQwOTk5MDQwYWJlOTdiMGY3ZWU2Li45ZDJmNWFmNTAxMzMzMWIxMjA4
YjE2MTRkYmQ4N2MxMDhiYzgyMTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIwMjcs
NiArMjAyNyw2MSBAQCB2b2lkIERvY3VtZW50OjpjbGVhclN0eWxlUmVzb2x2ZXIoKQogICAgIG1f
c3R5bGVSZXNvbHZlci5jbGVhcigpOwogfQogCisjaWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCitj
bGFzcyBEb2N1bWVudDo6UmVwb3J0Q2FsbGJhY2tTZWxlY3RvckNoYW5nZSA6IHB1YmxpYyBUYXNr
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7CisgICAgICAgIE93blB0cjxDYWxsYmFja1Nl
bGVjdG9yQ2hhbmdlPiBjYWxsYmFja1NlbGVjdG9yQ2hhbmdlID0KKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5tX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UucmVsZWFzZSgpOworICAgICAgICBpZiAoY2Fs
bGJhY2tTZWxlY3RvckNoYW5nZS0+YWRkZWRTZWxlY3RvcnMuaXNFbXB0eSgpICYmIGNhbGxiYWNr
U2VsZWN0b3JDaGFuZ2UtPnJlbW92ZWRTZWxlY3RvcnMuaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgIGRv
Y3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPnNlbGVjdG9yTWF0Y2hDaGFuZ2Vk
KAorICAgICAgICAgICAgICAgIGNhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPmFkZGVkU2VsZWN0b3Jz
LCBjYWxsYmFja1NlbGVjdG9yQ2hhbmdlLT5yZW1vdmVkU2VsZWN0b3JzKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKK3ZvaWQgRG9jdW1lbnQ6OmFkZFNlbGVjdG9yTWF0Y2goY29uc3QgU3RyaW5n
JiBzZWxlY3RvcikKK3sKKyAgICBIYXNoTWFwPFN0cmluZywgaW50Pjo6aXRlcmF0b3IgY291bnQg
PSBtX21hdGNoaW5nQ2FsbGJhY2tTZWxlY3RvcnMuZmluZChzZWxlY3Rvcik7CisgICAgaWYgKGNv
dW50ICE9IG1fbWF0Y2hpbmdDYWxsYmFja1NlbGVjdG9ycy5lbmQoKSkgeworICAgICAgICArK2Nv
dW50LT52YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX21hdGNoaW5nQ2FsbGJh
Y2tTZWxlY3RvcnMuc2V0KHNlbGVjdG9yLCAxKTsKKyAgICBpZiAoIW1fY2FsbGJhY2tTZWxlY3Rv
ckNoYW5nZSkgeworICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgPSBhZG9wdFB0cihu
ZXcgQ2FsbGJhY2tTZWxlY3RvckNoYW5nZSk7CisgICAgICAgIHBvc3RUYXNrKGFkb3B0UHRyKG5l
dyBSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hhbmdlKSk7CisgICAgfQorICAgIGlmIChtX2NhbGxi
YWNrU2VsZWN0b3JDaGFuZ2UtPnJlbW92ZWRTZWxlY3RvcnMuY29udGFpbnMoc2VsZWN0b3IpKQor
ICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UtPnJlbW92ZWRTZWxlY3RvcnMucmVtb3Zl
KHNlbGVjdG9yKTsKKyAgICBlbHNlCisgICAgICAgIG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS0+
YWRkZWRTZWxlY3RvcnMuYWRkKHNlbGVjdG9yKTsKK30KKwordm9pZCBEb2N1bWVudDo6cmVtb3Zl
U2VsZWN0b3JNYXRjaChjb25zdCBTdHJpbmcmIHNlbGVjdG9yKQoreworICAgIEhhc2hNYXA8U3Ry
aW5nLCBpbnQ+OjppdGVyYXRvciBjb3VudCA9IG1fbWF0Y2hpbmdDYWxsYmFja1NlbGVjdG9ycy5m
aW5kKHNlbGVjdG9yKTsKKyAgICBpZiAoY291bnQgPT0gbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0
b3JzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgLS1jb3VudC0+dmFsdWU7CisgICAgaWYg
KCFjb3VudC0+dmFsdWUpIHsKKyAgICAgICAgbV9tYXRjaGluZ0NhbGxiYWNrU2VsZWN0b3JzLnJl
bW92ZShjb3VudCk7CisgICAgICAgIGlmICghbV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlKSB7Cisg
ICAgICAgICAgICBtX2NhbGxiYWNrU2VsZWN0b3JDaGFuZ2UgPSBhZG9wdFB0cihuZXcgQ2FsbGJh
Y2tTZWxlY3RvckNoYW5nZSk7CisgICAgICAgICAgICBwb3N0VGFzayhhZG9wdFB0cihuZXcgUmVw
b3J0Q2FsbGJhY2tTZWxlY3RvckNoYW5nZSkpOworICAgICAgICB9CisgICAgICAgIGlmIChtX2Nh
bGxiYWNrU2VsZWN0b3JDaGFuZ2UtPmFkZGVkU2VsZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yKSkK
KyAgICAgICAgICAgIG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS0+YWRkZWRTZWxlY3RvcnMucmVt
b3ZlKHNlbGVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9jYWxsYmFja1NlbGVj
dG9yQ2hhbmdlLT5yZW1vdmVkU2VsZWN0b3JzLmFkZChzZWxlY3Rvcik7CisgICAgfQorfQorI2Vu
ZGlmIC8vIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorCiB2b2lkIERvY3VtZW50OjphdHRhY2goKQog
ewogICAgIEFTU0VSVCghYXR0YWNoZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGE0MWEw
NWRlMTM0ODEyYTg1M2RjZjUwYWEyMDlhZjNhZWRhMDdmZWIuLjdjYjE4ZmU3NjRkNTlhZDhhNmFj
NjA1MTNlNTlhYjg4NGM1YTVjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTc1LDYgKzEx
NzUsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpblN0eWxlUmVjYWxjKCkgeyByZXR1cm4gbV9p
blN0eWxlUmVjYWxjOyB9CiAKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNLUykKKyAgICB2b2lkIGFk
ZFNlbGVjdG9yTWF0Y2goY29uc3QgU3RyaW5nJiBzZWxlY3Rvcik7CisgICAgdm9pZCByZW1vdmVT
ZWxlY3Rvck1hdGNoKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpOworI2VuZGlmCisKICAgICAvLyBS
ZXR1cm4gYSBMb2NhbGUgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgYXJndW1lbnQgaXMg
bnVsbCBvciBlbXB0eS4KICAgICBMb2NhbGUmIGdldENhY2hlZExvY2FsZShjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZSA9IG51bGxBdG9tKTsKIApAQCAtMTU0NCw2ICsxNTQ5LDIzIEBAIHByaXZh
dGU6CiAKICAgICBSZWZQdHI8TmFtZWRGbG93Q29sbGVjdGlvbj4gbV9uYW1lZEZsb3dzOwogCisj
aWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAgLy8gTWFwcyBhIENTUyBzZWxlY3RvciBzdHJp
bmcgd2l0aCBhIC13ZWJraXQtY2FsbGJhY2sgcHJvcGVydHkgdG8gdGhlIG51bWJlcgorICAgIC8v
IG9mIG1hdGNoaW5nIFJlbmRlclN0eWxlIG9iamVjdHMgaW4gdGhpcyBkb2N1bWVudC4KKyAgICBI
YXNoTWFwPFN0cmluZywgaW50PiBtX21hdGNoaW5nQ2FsbGJhY2tTZWxlY3RvcnM7CisgICAgLy8g
UnVucyBGcmFtZUxvYWRlckNsaWVudDo6c2VsZWN0b3JNYXRjaENoYW5nZWQgd2l0aCB0aGUgdXBk
YXRlZCB2YWx1ZSBvZgorICAgIC8vIG1fY2FsbGJhY2tTZWxlY3RvckNoYW5nZS4KKyAgICBjbGFz
cyBSZXBvcnRDYWxsYmFja1NlbGVjdG9yQ2hhbmdlOworICAgIHN0cnVjdCBDYWxsYmFja1NlbGVj
dG9yQ2hhbmdlIHsKKyAgICAgICAgLy8gU2VsZWN0b3JzIGFyZSByZWxhdGl2ZSB0byBtX21hdGNo
aW5nQ2FsbGJhY2tTZWxlY3RvcnMncyBjb250ZW50cyBhdAorICAgICAgICAvLyB0aGUgcHJldmlv
dXMgY2FsbCB0byBzZWxlY3Rvck1hdGNoQ2hhbmdlZC4KKyAgICAgICAgSGFzaFNldDxTdHJpbmc+
IGFkZGVkU2VsZWN0b3JzOworICAgICAgICBIYXNoU2V0PFN0cmluZz4gcmVtb3ZlZFNlbGVjdG9y
czsKKyAgICB9OworICAgIC8vIE5vbi1udWxsIGlmIGEgUmVwb3J0Q2FsbGJhY2tTZWxlY3RvckNo
YW5nZSB0YXNrIGlzIHBvc3RlZC4KKyAgICBPd25QdHI8Q2FsbGJhY2tTZWxlY3RvckNoYW5nZT4g
bV9jYWxsYmFja1NlbGVjdG9yQ2hhbmdlOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ1NQX05FWFQp
CiAgICAgUmVmUHRyPERPTVNlY3VyaXR5UG9saWN5PiBtX2RvbVNlY3VyaXR5UG9saWN5OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggMWUxYTE0YzU2MmY2NTU3
YjkwOTAxZThhYTk5ODg4N2E5NTFkODU5YS4uNGI1ZmQ4MzQ3OGEzMTdhMTkyYzFjOWNkOTQyYjg4
ZjQ1ZmM4ZjRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzQ0LDYg
KzM0NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBLVVJMJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkgeyB9CisjaWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAg
dmlydHVhbCB2b2lkIHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYs
IGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYpIHsgfQorI2VuZGlmCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRT
aXplJiwgSFRNTFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCByZWNyZWF0ZVBsdWdpbihXaWRnZXQqKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZDM5YTViOGVhYmMw
YTk1YTUzYWYwZDdhZDJiNDFkMmJmMzliOGZiOS4uZDg4ODY1YWQ1ZWM5Y2QyMjlhZjExOWJjMzFj
NzAyZTUwM2U1NjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmVzLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMjMzLDYgKzIzNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOwogCisjaWYgRU5BQkxFKENT
U19DQUxMQkFDS1MpCisgICAgICAgIC8vIFRyYW5zbWl0cyB0aGUgY2hhbmdlIGluIHRoZSBzZXQg
b2YgQ1NTIHNlbGVjdG9ycyB3aXRoIHRoZQorICAgICAgICAvLyAtd2Via2l0LWNhbGxiYWNrIHBy
b3BlcnR5IHRoYXQgbWF0Y2ggYW55IGVsZW1lbnQgb24gdGhlIGZyYW1lLgorICAgICAgICB2aXJ0
dWFsIHZvaWQgc2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhZGRl
ZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3JzKSA9IDA7
CisjZW5kaWYKKwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKICAgICAgICAgdmly
dHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAppbmRleCAxZTI0OWI3ZTQ5ODI5NWY0MzUwNjU1Y2YwZjg1ZjQ0Y2NjYjRlNWE5Li4xMWZl
NzEyY2ZkOTBhZDllMmI2NTkyODc1MTEzMTBlNWQ3ZGI4ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTc1NSw2ICs3NTUsMjkgQEAg
dm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJDdXJzb3JMaXN0KCkKICAgICAgICAgcmFyZUluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPmN1cnNvckRhdGEgPSAwOwogfQogCisjaWYgRU5BQkxFKENTU19DQUxM
QkFDS1MpCit2b2lkIFJlbmRlclN0eWxlOjphZGRDYWxsYmFja1NlbGVjdG9yKGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3IsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBBU1NFUlQoIXJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX2RvY3VtZW50CisgICAgICAgIHx8IHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2RvY3VtZW50ID09IGRvY3VtZW50KTsKKyAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX2NhbGxiYWNrU2VsZWN0b3JzLmNvbnRhaW5zKHNlbGVjdG9yKSkgeworICAgICAgICBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhKiBkYXRhID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCk7CisgICAgICAgIGRhdGEtPm1fY2FsbGJhY2tTZWxlY3RvcnMuYXBwZW5kKHNlbGVjdG9yKTsK
KyAgICAgICAgZGF0YS0+bV9kb2N1bWVudCA9IGRvY3VtZW50OworICAgICAgICBkb2N1bWVudC0+
YWRkU2VsZWN0b3JNYXRjaChzZWxlY3Rvcik7CisgICAgfQorfQorCit2b2lkIFJlbmRlclN0eWxl
OjpyZW1vdmVDYWxsYmFja1NlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpCit7CisgICAg
c2l6ZV90IGluZGV4ID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY2FsbGJhY2tTZWxlY3RvcnMu
ZmluZChzZWxlY3Rvcik7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2NhbGxiYWNrU2VsZWN0b3JzLnJlbW92ZShp
bmRleCk7CisgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2RvY3VtZW50LT5yZW1vdmVT
ZWxlY3Rvck1hdGNoKHNlbGVjdG9yKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJT
dHlsZTo6Y2xlYXJDb250ZW50KCkKIHsKICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
Y29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
aW5kZXggMTI5MmE0NjUyNDQzZmQxN2E3ZmQyYzIzODMxNWZjZjI2OGFiNDhiYy4uODc5ODkxNGQz
OGY4Nzg2NzU2ZTI1ZDljNjUwMzMyZjM5ZjQ2MzhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTc2Miw2ICs3NjIsOSBAQCBwdWJsaWM6CiAg
ICAgRUJveFBhY2sgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hQYWNr
PihyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9kZXByZWNhdGVkRmxleGlibGVCb3gtPnBhY2spOyB9
CiAKICAgICBpbnQgb3JkZXIoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9vcmRlcjsgfQorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBjYWxsYmFja1NlbGVjdG9ycygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX2NhbGxiYWNrU2VsZWN0b3JzOyB9CisjZW5kaWYKICAgICBmbG9hdCBmbGV4R3Jv
dygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5t
X2ZsZXhHcm93OyB9CiAgICAgZmxvYXQgZmxleFNocmluaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2ZsZXhpYmxlQm94LT5tX2ZsZXhTaHJpbms7IH0KICAgICBMZW5n
dGggZmxleEJhc2lzKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxl
eGlibGVCb3gtPm1fZmxleEJhc2lzOyB9CkBAIC0xMjgxLDYgKzEyODQsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0RmxleFNocmluayhmbG9hdCBmKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVCb3gsIG1fZmxleFNocmluaywgZik7IH0KICAgICB2
b2lkIHNldEZsZXhCYXNpcyhMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEuYWNjZXNzKCktPm1fZmxleGlibGVCb3gsIG1fZmxleEJhc2lzLCBsZW5ndGgpOyB9CiAg
ICAgdm9pZCBzZXRPcmRlcihpbnQgbykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X29yZGVyLCBvKTsgfQorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgIHZvaWQgYWRkQ2Fs
bGJhY2tTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBEb2N1bWVudCopOworICAgIHZv
aWQgcmVtb3ZlQ2FsbGJhY2tTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKTsKKyNlbmRp
ZgogICAgIHZvaWQgc2V0QWxpZ25Db250ZW50KEVBbGlnbkNvbnRlbnQgcCkgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduQ29udGVudCwgcCk7IH0KICAgICB2b2lkIHNldEFs
aWduSXRlbXMoRUFsaWduSXRlbXMgYSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X2FsaWduSXRlbXMsIGEpOyB9CiAgICAgdm9pZCBzZXRBbGlnblNlbGYoRUFsaWduSXRlbXMgYSkg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX2FsaWduU2VsZiwgYSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmNwcAppbmRleCBiNWE2ZWZmMjdlYmU5ZDhlYjEwYTRlMzk0NTdlZDkyMmRj
ZDdlNTVjLi4wZGNkYjk5MWQ5MTY0OWE2MDYwNjlhZmE1NmZmMjMxMmFmNzdkZjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGEuY3BwCkBAIC01Nyw2ICs1Nyw5IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwgbV9jbGlwUGF0aChSZW5k
ZXJTdHlsZTo6aW5pdGlhbENsaXBQYXRoKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3Vu
ZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCiAgICAgLCBtX29y
ZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKKyNpZiBFTkFCTEUoQ1NTX0NBTExCQUNL
UykKKyAgICAsIG1fZG9jdW1lbnQoKQorI2VuZGlmCiAgICAgLCBtX2Zsb3dUaHJlYWQoUmVuZGVy
U3R5bGU6OmluaXRpYWxGbG93VGhyZWFkKCkpCiAgICAgLCBtX3JlZ2lvblRocmVhZChSZW5kZXJT
dHlsZTo6aW5pdGlhbFJlZ2lvblRocmVhZCgpKQogICAgICwgbV9yZWdpb25PdmVyZmxvdyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbFJlZ2lvbk92ZXJmbG93KCkpCkBAIC0xMzYsNiArMTM5LDkgQEAgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVOb25Jbmhlcml0ZWQKICAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihv
Lm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcikKICAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcikKICAgICAsIG1fb3Jk
ZXIoby5tX29yZGVyKQorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgICwgbV9kb2N1bWVu
dCgpCisjZW5kaWYKICAgICAsIG1fZmxvd1RocmVhZChvLm1fZmxvd1RocmVhZCkKICAgICAsIG1f
cmVnaW9uVGhyZWFkKG8ubV9yZWdpb25UaHJlYWQpCiAgICAgLCBtX3JlZ2lvbk92ZXJmbG93KG8u
bV9yZWdpb25PdmVyZmxvdykKQEAgLTE3Myw2ICsxNzksMTQgQEAgU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25Jbmhl
cml0ZWQKIAogU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6flN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGEoKQogeworI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgIGlmICghbV9jYWxsYmFj
a1NlbGVjdG9ycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9k
b2N1bWVudDsKKyAgICAgICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2NhbGxiYWNrU2VsZWN0b3JzLmJlZ2luKCksIGVuZCA9IG1fY2FsbGJhY2tTZWxlY3RvcnMu
ZW5kKCk7CisgICAgICAgICAgICBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBkb2N1bWVu
dC0+cmVtb3ZlU2VsZWN0b3JNYXRjaCgqaXQpOworICAgIH0KKyNlbmRpZgogfQogCiBib29sIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YSYgbykgY29uc3QKQEAgLTIyMSw2ICsyMzUsMTAgQEAgYm9vbCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEmIG8pIGMKICAgICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yID09IG8ubV92
aXNpdGVkTGlua0JvcmRlclRvcENvbG9yCiAgICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcgogICAgICAgICAm
JiBtX29yZGVyID09IG8ubV9vcmRlcgorI2lmIEVOQUJMRShDU1NfQ0FMTEJBQ0tTKQorICAgICAg
ICAmJiBtX2NhbGxiYWNrU2VsZWN0b3JzID09IG8ubV9jYWxsYmFja1NlbGVjdG9ycworICAgICAg
ICAmJiBtX2RvY3VtZW50ID09IG8ubV9kb2N1bWVudAorI2VuZGlmCiAgICAgICAgICYmIG1fZmxv
d1RocmVhZCA9PSBvLm1fZmxvd1RocmVhZAogICAgICAgICAmJiBtX3JlZ2lvblRocmVhZCA9PSBv
Lm1fcmVnaW9uVGhyZWFkCiAgICAgICAgICYmIG1fcmVnaW9uT3ZlcmZsb3cgPT0gby5tX3JlZ2lv
bk92ZXJmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCBjNGFjMGY2ZjM4Zjg5MjExZWMwODQz
OThkMTlmNTI4NzU1ZjBkZDhiLi4xNDMzMmQ5MGM0ZDg0ZmQxOTdlMjJhOGEzY2Y2YjdjZTdlMzQ5
OTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9uTGlzdDsKK2NsYXNzIERvY3VtZW50OwogY2xhc3Mg
U2hhZG93RGF0YTsKIGNsYXNzIFN0eWxlRGVwcmVjYXRlZEZsZXhpYmxlQm94RGF0YTsKICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC0xNTQsNiArMTU1LDExIEBAIHB1YmxpYzoKIAogICAgIGlu
dCBtX29yZGVyOwogCisjaWYgRU5BQkxFKENTU19DQUxMQkFDS1MpCisgICAgVmVjdG9yPFN0cmlu
Zz4gbV9jYWxsYmFja1NlbGVjdG9yczsKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKKyNlbmRp
ZgorCiAgICAgQXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsKICAgICBBdG9taWNTdHJpbmcgbV9y
ZWdpb25UaHJlYWQ7CiAgICAgdW5zaWduZWQgbV9yZWdpb25PdmVyZmxvdyA6IDE7IC8vIFJlZ2lv
bk92ZXJmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5
cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2ZlYXR1cmVzLmd5cGkKaW5kZXggZDM3N2Y2OTgy
NzQ1MWMyNmFlNzRlY2FjYTJhMDVhMWQwZWJiMTUxNy4uOTJjMDFiZmI1M2U1NzZlMGUzYTcyMDE4
MWIyNmNjNTNmZTYzNTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9mZWF0
dXJlcy5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vZmVhdHVyZXMuZ3lwaQpAQCAt
NDQsNiArNDQsNyBAQAogICAgICAgJ0VOQUJMRV9DU1MzX1RFWFQ9MCcsCiAgICAgICAnRU5BQkxF
X0NTUzNfVEVYVF9MSU5FX0JSRUFLPTAnLAogICAgICAgJ0VOQUJMRV9DU1NfQk9YX0RFQ09SQVRJ
T05fQlJFQUs9MScsCisgICAgICAnRU5BQkxFX0NTU19DQUxMQkFDS1M9MScsCiAgICAgICAnRU5B
QkxFX0NTU19DT01QT1NJVElORz0wJywKICAgICAgICdFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFU
SU9OPTAnLAogICAgICAgJ0VOQUJMRV9DU1NfRVhDTFVTSU9OUz0xJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IGIzMDc2ZTBlZmNhNmY3
OTU3OTBlODcwOTgzMjJhOWY4M2VhMjI3MjAuLjM3YWU3ODhlMzFhN2ExMmQxMzEyNzllZDI3ZGE2
NmRiOTAwMzgwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaApAQCAtMTI1LDYgKzEyNSw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZyYW1l
J3MgbmFtZSBoYXMgY2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTmFtZShXZWJG
cmFtZSosIGNvbnN0IFdlYlN0cmluZyYpIHsgfQogCisgICAgLy8gQ2FsbGVkIHdoZW4gYSAtd2Vi
a2l0LWNhbGxiYWNrIENTUyBydWxlIG1hdGNoZXMgb3Igc3RvcHMgbWF0Y2hpbmcuCisgICAgdmly
dHVhbCB2b2lkIGNzc01hdGNoZXMoV2ViRnJhbWUqLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5n
PiYgbmV3bHlNYXRjaGluZ1NlbGVjdG9ycywgY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIHN0
b3BwZWRNYXRjaGluZ1NlbGVjdG9ycykgeyB9CisKICAgICAvLyBMb2FkIGNvbW1hbmRzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAg
IC8vIFRoZSBjbGllbnQgc2hvdWxkIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiBleHRlcm5hbGx5Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAKaW5kZXggODA5MTU4OTMyZjZhNmI4NmI1NmFlYWM4MGMzNTcyOTE1ZjQwMjg4Ny4uYTU2
NmE0NTVkMGMzNWI5NjgyMTE2NTU2YjRlYTgyNTMzNjg3ZGM5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBAIC04OCw2
ICs4OCw3IEBACiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYk1pbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5k
bGUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVGhyZWFkLmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YlVSTC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJVUkxFcnJvci5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJWZWN0b3IuaD4KQEAgLTEyNTAsNiArMTI1MSwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJs
b2NrRQogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNTKG1fd2ViRnJh
bWUsIGluc2VjdXJlVVJMLCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogfQogCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6c2VsZWN0b3JNYXRjaENoYW5nZWQoY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBhZGRlZFNlbGVjdG9ycywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiByZW1vdmVkU2VsZWN0b3Jz
KQoreworICAgIGlmIChtX3dlYkZyYW1lLT5jbGllbnQoKSkgeworICAgICAgICBXZWJWZWN0b3I8
V2ViU3RyaW5nPiB3ZWJBZGRlZFNlbGVjdG9ycywgd2ViUmVtb3ZlZFNlbGVjdG9yczsKKyAgICAg
ICAgY29weVRvVmVjdG9yKGFkZGVkU2VsZWN0b3JzLCB3ZWJBZGRlZFNlbGVjdG9ycyk7CisgICAg
ICAgIGNvcHlUb1ZlY3RvcihyZW1vdmVkU2VsZWN0b3JzLCB3ZWJSZW1vdmVkU2VsZWN0b3JzKTsK
KyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmNzc01hdGNoZXMobV93ZWJGcmFtZSwgd2Vi
QWRkZWRTZWxlY3RvcnMsIHdlYlJlbW92ZWRTZWxlY3RvcnMpOworICAgIH0KK30KKwogUmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlckNsaWVudEltcGw6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKQogewogICAgIC8vIEZJWE1FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCmluZGV4IDNmMGM4MWY5ZjU3MzFhMDY2NDIz
MGEzMWNjMGI5Y2YwMjMwM2M1NDcuLjFhZTg0ZWNmNjM0NTg5NDQ5NjRhNGVlNDQzNmM5ZjEyZGUx
ODUyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGluc2VjdXJlVVJMKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CisgICAgdmlydHVhbCB2b2lk
IHNlbGVjdG9yTWF0Y2hDaGFuZ2VkKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWRkZWRTZWxlY3Rv
cnMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcmVtb3ZlZFNlbGVjdG9ycyk7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViRnJhbWVUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJh
bWVUZXN0LmNwcAppbmRleCBkZjViNmRhYmVjOGIyNTg1MTI2MTBmYzhkYmY0NjIwODFjYWI5NDg4
Li4yODljNjI1MDQ4ZDFkNjBjYjQyNGUyMzRkYzYzYzg1YjkzZjcyZDI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCkBAIC02NCw4ICs2NCwxMSBA
QAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgog
I2luY2x1ZGUgInY4LmgiCisjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgorI2luY2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViQ1N0cmluZy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9h
dFJlY3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVGhyZWFkLmg+CiAjaW5jbHVkZSA8cHVibGlj
L1dlYlVSTFJlc3BvbnNlLmg+CkBAIC0yMTYsNiArMjE5LDE2NSBAQCBURVNUX0YoV2ViRnJhbWVU
ZXN0LCBDaHJvbWVQYWdlTm9KYXZhc2NyaXB0KQogICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6
bnBvcywgY29udGVudC5maW5kKCJDbG9iYmVyZWQiKSk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX0NB
TExCQUNLUykKK3N0YXRpYyBzdGQ6OnN0cmluZyBBc1N0cmluZyhjb25zdCBXZWJTdHJpbmcmIHV0
ZjE2SW5wdXQpCit7CisgICAgV2ViQ1N0cmluZyB1dGY4SW5wdXQgPSB1dGYxNklucHV0LnV0Zjgo
KTsKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcodXRmOElucHV0LmRhdGEoKSwgdXRmOElucHV0Lmxl
bmd0aCgpKTsKK30KKworc3RydWN0IENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQgOiBwdWJsaWMg
V2ViRnJhbWVDbGllbnQgeworICAgIENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQoKSA6IG1fdXBk
YXRlQ291bnQoMCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNzc01hdGNoZXMoV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmV3bHlNYXRjaGluZ1NlbGVjdG9ycywg
Y29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIHN0b3BwZWRNYXRjaGluZ1NlbGVjdG9ycykgT1ZF
UlJJREUKKyAgICB7CisgICAgICAgICsrbV91cGRhdGVDb3VudDsKKyAgICAgICAgc3RkOjpzZXQ8
c3RkOjpzdHJpbmc+JiBmcmFtZVNlbGVjdG9ycyA9IG1fbWF0Y2hlZFNlbGVjdG9yc1tmcmFtZV07
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3bHlNYXRjaGluZ1NlbGVjdG9ycy5z
aXplKCk7ICsraSkgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgc2VsZWN0b3IgPSBBc1N0cmlu
ZyhuZXdseU1hdGNoaW5nU2VsZWN0b3JzW2ldKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgwVSwg
ZnJhbWVTZWxlY3RvcnMuY291bnQoc2VsZWN0b3IpKSA8PCBzZWxlY3RvcjsKKyAgICAgICAgICAg
IGZyYW1lU2VsZWN0b3JzLmluc2VydChzZWxlY3Rvcik7CisgICAgICAgIH0KKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzdG9wcGVkTWF0Y2hpbmdTZWxlY3RvcnMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHNlbGVjdG9yID0gQXNTdHJpbmcoc3RvcHBlZE1h
dGNoaW5nU2VsZWN0b3JzW2ldKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWVTZWxl
Y3RvcnMuY291bnQoc2VsZWN0b3IpKSA8PCBzZWxlY3RvcjsKKyAgICAgICAgICAgIGZyYW1lU2Vs
ZWN0b3JzLmVyYXNlKHNlbGVjdG9yKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0ZDo6bWFw
PFdlYkZyYW1lKiwgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+ID4gbV9tYXRjaGVkU2VsZWN0b3JzOwor
ICAgIGludCBtX3VwZGF0ZUNvdW50OworfTsKKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ3NzQ2Fs
bGJhY2tBdXRob3JTdHlsZVNoZWV0KQoreworICAgIENzc0NhbGxiYWNrV2ViRnJhbWVDbGllbnQg
Y2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVX
ZWJWaWV3QW5kTG9hZCgiYWJvdXQ6YmxhbmsiLCB0cnVlLCAmY2xpZW50KTsKKyAgICBXZWJGcmFt
ZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKworICAgIGZyYW1lLT5sb2FkSFRNTFN0
cmluZygKKyAgICAgICAgIjxzdHlsZT4iCisgICAgICAgICJkaXYuaW5pdGlhbF9vbiB7IC13ZWJr
aXQtY2FsbGJhY2s6IC13ZWJraXQtcHJlc2VuY2U7IH0iCisgICAgICAgICJkaXYuaW5pdGlhbF9v
ZmYgeyAtd2Via2l0LWNhbGxiYWNrOiBub25lOyB9IgorICAgICAgICAiPC9zdHlsZT4iCisgICAg
ICAgICI8ZGl2IGNsYXNzPVwiaW5pdGlhbF9vblwiPjwvZGl2PiIKKyAgICAgICAgIjxkaXYgY2xh
c3M9XCJpbml0aWFsX29mZlwiPjwvZGl2PiIsCisgICAgICAgIHRvS1VSTCgiYWJvdXQ6Ymxhbmsi
KSk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5tX3Vw
ZGF0ZUNvdW50KTsKKyAgICBFWFBFQ1RfVEhBVChjbGllbnQubV9tYXRjaGVkU2VsZWN0b3JzW2Zy
YW1lXSwKKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoImRpdi5pbml0aWFsX29uIikpOwor
CisgICAgV2ViRG9jdW1lbnQgZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgLy8gQ2hlY2sg
dGhhdCBhZGRpbmcgYSBzdHlsZSBydWxlIGNhbGxzIGJhY2sgZm9yIGFscmVhZHktcHJlc2VudCBu
b2Rlcy4KKyAgICBkb2MuaW5zZXJ0VXNlclN0eWxlU2hlZXQoImRpdi5pbml0aWFsX29mZnstd2Vi
a2l0LWNhbGxiYWNrOi13ZWJraXQtcHJlc2VuY2UgIWltcG9ydGFudH0iLAorICAgICAgICBXZWJE
b2N1bWVudDo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAg
ICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFUKGNs
aWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICB0ZXN0aW5nOjpFbGVtZW50
c0FyZSgiZGl2LmluaXRpYWxfb2ZmIiwgImRpdi5pbml0aWFsX29uIikpOworCisgICAgLy8gQ2hl
Y2sgdGhhdCB3ZSBjYW4gdHVybiBvZmYgY2FsbGJhY2tzIGZvciBjZXJ0YWluIHNlbGVjdG9ycy4K
KyAgICBkb2MuaW5zZXJ0VXNlclN0eWxlU2hlZXQoCisgICAgICAgICJkaXYuaW5pdGlhbF9vZmZ7
LXdlYmtpdC1jYWxsYmFjazpub25lICFpbXBvcnRhbnR9IgorICAgICAgICAiZGl2LmluaXRpYWxf
b257LXdlYmtpdC1jYWxsYmFjazpub25lICFpbXBvcnRhbnR9IiwKKyAgICAgICAgV2ViRG9jdW1l
bnQ6OlVzZXJTdHlsZVVzZXJMZXZlbCk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQ
RUNUX0VRKDMsIGNsaWVudC5tX3VwZGF0ZUNvdW50KTsKKyAgICBFWFBFQ1RfVEhBVChjbGllbnQu
bV9tYXRjaGVkU2VsZWN0b3JzW2ZyYW1lXSwKKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUo
KSk7CisKKyAgICBFWFBFQ1RfRVEoMVUsIGNsaWVudC5tX21hdGNoZWRTZWxlY3RvcnMuc2l6ZSgp
KTsKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDc3ND
YWxsYmFja1NoYXJlZFJlbmRlclN0eWxlKQoreworICAgIENzc0NhbGxiYWNrV2ViRnJhbWVDbGll
bnQgY2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBGcmFtZVRlc3RIZWxwZXJzOjpjcmVh
dGVXZWJWaWV3QW5kTG9hZCgiYWJvdXQ6YmxhbmsiLCB0cnVlLCAmY2xpZW50KTsKKyAgICBXZWJG
cmFtZSogZnJhbWUgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKTsKKyAgICBXZWJEb2N1bWVudCBkb2Mg
PSBmcmFtZS0+ZG9jdW1lbnQoKTsKKworICAgIC8vIENoZWNrIHRoYXQgYWRkaW5nIGFuIGVsZW1l
bnQgY2FsbHMgYmFjayB3aGVuIGl0IG1hdGNoZXMgYW4gZXhpc3RpbmcgcnVsZS4KKyAgICBkb2Mu
aW5zZXJ0VXNlclN0eWxlU2hlZXQoInNwYW57LXdlYmtpdC1jYWxsYmFjazotd2Via2l0LXByZXNl
bmNlfSIsCisgICAgICAgIFdlYkRvY3VtZW50OjpVc2VyU3R5bGVVc2VyTGV2ZWwpOworICAgIGZy
YW1lLT5leGVjdXRlU2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgKKyAgICAgICAgImkxID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOyIKKyAgICAgICAgImkxLmlkID0gJ2ZpcnN0X3NwYW4n
OyIKKyAgICAgICAgImRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaTEpIikpOworICAgIHJ1blBl
bmRpbmdUYXNrcygpOworICAgIEVYUEVDVF9FUSgxLCBjbGllbnQubV91cGRhdGVDb3VudCk7Cisg
ICAgRVhQRUNUX1RIQVQoY2xpZW50Lm1fbWF0Y2hlZFNlbGVjdG9yc1tmcmFtZV0sCisgICAgICAg
IHRlc3Rpbmc6OkVsZW1lbnRzQXJlKCJzcGFuIikpOworCisgICAgLy8gQWRkaW5nIGEgc2Vjb25k
IGVsZW1lbnQgdGhhdCBzaGFyZXMgYSBSZW5kZXJTdHlsZSBzaG91bGRuJ3QgY2FsbCBiYWNrLgor
ICAgIC8vIFdlIHVzZSA8c3Bhbj5zIHRvIGF2b2lkIGRlZmF1bHQgc3R5bGUgcnVsZXMgdGhhdCBj
YW4gc2V0CisgICAgLy8gUmVuZGVyU3R5bGU6OnVuaXF1ZSgpLgorICAgIGZyYW1lLT5leGVjdXRl
U2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgKKyAgICAgICAgImkyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3BhbicpOyIKKyAgICAgICAgImkyLmlkID0gJ3NlY29uZF9zcGFuJzsiCisgICAgICAg
ICJpMSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaXJzdF9zcGFuJyk7IgorICAgICAgICAi
aTEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoaTIsIGkxLm5leHRTaWJsaW5nKTsiKSk7CisgICAg
cnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5tX3VwZGF0ZUNvdW50
KTsKKyAgICBFWFBFQ1RfVEhBVChjbGllbnQubV9tYXRjaGVkU2VsZWN0b3JzW2ZyYW1lXSwKKyAg
ICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoInNwYW4iKSk7CisKKyAgICAvLyBSZW1vdmluZyB0
aGUgZmlyc3QgZWxlbWVudCBzaG91bGRuJ3QgY2FsbCBiYWNrLgorICAgIGZyYW1lLT5leGVjdXRl
U2NyaXB0KFdlYlNjcmlwdFNvdXJjZSgKKyAgICAgICAgImkxID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2ZpcnN0X3NwYW4nKTsiCisgICAgICAgICJpMS5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGkxKTsiKSk7CisgICAgcnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVu
dC5tX3VwZGF0ZUNvdW50KTsKKyAgICBFWFBFQ1RfVEhBVChjbGllbnQubV9tYXRjaGVkU2VsZWN0
b3JzW2ZyYW1lXSwKKyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoInNwYW4iKSk7CisKKyAg
ICAvLyBCdXQgcmVtb3ZpbmcgdGhlIHNlY29uZCBlbGVtZW50ICpzaG91bGQqIGNhbGwgYmFjay4K
KyAgICBmcmFtZS0+ZXhlY3V0ZVNjcmlwdChXZWJTY3JpcHRTb3VyY2UoCisgICAgICAgICJpMiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWNvbmRfc3BhbicpOyIKKyAgICAgICAgImkyLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoaTIpOyIpKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAg
ICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFUKGNs
aWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICB0ZXN0aW5nOjpFbGVtZW50
c0FyZSgpKTsKKworICAgIEVYUEVDVF9FUSgxVSwgY2xpZW50Lm1fbWF0Y2hlZFNlbGVjdG9ycy5z
aXplKCkpOworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisKK1RFU1RfRihXZWJGcmFtZVRlc3Qs
IENzc0NhbGxiYWNrTXVsdGlTZWxlY3RvcikKK3sKKyAgICBDc3NDYWxsYmFja1dlYkZyYW1lQ2xp
ZW50IGNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gRnJhbWVUZXN0SGVscGVyczo6Y3Jl
YXRlV2ViVmlld0FuZExvYWQoImFib3V0OmJsYW5rIiwgdHJ1ZSwgJmNsaWVudCk7CisgICAgV2Vi
RnJhbWUqIGZyYW1lID0gd2ViVmlldy0+bWFpbkZyYW1lKCk7CisgICAgZnJhbWUtPmxvYWRIVE1M
U3RyaW5nKCI8c3Bhbj48L3NwYW4+IiwgdG9LVVJMKCJhYm91dDpibGFuayIpKTsKKyAgICBydW5Q
ZW5kaW5nVGFza3MoKTsKKyAgICBXZWJEb2N1bWVudCBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
KworICAgIC8vIENoZWNrIHRoYXQgc2VsZWN0b3IgbGlzdHMgbWF0Y2ggYXMgdGhlIHdob2xlIGxp
c3QsIG5vdCBhcyBlYWNoIGVsZW1lbnQKKyAgICAvLyBpbmRlcGVuZGVudGx5LgorICAgIGRvYy5p
bnNlcnRVc2VyU3R5bGVTaGVldCgKKyAgICAgICAgInNwYW57LXdlYmtpdC1jYWxsYmFjazotd2Vi
a2l0LXByZXNlbmNlfSIKKyAgICAgICAgInNwYW4scHstd2Via2l0LWNhbGxiYWNrOi13ZWJraXQt
cHJlc2VuY2V9IiwKKyAgICAgICAgV2ViRG9jdW1lbnQ6OlVzZXJTdHlsZVVzZXJMZXZlbCk7Cisg
ICAgcnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgRVhQRUNUX0VRKDEsIGNsaWVudC5tX3VwZGF0ZUNv
dW50KTsKKyAgICBFWFBFQ1RfVEhBVChjbGllbnQubV9tYXRjaGVkU2VsZWN0b3JzW2ZyYW1lXSwK
KyAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmUoInNwYW4iLCAic3BhbiwgcCIpKTsKKworICAg
IC8vICJzcGFuLHAiIGNvdmVycyAic3BhbiIsIGJ1dCBlcmFzaW5nICJzcGFuLHAiIGRvZXNuJ3Qg
cHJldmVudCAic3BhbiIgZnJvbQorICAgIC8vIG1hdGNoaW5nLgorICAgIGRvYy5pbnNlcnRVc2Vy
U3R5bGVTaGVldCgic3Bhbixwey13ZWJraXQtY2FsbGJhY2s6bm9uZX0iLAorICAgICAgICBXZWJE
b2N1bWVudDo6VXNlclN0eWxlVXNlckxldmVsKTsKKyAgICBydW5QZW5kaW5nVGFza3MoKTsKKyAg
ICBFWFBFQ1RfRVEoMiwgY2xpZW50Lm1fdXBkYXRlQ291bnQpOworICAgIEVYUEVDVF9USEFUKGNs
aWVudC5tX21hdGNoZWRTZWxlY3RvcnNbZnJhbWVdLAorICAgICAgICB0ZXN0aW5nOjpFbGVtZW50
c0FyZSgic3BhbiIpKTsKKworICAgIEVYUEVDVF9FUSgxVSwgY2xpZW50Lm1fbWF0Y2hlZFNlbGVj
dG9ycy5zaXplKCkpOworICAgIHdlYlZpZXctPmNsb3NlKCk7Cit9CisjZW5kaWYKKwogVEVTVF9G
KFdlYkZyYW1lVGVzdCwgRGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2luQ2hlY2spCiB7CiAg
ICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgicG9zdG1lc3NhZ2VfdGVzdC5odG1sIik7Cg==
</data>
<flag name="review"
          id="214219"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>