<?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>238576</bug_id>
          
          <creation_ts>2022-03-30 15:00:30 -0700</creation_ts>
          <short_desc>Add ability to mask URLs from DOM and JavaScript</short_desc>
          <delta_ts>2022-10-04 11:54:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=246010</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>242278</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eoconnor</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jond</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856582</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-03-30 15:00:30 -0700</bug_when>
    <thetext>We should have a way to block certain URLs from being returned to DOM getters and JavaScript Error stack traces.

&lt;rdar://81991245&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857723</commentid>
    <comment_count>1</comment_count>
      <attachid>456529</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-03 22:23:02 -0700</bug_when>
    <thetext>Created attachment 456529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857883</commentid>
    <comment_count>2</comment_count>
      <attachid>456529</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-04-04 09:28:04 -0700</bug_when>
    <thetext>Comment on attachment 456529
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Add ability to mask URLs from DOM and JavaScript

Is this what other browsers do?

Closing every way in which JS code can see URLs seems like a losing game. Also, there is some hot code being touched here, so I&apos;m not optimistic about perf impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857894</commentid>
    <comment_count>3</comment_count>
      <attachid>456580</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 09:49:26 -0700</bug_when>
    <thetext>Created attachment 456580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857896</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 09:52:47 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #2)
&gt; Comment on attachment 456529 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456529&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:3
&gt; &gt; +        Add ability to mask URLs from DOM and JavaScript
&gt; 
&gt; Is this what other browsers do?

Other browsers don&apos;t do this, but should consider it!

&gt; Closing every way in which JS code can see URLs seems like a losing game.

Yeah, I completely understand that. Should we just give up and jet this be a fingerprinting vector then?

&gt; Also, there is some hot code being touched here, so I&apos;m not optimistic about
&gt; perf impact.

I&apos;m also aware of this. Any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857909</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-04-04 10:09:24 -0700</bug_when>
    <thetext>One suggestion is to please A/B test this change before landing.

&gt; Yeah, I completely understand that. Should we just give up and jet this be a fingerprinting vector then?

&quot;[extension code]&quot; is a fingerprinting giveaway too, as is checking where exactly those appear, as is the actual impact of what extensions do. I know that this is not what the report is about, but (1) I don&apos;t feel comfortable discussing the specific report here, and (2) not sure how useful it is to focus just on that.

Do we have a forum where extension behaviors of this kind can be discussed with other browser engine vendors?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857933</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 10:44:08 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #5)
&gt; One suggestion is to please A/B test this change before landing.
&gt; 
&gt; &gt; Yeah, I completely understand that. Should we just give up and jet this be a fingerprinting vector then?
&gt; 
&gt; &quot;[extension code]&quot; is a fingerprinting giveaway too, as is checking where
&gt; exactly those appear, as is the actual impact of what extensions do. I know
&gt; that this is not what the report is about, but (1) I don&apos;t feel comfortable
&gt; discussing the specific report here, and (2) not sure how useful it is to
&gt; focus just on that.

If extensions are active, that is almost impossible to hide since they change the can change the page in uniquely identifiable ways. It is the URL we want to hide, since that is 100% unique. Hiding the fact that extensions are active is not a goal.

&gt; Do we have a forum where extension behaviors of this kind can be discussed
&gt; with other browser engine vendors?

Yes, we have the Web Extensions Community Group and I plan to bring this up. But some of this problem are unique to Safari too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857955</commentid>
    <comment_count>7</comment_count>
      <attachid>456593</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 11:14:45 -0700</bug_when>
    <thetext>Created attachment 456593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857969</commentid>
    <comment_count>8</comment_count>
      <attachid>456598</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 11:44:16 -0700</bug_when>
    <thetext>Created attachment 456598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857981</commentid>
    <comment_count>9</comment_count>
      <attachid>456598</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-04-04 12:02:48 -0700</bug_when>
    <thetext>Comment on attachment 456598
Patch

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

&gt; Source/JavaScriptCore/runtime/StackFrame.cpp:71
&gt; +    // FIXME: This should not be hardcoded here, but come from some API with what schemes to mask.
&gt; +    if (sourceURL.startsWithIgnoringASCIICase(&quot;safari-&quot;_s))

This might be fine for performance testing this patch, but I don&apos;t think we should land code like this.  This is a layering violation and if it&apos;s not easy to fix now then it will be even harder once we&apos;ve committed to this functionality being here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857986</commentid>
    <comment_count>10</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 12:09:43 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 456598 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456598&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/StackFrame.cpp:71
&gt; &gt; +    // FIXME: This should not be hardcoded here, but come from some API with what schemes to mask.
&gt; &gt; +    if (sourceURL.startsWithIgnoringASCIICase(&quot;safari-&quot;_s))
&gt; 
&gt; This might be fine for performance testing this patch, but I don&apos;t think we
&gt; should land code like this.  This is a layering violation and if it&apos;s not
&gt; easy to fix now then it will be even harder once we&apos;ve committed to this
&gt; functionality being here.

Yeah, I agree. I&apos;m continuing to look at the best way to add a JSC API for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858014</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-04-04 13:10:59 -0700</bug_when>
    <thetext>&gt; It is the URL we want to hide, since that is 100% unique. 

Why does it have to be unique enough to identify the user, but not random enough to prevent identifying the user?

&gt; Hiding the fact that extensions are active is not a goal.

I understand that it is not a goal of this patch. I&apos;m seeking a confirmation that this patch solves a problem that is worth solving - in other words, whether having extensions provides enough bits to identify the user with or without this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858107</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 15:14:22 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #11)
&gt; &gt; It is the URL we want to hide, since that is 100% unique. 
&gt; 
&gt; Why does it have to be unique enough to identify the user, but not random
&gt; enough to prevent identifying the user?
&gt;
&gt; &gt; Hiding the fact that extensions are active is not a goal.
&gt; 
&gt; I understand that it is not a goal of this patch. I&apos;m seeking a confirmation
&gt; that this patch solves a problem that is worth solving - in other words,
&gt; whether having extensions provides enough bits to identify the user with or
&gt; without this patch.

I’m not sure I fully follow. Extensions in Safari get a new UUID for the host part of their URL on launch. This UUID is the same for all tabs, private or otherwise. That UUID is what we need to hide to prevent that cross site/tab tracking with a 128-bit id.

Without that UUID, only a single bit of knowing an extension, and maybe a specific extension, could be determined if they modify a page. The more popular the extension, like a password manager, the less useful that bit is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858160</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-04-04 17:29:36 -0700</bug_when>
    <thetext>I do not know what the average bucket size is today, so I&apos;m not sure if installing an extension that 1% (or say 0.1%) or users have means that the browser becomes unique in the bucket. This is what I was seeking for someone to confirm.

My other question was about why the UUID behaved like that, shared across all tabs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858161</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-04-04 17:30:18 -0700</bug_when>
    <thetext>(and why it&apos;s a UUID, can we just have incrementing numbers instead, for example)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858185</commentid>
    <comment_count>15</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 18:44:44 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #13)
&gt; I do not know what the average bucket size is today, so I&apos;m not sure if
&gt; installing an extension that 1% (or say 0.1%) or users have means that the
&gt; browser becomes unique in the bucket. This is what I was seeking for someone
&gt; to confirm.

A good percentage of users have at least one extension active.

&gt; My other question was about why the UUID behaved like that, shared across
&gt; all tabs.
&gt; 
&gt; (and why it&apos;s a UUID, can we just have incrementing numbers instead, for example)

We register the UUID with a scheme handler to handle loading resources for extensions. It is the host name essentially.

Do we need to meet about this? I feel we could clear things up quicker in a meeting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858186</commentid>
    <comment_count>16</comment_count>
      <attachid>456658</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-04 18:46:18 -0700</bug_when>
    <thetext>Created attachment 456658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858892</commentid>
    <comment_count>17</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-06 10:26:49 -0700</bug_when>
    <thetext>I was able to A/B test this patch:

Speedometer:
A: 84.07 pt ± 3.0 pt
B: 84.39 pt ± 2.3 pt
0.38% better (insignificant)

PLT (Mac):
A: 532.9 ms ± 3.8 ms
B: 532.4 ms ± 4.8 ms
0.10% better (insignificant)

PLT (iPhone):
A: 489.8 ms ± 6.7 ms
B: 487.3 ms ± 7.2 ms
0.51% better (insignificant)

I&apos;m still checking Jetstream (waiting on a retry for results).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859039</commentid>
    <comment_count>18</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-06 15:01:32 -0700</bug_when>
    <thetext>JetStream 2:
A: 114.6 pt ± 1.1 pt
B: 114.2 pt ± 1.8 pt
0.35% worse (insignificant)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859095</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-04-06 17:10:59 -0700</bug_when>
    <thetext>Thank you for running the performance tests. My other concerns stand, but I don&apos;t think that I&apos;m the right person to decide if this should be landed, or to work with you on an alternative solution in Safari. So Im deferring to others&apos; judgement.

Seems like api-ios EWS failure is relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859102</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-06 17:38:30 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #19)
&gt; Thank you for running the performance tests. My other concerns stand, but I
&gt; don&apos;t think that I&apos;m the right person to decide if this should be landed, or
&gt; to work with you on an alternative solution in Safari. So Im deferring to
&gt; others&apos; judgement.
&gt; 
&gt; Seems like api-ios EWS failure is relevant.

I need to look more into this, this look overly intrusive to me. I bet there is a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860358</commentid>
    <comment_count>21</comment_count>
      <attachid>457274</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-11 11:23:26 -0700</bug_when>
    <thetext>Created attachment 457274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860900</commentid>
    <comment_count>22</comment_count>
      <attachid>457479</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-12 14:40:12 -0700</bug_when>
    <thetext>Created attachment 457479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860989</commentid>
    <comment_count>23</comment_count>
      <attachid>457495</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-12 18:17:37 -0700</bug_when>
    <thetext>Created attachment 457495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860990</commentid>
    <comment_count>24</comment_count>
      <attachid>457495</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-12 18:21:23 -0700</bug_when>
    <thetext>Comment on attachment 457495
Patch

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

&gt; Source/WebCore/page/Page.cpp:3737
&gt; +    return m_maskedURLSchemes.contains(url.protocol().toStringWithoutCopying());

This can be done without calling toString, using the StringView hash translator, which should be considerably more efficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861004</commentid>
    <comment_count>25</comment_count>
      <attachid>457495</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 19:18:00 -0700</bug_when>
    <thetext>Comment on attachment 457495
Patch

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

Does the origin leak any information we don&apos;t want to leak or is it only about full URLs? Thinking about self.origin for example. And window.location.ancestorOrigins.

Also, service workers can see the URL of their clients via ServiceWorkerClient.url. Not sure if that&apos;s covered and if it matters for your use cases.

Also, HashChangeEvent contains the old and new URL when changing the hash of the URL. Wouldn&apos;t it be an issue here?

&gt; Source/WebCore/dom/Document.cpp:5635
&gt; +    static std::once_flag onceFlag;

Why std::call_once()? I doubt this can be called from multiple threads given that this is on Document. Why not use a regular MainThreadNeverDestroyed?

&gt; Source/WebCore/dom/Document.h:723
&gt; +    bool shouldMaskURLForBindings(const URL&amp;) const;

Doesn&apos;t seem like this needs to be public.

&gt; Source/WebCore/dom/Document.h:727
&gt; +    const URL&amp; maskedURLForBindings() const;

ditto.

&gt; Source/WebCore/dom/Element.cpp:728
&gt; +    synchronizeAttribute(name);

Can&apos;t this call getAttribute() and then do some post-processing based on resolveURLs? This would reduce code duplication.

&gt; Source/WebCore/dom/Element.cpp:1829
&gt; +AtomString Element::getAttributeForBindings(const AtomString&amp; localName, ResolveURLs resolveURLs) const

localName -&gt; qualifiedName, per spec.

&gt; Source/WebCore/dom/Element.cpp:1834
&gt; +    synchronizeAttribute(localName);

Can&apos;t this call getAttribute() and then do some post-processing based on resolveURLs? This would reduce code duplication.

&gt; Source/WebCore/dom/Element.h:84
&gt; +enum class ResolveURLs : uint8_t { No, NoExcludingURLsForPrivacy, Yes, YesExcludingURLsForPrivacy };

Maybe this should be 2 separate enums? One for resolvingURLs and one for excludingURLsForPrivacy?

&gt; Source/WebCore/dom/Element.h:144
&gt; +    WEBCORE_EXPORT const AtomString&amp; getAttribute(const AtomString&amp; localName) const;

Please revert this change. The new name is wrong and the new name is correct. See the spec here:
https://dom.spec.whatwg.org/#dom-element-getattribute

This is a qualified name as a string (e.g. &quot;ns:foo&quot;).

&gt; Source/WebCore/dom/Element.h:147
&gt; +    AtomString getAttributeForBindings(const AtomString&amp; localName, ResolveURLs = ResolveURLs::NoExcludingURLsForPrivacy) const;

Should probably use qualifiedName too given that this is the equivalent function for bindings now.

&gt; Source/WebCore/dom/Element.idl:44
&gt;      DOMString? getAttributeNS(DOMString? namespaceURI, DOMString localName);

I am a little surprised you didn&apos;t have to hijack getAttributeNS() too. After all, getAttribute() and getAttributeNS() are almost identical except that you can specify a namespace. As a matter of fact, I believe passing null as namespace will make it identical to getAttribute().

&gt;&gt; Source/WebCore/page/Page.cpp:3737
&gt;&gt; +    return m_maskedURLSchemes.contains(url.protocol().toStringWithoutCopying());
&gt; 
&gt; This can be done without calling toString, using the StringView hash translator, which should be considerably more efficient.

m_maskedURLSchemes.contains&lt;StringViewHashTranslator&gt;(url.protocol());

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm:236
&gt; +

We may want to add tests for window.location.href and probably window.location.protocol / port / host / pathname / search / hash, document.url, document.documentURI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861136</commentid>
    <comment_count>26</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-13 09:14:52 -0700</bug_when>
    <thetext>Based on Chris’s comments above we must add getAttributeNS test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861168</commentid>
    <comment_count>27</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-13 10:57:00 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #25)
&gt; Comment on attachment 457495 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457495&amp;action=review
&gt; 
&gt; Does the origin leak any information we don&apos;t want to leak or is it only
&gt; about full URLs? Thinking about self.origin for example. And
&gt; window.location.ancestorOrigins.

The origin is the important part to hide, but the full URL can contain info too (depending on the extension).

However, these URLs only need masked when the web view is showing external pages that can have extension content injected. The main document will never be an extension loaded origin, so things like self.origin, etc are not a concern for this use-case.

I agree if other clients needed this SPI, we would need to protect more.

&gt; Also, service workers can see the URL of their clients via
&gt; ServiceWorkerClient.url. Not sure if that&apos;s covered and if it matters for
&gt; your use cases.

Similarly, service workers are not a concern.

&gt; Also, HashChangeEvent contains the old and new URL when changing the hash of
&gt; the URL. Wouldn&apos;t it be an issue here?

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861169</commentid>
    <comment_count>28</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-04-13 10:57:36 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #26)
&gt; Based on Chris’s comments above we must add getAttributeNS test coverage.

Yep! Good catch Chris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861171</commentid>
    <comment_count>29</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-13 11:01:36 -0700</bug_when>
    <thetext>We may need some adversarial testing to find places URLs might leak out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1878243</commentid>
    <comment_count>30</comment_count>
      <attachid>457495</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-06-24 12:26:10 -0700</bug_when>
    <thetext>Comment on attachment 457495
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:5635
&gt;&gt; +    static std::once_flag onceFlag;
&gt; 
&gt; Why std::call_once()? I doubt this can be called from multiple threads given that this is on Document. Why not use a regular MainThreadNeverDestroyed?

Fixed.

&gt;&gt; Source/WebCore/dom/Document.h:723
&gt;&gt; +    bool shouldMaskURLForBindings(const URL&amp;) const;
&gt; 
&gt; Doesn&apos;t seem like this needs to be public.

It is called from Element.

&gt;&gt; Source/WebCore/dom/Document.h:727
&gt;&gt; +    const URL&amp; maskedURLForBindings() const;
&gt; 
&gt; ditto.

Ditto.

&gt;&gt; Source/WebCore/dom/Element.cpp:728
&gt;&gt; +    synchronizeAttribute(name);
&gt; 
&gt; Can&apos;t this call getAttribute() and then do some post-processing based on resolveURLs? This would reduce code duplication.

I added an inline getAttributeInternal since we need the Attribute, and getAttribute returns an AtomString.

&gt;&gt; Source/WebCore/dom/Element.cpp:1829
&gt;&gt; +AtomString Element::getAttributeForBindings(const AtomString&amp; localName, ResolveURLs resolveURLs) const
&gt; 
&gt; localName -&gt; qualifiedName, per spec.

Fixed.

&gt;&gt; Source/WebCore/dom/Element.cpp:1834
&gt;&gt; +    synchronizeAttribute(localName);
&gt; 
&gt; Can&apos;t this call getAttribute() and then do some post-processing based on resolveURLs? This would reduce code duplication.

See above.

&gt;&gt; Source/WebCore/dom/Element.h:84
&gt;&gt; +enum class ResolveURLs : uint8_t { No, NoExcludingURLsForPrivacy, Yes, YesExcludingURLsForPrivacy };
&gt; 
&gt; Maybe this should be 2 separate enums? One for resolvingURLs and one for excludingURLsForPrivacy?

That made the switches more unwieldy in my opinion.

&gt;&gt; Source/WebCore/dom/Element.h:144
&gt;&gt; +    WEBCORE_EXPORT const AtomString&amp; getAttribute(const AtomString&amp; localName) const;
&gt; 
&gt; Please revert this change. The new name is wrong and the new name is correct. See the spec here:
&gt; https://dom.spec.whatwg.org/#dom-element-getattribute
&gt; 
&gt; This is a qualified name as a string (e.g. &quot;ns:foo&quot;).

Fixed.

&gt;&gt; Source/WebCore/dom/Element.h:147
&gt;&gt; +    AtomString getAttributeForBindings(const AtomString&amp; localName, ResolveURLs = ResolveURLs::NoExcludingURLsForPrivacy) const;
&gt; 
&gt; Should probably use qualifiedName too given that this is the equivalent function for bindings now.

Fixed.

&gt;&gt; Source/WebCore/dom/Element.idl:44
&gt;&gt;      DOMString? getAttributeNS(DOMString? namespaceURI, DOMString localName);
&gt; 
&gt; I am a little surprised you didn&apos;t have to hijack getAttributeNS() too. After all, getAttribute() and getAttributeNS() are almost identical except that you can specify a namespace. As a matter of fact, I believe passing null as namespace will make it identical to getAttribute().

Good catch! I did miss that one because an earlier version of my change just modified Element::getAttribute, which getAttributeNS uses. Once I switched to a getAttributeForBindings I needed to do similar for getAttributeNS.

&gt;&gt;&gt; Source/WebCore/page/Page.cpp:3737
&gt;&gt;&gt; +    return m_maskedURLSchemes.contains(url.protocol().toStringWithoutCopying());
&gt;&gt; 
&gt;&gt; This can be done without calling toString, using the StringView hash translator, which should be considerably more efficient.
&gt; 
&gt; m_maskedURLSchemes.contains&lt;StringViewHashTranslator&gt;(url.protocol());

Awesome!

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm:236
&gt;&gt; +
&gt; 
&gt; We may want to add tests for window.location.href and probably window.location.protocol / port / host / pathname / search / hash, document.url, document.documentURI.

Those URLs are not covered by this API. The intent of this API is to hide sub resources and links, not the main resource URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1878249</commentid>
    <comment_count>31</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2022-06-24 13:03:18 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/1783</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1879125</commentid>
    <comment_count>32</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-29 14:14:53 -0700</bug_when>
    <thetext>Committed 251962@main (c0c652e4bd3c): &lt;https://commits.webkit.org/251962@main&gt;

Reviewed commits have been landed. Closing PR #1783 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456529</attachid>
            <date>2022-04-03 22:23:02 -0700</date>
            <delta_ts>2022-04-04 09:49:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220403222301.patch</filename>
            <type>text/plain</type>
            <size>46318</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjhiZTQ2MDVlZjQ5MWFhYmRiNDU3Yzk0ZWQ3ZmYzNmMyMDU5MWZlLi5mNjJmOTM1MWVmZjJlOGFh
MDU0OGYwZGE4YzFiZWE2M2ExMDVhOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZh
U2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1NzYKKyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOiBSZXR1cm4gIltleHRlbnNpb24g
Y29kZV0iIGZvciBhbnkgc291cmNlVVJMIHRoYXQgc3RhcnRzIHdpdGggInNhZmFyaS0iLgorICAg
ICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOiBBZGRlZCBzb21lIHdo
aXRlc3BhY2UuCisKIDIwMjItMDMtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBDaGFuZ2UgRGF0ZS5wYXJzZSB0byBzdG9wIHJldHVybmluZyBu
dW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uZjhiNDk4ZTdlOTMwYzFkYTIwNjYyNTI2NzBjZGI2
NWNkOTY0YzRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0
QXR0cmlidXRlIGNvbnN0KTogUmVtb3ZlIGR1cGxpY2F0ZSBpbXBsLCBhbmQgdXNlIGdldEF0dHJp
YnV0ZShRdWFsaWZpZWROYW1lJikuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppbm5lckhU
TUwgY29uc3QpOiBVc2UgbmV3IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5
IHdoZW4gY2FsbGluZyBzZXJpYWxpemVGcmFnbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6Om91dGVySFRNTCBjb25zdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
Z2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnJlc29sdmVVUkxTdHJpbmdJZk5lZWRlZCBjb25zdCk6IEFkZGVkLiBNb3Zl
ZCBmcm9tIE1hcmt1cEFjY3VtdWxhdG9yOjpyZXNvbHZlVVJMSWZOZWVkZWQgYW5kIGFkZGVkIG5l
dyBOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5IHBhdGguCisgICAgICAgIENoYW5nZWQgWWVzRXhj
bHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kgdG8gWWVzRXhjbHVkaW5nVVJMc0ZvclByaXZh
Y3kgYW5kIGluY2x1ZGVkIHNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncygpIGNoZWNrLgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZSBjb25zdCk6
IFVzZSByZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgaW5zdGVhZCBvZiBtYWtpbmcgVVJMIGRpcmVj
dGx5LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRs
OiBVc2UgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIGdldEF0dHJpYnV0ZS4KKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojppbm5l
ckhUTUwgY29uc3QpOiBVc2UgbmV3IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2
YWN5IHdoZW4gY2FsbGluZyBzZXJpYWxpemVGcmFnbWVudC4KKyAgICAgICAgKiBlZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmt1cEFjY3VtdWxhdG9y
OjpyZXNvbHZlVVJMSWZOZWVkZWQgY29uc3QpOiBVc2UgRWxlbWVudDo6cmVzb2x2ZVVSTFN0cmlu
Z0lmTmVlZGVkLgorICAgICAgICAqIGVkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCk6IENoYW5nZWQgWWVz
RXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kgdG8gWWVzRXhjbHVkaW5nVVJMc0ZvclBy
aXZhY3kuCisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKTogRGl0dG8uCisgICAgICAgICog
ZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVkTWFya3VwRm9y
RnJhZ21lbnRJbkRvY3VtZW50KTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZSBjb25zdCk6IFVz
ZSByZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgaW5zdGVhZCBvZiBtYWtpbmcgVVJMIGRpcmVjdGx5
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6c3Jjc2V0Rm9yQmluZGluZ3Mg
Y29uc3QpOiBBZGRlZC4gVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIHdpdGggUmVzb2x2ZVVS
THM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTElt
YWdlRWxlbWVudDo6c2V0U3Jjc2V0Rm9yQmluZGluZ3MpOiBBZGRlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRs
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzaG91
bGRNYXNrVVJMRm9yQmluZGluZ3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2Uu
aDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6CisKIDIwMjItMDMtMjIgIFBl
ciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBjb250
ZW50IGZpbHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMyYTZmZmY4
ZTViNmE2ZTU5MGU1NjYzZTRjMzg3OTJiZDRiMzg3NjMuLjBiMmMzZDI3NjRjZmU0NTI1ZTU5NmE1
MjExMmFiNzQ5MmM5M2ZjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjItMDQtMDMg
IFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhYmls
aXR5IHRvIG1hc2sgVVJMcyBmcm9tIERPTSBhbmQgSmF2YVNjcmlwdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTc2CisgICAgICAgIHJkYXI6Ly84
MTk5MTI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOiBBZGRlZCBtYXNrZWRV
UkxTY2hlbWVzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwOgor
ICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6Y29weSBjb25zdCk6IEFkZGVkIG1hc2tl
ZFVSTFNjaGVtZXMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlv
bi5oOgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6bWFza2VkVVJMU2NoZW1lcyBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoQVBJOjpQYWdlQ29uZmlndXJhdGlvbjo6c2V0TWFza2Vk
VVJMU2NoZW1lcyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBf
bWFza2VkVVJMU2NoZW1lc10pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfc2V0TWFza2VkVVJMU2NoZW1lczpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpXZWJQYWdlKTogQWRkZWQgbWFza2VkVVJMU2NoZW1lcy4KKwogMjAyMi0wMy0yMiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTGliV2ViUlRDQ29kZWNzUHJv
eHkubW0gYW5kIFNoYXJlZFZpZGVvRnJhbWUuY3BwIGRvIG5vdCBuZWVkIHRvIGJlIGJ1aWx0IGFz
IHBhcnQgb2YgV2ViQ29udGVudCBleGVjdXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0YWNrRnJhbWUuY3BwCmluZGV4IDZiOGYzZGY2MzM1MDQ1ZDVhYzIxZWY1YTA4MmQ0
ODY4MDRmYTNlNmIuLmEyNjViMTgwM2UyOWMyYjFlNjY5MDYwM2ZjMDk2NzQwMTgxNWJmNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC02Mywx
MSArNjMsMTMgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OnNvdXJjZVVSTCgpIGNvbnN0CiAgICAgaWYg
KG1faXNXYXNtRnJhbWUpCiAgICAgICAgIHJldHVybiAiW3dhc20gY29kZV0iX3M7CiAKLSAgICBp
ZiAoIW1fY29kZUJsb2NrKSB7CisgICAgaWYgKCFtX2NvZGVCbG9jaykKICAgICAgICAgcmV0dXJu
ICJbbmF0aXZlIGNvZGVdIl9zOwotICAgIH0KIAogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBtX2Nv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOworICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgaGFyZGNvZGVkIGhlcmUsIGJ1dCBjb21lIGZyb20gc29tZSBBUEkg
d2l0aCB3aGF0IHNjaGVtZXMgdG8gbWFzay4KKyAgICBpZiAoc291cmNlVVJMLnN0YXJ0c1dpdGhJ
Z25vcmluZ0FTQ0lJQ2FzZSgic2FmYXJpLSJfcykpCisgICAgICAgIHJldHVybiAiW2V4dGVuc2lv
biBjb2RlXSJfczsKICAgICBpZiAoIXNvdXJjZVVSTC5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IHNvdXJjZVVSTDsKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKQEAgLTkyLDExICs5NCwxMyBA
QCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2bSkgY29uc3QKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAgfQorCiAgICAgU3RyaW5n
IG5hbWU7CiAgICAgaWYgKG1fY2FsbGVlKSB7CiAgICAgICAgIGlmIChtX2NhbGxlZS0+aXNPYmpl
Y3QoKSkKICAgICAgICAgICAgIG5hbWUgPSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUodm0sIGpz
Q2FzdDxKU09iamVjdCo+KG1fY2FsbGVlLmdldCgpKSkuaW1wbCgpOwogICAgIH0KKwogICAgIHJl
dHVybiBuYW1lLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IG5hbWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQppbmRleCA3MWIz
NmJjZTU1M2NjMWU0ZGYzOTk2ZDJiZDRhMjhhZWQwN2EyYzkyLi5lZWFiYmU1NDMwMDVjMWEwNTQz
MTVmYzNhMTU1M2I1ZGJiMDFjYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0xMTAxLDcgKzExMDEsNyBAQCBzdWIgR2V0dGVy
RXhwcmVzc2lvbgogCiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKICAgICBpZiAoJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlVSTCJ9KSB7Ci0gICAgICAgICRmdW5jdGlvbk5hbWUgPSAi
Z2V0VVJMQXR0cmlidXRlIjsKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVUkxBdHRyaWJ1
dGVGb3JCaW5kaW5ncyI7CiAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgImJv
b2xlYW4iKSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaGFzQXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbiI7CiAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgImxv
bmciKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggMTJjNDAyNmQ3Yjc1MmUxNGUxMDkxMGQyYzZhZTBm
ODIxNmFlYTc5Ni4uNDM1YTM0NDhhYzEwY2Y4MWJiZjM0M2E4ZDE0MTI3MmMzNjEzMDk5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmNwcApAQCAtMTIwLDEwICsxMjAsMTAgQEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiog
QXR0cjo6c3R5bGUoKQogICAgIHJldHVybiAmbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVEZWNsYXJh
dGlvbigpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBBdHRyOjp2YWx1ZSgpIGNvbnN0CitBdG9t
U3RyaW5nIEF0dHI6OnZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50KQotICAgICAg
ICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MocXVhbGlmaWVkTmFt
ZSgpKTsKICAgICByZXR1cm4gbV9zdGFuZGFsb25lVmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCmluZGV4
IGFjOTRjODA5ZTkzNjNjYjRjNjc3NmUzNTQ2MDYyMTBhYmM0NTI3YWMuLmFlYTQ4M2I4MGE1NzYy
MzE0MDE1ZjY5NWQ3MTM2MjZiNWI2MjhiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSgpIGNvbnN0OworICAg
IFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHF1YWxpZmllZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0ODI1NDZlNzczOWI1NTA1Zjhj
MGYyODEuLjkwN2FjMmEyMDY2MGY4ODIzZjVkYzUwMGNiZDA3ZGYwYzFhNzFhOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNTYwMCw2ICs1NjAwLDM3IEBAIFVSTCBEb2N1bWVudDo6Y29t
cGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEZvcmNlVVRGOCBmb3JjZVVURjgpIGNvbnN0CiAg
ICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMLCBmb3JjZVVURjgpOwogfQogCiti
b29sIERvY3VtZW50OjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJiB1cmwpIGNv
bnN0Cit7CisgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFnZS0+c2hvdWxkTWFza1VSTEZvckJp
bmRpbmdzKHVybCk7Cit9CisKK1VSTCBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5l
ZWRlZChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoc2hvdWxkTWFz
a1VSTEZvckJpbmRpbmdzKHVybCkpKQorICAgICAgICByZXR1cm4gbWFza2VkVVJMRm9yQmluZGlu
Z3MoKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBBdG9tU3RyaW5nJiBEb2N1bWVudDo6
bWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhy
ZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsKCJ3ZWJraXQtbWFza2VkLXVy
bDovL2hpZGRlbi8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0
dXJuIHVybDsKK30KKworY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3Mo
KSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPFVSTD4g
bWFza2VkVVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6
OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWFza2VkVVJMLmNvbnN0cnVjdCht
YXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpLnN0cmluZygpKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gbWFza2VkVVJMOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRCYWNrRm9yd2FyZENhY2hlU3Rh
dGUoQmFja0ZvcndhcmRDYWNoZVN0YXRlIHN0YXRlKQogewogICAgIGlmIChtX2JhY2tGb3J3YXJk
Q2FjaGVTdGF0ZSA9PSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDNkOTNkOGRiZjlm
MDNjMTQ3NTEwNDM2NWRjMDcxOTc5N2MzYWFjYy4uOTRhNzIzMjU5NTBkNWRjZGIxNzU1ZGE3ZTg2
OTE2MzdkNjY3NTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTcyMCw2ICs3MjAsMTEgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcm
LCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAgICBVUkwgY29tcGxl
dGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUsIEZvcmNlVVRG
OCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRNYXNrVVJMRm9yQmlu
ZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgVVJMIG1hc2tlZFVSTEZvckJpbmRpbmdzSWZO
ZWVkZWQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbWFza2VkVVJM
U3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIG1hc2tlZFVSTEZvckJp
bmRpbmdzKCkgY29uc3Q7CisKICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjk5N2JmZDBmZGI5ZmVlZjQ0M2Y4
YjNjY2E0ZDIwZTYxYzBiN2M5Yy4uZDMwMTQ2N2VhMDMxNDUwZWJlMDQ1NTI1YjNjZWQ0OWIzZjJj
YmRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzIwLDYgKzcyMCwyMyBAQCBjb25zdCBB
dG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAorQXRvbVN0cmluZyBFbGVtZW50
OjpnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBSZXNv
bHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnREYXRhKCkpCisg
ICAgICAgIHJldHVybiBudWxsQXRvbSgpOworCisgICAgc3luY2hyb25pemVBdHRyaWJ1dGUobmFt
ZSk7CisKKyAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1dGVCeU5h
bWUobmFtZSk7CisgICAgaWYgKCFhdHRyaWJ1dGUpCisgICAgICAgIHJldHVybiBudWxsQXRvbSgp
OworCisgICAgaWYgKGF0dHJpYnV0ZUNvbnRhaW5zVVJMKCphdHRyaWJ1dGUpKQorICAgICAgICBy
ZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShkb2N1bWVudCgpLmJhc2VVUkwoKSwg
KmF0dHJpYnV0ZSwgcmVzb2x2ZVVSTHMpOworCisgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUo
KTsKK30KKwogVmVjdG9yPFN0cmluZz4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTmFtZXMoKSBjb25z
dAogewogICAgIFZlY3RvcjxTdHJpbmc+IGF0dHJpYnV0ZXNWZWN0b3I7CkBAIC0xNzg4LDE0ICsx
ODA1LDE0IEBAIEludFJlY3QgRWxlbWVudDo6c2NyZWVuUmVjdCgpIGNvbnN0CiAgICAgcmV0dXJu
IEludFJlY3QoKTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRl
KGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0Citjb25zdCBBdG9tU3RyaW5n
JiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBjb25z
dAogewotICAgIGlmICghZWxlbWVudERhdGEoKSkKLSAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7
Ci0gICAgc3luY2hyb25pemVBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSk7Ci0gICAgaWYgKGNvbnN0
IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZWxlbWVudERhdGEoKS0+ZmluZEF0dHJpYnV0ZUJ5TmFt
ZShxdWFsaWZpZWROYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKCp0aGlzKSkpCi0gICAg
ICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Ci0gICAgcmV0dXJuIG51bGxBdG9tKCk7Cisg
ICAgcmV0dXJuIGdldEF0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIGxvY2FsTmFt
ZSwgbnVsbEF0b20oKSkpOworfQorCitBdG9tU3RyaW5nIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZUZv
ckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgUmVzb2x2ZVVSTHMgcmVzb2x2
ZVVSTHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKFF1YWxp
ZmllZE5hbWUobnVsbEF0b20oKSwgbG9jYWxOYW1lLCBudWxsQXRvbSgpKSwgcmVzb2x2ZVVSTHMp
OwogfQogCiBjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyhjb25zdCBB
dG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkgY29u
c3QKQEAgLTMyNzAsMTIgKzMyODcsMTIgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6bWVy
Z2VXaXRoTmV4dFRleHROb2RlKFRleHQmIG5vZGUpCiAKIFN0cmluZyBFbGVtZW50Ojppbm5lckhU
TUwoKSBjb25zdAogewotICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywgU2VyaWFs
aXplZE5vZGVzOjpTdWJ0cmVlc09mQ2hpbGRyZW4pOworICAgIHJldHVybiBzZXJpYWxpemVGcmFn
bWVudCgqdGhpcywgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlc09mQ2hpbGRyZW4sIG51bGxwdHIs
IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KTsKIH0KIAogU3RyaW5nIEVs
ZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50
KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlKTsKKyAgICByZXR1
cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1
ZGluZ05vZGUsIG51bGxwdHIsIFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0
cmluZyYgaHRtbCkKQEAgLTM4NDgsNiArMzg2NSwxMSBAQCBVUkwgRWxlbWVudDo6Z2V0VVJMQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3Vt
ZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRlKG5hbWUpKTsKIH0KIAorVVJMIEVsZW1lbnQ6
OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRl
ZChnZXRVUkxBdHRyaWJ1dGUobmFtZSkpOworfQorCiBVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICNpZiBBU1NF
UlRfRU5BQkxFRApAQCAtNDU1MCw5ICs0NTcyLDM3IEBAIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFp
blJhbmdlRW5kUG9pbnQoKSBjb25zdAogICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWci
KTsKIH0KIAotU3RyaW5nIEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKK1N0cmluZyBF
bGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IFJlc29sdmVVUkxzIHJlc29sdmVVUkxzLCBjb25zdCBVUkwmIGJhc2UpIGNvbnN0Cit7CisgICAg
VVJMIGNvbXBsZXRlVVJMID0gYmFzZS5pc051bGwoKSA/IGRvY3VtZW50KCkuY29tcGxldGVVUkwo
dXJsU3RyaW5nKSA6IFVSTChiYXNlLCB1cmxTdHJpbmcpOworCisgICAgc3dpdGNoIChyZXNvbHZl
VVJMcykgeworICAgIGNhc2UgUmVzb2x2ZVVSTHM6OlllczoKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRlVVJMLnN0cmluZygpOworCisgICAgY2FzZSBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJM
c0ZvclByaXZhY3k6IHsKKyAgICAgICAgaWYgKGRvY3VtZW50KCkuc2hvdWxkTWFza1VSTEZvckJp
bmRpbmdzKGNvbXBsZXRlVVJMKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLm1hc2tl
ZFVSTEZvckJpbmRpbmdzKCkuc3RyaW5nKCk7CisgICAgICAgIGlmICghY29tcGxldGVVUkwuaXNM
b2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTC5zdHJpbmcoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdV
UkxzRm9yUHJpdmFjeToKKyAgICAgICAgaWYgKGRvY3VtZW50KCkuc2hvdWxkTWFza1VSTEZvckJp
bmRpbmdzKGNvbXBsZXRlVVJMKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLm1hc2tl
ZFVSTEZvckJpbmRpbmdzKCkuc3RyaW5nKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBS
ZXNvbHZlVVJMczo6Tm86CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiB1cmxT
dHJpbmc7Cit9CisKK1N0cmluZyBFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVl
KGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUsIFJlc29sdmVVUkxz
IHJlc29sdmVVUkxzKSBjb25zdAogewotICAgIHJldHVybiBVUkwoYmFzZSwgYXR0cmlidXRlLnZh
bHVlKCkpLnN0cmluZygpOworICAgIHJldHVybiByZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoYXR0
cmlidXRlLnZhbHVlKCksIHJlc29sdmVVUkxzLCBiYXNlKTsKIH0KIAogRXhjZXB0aW9uT3I8Tm9k
ZSo+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50KGNvbnN0IFN0cmluZyYgd2hlcmUsIFJlZjxOb2Rl
PiYmIG5ld0NoaWxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYTUyOGQxNzA1ZWRhMWEyM2Y1ZDlm
MTMzZjdmMjZmZjVlM2VhNWY5MC4uODdlMzdjMzk3MTVhZjViYjI2N2VjOGFiNjc5MjhkNWMxZTE3
NTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC04MSw2ICs4MSw3IEBAIGVudW0gY2xhc3MgQW5p
bWF0aW9uSW1wYWN0OwogZW51bSBjbGFzcyBFdmVudEhhbmRsaW5nIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgRXZlbnRQcm9jZXNzaW5nIDogdWludDhfdDsKIGVudW0gY2xhc3MgSXNTeW50aGV0aWND
bGljayA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIFJlc29sdmVVUkxzIDogdWludDhf
dCB7IE5vLCBOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LCBZZXMsIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5IH07CiBlbnVtIGNsYXNzIFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSA6IHVpbnQ4
X3Q7CiAKIHN0cnVjdCBHZXRBbmltYXRpb25zT3B0aW9uczsKQEAgLTEwNyw2ICsxMDgsNyBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYg
Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBBdG9tU3RyaW5n
IGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBSZXNvbHZlVVJM
cyA9IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KSBjb25zdDsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZS4uLiBRdWFsaWZpZWROYW1lcz4KICAgICBpbmxpbmUgY29uc3QgQXRv
bVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBRdWFsaWZp
ZWROYW1lcyYuLi4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSk7CkBAIC0xMzks
OSArMTQxLDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0F0dHJpYnV0
ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGhhc0F0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwg
Y29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZp
ZWROYW1lKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBnZXRB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9tU3RyaW5n
JiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAKKyAg
ICBBdG9tU3RyaW5nIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIGxv
Y2FsTmFtZSwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSkgY29uc3Q7CisKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYgdmFsdWUpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxRdWFsaWZpZWROYW1lPiBwYXJzZUF0
dHJpYnV0ZU5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3Ry
aW5nJiBxdWFsaWZpZWROYW1lKTsKICAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0
b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKQEAgLTQx
NiwxMCArNDIwLDEyIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBhdHRyaWJ1dGVDb250YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29u
c3QgeyByZXR1cm4gaXNVUkxBdHRyaWJ1dGUoYXR0cmlidXRlKTsgfQotICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdDsKKyAgICBTdHJpbmcgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkKGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMsIGNv
bnN0IFVSTCYgYmFzZSA9IFVSTCgpKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb21wbGV0
ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJiwg
UmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6WWVzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
aXNIVE1MQ29udGVudEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgVVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgVVJMIGdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdz
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBVUkwgZ2V0Tm9uRW1wdHlVUkxBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBB
dG9tU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmlu
ZGV4IGE1MjMzMWZmODdhMjgyZDAxNmM5MjYxMDUyOWYzODRjMmMzZDQ3MDQuLmRmYjRkOWYyODRl
OTZmYWM5MjkwNDZmNzNmMDgwNjJkNzlkOTlkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAg
LTQwLDcgKzQwLDcgQEAKICAgICBbRE9NSklUPVJlYWRET01dIGJvb2xlYW4gaGFzQXR0cmlidXRl
cygpOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwIGF0
dHJpYnV0ZXM7CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRBdHRyaWJ1dGVOYW1lcygpOwot
ICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1
YWxpZmllZE5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTSwgSW1wbGVtZW50ZWRBcz1nZXRBdHRy
aWJ1dGVGb3JCaW5kaW5nc10gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxp
ZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1l
c3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZp
bmVkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVl
KTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/
IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUsIERPTVN0cmluZyB2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggYTMyMmRlYzQxZGRmNGIzNWJlMTgzMTZm
OWFmMDRlMjUwY2I2ZWE5Yi4uNTI5YWU5MGJjYzIyOWMzNTdhYTQ2MWI3OGQ3ZmRmZmFlNGY3MThl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIFN0eWxl
U2hlZXRMaXN0JiBTaGFkb3dSb290OjpzdHlsZVNoZWV0cygpCiAKIFN0cmluZyBTaGFkb3dSb290
Ojppbm5lckhUTUwoKSBjb25zdAogewotICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhp
cywgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlc09mQ2hpbGRyZW4pOworICAgIHJldHVybiBzZXJp
YWxpemVGcmFnbWVudCgqdGhpcywgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlc09mQ2hpbGRyZW4s
IG51bGxwdHIsIFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU2hhZG93Um9vdDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYg
bWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVs
YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApp
bmRleCAzZTY5NjFkMTczMGQ0Mzc0YzY0ZmY4N2EyZDBhZjEyN2VjMTA1NDQwLi44MWY5MDhlMGRk
YjkyNWNhMmFlM2I2NTczNzNkYmEyMTM2ZDM5NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtMjMyLDE5ICsyMzIsNyBAQCB2b2lkIE1hcmt1
cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlc1dpdGhOYW1lc3BhY2VzKE5vZGUmIHRhcmdldE5v
ZGUsIFNlcmlhbGl6ZQogCiBTdHJpbmcgTWFya3VwQWNjdW11bGF0b3I6OnJlc29sdmVVUkxJZk5l
ZWRlZChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZykgY29u
c3QKIHsKLSAgICBzd2l0Y2ggKG1fcmVzb2x2ZVVSTHMpIHsKLSAgICBjYXNlIFJlc29sdmVVUkxz
OjpZZXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJs
U3RyaW5nKS5zdHJpbmcoKTsKLQotICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xv
Y2FsRmlsZVVSTHNGb3JQcml2YWN5OgotICAgICAgICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS51
cmwoKS5pc0xvY2FsRmlsZSgpKQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpLnN0cmluZygpOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgUmVzb2x2ZVVSTHM6Ok5vOgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJu
IHVybFN0cmluZzsKKyAgICByZXR1cm4gZWxlbWVudC5yZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQo
dXJsU3RyaW5nLCBtX3Jlc29sdmVVUkxzKTsKIH0KIAogdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6
c3RhcnRBcHBlbmRpbmdOb2RlKGNvbnN0IE5vZGUmIG5vZGUsIE5hbWVzcGFjZXMqIG5hbWVzcGFj
ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBm
ODhhODE2ZWE2Mzc2ZDE3MjQwYTY0ODExZTk2OGE5NWYzODljODAzLi42ZTljZGE3MDAxOGJjNjRm
YTdjMDdiNjc1NGU3NWNjZGQ3MmU0MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvRWRpdG9yQ29jb2EubW0KQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0
aW9uSW5IVE1MRm9ybWF0KCkKIHsKICAgICBpZiAoSW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJs
YXkobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSkpCiAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdM
b2NhbEZpbGVVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOworICAg
IHJldHVybiBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShtX2RvY3VtZW50LnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclBy
aXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKIH0KIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9F
ZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5k
ZXggMWEyY2QwM2YwMGNlZTAyNjkyNmJjM2EyNGZmYTliYmM1ZTA4OTY2My4uMmZmOWJiZDQ4MGM1
NjY3OTBkMzFjOGY2M2I2NzY2NmFjMTQ2M2QyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbQpAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdl
VG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVu
CiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0ID0gaW1hZ2VJ
bldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50KTsKIAogICAgIGlmIChhdXRvIGltYWdlUmFu
Z2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGltYWdlRWxlbWVudCkpCi0gICAgICAgIHBhc3Rl
Ym9hcmRJbWFnZS5kYXRhSW5IVE1MRm9ybWF0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFw
cGVhcmFuY2UoVmlzaWJsZVNlbGVjdGlvbiB7ICppbWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZ
ZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVl
OjpZZXMpOworICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluSFRNTEZvcm1hdCA9IHNlcmlh
bGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24geyAqaW1hZ2VS
YW5nZSB9LCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFNlcmlhbGl6
ZUNvbXBvc2VkVHJlZTo6WWVzKTsKIAogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gdXJs
OwogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAppbmRleCAyMGIzZmNmOGRkZjk1NDQzNDliMTg2NGVmOWQ5YmYwZmI0YWVlNjQ2
Li5hZGNhOWQxZTA5NWI5YmU3NDIxMGNhNGQ1MTc2MWQ2MWM0ZWI1MzQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCkBAIC0xMDExLDcgKzEwMTEsNyBAQCBTdHJpbmcgc2FuaXRpemVkTWFy
a3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJlZjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50
LCBEbwogCiAgICAgLy8gU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpObyBiZWNhdXNlIHRoZXJlIGNh
bid0IGJlIGEgc2hhZG93IHRyZWUgaW4gdGhlIHBhc3RlZCBmcmFnbWVudC4KICAgICBhdXRvIHJl
c3VsdCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlSW50ZXJuYWwoZmlyc3RQ
b3NpdGlvbkluTm9kZShib2R5RWxlbWVudC5nZXQoKSksIGxhc3RQb3NpdGlvbkluTm9kZShib2R5
RWxlbWVudC5nZXQoKSksIG51bGxwdHIsCi0gICAgICAgIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpObywgQW5u
b3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVzLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgIFN0
YW5kYXJkRm9udEZhbWlseVNlcmlhbGl6YXRpb25Nb2RlOjpTdHJpcCwgbXNvTGlzdE1vZGUpOwor
ICAgICAgICBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFNlcmlhbGl6
ZUNvbXBvc2VkVHJlZTo6Tm8sIEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6OlllcywgQ29udmVydEJs
b2Nrc1RvSW5saW5lczo6Tm8sICBTdGFuZGFyZEZvbnRGYW1pbHlTZXJpYWxpemF0aW9uTW9kZTo6
U3RyaXAsIG1zb0xpc3RNb2RlKTsKIAogICAgIGlmIChtc29MaXN0TW9kZSAhPSBNU09MaXN0TW9k
ZTo6UHJlc2VydmUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
aAppbmRleCA5MjUxMWE5MzQ2NmJhOTQ4NDEyNDFiYWZkNjRlMGZjZDEzZTExYWUzLi40MTc0MGVm
ZjdiZDljNWE1NTEzZmYxMDNjMmJlYzQ5YTZiMGE4MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNp
bmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKQEAgLTcwLDcgKzcxLDYgQEAg
Ym9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlKik7CiAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2Vk
IGJ5IEhUTUxFbGVtZW50ICYgU2hhZG93Um9vdCB0byByZXBsYWNlIHRoZSBjaGlsZHJlbiB3aXRo
IHJlc3BlY3RlZCBmcmFnbWVudC90ZXh0LgogRXhjZXB0aW9uT3I8dm9pZD4gcmVwbGFjZUNoaWxk
cmVuV2l0aEZyYWdtZW50KENvbnRhaW5lck5vZGUmLCBSZWY8RG9jdW1lbnRGcmFnbWVudD4mJik7
CiAKLWVudW0gY2xhc3MgUmVzb2x2ZVVSTHMgOiB1aW50OF90IHsgTm8sIFllcywgWWVzRXhjbHVk
aW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kgfTsKIGVudW0gY2xhc3MgQ29udmVydEJsb2Nrc1Rv
SW5saW5lcyA6IHVpbnQ4X3QgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIFNlcmlhbGl6ZUNvbXBv
c2VkVHJlZSA6IHVpbnQ4X3QgeyBObywgWWVzIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBWZWN0
b3I8Tm9kZSo+KiA9IG51bGxwdHIsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UgPSBBbm5vdGF0ZUZv
ckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nrc1RvSW5saW5lcyA9IENvbnZlcnRCbG9ja3NU
b0lubGluZXM6Ok5vLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpObyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCA3OThmZTg2YmM0ZjMyMDI2NzFjZDJk
NzE0NjYwMDBiNmViYWJiNmJmLi42MmUxOWNlNjViNDFhNWE0MThlZTE4MDM5Mjk4NGI2M2M2YmRi
ZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTU2NSw3
ICs1NjUsNyBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNv
bnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogICAgICAgICB8fCBIVE1MRWxlbWVudDo6
YXR0cmlidXRlQ29udGFpbnNVUkwoYXR0cmlidXRlKTsKIH0KIAotU3RyaW5nIEhUTUxJbWFnZUVs
ZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKK1N0cmluZyBIVE1MSW1hZ2VFbGVtZW50Ojpj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUsIFJlc29sdmVVUkxzIHJlc29sdmVVUkxzKSBjb25zdAogewogICAgIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IHNyY3NldEF0dHIpIHsKICAgICAgICAgVmVjdG9yPEltYWdl
Q2FuZGlkYXRlPiBpbWFnZUNhbmRpZGF0ZXMgPSBwYXJzZUltYWdlQ2FuZGlkYXRlc0Zyb21TcmNz
ZXRBdHRyaWJ1dGUoU3RyaW5nVmlldyhhdHRyaWJ1dGUudmFsdWUoKSkpOwpAQCAtNTczLDcgKzU3
Myw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZh
bHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
Y2FuZGlkYXRlIDogaW1hZ2VDYW5kaWRhdGVzKSB7CiAgICAgICAgICAgICBpZiAoJmNhbmRpZGF0
ZSAhPSAmaW1hZ2VDYW5kaWRhdGVzWzBdKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IiwgIik7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKFVSTChiYXNlLCBjYW5kaWRhdGUuc3Ry
aW5nLnRvU3RyaW5nKCkpLnN0cmluZygpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVz
b2x2ZVVSTFN0cmluZ0lmTmVlZGVkKGNhbmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSwgcmVzb2x2
ZVVSTHMsIGJhc2UpKTsKICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUuZGVuc2l0eSAhPSBVbmlu
aXRpYWxpemVkRGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywg
Y2FuZGlkYXRlLmRlbnNpdHksICd4Jyk7CiAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnJlc291
cmNlV2lkdGggIT0gVW5pbml0aWFsaXplZERlc2NyaXB0b3IpCkBAIC01ODEsNyArNTgxLDggQEAg
U3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBBdHQKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7CiAgICAgfQotICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y29tcGxldGVVUkxz
SW5BdHRyaWJ1dGVWYWx1ZShiYXNlLCBhdHRyaWJ1dGUpOworCisgICAgcmV0dXJuIEhUTUxFbGVt
ZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGJhc2UsIGF0dHJpYnV0ZSwgcmVzb2x2
ZVVSTHMpOwogfQogCiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6Om1hdGNoZXNVc2VtYXAoY29uc3Qg
QXRvbVN0cmluZ0ltcGwmIG5hbWUpIGNvbnN0CkBAIC04NzYsNiArODc3LDE2IEBAIHNpemVfdCBI
VE1MSW1hZ2VFbGVtZW50OjpwZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKSBj
b25zdAogICAgIHJldHVybiBtX2ltYWdlTG9hZGVyLT5wZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3Vu
dEZvclRlc3RpbmcoKTsKIH0KIAorQXRvbVN0cmluZyBIVE1MSW1hZ2VFbGVtZW50OjpzcmNzZXRG
b3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdz
KHNyY3NldEF0dHIsIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSk7Cit9
CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0U3Jjc2V0Rm9yQmluZGluZ3MoY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpCit7CisgICAgc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihzcmNzZXRBdHRyLCB2YWx1ZSk7Cit9CisKIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVs
ZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNvbnN0CiB7CiAgICAgc3RhdGljIE1haW5UaHJl
YWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3RyaW5nPiBlYWdlcigiZWFnZXIiLCBBdG9tU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxl
bWVudC5oCmluZGV4IDFkOTlkMzIxN2I1NmZlM2MxYzVkMGM1NThkN2ViNDczYTk4OWMzZWMuLmU4
NGI1YTI5ZmY2Y2YwMWJhMjM3M2E0YTRjNDgwMTIxMTJhZDNhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0xMjksNiArMTI5LDkgQEAgcHVibGljOgogCiAgICAg
dm9pZCBsb2FkRGVmZXJyZWRJbWFnZSgpOwogCisgICAgQXRvbVN0cmluZyBzcmNzZXRGb3JCaW5k
aW5ncygpIGNvbnN0OworICAgIHZvaWQgc2V0U3Jjc2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0
cmluZyYpOworCiAgICAgY29uc3QgQXRvbVN0cmluZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRMb2FkaW5nRm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOwog
CkBAIC0xNzMsNyArMTc2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBhdHRyaWJ1dGVDb250
YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICBTdHJpbmcgY29t
cGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZh
bHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJiwgUmVzb2x2ZVVSTHMgPSBSZXNv
bHZlVVJMczo6WWVzKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNEcmFnZ2FibGVJZ25v
cmluZ0F0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCmluZGV4IGY5MzYzODYyYzkyODRjNmEwYzc4
YjNhNzBjNzdmNjIxNDA4MWYwMjUuLmNkYjY5NjMzOTQ2ZDNiZDdkYzc3OWQ1YWZmMDdjZDJkZDVk
NGJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbApAQCAtMjgs
NyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRNTEltYWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsK
ICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGFsdDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0LCBVUkxdIGF0dHJpYnV0
ZSBVU1ZTdHJpbmcgc3JjOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0
dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIElt
cGxlbWVudGVkQXM9c3Jjc2V0Rm9yQmluZGluZ3NdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0
OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJp
bmcgc2l6ZXM7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmlu
Zz8gY3Jvc3NPcmlnaW47CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0
cmlidXRlIERPTVN0cmluZyB1c2VNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2NjNmOTg0YjU3
ZDRkMGVkMzQzOWYwOTEzYzE0YjFjYjFlMThmYzE3Li5lNmM4MTUxMWM0NjExYmRlNDRhNDNlMWM5
YjlhYzBjZmJmM2E3Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBQ
YWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBt
X2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyKSkKICNlbmRpZgogICAgICwgbV9jb3Jz
RGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5n
UGF0dGVybnMpKQorICAgICwgbV9tYXNrZWRVUkxTY2hlbWVzKFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24ubWFza2VkVVJMU2NoZW1lcykpCiAgICAgLCBtX2FsbG93ZWROZXR3b3JrSG9zdHMoV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2VkTmV0d29ya0hvc3RzKSkKICAgICAsIG1fbG9h
ZHNTdWJyZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMpCiAgICAg
LCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9u
LnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKQpAQCAtMzcyOSw2ICszNzMwLDEz
IEBAIGJvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2Jvb2wgUGFnZTo6c2hvdWxkTWFza1VSTEZvckJpbmRp
bmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIGlmIChtX21hc2tlZFVSTFNjaGVtZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fbWFza2VkVVJM
U2NoZW1lcy5jb250YWlucyh1cmwucHJvdG9jb2woKS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkp
OworfQorCiB2b2lkIFBhZ2U6OnJldmVhbEN1cnJlbnRTZWxlY3Rpb24oKQogewogICAgIENoZWNr
ZWRSZWYoZm9jdXNDb250cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24o
KS5yZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA3NjEyOGMyMjEz
YmZjMTU0MTliNDFhOTdjYTNjZDBkZGExMDM1YzgxLi45MzBiOGExYTQyYWI2NTFjMjE1OGRkNGNi
M2QwOGQwNDJhYjFiMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtOTA5LDYgKzkwOSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGZvckVhY2hGcmFtZShjb25zdCBGdW5jdGlvbjx2b2lkKEZyYW1lJik+Jik7
CiAKICAgICBib29sIHNob3VsZERpc2FibGVDb3JzRm9yUmVxdWVzdFRvKGNvbnN0IFVSTCYpIGNv
bnN0OworICAgIGJvb2wgc2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYpIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU3R5bGVTaGVldChVc2VyU3R5
bGVTaGVldCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlSW5qZWN0ZWRVc2VyU3R5
bGVTaGVldChVc2VyU3R5bGVTaGVldCYpOwpAQCAtMTI3OSw2ICsxMjgwLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fbWFza2VkVVJMU2NoZW1lczsKICAg
ICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+IG1fdXNlclN0eWxlU2hlZXRzUGVuZGluZ0luamVjdGlv
bjsKICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29ya0hv
c3RzOwogICAgIGJvb2wgbV9pc1Rha2luZ1NuYXBzaG90c0ZvckFwcGxpY2F0aW9uU3VzcGVuc2lv
biB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXgg
NDJhOTQ0ZWRkMWIzOWQ3ZDJjNjEwYWUwMzE4YTIwNmY5NWNiYjVhZS4uZWI4MTdlNmI1YjViNGQ3
YmVjYWEyYTFlNWI4ZGZjMGVjODBmNzZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8RGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlcj4gZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
cjsKICNlbmRpZgogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IGNvcnNEaXNhYmxp
bmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbWFza2VkVVJMU2NoZW1lczsKICAgICBV
bmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4gc3BlZWNoUmVjb2duaXRpb25Qcm92
aWRlcjsKICAgICBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiBtZWRpYVJlY29yZGVy
UHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKaW5kZXggZWM0MzlkMDY3MTRlNmRlNWI5NGUyMWZiOWNlOGVlMjM5Yzk2
MjJmYS4uOWZkN2JlYjFhZTdhZWZhZTE2NDVlZTJlMjRjZjlkMmE0ZjY3Y2Y5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTE0OCw2ICsxNDgsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBvbGRQYWdlSUQ7CiAg
ICAgZW5jb2RlciA8PCBvdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIGVuY29kZXIgPDwgY29yc0Rp
c2FibGluZ1BhdHRlcm5zOworICAgIGVuY29kZXIgPDwgbWFza2VkVVJMU2NoZW1lczsKICAgICBl
bmNvZGVyIDw8IGxvYWRzU3VicmVzb3VyY2VzOwogICAgIGVuY29kZXIgPDwgYWxsb3dlZE5ldHdv
cmtIb3N0czsKICAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZp
Y2F0aW9uOwpAQCAtNDk1LDYgKzQ5NiwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1Bh
dHRlcm5zID0gV1RGTW92ZSgqY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAorICAgIHN0ZDo6b3B0
aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBtYXNrZWRVUkxTY2hlbWVzOworICAgIGRlY29kZXIgPj4g
bWFza2VkVVJMU2NoZW1lczsKKyAgICBpZiAoIW1hc2tlZFVSTFNjaGVtZXMpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5tYXNrZWRVUkxTY2hlbWVzID0gV1RG
TW92ZSgqbWFza2VkVVJMU2NoZW1lcyk7CisKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxvYWRz
U3VicmVzb3VyY2VzOwogICAgIGRlY29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgaWYg
KCFsb2Fkc1N1YnJlc291cmNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjYjc0MTY5M2RiMzBhNzUwMmI0ODljODM5N2NlZjZj
NzM5ZmVkYTkxLi4yODZhMWU3ZDk1MGRlMGE1NGE2ZmE0Mzg4ZmNmZjUzODZlOWE2NzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBA
IC0yMTksNiArMjE5LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAg
ICAgU3RyaW5nIG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rp
c2FibGluZ1BhdHRlcm5zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtYXNrZWRVUkxTY2hlbWVzOwog
ICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07
CiAgICAgYm9vbCBsb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKICAgICBzdGQ6Om9wdGlvbmFs
PEhhc2hTZXQ8U3RyaW5nPj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGI2OTI5
NjZhM2VmNmE5ODZjYjYwM2QwZjNhMWU4ODAyNzYxNDlhM2UuLjE2ZmRjYjdmZTE0ZTIwNDlkZjBh
ZmUxNmRlMWMxMzU0Mzg2Yjg4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtODMsNiArODMsNyBAQCBSZWY8UGFn
ZUNvbmZpZ3VyYXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiB0aGlzLT5tX3VybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5t
X3VybFNjaGVtZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwog
ICAgIGNvcHktPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5n
UGF0dGVybnM7CisgICAgY29weS0+bV9tYXNrZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9tYXNrZWRV
UkxTY2hlbWVzOwogICAgIGNvcHktPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFi
bGVkID0gdGhpcy0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAg
Y29weS0+bV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHRoaXMtPm1f
dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggNDJiMmNj
NWRlZmZlZjdhY2Y3MzM0OWVmMzk2ZmY1YjRmNDJiY2NiNC4uZjhmZmJkOTcyMDFlNDU2YmQzMTM5
MzQ1NjAwN2FkNGY0YzEyNGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKQEAgLTE0Myw3ICsxNDMsMTAgQEAgcHVibGljOgog
CiAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29yc0Rpc2FibGluZ1BhdHRlcm5zKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7IH0KICAgICB2b2lkIHNldENP
UlNEaXNhYmxpbmdQYXR0ZXJucyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgcGF0dGVybnMpIHsgbV9j
b3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhdHRlcm5zKTsgfQotICAgIAorCisgICAg
Y29uc3QgSGFzaFNldDxXVEY6OlN0cmluZz4mIG1hc2tlZFVSTFNjaGVtZXMoKSBjb25zdCB7IHJl
dHVybiBtX21hc2tlZFVSTFNjaGVtZXM7IH0KKyAgICB2b2lkIHNldE1hc2tlZFVSTFNjaGVtZXMo
SGFzaFNldDxXVEY6OlN0cmluZz4mJiBzY2hlbWVzKSB7IG1fbWFza2VkVVJMU2NoZW1lcyA9IFdU
Rk1vdmUoc2NoZW1lcyk7IH0KKwogICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxO
b3RpZmljYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGls
Tm90aWZpY2F0aW9uOyB9CiAgICAgdm9pZCBzZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbihib29sIHZhbHVlKSB7IG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb24gPSB2YWx1ZTsgfQogCkBAIC0yMjcsNiArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAg
IEhhc2hNYXA8V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiBt
X3VybFNjaGVtZUhhbmRsZXJzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnM7CisgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9tYXNrZWRVUkxTY2hlbWVz
OwogICAgIGJvb2wgbV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRy
dWUgfTsKICAgICBib29sIG1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsg
dHJ1ZSB9OwogICAgIFdURjo6U3RyaW5nIG1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQppbmRleCAwNGUwNDQyOTg4MzFjY2FjY2RkNzUzMWU0NGM0MDQ1N2VkNmM1NjQ5
Li4wYTJmOWYyN2QxNjlkZTY5Yzc3MjlkMjgyYjQ4ZDNjZjYxMmM2NTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQpAQCAtOTc4LDYgKzk3OCwyMyBAQCAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5n
UGF0dGVybnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXR0ZXJucwogICAgIF9wYWdlQ29uZmln
dXJhdGlvbi0+c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0
ZXJucykpOwogfQogCistIChOU1NldDxOU1N0cmluZyAqPiAqKV9tYXNrZWRVUkxTY2hlbWVzCit7
CisgICAgY29uc3QgYXV0byYgc2NoZW1lcyA9IF9wYWdlQ29uZmlndXJhdGlvbi0+bWFza2VkVVJM
U2NoZW1lcygpOworICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqc2V0ID0gW05TTXV0YWJs
ZVNldCBzZXRXaXRoQ2FwYWNpdHk6c2NoZW1lcy5zaXplKCldOworICAgIGZvciAoY29uc3QgYXV0
byYgc2NoZW1lIDogc2NoZW1lcykKKyAgICAgICAgW3NldCBhZGRPYmplY3Q6c2NoZW1lXTsKKyAg
ICByZXR1cm4gc2V0OworfQorCistICh2b2lkKV9zZXRNYXNrZWRVUkxTY2hlbWVzOihOU1NldDxO
U1N0cmluZyAqPiAqKXNjaGVtZXMKK3sKKyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIGZv
ciAoTlNTdHJpbmcgKnNjaGVtZSBpbiBzY2hlbWVzKQorICAgICAgICBzZXQuYWRkKHNjaGVtZSk7
CisgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRNYXNrZWRVUkxTY2hlbWVzKFdURk1vdmUoc2V0
KSk7Cit9CisKIC0gKHZvaWQpX3NldExvYWRzRnJvbU5ldHdvcms6KEJPT0wpbG9hZHMKIHsKICAg
ICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldEFsbG93ZWROZXR3b3JrSG9zdHMobG9hZHMgPyBzdGQ6
Om51bGxvcHQgOiBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0PFN0cmlu
Zz4geyB9IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAppbmRleCA4MTM2NTU3
YzFmYWE1NjQwOWM5MGU4YzRhY2U1ZjEyMjIyYzUyOGJiLi44Y2FjOTllOTVlMjc4M2QyOTZhMzBj
NjM3MzAzZGZhYzU3ZjY1MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaApA
QCAtODIsNiArODIsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLQXR0cmlidXRp
b25PdmVycmlkZVRlc3RpbmcpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBX
S1dlYnNpdGVEYXRhU3RvcmUgKl93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5LCBzZXR0ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKl9jb3JzRGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40
KSwgaW9zKDEzLjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldE1h
c2tlZFVSTFNjaGVtZXM6KSBOU1NldDxOU1N0cmluZyAqPiAqX21hc2tlZFVSTFNjaGVtZXMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldERlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdh
aXRVbnRpbE5vdGlmaWNhdGlvbjopIEJPT0wgX2RlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdh
aXRVbnRpbE5vdGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQu
MCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sQ2hlY2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tF
bmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFjN2FkNDRjMjQ2YWQ3MDk3
N2FmYTdjNmU0M2JkMDNjYzIwNWI2ZWMuLjcxYjQ3ZGI0NmFmODY5MGZlNDEyMWY2ZTBmZmVlNzQy
NzM0MzJkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAt
ODM3Nyw2ICs4Mzc3LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6
OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKIAogICAgIHBhcmFtZXRl
cnMub3ZlcnJpZGRlbk1lZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBwYXJh
bWV0ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOwor
ICAgIHBhcmFtZXRlcnMubWFza2VkVVJMU2NoZW1lcyA9IG1fY29uZmlndXJhdGlvbi0+bWFza2Vk
VVJMU2NoZW1lcygpOwogICAgIHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxO
b3RpZmljYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGls
Tm90aWZpY2F0aW9uKCk7CiAgICAgcGFyYW1ldGVycy5hbGxvd2VkTmV0d29ya0hvc3RzID0gbV9j
b25maWd1cmF0aW9uLT5hbGxvd2VkTmV0d29ya0hvc3RzKCk7CiAgICAgcGFyYW1ldGVycy5sb2Fk
c1N1YnJlc291cmNlcyA9IG1fY29uZmlndXJhdGlvbi0+bG9hZHNTdWJyZXNvdXJjZXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMGFhN2Zh
NGQ0NjU3MzJkODM0YTlhZDI1N2E1MTUzZDFiYjBkOGI2Ny4uZTFjNjBlZWExZDM5MGRmYWMwNTll
MjMxYTI0OThkNjYxMjFiZTExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTY0Myw2ICs2NDMsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiAgICAgICAgIHN5bmNocm9uaXplQ09SU0Rpc2FibGluZ1BhdHRlcm5zV2l0aE5ldHdvcmtQcm9j
ZXNzKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gcGFy
c2VBbmRBbGxvd0FjY2Vzc1RvQ09SU0Rpc2FibGluZ1BhdHRlcm5zKG1fY29yc0Rpc2FibGluZ1Bh
dHRlcm5zKTsKIAorICAgIHBhZ2VDb25maWd1cmF0aW9uLm1hc2tlZFVSTFNjaGVtZXMgPSBwYXJh
bWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXM7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlclNjcmlw
dHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBwYXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRzU3Vi
cmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlczsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi5hbGxvd2VkTmV0d29ya0hvc3RzID0gcGFyYW1ldGVycy5hbGxvd2VkTmV0d29ya0hv
c3RzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGIzZTZhZDRiMjNkZmU2NTRhOTJlYzNlZDdiZWM3NTcxN2E4Nzk0ZTYuLjc4OTVmYmY3OWRmMTYx
NDcyNmQyOTUxNWRhMWFkNjA0ZGY5NDYxMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNC0wMyAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8g
bWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZhU2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzYKKyAgICAgICAgcmRhcjovLzgxOTkxMjQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06Cisg
ICAgICAgIChURVNUKFdlYktpdCwgQ29uZmlndXJhdGlvbk1hc2tlZFVSTFNjaGVtZXMpKTogQWRk
ZWQuCisKIDIwMjItMDMtMjIgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIFtNZXJnZS1RdWV1ZV0gQWRkIFZhbGlkYXRlU3F1YXNoZWQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQppbmRleCBjMDc1ZGQ1MzRmZGE4NmY2NzkyYzE5YWRkMGUyNTFlOGFm
MzAyMDNkLi44ZmFmODliNjk4Y2Q3MjkyODY0ZDNiNTNmNmQzNDYzYjMwZjhmMmExIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0xNzIsMyArMTcyLDY1IEBAIFRFU1QoV2ViS2l0
LCBDb25maWd1cmF0aW9uRGlzYWJsZUphdmFTY3JpcHROZXN0ZWRCb2R5KQogICAgIE5TU3RyaW5n
ICpib2R5SFRNTCA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5ib2R5LmlubmVySFRNTCJdOwogICAgIEVYUEVDVF9XS19TVFJFUShib2R5SFRNTCwgQCI8
dGFibGU+PC90YWJsZT4iKTsKIH0KKworVEVTVChXZWJLaXQsIENvbmZpZ3VyYXRpb25NYXNrZWRV
UkxTY2hlbWVzKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgRVhQRUNUX0VRKFtjb25maWd1cmF0aW9uIF9tYXNr
ZWRVUkxTY2hlbWVzXS5jb3VudCwgMFUpOworCisgICAgW2NvbmZpZ3VyYXRpb24gX3NldE1hc2tl
ZFVSTFNjaGVtZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOkAidGVzdC1zY2hlbWUiLCBAImFub3Ro
ZXItc2NoZW1lIiwgbmlsXV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW1nIHNyYz1cInRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9i
YXIuanBnXCI+PGltZyBzcmM9XCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nXCI+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKworICAgIE5T
U3RyaW5nICppbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLnNyYyJdOworICAgIEVY
UEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8i
KTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uZ2V0QXR0cmlidXRl
KFwic3JjXCIpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1t
YXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImlt
Z1wiKVswXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3JjXCIpLnZhbHVlIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisg
ICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5zcmMiXTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyIpOworCisg
ICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5nZXRBdHRyaWJ1dGUoXCJzcmNc
IikiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5j
b20vYmF6LnBuZyIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5n
ZXRBdHRyaWJ1dGVOb2RlKFwic3JjXCIpLnZhbHVlIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGlt
YWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmciKTsKKworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxpbWcgc3Jjc2V0PVwidGVzdC1zY2hlbWU6
Ly9mb28uY29tL2Jhci5qcGcgMXgsIGJhci5qcGcgMngsIGFub3RoZXItc2NoZW1lOi8vZm9vLmNv
bS9iYXIuZ2lmIDN4XCI+PGltZyBzcmNzZXQ9XCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIDJ4
LCBiYXoucG5nIDF4XCI+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9l
eGFtcGxlLmNvbSJdXTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0u
c3Jjc2V0Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNr
ZWQtdXJsOi8vaGlkZGVuLyAxeCwgaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXIuanBnIDJ4LCB3ZWJr
aXQtbWFza2VkLXVybDovL2hpZGRlbi8gM3giKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoXCJpbWdcIilbMF0uZ2V0QXR0cmlidXRlKFwic3Jjc2V0XCIpIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAxeCwgYmFy
LmpwZyAyeCwgd2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDN4Iik7CisKKyAgICBpbWFnZVNv
dXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0dHJpYnV0ZU5vZGUoXCJzcmNzZXRcIiku
dmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tl
ZC11cmw6Ly9oaWRkZW4vIDF4LCBiYXIuanBnIDJ4LCB3ZWJraXQtbWFza2VkLXVybDovL2hpZGRl
bi8gM3giKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uc3Jjc2V0
Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29t
L2Jhei5wbmcgMngsIGh0dHBzOi8vZXhhbXBsZS5jb20vYmF6LnBuZyAxeCIpOworCisgICAgaW1h
Z2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5nZXRBdHRyaWJ1dGUoXCJzcmNzZXRcIiki
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20v
YmF6LnBuZyAyeCwgYmF6LnBuZyAxeCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChc
ImltZ1wiKVsxXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3Jjc2V0XCIpLnZhbHVlIl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmcgMngs
IGJhei5wbmcgMXgiKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIjxzY3JpcHQgc3JjPVwiYW5vdGhlci1zY2hlbWU6Ly9mb28uY29tL2Jhci5qc1wiPjwvc2Ny
aXB0PjxzY3JpcHQgc3JjPVwiaHR0cDovL2FwcGxlLmNvbS9iYXouanNcIj48L3NjcmlwdD4iIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOworCisg
ICAgTlNTdHJpbmcgKnNjcmlwdFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0XCIpWzBdLnNyYyJd
OworICAgIEVYUEVDVF9XS19TVFJFUShzY3JpcHRTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6
Ly9oaWRkZW4vIik7CisKKyAgICBzY3JpcHRTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFwiKVsx
XS5zcmMiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoc2NyaXB0U291cmNlLCBAImh0dHA6Ly9hcHBs
ZS5jb20vYmF6LmpzIik7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6QCI8aWZyYW1lIHNyYz1cInRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9iYXIuaHRtbFwiPjwvaWZy
YW1lPjxpZnJhbWUgc3JjPVwiaHR0cDovL2FwcGxlLmNvbS9iYXouaHRtbFwiPjwvaWZyYW1lPiIg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CisK
KyAgICBOU1N0cmluZyAqaHRtbFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdOworICAgIEVYUEVDVF9FUShbaHRt
bFNvdXJjZSBjb250YWluc1N0cmluZzpAIjxpZnJhbWUgc3JjPVwid2Via2l0LW1hc2tlZC11cmw6
Ly9oaWRkZW4vXCI+PC9pZnJhbWU+Il0sIFlFUyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456580</attachid>
            <date>2022-04-04 09:49:26 -0700</date>
            <delta_ts>2022-04-04 11:27:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220404094926.patch</filename>
            <type>text/plain</type>
            <size>52169</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjhiZTQ2MDVlZjQ5MWFhYmRiNDU3Yzk0ZWQ3ZmYzNmMyMDU5MWZlLi5mNjJmOTM1MWVmZjJlOGFh
MDU0OGYwZGE4YzFiZWE2M2ExMDVhOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZh
U2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1NzYKKyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOiBSZXR1cm4gIltleHRlbnNpb24g
Y29kZV0iIGZvciBhbnkgc291cmNlVVJMIHRoYXQgc3RhcnRzIHdpdGggInNhZmFyaS0iLgorICAg
ICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOiBBZGRlZCBzb21lIHdo
aXRlc3BhY2UuCisKIDIwMjItMDMtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBDaGFuZ2UgRGF0ZS5wYXJzZSB0byBzdG9wIHJldHVybmluZyBu
dW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uMjk1ZDMyZmQ1YzY0ZDM4ZTA0ODNlYTc5YTI4Mzlj
YjJkM2E5MTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5u
ZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpvdXRlckhUTUwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgY29uc3QpOiBBZGRlZC4g
TW92ZWQgZnJvbSBNYXJrdXBBY2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGFuZCBhZGRl
ZCBuZXcgTm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSBwYXRoLgorICAgICAgICBDaGFuZ2VkIFll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5IGFuZCBpbmNsdWRlZCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoKSBjaGVjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29u
c3QpOiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBk
aXJlY3RseS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDogVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIGZvciBnZXRBdHRyaWJ1dGUuCisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
aW5uZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9y
UHJpdmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgICogZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVs
YXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGNvbnN0KTogVXNlIEVsZW1lbnQ6OnJlc29sdmVVUkxT
dHJpbmdJZk5lZWRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQpOiBDaGFuZ2Vk
IFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3Qp
OiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRp
bmdzIGNvbnN0KTogQWRkZWQuIFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyB3aXRoIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnNldFNyY3NldEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIyLTAzLTIy
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmE2
ZmZmOGU1YjZhNmU1OTBlNTY2M2U0YzM4NzkyYmQ0YjM4NzYzLi4wYjJjM2QyNzY0Y2ZlNDUyNWU1
OTZhNTIxMTJhYjc0OTJjOTNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA0
LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFy
Oi8vODE5OTEyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogQWRkZWQgbWFz
a2VkVVJMU2NoZW1lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBBZGRlZCBt
YXNrZWRVUkxTY2hlbWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Om1hc2tlZFVSTFNjaGVt
ZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldE1h
c2tlZFVSTFNjaGVtZXMpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX21hc2tlZFVSTFNjaGVtZXNdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBBZGRlZCBtYXNrZWRVUkxTY2hlbWVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisKIDIwMjItMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tIGFuZCBTaGFyZWRWaWRlb0ZyYW1lLmNwcCBkbyBub3QgbmVlZCB0byBiZSBidWls
dCBhcyBwYXJ0IG9mIFdlYkNvbnRlbnQgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAppbmRleCA2YjhmM2RmNjMzNTA0NWQ1YWMyMWVmNWEw
ODJkNDg2ODA0ZmEzZTZiLi5hMjY1YjE4MDNlMjljMmIxZTY2OTA2MDNmYzA5Njc0MDE4MTViZjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAt
NjMsMTEgKzYzLDEzIEBAIFN0cmluZyBTdGFja0ZyYW1lOjpzb3VyY2VVUkwoKSBjb25zdAogICAg
IGlmIChtX2lzV2FzbUZyYW1lKQogICAgICAgICByZXR1cm4gIlt3YXNtIGNvZGVdIl9zOwogCi0g
ICAgaWYgKCFtX2NvZGVCbG9jaykgeworICAgIGlmICghbV9jb2RlQmxvY2spCiAgICAgICAgIHJl
dHVybiAiW25hdGl2ZSBjb2RlXSJfczsKLSAgICB9CiAKICAgICBTdHJpbmcgc291cmNlVVJMID0g
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCBoZXJlLCBidXQgY29tZSBmcm9tIHNvbWUg
QVBJIHdpdGggd2hhdCBzY2hlbWVzIHRvIG1hc2suCisgICAgaWYgKHNvdXJjZVVSTC5zdGFydHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoInNhZmFyaS0iX3MpKQorICAgICAgICByZXR1cm4gIltleHRl
bnNpb24gY29kZV0iX3M7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBzb3VyY2VVUkw7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC05MiwxMSArOTQs
MTMgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KKwogICAgIFN0
cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkgewogICAgICAgICBpZiAobV9jYWxsZWUtPmlz
T2JqZWN0KCkpCiAgICAgICAgICAgICBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZt
LCBqc0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZS5nZXQoKSkpLmltcGwoKTsKICAgICB9CisKICAg
ICByZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXgg
NzFiMzZiY2U1NTNjYzFlNGRmMzk5NmQyYmQ0YTI4YWVkMDdhMmM5Mi4uZWVhYmJlNTQzMDA1YzFh
MDU0MzE1ZmMzYTE1NTNiNWRiYjAxY2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgc3ViIEdl
dHRlckV4cHJlc3Npb24KIAogICAgIG15ICRmdW5jdGlvbk5hbWU7CiAgICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVUkwifSkgewotICAgICAgICAkZnVuY3Rpb25OYW1l
ID0gImdldFVSTEF0dHJpYnV0ZSI7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJMQXR0
cmlidXRlRm9yQmluZGluZ3MiOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJib29sZWFuIikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24iOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJsb25nIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBiNDQ3Mzk1ZWUzN2M2NDIwYTI4NDExYjI2YzdjNTBk
YjI2Nzc5YWRjLi5kYTlhNzUzYzY1ZDRkYmFlYjBmZjJkMTMzN2I1MDM1M2EyODUxNGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcApAQCAtMzg5MCw3ICszODkwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ial9yZWZsZWN0ZWRVUkxBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2wKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRy
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0
ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKSkp
OwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3JlZmxlY3RlZFVSTEF0
dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCkBAIC0zOTIxLDcgKzM5MjEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHJH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0cikpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfcmVmbGVjdGVkVVNWVVJMQXR0ciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKQEAgLTQwNDUsNyArNDA0NSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggMTJjNDAyNmQ3Yjc1MmUxNGUxMDkxMGQy
YzZhZTBmODIxNmFlYTc5Ni4uNDM1YTM0NDhhYzEwY2Y4MWJiZjM0M2E4ZDE0MTI3MmMzNjEzMDk5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIwLDEwICsxMjAsMTAgQEAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogQXR0cjo6c3R5bGUoKQogICAgIHJldHVybiAmbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVE
ZWNsYXJhdGlvbigpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBBdHRyOjp2YWx1ZSgpIGNvbnN0
CitBdG9tU3RyaW5nIEF0dHI6OnZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50KQot
ICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MocXVhbGlm
aWVkTmFtZSgpKTsKICAgICByZXR1cm4gbV9zdGFuZGFsb25lVmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5o
CmluZGV4IGFjOTRjODA5ZTkzNjNjYjRjNjc3NmUzNTQ2MDYyMTBhYmM0NTI3YWMuLmFlYTQ4M2I4
MGE1NzYyMzE0MDE1ZjY5NWQ3MTM2MjZiNWI2MjhiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHF1YWxpZmllZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0ODI1NDZlNzczOWI1
NTA1ZjhjMGYyODEuLjkwN2FjMmEyMDY2MGY4ODIzZjVkYzUwMGNiZDA3ZGYwYzFhNzFhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTYwMCw2ICs1NjAwLDM3IEBAIFVSTCBEb2N1bWVu
dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEZvcmNlVVRGOCBmb3JjZVVURjgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMLCBmb3JjZVVURjgpOwog
fQogCitib29sIERvY3VtZW50OjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJiB1
cmwpIGNvbnN0Cit7CisgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFnZS0+c2hvdWxkTWFza1VS
TEZvckJpbmRpbmdzKHVybCk7Cit9CisKK1VSTCBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3NJZk5lZWRlZChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoc2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzKHVybCkpKQorICAgICAgICByZXR1cm4gbWFza2VkVVJMRm9y
QmluZGluZ3MoKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBBdG9tU3RyaW5nJiBEb2N1
bWVudDo6bWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsKCJ3ZWJraXQtbWFz
a2VkLXVybDovL2hpZGRlbi8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmlu
ZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PFVSTD4gbWFza2VkVVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWFza2VkVVJMLmNvbnN0
cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpLnN0cmluZygpKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gbWFza2VkVVJMOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRCYWNrRm9yd2FyZENh
Y2hlU3RhdGUoQmFja0ZvcndhcmRDYWNoZVN0YXRlIHN0YXRlKQogewogICAgIGlmIChtX2JhY2tG
b3J3YXJkQ2FjaGVTdGF0ZSA9PSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDNkOTNk
OGRiZjlmMDNjMTQ3NTEwNDM2NWRjMDcxOTc5N2MzYWFjYy4uOTRhNzIzMjU5NTBkNWRjZGIxNzU1
ZGE3ZTg2OTE2MzdkNjY3NTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTcyMCw2ICs3MjAs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAgICBVUkwg
Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUsIEZv
cmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRNYXNrVVJM
Rm9yQmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgVVJMIG1hc2tlZFVSTEZvckJpbmRp
bmdzSWZOZWVkZWQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbWFz
a2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIG1hc2tlZFVS
TEZvckJpbmRpbmdzKCkgY29uc3Q7CisKICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjk5N2JmZDBmZGI5ZmVl
ZjQ0M2Y4YjNjY2E0ZDIwZTYxYzBiN2M5Yy4uMGUzZjA4NmZmNmVjMDhiOGYwZGFjNzY5ZTM2NWIx
ODNiODI1OWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzIwLDYgKzcyMCwyMyBAQCBj
b25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAorQXRvbVN0cmluZyBF
bGVtZW50OjpnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBSZXNvbHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnREYXRh
KCkpCisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOworCisgICAgc3luY2hyb25pemVBdHRyaWJ1
dGUobmFtZSk7CisKKyAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1
dGVCeU5hbWUobmFtZSk7CisgICAgaWYgKCFhdHRyaWJ1dGUpCisgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOworCisgICAgaWYgKGF0dHJpYnV0ZUNvbnRhaW5zVVJMKCphdHRyaWJ1dGUpKQorICAg
ICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShkb2N1bWVudCgpLmJhc2VV
UkwoKSwgKmF0dHJpYnV0ZSwgcmVzb2x2ZVVSTHMpOworCisgICAgcmV0dXJuIGF0dHJpYnV0ZS0+
dmFsdWUoKTsKK30KKwogVmVjdG9yPFN0cmluZz4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTmFtZXMo
KSBjb25zdAogewogICAgIFZlY3RvcjxTdHJpbmc+IGF0dHJpYnV0ZXNWZWN0b3I7CkBAIC0xNzk4
LDYgKzE4MTUsMTEgQEAgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNv
bnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxBdG9t
KCk7CiB9CiAKK0F0b21TdHJpbmcgRWxlbWVudDo6Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29u
c3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBSZXNvbHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QK
K3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoUXVhbGlmaWVkTmFtZShudWxs
QXRvbSgpLCBsb2NhbE5hbWUsIG51bGxBdG9tKCkpLCByZXNvbHZlVVJMcyk7Cit9CisKIGNvbnN0
IEF0b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5h
bWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBjb25zdAogewogICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgpLCBsb2NhbE5hbWUsIG5h
bWVzcGFjZVVSSSkpOwpAQCAtMzI3MCwxMiArMzI5MiwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBF
bGVtZW50OjptZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9kZSkKIAogU3RyaW5nIEVsZW1l
bnQ6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0
aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJlbik7CisgICAgcmV0dXJuIHNl
cmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJl
biwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpOwogfQog
CiBTdHJpbmcgRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc2VyaWFs
aXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUp
OworICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywgU2VyaWFsaXplZE5vZGVzOjpT
dWJ0cmVlSW5jbHVkaW5nTm9kZSwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJM
c0ZvclByaXZhY3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjpzZXRPdXRlckhU
TUwoY29uc3QgU3RyaW5nJiBodG1sKQpAQCAtMzg0OCw2ICszODcwLDExIEBAIFVSTCBFbGVtZW50
OjpnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1dGUobmFtZSkpOwogfQogCitV
UkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxGb3JCaW5k
aW5nc0lmTmVlZGVkKGdldFVSTEF0dHJpYnV0ZShuYW1lKSk7Cit9CisKIFVSTCBFbGVtZW50Ojpn
ZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAog
ewogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC00NTUwLDkgKzQ1NzcsMzcgQEAgYm9vbCBFbGVtZW50
OjpjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0CiAgICAgcmV0dXJuICFlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVB
dHRyKSwgImltZyIpOwogfQogCi1TdHJpbmcgRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1
dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25z
dAorU3RyaW5nIEVsZW1lbnQ6OnJlc29sdmVVUkxTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMsIGNvbnN0IFVSTCYgYmFzZSkgY29u
c3QKK3sKKyAgICBVUkwgY29tcGxldGVVUkwgPSBiYXNlLmlzTnVsbCgpID8gZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTCh1cmxTdHJpbmcpIDogVVJMKGJhc2UsIHVybFN0cmluZyk7CisKKyAgICBzd2l0
Y2ggKHJlc29sdmVVUkxzKSB7CisgICAgY2FzZSBSZXNvbHZlVVJMczo6WWVzOgorICAgICAgICBy
ZXR1cm4gY29tcGxldGVVUkwuc3RyaW5nKCk7CisKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpZZXNF
eGNsdWRpbmdVUkxzRm9yUHJpdmFjeTogeworICAgICAgICBpZiAoZG9jdW1lbnQoKS5zaG91bGRN
YXNrVVJMRm9yQmluZGluZ3MoY29tcGxldGVVUkwpKQorICAgICAgICAgICAgcmV0dXJuIGRvY3Vt
ZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3MoKS5zdHJpbmcoKTsKKyAgICAgICAgaWYgKCFjb21w
bGV0ZVVSTC5pc0xvY2FsRmlsZSgpKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlVVJMLnN0
cmluZygpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpO
b0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OgorICAgICAgICBpZiAoZG9jdW1lbnQoKS5zaG91bGRN
YXNrVVJMRm9yQmluZGluZ3MoY29tcGxldGVVUkwpKQorICAgICAgICAgICAgcmV0dXJuIGRvY3Vt
ZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3MoKS5zdHJpbmcoKTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFJlc29sdmVVUkxzOjpObzoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
cmV0dXJuIHVybFN0cmluZzsKK30KKworU3RyaW5nIEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0
cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwg
UmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChiYXNlLCBh
dHRyaWJ1dGUudmFsdWUoKSkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHJlc29sdmVVUkxTdHJpbmdJ
Zk5lZWRlZChhdHRyaWJ1dGUudmFsdWUoKSwgcmVzb2x2ZVVSTHMsIGJhc2UpOwogfQogCiBFeGNl
cHRpb25PcjxOb2RlKj4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29uc3QgU3RyaW5nJiB3aGVy
ZSwgUmVmPE5vZGU+JiYgbmV3Q2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBhNTI4ZDE3MDVl
ZGExYTIzZjVkOWYxMzNmN2YyNmZmNWUzZWE1ZjkwLi44N2UzN2MzOTcxNWFmNWJiMjY3ZWM4YWI2
NzkyOGQ1YzFlMTc1MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTgxLDYgKzgxLDcgQEAgZW51
bSBjbGFzcyBBbmltYXRpb25JbXBhY3Q7CiBlbnVtIGNsYXNzIEV2ZW50SGFuZGxpbmcgOiB1aW50
OF90OwogZW51bSBjbGFzcyBFdmVudFByb2Nlc3NpbmcgOiB1aW50OF90OwogZW51bSBjbGFzcyBJ
c1N5bnRoZXRpY0NsaWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgUmVzb2x2ZVVS
THMgOiB1aW50OF90IHsgTm8sIE5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFllcywgWWVzRXhj
bHVkaW5nVVJMc0ZvclByaXZhY3kgfTsKIGVudW0gY2xhc3MgU2VsZWN0aW9uUmVzdG9yYXRpb25N
b2RlIDogdWludDhfdDsKIAogc3RydWN0IEdldEFuaW1hdGlvbnNPcHRpb25zOwpAQCAtMTA3LDYg
KzEwOCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBB
dG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAg
IEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpIGNv
bnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFF1YWxpZmllZE5hbWVzPgogICAgIGlubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IFF1YWxpZmllZE5hbWVzJi4uLikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KTsKQEAgLTEzOSw5ICsxNDEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFzQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJp
bmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21T
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZU5TKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBj
b25zdDsKIAorICAgIEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGlu
Z1VSTHNGb3JQcml2YWN5KSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFF1YWxpZmllZE5h
bWU+IHBhcnNlQXR0cmlidXRlTmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpOwpAQCAtNDE2LDEwICs0MjAsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKSBjb25zdCB7IHJldHVybiBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0OworICAgIFN0cmluZyByZXNvbHZlVVJMU3RyaW5n
SWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVS
THM6OlllcywgY29uc3QgVVJMJiBiYXNlID0gVVJMKCkpIGNvbnN0OworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBB
dHRyaWJ1dGUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgZ2V0VVJMQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBVUkwgZ2V0VVJMQXR0cmlidXRl
Rm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIFVSTCBnZXROb25F
bXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5pZGwKaW5kZXggYTUyMzMxZmY4N2EyODJkMDE2YzkyNjEwNTI5ZjM4NGMyYzNkNDcwNC4u
ZGZiNGQ5ZjI4NGU5NmZhYzkyOTA0NmY3M2YwODA2MmQ3OWQ5OWQ5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgIFtET01KSVQ9UmVhZERPTV0gYm9vbGVhbiBo
YXNBdHRyaWJ1dGVzKCk7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5IGF0dHJpYnV0ZSBOYW1l
ZE5vZGVNYXAgYXR0cmlidXRlczsKICAgICBzZXF1ZW5jZTxET01TdHJpbmc+IGdldEF0dHJpYnV0
ZU5hbWVzKCk7Ci0gICAgW0RPTUpJVD1SZWFkRE9NXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShE
T01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CisgICAgW0RPTUpJVD1SZWFkRE9NLCBJbXBsZW1lbnRl
ZEFzPWdldEF0dHJpYnV0ZUZvckJpbmRpbmdzXSBET01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01T
dHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgRE9NU3RyaW5nPyBnZXRBdHRyaWJ1dGVOUyhET01T
dHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7CiAgICAgW0NFUmVhY3Rp
b25zXSB1bmRlZmluZWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFsaWZpZWROYW1lLCBET01T
dHJpbmcgdmFsdWUpOwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZU5T
KERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlmaWVkTmFtZSwgRE9NU3Ry
aW5nIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBhMzIyZGVjNDFkZGY0
YjM1YmUxODMxNmY5YWYwNGUyNTBjYjZlYTliLi41MjlhZTkwYmNjMjI5YzM1N2FhNDYxYjc4ZDdm
ZGZmYWU0ZjcxOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xNzgsNyArMTc4
LDcgQEAgU3R5bGVTaGVldExpc3QmIFNoYWRvd1Jvb3Q6OnN0eWxlU2hlZXRzKCkKIAogU3RyaW5n
IFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZy
YWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJlbik7CisgICAg
cmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVz
T2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZh
Y3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTaGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29u
c3QgU3RyaW5nJiBtYXJrdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFmMTI3ZWMxMDU0NDAu
LjgxZjkwOGUwZGRiOTI1Y2EyYWUzYjY1NzM3M2RiYTIxMzZkMzk0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yMzIsMTkgKzIzMiw3IEBA
IHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzV2l0aE5hbWVzcGFjZXMoTm9k
ZSYgdGFyZ2V0Tm9kZSwgU2VyaWFsaXplCiAKIFN0cmluZyBNYXJrdXBBY2N1bXVsYXRvcjo6cmVz
b2x2ZVVSTElmTmVlZGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKSBjb25zdAogewotICAgIHN3aXRjaCAobV9yZXNvbHZlVVJMcykgewotICAgIGNhc2Ug
UmVzb2x2ZVVSTHM6OlllczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpLnN0cmluZygpOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6WWVz
RXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3k6Ci0gICAgICAgIGlmICghZWxlbWVudC5k
b2N1bWVudCgpLnVybCgpLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVu
dC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykuc3RyaW5nKCk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6Tm86Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gdXJsU3RyaW5nOworICAgIHJldHVybiBlbGVtZW50LnJlc29sdmVVUkxTdHJp
bmdJZk5lZWRlZCh1cmxTdHJpbmcsIG1fcmVzb2x2ZVVSTHMpOwogfQogCiB2b2lkIE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdGFydEFwcGVuZGluZ05vZGUoY29uc3QgTm9kZSYgbm9kZSwgTmFtZXNwYWNl
cyogbmFtZXNwYWNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tCmluZGV4IGY4OGE4MTZlYTYzNzZkMTcyNDBhNjQ4MTFlOTY4YTk1ZjM4OWM4MDMuLjZlOWNk
YTcwMDE4YmM2NGZhN2MwN2I2NzU0ZTc1Y2NkZDcyZTQxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgRWRp
dG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogewogICAgIGlmIChJbWFnZU92ZXJsYXk6Omlz
SW5zaWRlT3ZlcmxheShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVh
cmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6
Olllcyk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogfQogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0
b3JHdGsuY3BwCmluZGV4IDk0ZTM4MTM3NWI5NzcxNzA4MjgyOGUwYzk2NDhiNTQ5N2Q2ZjI0ZmUu
LmVmOTlhMmVmNjliNGUxNDEzOTc4MjA3M2NiMjAyMWNhZTRmYThiYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQog
ICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBhc3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9h
cmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlID0gY2FuU21hcnRDb3B5T3JEZWxldGUoKTsK
ICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVy
KCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zp
c3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2
ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21w
b3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXpl
UHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQuY29udGVudE9yaWdpbiA9
IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlODgyYmJjN2QwZjkx
Y2FkNzZjMzgyNTA4ZTlhM2YuLjkwMDVjOTU2ZDVlYjU2M2Q3YjNmYzJkMDdlOGY1ZDhmZGIxNzBi
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQ
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNw
cApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIHsKICAgICBQYXN0ZWJvYXJkV2ViQ29udGVudCBw
YXN0ZWJvYXJkQ29udGVudDsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRU
ZXh0Rm9yRGF0YVRyYW5zZmVyKCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2
YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQu
bWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZC53cml0
ZShwYXN0ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQppbmRleCAxYTJjZDAzZjAwY2VlMDI2OTI2YmMzYTI0ZmZhOWJiYzVlMDg5NjYzLi4y
ZmY5YmJkNDgwYzU2Njc5MGQzMWM4ZjYzYjY3NjY2YWMxNDYzZDIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBFZGl0b3I6
OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYg
aW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQgPSBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQpOwogCiAgICAgaWYgKGF1
dG8gaW1hZ2VSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoaW1hZ2VFbGVtZW50KSkKLSAg
ICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQgPSBzZXJpYWxpemVQcmVzZXJ2
aW5nVmlzdWFsQXBwZWFyYW5jZShWaXNpYmxlU2VsZWN0aW9uIHsgKmltYWdlUmFuZ2UgfSwgUmVz
b2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CisgICAgICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9y
bWF0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoVmlzaWJsZVNlbGVjdGlv
biB7ICppbWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogCiAgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDIwYjNmY2Y4ZGRmOTU0NDM0OWIxODY0ZWY5ZDli
ZjBmYjRhZWU2NDYuLmFkY2E5ZDFlMDk1YjliZTc0MjEwY2E0ZDUxNzYxZDYxYzRlYjUzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEwMTEsNyArMTAxMSw3IEBAIFN0cmluZyBz
YW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+
JiYgZnJhZ21lbnQsIERvCiAKICAgICAvLyBTZXJpYWxpemVDb21wb3NlZFRyZWU6Ok5vIGJlY2F1
c2UgdGhlcmUgY2FuJ3QgYmUgYSBzaGFkb3cgdHJlZSBpbiB0aGUgcGFzdGVkIGZyYWdtZW50Lgog
ICAgIGF1dG8gcmVzdWx0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2VJbnRl
cm5hbChmaXJzdFBvc2l0aW9uSW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbGFzdFBvc2l0aW9u
SW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbnVsbHB0ciwKLSAgICAgICAgUmVzb2x2ZVVSTHM6
Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRy
ZWU6Ok5vLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpZZXMsIENvbnZlcnRCbG9ja3NUb0lubGlu
ZXM6Ok5vLCAgU3RhbmRhcmRGb250RmFtaWx5U2VyaWFsaXphdGlvbk1vZGU6OlN0cmlwLCBtc29M
aXN0TW9kZSk7CisgICAgICAgIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpObywgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVz
LCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgIFN0YW5kYXJkRm9udEZhbWlseVNlcmlhbGl6
YXRpb25Nb2RlOjpTdHJpcCwgbXNvTGlzdE1vZGUpOwogCiAgICAgaWYgKG1zb0xpc3RNb2RlICE9
IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCmluZGV4IDkyNTExYTkzNDY2YmE5NDg0MTI0MWJhZmQ2NGUwZmNkMTNlMTFh
ZTMuLjQxNzQwZWZmN2JkOWM1YTU1MTNmZjEwM2MyYmVjNDlhNmIwYTgyNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgpAQCAtNzAs
NyArNzEsNiBAQCBib29sIGlzUGxhaW5UZXh0TWFya3VwKE5vZGUqKTsKIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHVzZWQgYnkgSFRNTEVsZW1lbnQgJiBTaGFkb3dSb290IHRvIHJlcGxhY2UgdGhlIGNo
aWxkcmVuIHdpdGggcmVzcGVjdGVkIGZyYWdtZW50L3RleHQuCiBFeGNlcHRpb25Pcjx2b2lkPiBy
ZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYsIFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmKTsKIAotZW51bSBjbGFzcyBSZXNvbHZlVVJMcyA6IHVpbnQ4X3QgeyBObywgWWVz
LCBZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSB9OwogZW51bSBjbGFzcyBDb252
ZXJ0QmxvY2tzVG9JbmxpbmVzIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgU2Vy
aWFsaXplQ29tcG9zZWRUcmVlIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShjb25zdCBTaW1wbGVS
YW5nZSYsIFZlY3RvcjxOb2RlKj4qID0gbnVsbHB0ciwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9
IEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6Tm8sIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDc5OGZlODZiYzRm
MzIwMjY3MWNkMmQ3MTQ2NjAwMGI2ZWJhYmI2YmYuLjYyZTE5Y2U2NWI0MWE1YTQxOGVlMTgwMzky
OTg0YjYzYzZiZGJmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtNTY1LDcgKzU2NSw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YXR0cmlidXRlQ29u
dGFpbnNVUkwoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgICAgIHx8IEhU
TUxFbGVtZW50OjphdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpOwogfQogCi1TdHJpbmcg
SFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwm
IGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAorU3RyaW5nIEhUTUxJbWFn
ZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0
CiB7CiAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3Jjc2V0QXR0cikgewogICAgICAgICBW
ZWN0b3I8SW1hZ2VDYW5kaWRhdGU+IGltYWdlQ2FuZGlkYXRlcyA9IHBhcnNlSW1hZ2VDYW5kaWRh
dGVzRnJvbVNyY3NldEF0dHJpYnV0ZShTdHJpbmdWaWV3KGF0dHJpYnV0ZS52YWx1ZSgpKSk7CkBA
IC01NzMsNyArNTczLDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0lu
QXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHQKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjYW5kaWRhdGUgOiBpbWFnZUNhbmRpZGF0ZXMpIHsKICAgICAgICAgICAgIGlm
ICgmY2FuZGlkYXRlICE9ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNh
bmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoY2FuZGlkYXRlLnN0cmluZy50b1N0cmlu
ZygpLCByZXNvbHZlVVJMcywgYmFzZSkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZW5z
aXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAnLCBjYW5kaWRhdGUuZGVuc2l0eSwgJ3gnKTsKICAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKQEAgLTU4MSw3
ICs1ODEsOCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1
dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dAogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGJhc2UsIGF0dHJpYnV0ZSk7CisKKyAgICByZXR1
cm4gSFRNTEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoYmFzZSwgYXR0cmli
dXRlLCByZXNvbHZlVVJMcyk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6bWF0Y2hlc1Vz
ZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QKQEAgLTg3Niw2ICs4NzcsMTYg
QEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1lbnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9y
VGVzdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXItPnBlbmRpbmdEZWNvZGVQ
cm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwogfQogCitBdG9tU3RyaW5nIEhUTUxJbWFnZUVsZW1l
bnQ6OnNyY3NldEZvckJpbmRpbmdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
Rm9yQmluZGluZ3Moc3Jjc2V0QXR0ciwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5KTsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRTcmNzZXRGb3JCaW5kaW5n
cyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHNyY3NldEF0dHIsIHZhbHVlKTsKK30KKwogY29uc3QgQXRvbVN0cmluZyYg
SFRNTEltYWdlRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzKCkgY29uc3QKIHsKICAgICBzdGF0
aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdl
ciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggMWQ5OWQzMjE3YjU2ZmUzYzFjNWQwYzU1OGQ3ZWI0NzNh
OTg5YzNlYy4uZTg0YjVhMjlmZjZjZjAxYmEyMzczYTRhNGM0ODAxMjExMmFkM2FjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxvYWREZWZlcnJlZEltYWdlKCk7CiAKKyAgICBBdG9tU3RyaW5nIHNy
Y3NldEZvckJpbmRpbmdzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTcmNzZXRGb3JCaW5kaW5ncyhj
b25zdCBBdG9tU3RyaW5nJik7CisKICAgICBjb25zdCBBdG9tU3RyaW5nJiBsb2FkaW5nRm9yQmlu
ZGluZ3MoKSBjb25zdDsKICAgICB2b2lkIHNldExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9t
U3RyaW5nJik7CiAKQEAgLTE3Myw3ICsxNzYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1VS
TEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGF0
dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IFN0cmluZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29u
c3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGNvbXBsZXRlVVJMc0lu
QXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmLCBSZXNvbHZl
VVJMcyA9IFJlc29sdmVVUkxzOjpZZXMpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0Ry
YWdnYWJsZUlnbm9yaW5nQXR0cmlidXRlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKaW5kZXggZjkzNjM4NjJj
OTI4NGM2YTBjNzhiM2E3MGM3N2Y2MjE0MDgxZjAyNS4uY2RiNjk2MzM5NDZkM2JkN2RjNzc5ZDVh
ZmYwN2NkMmRkNWQ0YmFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aWRsCkBAIC0yOCw3ICsyOCw3IEBACiBdIGludGVyZmFjZSBIVE1MSW1hZ2VFbGVtZW50IDogSFRN
TEVsZW1lbnQgewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0
ZSBET01TdHJpbmcgYWx0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVS
TF0gYXR0cmlidXRlIFVTVlN0cmluZyBzcmM7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdF0gYXR0cmlidXRlIFVTVlN0cmluZyBzcmNzZXQ7CisgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgSW1wbGVtZW50ZWRBcz1zcmNzZXRGb3JCaW5kaW5nc10gYXR0cmlidXRlIFVTVlN0
cmluZyBzcmNzZXQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmli
dXRlIERPTVN0cmluZyBzaXplczsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nPyBjcm9zc09yaWdpbjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVzZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IDY2M2Y5ODRiNTdkNGQwZWQzNDM5ZjA5MTNjMTRiMWNiMWUxOGZjMTcuLmU2YzgxNTExYzQ2MTFi
ZGU0NGE0M2UxYzliOWFjMGNmYmYzYTc3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzM3LDYg
KzMzNyw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlv
bikKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcihXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLmRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXIpKQogI2VuZGlmCiAg
ICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNv
cnNEaXNhYmxpbmdQYXR0ZXJucykpCisgICAgLCBtX21hc2tlZFVSTFNjaGVtZXMoV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbi5tYXNrZWRVUkxTY2hlbWVzKSkKICAgICAsIG1fYWxsb3dlZE5ldHdv
cmtIb3N0cyhXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmFsbG93ZWROZXR3b3JrSG9zdHMpKQog
ICAgICwgbV9sb2Fkc1N1YnJlc291cmNlcyhwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJlc291
cmNlcykKICAgICAsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcocGFnZUNv
bmZpZ3VyYXRpb24uc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCkBAIC0zNzI5
LDYgKzM3MzAsMTMgQEAgYm9vbCBQYWdlOjpzaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhj
b25zdCBVUkwmIHVybCkgY29uc3QKICAgICB9KTsKIH0KIAorYm9vbCBQYWdlOjpzaG91bGRNYXNr
VVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKG1fbWFza2Vk
VVJMU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
bV9tYXNrZWRVUkxTY2hlbWVzLmNvbnRhaW5zKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91
dENvcHlpbmcoKSk7Cit9CisKIHZvaWQgUGFnZTo6cmV2ZWFsQ3VycmVudFNlbGVjdGlvbigpCiB7
CiAgICAgQ2hlY2tlZFJlZihmb2N1c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgp
LnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWws
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IDc2MTI4YzIyMTNiZmMxNTQxOWI0MWE5N2NhM2NkMGRkYTEwMzVjODEuLjkzMGI4YTFhNDJhYjY1
MWMyMTU4ZGQ0Y2IzZDA4ZDA0MmFiMWIwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC05MDksNiArOTA5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yRWFjaEZyYW1lKGNvbnN0IEZ1bmN0aW9uPHZvaWQo
RnJhbWUmKT4mKTsKIAogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1ZXN0VG8oY29u
c3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3Qg
VVJMJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluamVjdFVzZXJTdHlsZVNo
ZWV0KFVzZXJTdHlsZVNoZWV0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJbmpl
Y3RlZFVzZXJTdHlsZVNoZWV0KFVzZXJTdHlsZVNoZWV0Jik7CkBAIC0xMjc5LDYgKzEyODAsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBt
X2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9tYXNrZWRVUkxT
Y2hlbWVzOwogICAgIFZlY3RvcjxVc2VyU3R5bGVTaGVldD4gbV91c2VyU3R5bGVTaGVldHNQZW5k
aW5nSW5qZWN0aW9uOwogICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBtX2FsbG93
ZWROZXR3b3JrSG9zdHM7CiAgICAgYm9vbCBtX2lzVGFraW5nU25hcHNob3RzRm9yQXBwbGljYXRp
b25TdXNwZW5zaW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRp
b24uaAppbmRleCA0MmE5NDRlZGQxYjM5ZDdkMmM2MTBhZTAzMThhMjA2Zjk1Y2JiNWFlLi5lYjgx
N2U2YjViNWI0ZDdiZWNhYTJhMWU1YjhkZmMwZWM4MGY3NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0xMzksNiArMTM5LDcgQEAgcHVibGljOgogICAgIFJl
ZlB0cjxEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyPiBkZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyOwogI2VuZGlmCiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4g
Y29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtYXNrZWRVUkxTY2hl
bWVzOwogICAgIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiBzcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyOwogICAgIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+IG1l
ZGlhUmVjb3JkZXJQcm92aWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwCmluZGV4IDBiMjVmZjZjMzhjODYzNGYzN2VlYTJhZmQwMjRhOGQ0MmE0
ZjQyYzUuLjQxN2E3OTBhYzVjMzQ5ZDhkYjRjMjk4ODNmZTFlODI1MWM4MTVkOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTUwOSw3ICs1
MDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKGNvbnN0IFNpbXBsZVJhbmdl
JiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0QwogICAgIC8vIFB1dCBDRl9IVE1MIGZvcm1h
dCBvbiB0aGUgcGFzdGVib2FyZCAKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7
CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgICAgICAvLyBGSVhNRTogVXNlIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgLy8g
RklYTUU6IFVzZSBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kuCiAgICAg
ICAgIG1hcmt1cFRvQ0ZIVE1MKHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKGZy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSwKICAgICAgICAgICAgIHNlbGVjdGVkUmFuZ2Uu
c3RhcnQuY29udGFpbmVyLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLCBkYXRhKTsKICAgICAg
ICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBlYzQz
OWQwNjcxNGU2ZGU1Yjk0ZTIxZmI5Y2U4ZWUyMzljOTYyMmZhLi45ZmQ3YmViMWFlN2FlZmFlMTY0
NWVlMmUyNGNmOWQyYTRmNjdjZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTQ4LDYgKzE0OCw3IEBAIHZvaWQgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICBlbmNvZGVyIDw8IG9sZFBhZ2VJRDsKICAgICBlbmNvZGVyIDw8IG92ZXJyaWRkZW5N
ZWRpYVR5cGU7CiAgICAgZW5jb2RlciA8PCBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgZW5j
b2RlciA8PCBtYXNrZWRVUkxTY2hlbWVzOwogICAgIGVuY29kZXIgPDwgbG9hZHNTdWJyZXNvdXJj
ZXM7CiAgICAgZW5jb2RlciA8PCBhbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGVuY29kZXIgPDwg
dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CkBAIC00OTUsNiArNDk2LDEy
IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBXVEZNb3ZlKCpjb3JzRGlz
YWJsaW5nUGF0dGVybnMpOwogCisgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IG1h
c2tlZFVSTFNjaGVtZXM7CisgICAgZGVjb2RlciA+PiBtYXNrZWRVUkxTY2hlbWVzOworICAgIGlm
ICghbWFza2VkVVJMU2NoZW1lcykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBw
YXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKCptYXNrZWRVUkxTY2hlbWVzKTsK
KwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgZGVjb2Rl
ciA+PiBsb2Fkc1N1YnJlc291cmNlczsKICAgICBpZiAoIWxvYWRzU3VicmVzb3VyY2VzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IGNiNzQxNjkzZGIzMGE3NTAyYjQ4OWM4Mzk3Y2VmNmM3MzlmZWRhOTEuLjI4NmExZTdkOTUwZGUw
YTU0YTZmYTQzODhmY2ZmNTM4NmU5YTY3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIxOSw2ICsyMTksNyBAQCBzdHJ1Y3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGRlbk1lZGlh
VHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgSGFz
aFNldDxTdHJpbmc+IG1hc2tlZFVSTFNjaGVtZXM7CiAgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3Vs
ZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBib29sIGxvYWRzU3VicmVzb3Vy
Y2VzIHsgdHJ1ZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiBhbGxvd2Vk
TmV0d29ya0hvc3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYjY5Mjk2NmEzZWY2YTk4NmNiNjAzZDBmM2ExZTg4
MDI3NjE0OWEzZS4uMTZmZGNiN2ZlMTRlMjA0OWRmMGFmZTE2ZGUxYzEzNTQzODZiODhjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRp
b24uY3BwCkBAIC04Myw2ICs4Myw3IEBAIFJlZjxQYWdlQ29uZmlndXJhdGlvbj4gUGFnZUNvbmZp
Z3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGZvciAoYXV0byYgcGFpciA6IHRoaXMtPm1fdXJs
U2NoZW1lSGFuZGxlcnMpCiAgICAgICAgIGNvcHktPm1fdXJsU2NoZW1lSGFuZGxlcnMuc2V0KHBh
aXIua2V5LCBwYWlyLnZhbHVlLmNvcHlSZWYoKSk7CiAgICAgY29weS0+bV9jb3JzRGlzYWJsaW5n
UGF0dGVybnMgPSB0aGlzLT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBjb3B5LT5tX21h
c2tlZFVSTFNjaGVtZXMgPSB0aGlzLT5tX21hc2tlZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9j
cm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSB0aGlzLT5tX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBjb3B5LT5tX3VzZXJTY3JpcHRzU2hvdWxk
V2FpdFVudGlsTm90aWZpY2F0aW9uID0gdGhpcy0+bV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0MmIyY2M1ZGVmZmVmN2FjZjczMzQ5ZWYzOTZmZjVi
NGY0MmJjY2I0Li5mOGZmYmQ5NzIwMWU0NTZiZDMxMzkzNDU2MDA3YWQ0ZjRjMTI0ZTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24u
aApAQCAtMTQzLDcgKzE0MywxMCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBjb3JzRGlzYWJsaW5nUGF0dGVybnMoKSBjb25zdCB7IHJldHVybiBtX2NvcnNEaXNh
YmxpbmdQYXR0ZXJuczsgfQogICAgIHZvaWQgc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFZlY3Rv
cjxXVEY6OlN0cmluZz4mJiBwYXR0ZXJucykgeyBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdU
Rk1vdmUocGF0dGVybnMpOyB9Ci0gICAgCisKKyAgICBjb25zdCBIYXNoU2V0PFdURjo6U3RyaW5n
PiYgbWFza2VkVVJMU2NoZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWFza2VkVVJMU2NoZW1lczsg
fQorICAgIHZvaWQgc2V0TWFza2VkVVJMU2NoZW1lcyhIYXNoU2V0PFdURjo6U3RyaW5nPiYmIHNj
aGVtZXMpIHsgbV9tYXNrZWRVUkxTY2hlbWVzID0gV1RGTW92ZShzY2hlbWVzKTsgfQorCiAgICAg
Ym9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247IH0KICAgICB2b2lk
IHNldFVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKGJvb2wgdmFsdWUpIHsg
bV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHZhbHVlOyB9CiAKQEAg
LTIyNyw2ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxXVEY6OlN0cmluZywgUmVm
PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4+IG1fdXJsU2NoZW1lSGFuZGxlcnM7CiAgICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0
PFdURjo6U3RyaW5nPiBtX21hc2tlZFVSTFNjaGVtZXM7CiAgICAgYm9vbCBtX3VzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAgICAgV1RGOjpTdHJpbmcg
bV9wcm9jZXNzRGlzcGxheU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDA0ZTA0NDI5
ODgzMWNjYWNjZGQ3NTMxZTQ0YzQwNDU3ZWQ2YzU2NDkuLjBhMmY5ZjI3ZDE2OWRlNjljNzcyOWQy
ODJiNDhkM2NmNjEyYzY1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC05NzgsNiArOTc4
LDIzIEBAIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczooTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKXBhdHRlcm5zCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRDT1JTRGlzYWJsaW5n
UGF0dGVybnMobWFrZVZlY3RvcjxTdHJpbmc+KHBhdHRlcm5zKSk7CiB9CiAKKy0gKE5TU2V0PE5T
U3RyaW5nICo+ICopX21hc2tlZFVSTFNjaGVtZXMKK3sKKyAgICBjb25zdCBhdXRvJiBzY2hlbWVz
ID0gX3BhZ2VDb25maWd1cmF0aW9uLT5tYXNrZWRVUkxTY2hlbWVzKCk7CisgICAgTlNNdXRhYmxl
U2V0PE5TU3RyaW5nICo+ICpzZXQgPSBbTlNNdXRhYmxlU2V0IHNldFdpdGhDYXBhY2l0eTpzY2hl
bWVzLnNpemUoKV07CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBzY2hlbWVzKQorICAg
ICAgICBbc2V0IGFkZE9iamVjdDpzY2hlbWVdOworICAgIHJldHVybiBzZXQ7Cit9CisKKy0gKHZv
aWQpX3NldE1hc2tlZFVSTFNjaGVtZXM6KE5TU2V0PE5TU3RyaW5nICo+ICopc2NoZW1lcworewor
ICAgIEhhc2hTZXQ8U3RyaW5nPiBzZXQ7CisgICAgZm9yIChOU1N0cmluZyAqc2NoZW1lIGluIHNj
aGVtZXMpCisgICAgICAgIHNldC5hZGQoc2NoZW1lKTsKKyAgICBfcGFnZUNvbmZpZ3VyYXRpb24t
PnNldE1hc2tlZFVSTFNjaGVtZXMoV1RGTW92ZShzZXQpKTsKK30KKwogLSAodm9pZClfc2V0TG9h
ZHNGcm9tTmV0d29yazooQk9PTClsb2FkcwogewogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0
QWxsb3dlZE5ldHdvcmtIb3N0cyhsb2FkcyA/IHN0ZDo6bnVsbG9wdCA6IHN0ZDo6b3B0aW9uYWw8
SGFzaFNldDxTdHJpbmc+PiB7IEhhc2hTZXQ8U3RyaW5nPiB7IH0gfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IDgxMzY1NTdjMWZhYTU2NDA5YzkwZThjNGFjZTVmMTIy
MjJjNTI4YmIuLjhjYWM5OWU5NWUyNzgzZDI5NmEzMGM2MzczMDNkZmFjNTdmNjUwMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBAIC04Miw2ICs4Miw3IEBAIHR5cGVkZWYg
TlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tBdHRyaWJ1dGlvbk92ZXJyaWRlVGVzdGluZykgewogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vic2l0ZURhdGFTdG9yZSAqX3dlYnNp
dGVEYXRhU3RvcmVJZkV4aXN0cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3Mo
MTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0TWFza2VkVVJMU2NoZW1lczopIE5TU2V0PE5T
U3RyaW5nICo+ICpfbWFza2VkVVJMU2NoZW1lcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0RGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOikgQk9P
TCBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
Yywgc2V0dGVyPV9zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ6KSBCT09M
IF9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggMWM3YWQ0NGMyNDZhZDcwOTc3YWZhN2M2ZTQzYmQwM2NjMjA1YjZlYy4u
NzFiNDdkYjQ2YWY4NjkwZmU0MTIxZjZlMGZmZWU3NDI3MzQzMmRkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04Mzc3LDYgKzgzNzcsNyBAQCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlBy
b2Nlc3NQcm94eSYgcHJvYwogCiAgICAgcGFyYW1ldGVycy5vdmVycmlkZGVuTWVkaWFUeXBlID0g
bV9vdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRl
cm5zID0gY29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1ldGVycy5tYXNrZWRVUkxT
Y2hlbWVzID0gbV9jb25maWd1cmF0aW9uLT5tYXNrZWRVUkxTY2hlbWVzKCk7CiAgICAgcGFyYW1l
dGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IG1fY29uZmlndXJh
dGlvbi0+dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oKTsKICAgICBwYXJh
bWV0ZXJzLmFsbG93ZWROZXR3b3JrSG9zdHMgPSBtX2NvbmZpZ3VyYXRpb24tPmFsbG93ZWROZXR3
b3JrSG9zdHMoKTsKICAgICBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3VyY2VzID0gbV9jb25maWd1
cmF0aW9uLT5sb2Fkc1N1YnJlc291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRH
dGsuY3BwCmluZGV4IGJmNGQyOGUzZThkZWZhYTQyNmJiOGY1YzEwOWU2MmZjN2YxMDhhNjEuLjIw
ZGMwNDJlODVjZGEyN2VhOTU5ZDQzZGJhNWRhNGYzZWJhNDZjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkKICAgICBQYXN0ZWJvYXJk
V2ViQ29udGVudCBwYXN0ZWJvYXJkQ29udGVudDsKICAgICBwYXN0ZWJvYXJkQ29udGVudC5jYW5T
bWFydENvcHlPckRlbGV0ZSA9IGZhbHNlOwogICAgIHBhc3RlYm9hcmRDb250ZW50LnRleHQgPSBw
bGFpblRleHQoKnJhbmdlKTsKLSAgICBwYXN0ZWJvYXJkQ29udGVudC5tYXJrdXAgPSBzZXJpYWxp
emVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSk7Cisg
ICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFw
cGVhcmFuY2UoZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLCBSZXNvbHZlVVJMczo6WWVz
RXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpOwogICAgIFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2Jh
bFNlbGVjdGlvbihQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS0+cGFnZUlEKCkp
KS0+d3JpdGUocGFzdGVib2FyZENvbnRlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBhYTdmYTRkNDY1NzMyZDgzNGE5YWQyNTdh
NTE1M2QxYmIwZDhiNjcuLmUxYzYwZWVhMWQzOTBkZmFjMDU5ZTIzMWEyNDk4ZDY2MTIxYmUxMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02
NDMsNiArNjQzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBzeW5jaHJvbml6
ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpOwogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHBhcnNlQW5kQWxsb3dBY2Nlc3NUb0NP
UlNEaXNhYmxpbmdQYXR0ZXJucyhtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyk7CiAKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi5tYXNrZWRVUkxTY2hlbWVzID0gcGFyYW1ldGVycy5tYXNrZWRVUkxTY2hl
bWVzOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uID0gcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNh
dGlvbjsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJlc291cmNlcyA9IHBhcmFtZXRl
cnMubG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYWxsb3dlZE5ldHdv
cmtIb3N0cyA9IHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0czsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiM2U2YWQ0YjIzZGZlNjU0YTky
ZWMzZWQ3YmVjNzU3MTdhODc5NGU2Li43ODk1ZmJmNzlkZjE2MTQ3MjZkMjk1MTVkYTFhZDYwNGRm
OTQ2MTBkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMDMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhYmlsaXR5IHRvIG1hc2sgVVJMcyBmcm9tIERPTSBh
bmQgSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4NTc2CisgICAgICAgIHJkYXI6Ly84MTk5MTI0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoVEVTVChXZWJLaXQs
IENvbmZpZ3VyYXRpb25NYXNrZWRVUkxTY2hlbWVzKSk6IEFkZGVkLgorCiAyMDIyLTAzLTIyICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWVyZ2UtUXVl
dWVdIEFkZCBWYWxpZGF0ZVNxdWFzaGVkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5k
ZXggYzA3NWRkNTM0ZmRhODZmNjc5MmMxOWFkZDBlMjUxZThhZjMwMjAzZC4uOGZhZjg5YjY5OGNk
NzI5Mjg2NGQzYjUzZjZkMzQ2M2IzMGY4ZjJhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi5tbQpAQCAtMTcyLDMgKzE3Miw2NSBAQCBURVNUKFdlYktpdCwgQ29uZmlndXJhdGlvbkRpc2Fi
bGVKYXZhU2NyaXB0TmVzdGVkQm9keSkKICAgICBOU1N0cmluZyAqYm9keUhUTUwgPSBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwi
XTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoYm9keUhUTUwsIEAiPHRhYmxlPjwvdGFibGU+Iik7CiB9
CisKK1RFU1QoV2ViS2l0LCBDb25maWd1cmF0aW9uTWFza2VkVVJMU2NoZW1lcykKK3sKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10p
OworICAgIEVYUEVDVF9FUShbY29uZmlndXJhdGlvbiBfbWFza2VkVVJMU2NoZW1lc10uY291bnQs
IDBVKTsKKworICAgIFtjb25maWd1cmF0aW9uIF9zZXRNYXNrZWRVUkxTY2hlbWVzOltOU1NldCBz
ZXRXaXRoT2JqZWN0czpAInRlc3Qtc2NoZW1lIiwgQCJhbm90aGVyLXNjaGVtZSIsIG5pbF1dOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPGltZyBzcmM9XCJ0ZXN0LXNjaGVtZTovL2Zvby5jb20vYmFyLmpwZ1wiPjxpbWcgc3JjPVwi
aHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZ1wiPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CisKKyAgICBOU1N0cmluZyAqaW1hZ2VTb3VyY2Ug
PSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbChcImltZ1wiKVswXS5zcmMiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VT
b3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBpbWFnZVNvdXJj
ZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0dHJpYnV0ZShcInNyY1wiKSJdOworICAgIEVY
UEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8i
KTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uZ2V0QXR0cmlidXRl
Tm9kZShcInNyY1wiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwg
QCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8iKTsKKworICAgIGltYWdlU291cmNlID0gW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoXCJpbWdcIilbMV0uc3JjIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNl
LCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmciKTsKKworICAgIGltYWdlU291cmNlID0gW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoXCJpbWdcIilbMV0uZ2V0QXR0cmlidXRlKFwic3JjXCIpIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmciKTsKKworICAg
IGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0QXR0cmlidXRlTm9kZShcInNy
Y1wiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczov
L2FwcGxlLmNvbS9iYXoucG5nIik7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8aW1nIHNyY3NldD1cInRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9iYXIuanBnIDF4
LCBiYXIuanBnIDJ4LCBhbm90aGVyLXNjaGVtZTovL2Zvby5jb20vYmFyLmdpZiAzeFwiPjxpbWcg
c3Jjc2V0PVwiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwgYmF6LnBuZyAxeFwiPiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CisKKyAg
ICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLnNyY3NldCJdOworICAgIEVYUEVD
VF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gMXgs
IGh0dHBzOi8vZXhhbXBsZS5jb20vYmFyLmpwZyAyeCwgd2Via2l0LW1hc2tlZC11cmw6Ly9oaWRk
ZW4vIDN4Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0
dHJpYnV0ZShcInNyY3NldFwiKSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwg
QCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gMXgsIGJhci5qcGcgMngsIHdlYmtpdC1tYXNr
ZWQtdXJsOi8vaGlkZGVuLyAzeCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImlt
Z1wiKVswXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3Jjc2V0XCIpLnZhbHVlIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAxeCwg
YmFyLmpwZyAyeCwgd2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDN4Iik7CisKKyAgICBpbWFn
ZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLnNyY3NldCJdOworICAgIEVYUEVDVF9XS19T
VFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIDJ4LCBodHRwczov
L2V4YW1wbGUuY29tL2Jhei5wbmcgMXgiKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
XCJpbWdcIilbMV0uZ2V0QXR0cmlidXRlKFwic3Jjc2V0XCIpIl07CisgICAgRVhQRUNUX1dLX1NU
UkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmcgMngsIGJhei5wbmcg
MXgiKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0QXR0cmli
dXRlTm9kZShcInNyY3NldFwiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNv
dXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIDJ4LCBiYXoucG5nIDF4Iik7CisKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8c2NyaXB0IHNyYz1cImFu
b3RoZXItc2NoZW1lOi8vZm9vLmNvbS9iYXIuanNcIj48L3NjcmlwdD48c2NyaXB0IHNyYz1cImh0
dHA6Ly9hcHBsZS5jb20vYmF6LmpzXCI+PC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKworICAgIE5TU3RyaW5nICpzY3JpcHRT
b3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFwiKVswXS5zcmMiXTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoc2NyaXB0U291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisgICAg
c2NyaXB0U291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRcIilbMV0uc3JjIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKHNjcmlwdFNvdXJjZSwgQCJodHRwOi8vYXBwbGUuY29tL2Jhei5qcyIpOworCisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlmcmFtZSBzcmM9XCJ0
ZXN0LXNjaGVtZTovL2Zvby5jb20vYmFyLmh0bWxcIj48L2lmcmFtZT48aWZyYW1lIHNyYz1cImh0
dHA6Ly9hcHBsZS5jb20vYmF6Lmh0bWxcIj48L2lmcmFtZT4iIGJhc2VVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOworCisgICAgTlNTdHJpbmcgKmh0bWxT
b3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwiXTsKKyAgICBFWFBFQ1RfRVEoW2h0bWxTb3VyY2UgY29udGFpbnNTdHJp
bmc6QCI8aWZyYW1lIHNyYz1cIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuL1wiPjwvaWZyYW1l
PiJdLCBZRVMpOworfQo=
</data>
<flag name="commit-queue"
          id="484945"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456593</attachid>
            <date>2022-04-04 11:14:45 -0700</date>
            <delta_ts>2022-04-04 11:50:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220404111445.patch</filename>
            <type>text/plain</type>
            <size>52469</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjhiZTQ2MDVlZjQ5MWFhYmRiNDU3Yzk0ZWQ3ZmYzNmMyMDU5MWZlLi5mNjJmOTM1MWVmZjJlOGFh
MDU0OGYwZGE4YzFiZWE2M2ExMDVhOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZh
U2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1NzYKKyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOiBSZXR1cm4gIltleHRlbnNpb24g
Y29kZV0iIGZvciBhbnkgc291cmNlVVJMIHRoYXQgc3RhcnRzIHdpdGggInNhZmFyaS0iLgorICAg
ICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOiBBZGRlZCBzb21lIHdo
aXRlc3BhY2UuCisKIDIwMjItMDMtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBDaGFuZ2UgRGF0ZS5wYXJzZSB0byBzdG9wIHJldHVybmluZyBu
dW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uMjk1ZDMyZmQ1YzY0ZDM4ZTA0ODNlYTc5YTI4Mzlj
YjJkM2E5MTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5u
ZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpvdXRlckhUTUwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgY29uc3QpOiBBZGRlZC4g
TW92ZWQgZnJvbSBNYXJrdXBBY2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGFuZCBhZGRl
ZCBuZXcgTm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSBwYXRoLgorICAgICAgICBDaGFuZ2VkIFll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5IGFuZCBpbmNsdWRlZCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoKSBjaGVjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29u
c3QpOiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBk
aXJlY3RseS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDogVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIGZvciBnZXRBdHRyaWJ1dGUuCisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
aW5uZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9y
UHJpdmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgICogZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVs
YXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGNvbnN0KTogVXNlIEVsZW1lbnQ6OnJlc29sdmVVUkxT
dHJpbmdJZk5lZWRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQpOiBDaGFuZ2Vk
IFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3Qp
OiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRp
bmdzIGNvbnN0KTogQWRkZWQuIFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyB3aXRoIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnNldFNyY3NldEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIyLTAzLTIy
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmE2
ZmZmOGU1YjZhNmU1OTBlNTY2M2U0YzM4NzkyYmQ0YjM4NzYzLi4wYjJjM2QyNzY0Y2ZlNDUyNWU1
OTZhNTIxMTJhYjc0OTJjOTNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA0
LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFy
Oi8vODE5OTEyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogQWRkZWQgbWFz
a2VkVVJMU2NoZW1lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBBZGRlZCBt
YXNrZWRVUkxTY2hlbWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Om1hc2tlZFVSTFNjaGVt
ZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldE1h
c2tlZFVSTFNjaGVtZXMpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX21hc2tlZFVSTFNjaGVtZXNdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBBZGRlZCBtYXNrZWRVUkxTY2hlbWVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisKIDIwMjItMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tIGFuZCBTaGFyZWRWaWRlb0ZyYW1lLmNwcCBkbyBub3QgbmVlZCB0byBiZSBidWls
dCBhcyBwYXJ0IG9mIFdlYkNvbnRlbnQgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAppbmRleCA2YjhmM2RmNjMzNTA0NWQ1YWMyMWVmNWEw
ODJkNDg2ODA0ZmEzZTZiLi5hMjY1YjE4MDNlMjljMmIxZTY2OTA2MDNmYzA5Njc0MDE4MTViZjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAt
NjMsMTEgKzYzLDEzIEBAIFN0cmluZyBTdGFja0ZyYW1lOjpzb3VyY2VVUkwoKSBjb25zdAogICAg
IGlmIChtX2lzV2FzbUZyYW1lKQogICAgICAgICByZXR1cm4gIlt3YXNtIGNvZGVdIl9zOwogCi0g
ICAgaWYgKCFtX2NvZGVCbG9jaykgeworICAgIGlmICghbV9jb2RlQmxvY2spCiAgICAgICAgIHJl
dHVybiAiW25hdGl2ZSBjb2RlXSJfczsKLSAgICB9CiAKICAgICBTdHJpbmcgc291cmNlVVJMID0g
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCBoZXJlLCBidXQgY29tZSBmcm9tIHNvbWUg
QVBJIHdpdGggd2hhdCBzY2hlbWVzIHRvIG1hc2suCisgICAgaWYgKHNvdXJjZVVSTC5zdGFydHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoInNhZmFyaS0iX3MpKQorICAgICAgICByZXR1cm4gIltleHRl
bnNpb24gY29kZV0iX3M7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBzb3VyY2VVUkw7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC05MiwxMSArOTQs
MTMgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KKwogICAgIFN0
cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkgewogICAgICAgICBpZiAobV9jYWxsZWUtPmlz
T2JqZWN0KCkpCiAgICAgICAgICAgICBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZt
LCBqc0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZS5nZXQoKSkpLmltcGwoKTsKICAgICB9CisKICAg
ICByZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXgg
NzFiMzZiY2U1NTNjYzFlNGRmMzk5NmQyYmQ0YTI4YWVkMDdhMmM5Mi4uZWVhYmJlNTQzMDA1YzFh
MDU0MzE1ZmMzYTE1NTNiNWRiYjAxY2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgc3ViIEdl
dHRlckV4cHJlc3Npb24KIAogICAgIG15ICRmdW5jdGlvbk5hbWU7CiAgICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVUkwifSkgewotICAgICAgICAkZnVuY3Rpb25OYW1l
ID0gImdldFVSTEF0dHJpYnV0ZSI7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJMQXR0
cmlidXRlRm9yQmluZGluZ3MiOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJib29sZWFuIikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24iOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJsb25nIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBiNDQ3Mzk1ZWUzN2M2NDIwYTI4NDExYjI2YzdjNTBk
YjI2Nzc5YWRjLi5kYTlhNzUzYzY1ZDRkYmFlYjBmZjJkMTMzN2I1MDM1M2EyODUxNGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcApAQCAtMzg5MCw3ICszODkwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ial9yZWZsZWN0ZWRVUkxBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2wKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRy
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0
ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKSkp
OwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3JlZmxlY3RlZFVSTEF0
dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCkBAIC0zOTIxLDcgKzM5MjEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHJH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0cikpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfcmVmbGVjdGVkVVNWVVJMQXR0ciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKQEAgLTQwNDUsNyArNDA0NSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggMTJjNDAyNmQ3Yjc1MmUxNGUxMDkxMGQy
YzZhZTBmODIxNmFlYTc5Ni4uNDM1YTM0NDhhYzEwY2Y4MWJiZjM0M2E4ZDE0MTI3MmMzNjEzMDk5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIwLDEwICsxMjAsMTAgQEAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogQXR0cjo6c3R5bGUoKQogICAgIHJldHVybiAmbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVE
ZWNsYXJhdGlvbigpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBBdHRyOjp2YWx1ZSgpIGNvbnN0
CitBdG9tU3RyaW5nIEF0dHI6OnZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50KQot
ICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MocXVhbGlm
aWVkTmFtZSgpKTsKICAgICByZXR1cm4gbV9zdGFuZGFsb25lVmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5o
CmluZGV4IGFjOTRjODA5ZTkzNjNjYjRjNjc3NmUzNTQ2MDYyMTBhYmM0NTI3YWMuLmFlYTQ4M2I4
MGE1NzYyMzE0MDE1ZjY5NWQ3MTM2MjZiNWI2MjhiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHF1YWxpZmllZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0ODI1NDZlNzczOWI1
NTA1ZjhjMGYyODEuLjkwN2FjMmEyMDY2MGY4ODIzZjVkYzUwMGNiZDA3ZGYwYzFhNzFhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTYwMCw2ICs1NjAwLDM3IEBAIFVSTCBEb2N1bWVu
dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEZvcmNlVVRGOCBmb3JjZVVURjgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMLCBmb3JjZVVURjgpOwog
fQogCitib29sIERvY3VtZW50OjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJiB1
cmwpIGNvbnN0Cit7CisgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFnZS0+c2hvdWxkTWFza1VS
TEZvckJpbmRpbmdzKHVybCk7Cit9CisKK1VSTCBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3NJZk5lZWRlZChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoc2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzKHVybCkpKQorICAgICAgICByZXR1cm4gbWFza2VkVVJMRm9y
QmluZGluZ3MoKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBBdG9tU3RyaW5nJiBEb2N1
bWVudDo6bWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsKCJ3ZWJraXQtbWFz
a2VkLXVybDovL2hpZGRlbi8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmlu
ZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PFVSTD4gbWFza2VkVVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWFza2VkVVJMLmNvbnN0
cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpLnN0cmluZygpKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gbWFza2VkVVJMOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRCYWNrRm9yd2FyZENh
Y2hlU3RhdGUoQmFja0ZvcndhcmRDYWNoZVN0YXRlIHN0YXRlKQogewogICAgIGlmIChtX2JhY2tG
b3J3YXJkQ2FjaGVTdGF0ZSA9PSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDNkOTNk
OGRiZjlmMDNjMTQ3NTEwNDM2NWRjMDcxOTc5N2MzYWFjYy4uOTRhNzIzMjU5NTBkNWRjZGIxNzU1
ZGE3ZTg2OTE2MzdkNjY3NTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTcyMCw2ICs3MjAs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAgICBVUkwg
Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUsIEZv
cmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRNYXNrVVJM
Rm9yQmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgVVJMIG1hc2tlZFVSTEZvckJpbmRp
bmdzSWZOZWVkZWQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbWFz
a2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIG1hc2tlZFVS
TEZvckJpbmRpbmdzKCkgY29uc3Q7CisKICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjk5N2JmZDBmZGI5ZmVl
ZjQ0M2Y4YjNjY2E0ZDIwZTYxYzBiN2M5Yy4uM2NlNjhkZjBkOWM0OGYwNzJhMzc4YmUwZDU2MDc3
MTg4MjJjYjFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzIwLDYgKzcyMCwyMyBAQCBj
b25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAorQXRvbVN0cmluZyBF
bGVtZW50OjpnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBSZXNvbHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnREYXRh
KCkpCisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOworCisgICAgc3luY2hyb25pemVBdHRyaWJ1
dGUobmFtZSk7CisKKyAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1
dGVCeU5hbWUobmFtZSk7CisgICAgaWYgKCFhdHRyaWJ1dGUpCisgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOworCisgICAgaWYgKGF0dHJpYnV0ZUNvbnRhaW5zVVJMKCphdHRyaWJ1dGUpKQorICAg
ICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShVUkwoKSwgKmF0dHJpYnV0
ZSwgcmVzb2x2ZVVSTHMpOworCisgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKK30KKwog
VmVjdG9yPFN0cmluZz4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTmFtZXMoKSBjb25zdAogewogICAg
IFZlY3RvcjxTdHJpbmc+IGF0dHJpYnV0ZXNWZWN0b3I7CkBAIC0xNzk4LDYgKzE4MTUsMjMgQEAg
Y29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcm
IHF1YWxpZmllZE5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKK0F0b21T
dHJpbmcgRWxlbWVudDo6Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxOYW1lLCBSZXNvbHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QKK3sKKyAgICBpZiAoIWVs
ZW1lbnREYXRhKCkpCisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOworCisgICAgc3luY2hyb25p
emVBdHRyaWJ1dGUobmFtZSk7CisKKyAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVs
ZW1lbnREYXRhKCktPmZpbmRBdHRyaWJ1dGVCeU5hbWUocXVhbGlmaWVkTmFtZSwgc2hvdWxkSWdu
b3JlQXR0cmlidXRlQ2FzZSgqdGhpcykpOworICAgIGlmICghYXR0cmlidXRlKQorICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKKworICAgIGlmIChhdHRyaWJ1dGVDb250YWluc1VSTCgqYXR0cmli
dXRlKSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoVVJMKCks
ICphdHRyaWJ1dGUsIHJlc29sdmVVUkxzKTsKKworICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVl
KCk7Cit9CisKIGNvbnN0IEF0b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBj
b25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRvbSgp
LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwpAQCAtMzI3MCwxMiArMzMwNCwxMiBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBFbGVtZW50OjptZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9kZSkK
IAogU3RyaW5nIEVsZW1lbnQ6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlh
bGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJlbik7
CisgICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1
YnRyZWVzT2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0Zv
clByaXZhY3kpOwogfQogCiBTdHJpbmcgRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJl
ZUluY2x1ZGluZ05vZGUpOworICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywgU2Vy
aWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6
Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBFbGVt
ZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sKQpAQCAtMzg0OCw2ICszODgyLDEx
IEBAIFVSTCBFbGVtZW50OjpnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1dGUo
bmFtZSkpOwogfQogCitVUkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5t
YXNrZWRVUkxGb3JCaW5kaW5nc0lmTmVlZGVkKGdldFVSTEF0dHJpYnV0ZShuYW1lKSk7Cit9CisK
IFVSTCBFbGVtZW50OjpnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lKSBjb25zdAogewogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC00NTUwLDkgKzQ1ODksMzcg
QEAgYm9vbCBFbGVtZW50OjpjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0CiAgICAgcmV0
dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHJvbGVBdHRyKSwgImltZyIpOwogfQogCi1TdHJpbmcgRWxlbWVudDo6Y29tcGxl
dGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYg
YXR0cmlidXRlKSBjb25zdAorU3RyaW5nIEVsZW1lbnQ6OnJlc29sdmVVUkxTdHJpbmdJZk5lZWRl
ZChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMsIGNvbnN0
IFVSTCYgYmFzZSkgY29uc3QKK3sKKyAgICBVUkwgY29tcGxldGVVUkwgPSBiYXNlLmlzTnVsbCgp
ID8gZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpIDogVVJMKGJhc2UsIHVybFN0cmlu
Zyk7CisKKyAgICBzd2l0Y2ggKHJlc29sdmVVUkxzKSB7CisgICAgY2FzZSBSZXNvbHZlVVJMczo6
WWVzOgorICAgICAgICByZXR1cm4gY29tcGxldGVVUkwuc3RyaW5nKCk7CisKKyAgICBjYXNlIFJl
c29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeTogeworICAgICAgICBpZiAoZG9j
dW1lbnQoKS5zaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29tcGxldGVVUkwpKQorICAgICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3MoKS5zdHJpbmcoKTsKKyAg
ICAgICAgaWYgKCFjb21wbGV0ZVVSTC5pc0xvY2FsRmlsZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRlVVJMLnN0cmluZygpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNl
IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OgorICAgICAgICBpZiAoZG9j
dW1lbnQoKS5zaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29tcGxldGVVUkwpKQorICAgICAgICAg
ICAgcmV0dXJuIGRvY3VtZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3MoKS5zdHJpbmcoKTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpObzoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgcmV0dXJuIHVybFN0cmluZzsKK30KKworU3RyaW5nIEVsZW1lbnQ6OmNv
bXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSwgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIFVSTChiYXNlLCBhdHRyaWJ1dGUudmFsdWUoKSkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHJl
c29sdmVVUkxTdHJpbmdJZk5lZWRlZChhdHRyaWJ1dGUudmFsdWUoKSwgcmVzb2x2ZVVSTHMsIGJh
c2UpOwogfQogCiBFeGNlcHRpb25PcjxOb2RlKj4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29u
c3QgU3RyaW5nJiB3aGVyZSwgUmVmPE5vZGU+JiYgbmV3Q2hpbGQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCBhNTI4ZDE3MDVlZGExYTIzZjVkOWYxMzNmN2YyNmZmNWUzZWE1ZjkwLi44N2UzN2MzOTcx
NWFmNWJiMjY3ZWM4YWI2NzkyOGQ1YzFlMTc1MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTgx
LDYgKzgxLDcgQEAgZW51bSBjbGFzcyBBbmltYXRpb25JbXBhY3Q7CiBlbnVtIGNsYXNzIEV2ZW50
SGFuZGxpbmcgOiB1aW50OF90OwogZW51bSBjbGFzcyBFdmVudFByb2Nlc3NpbmcgOiB1aW50OF90
OwogZW51bSBjbGFzcyBJc1N5bnRoZXRpY0NsaWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0g
Y2xhc3MgUmVzb2x2ZVVSTHMgOiB1aW50OF90IHsgTm8sIE5vRXhjbHVkaW5nVVJMc0ZvclByaXZh
Y3ksIFllcywgWWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kgfTsKIGVudW0gY2xhc3MgU2VsZWN0
aW9uUmVzdG9yYXRpb25Nb2RlIDogdWludDhfdDsKIAogc3RydWN0IEdldEFuaW1hdGlvbnNPcHRp
b25zOwpAQCAtMTA3LDYgKzEwOCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OworICAgIEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJM
c0ZvclByaXZhY3kpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFF1YWxpZmllZE5h
bWVzPgogICAgIGlubGluZSBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IFF1YWxpZmllZE5hbWVzJi4uLikgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21TdHJpbmcmIHZhbHVlKTsKQEAgLTEzOSw5ICsxNDEsMTEgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5h
bWUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3Qg
QXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNv
bnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRl
KGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2Nh
bE5hbWUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0
dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmlu
ZyYgbG9jYWxOYW1lKSBjb25zdDsKIAorICAgIEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmlu
ZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVV
UkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQ
T1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFs
aWZpZWROYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFF1YWxpZmllZE5hbWU+IHBhcnNlQXR0cmlidXRlTmFtZShjb25zdCBBdG9tU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpOwogICAgIFdFQkNP
UkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJp
bmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUpOwpAQCAtNDE2LDEwICs0MjAsMTIgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdCB7IHJldHVybiBpc1VSTEF0dHJpYnV0ZShhdHRy
aWJ1dGUpOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1
ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0OworICAgIFN0cmluZyBy
ZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVV
UkxzID0gUmVzb2x2ZVVSTHM6OlllcywgY29uc3QgVVJMJiBiYXNlID0gVVJMKCkpIGNvbnN0Owor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJM
JiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0hUTUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBV
UkwgZ2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBVUkwg
Z2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Owog
ICAgIFVSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlU291cmNlVVJMKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggYTUyMzMxZmY4N2EyODJkMDE2YzkyNjEwNTI5
ZjM4NGMyYzNkNDcwNC4uZGZiNGQ5ZjI4NGU5NmZhYzkyOTA0NmY3M2YwODA2MmQ3OWQ5OWQ5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgIFtET01KSVQ9UmVh
ZERPTV0gYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CiAgICAgW1NhbWVPYmplY3RdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgYXR0cmlidXRlczsKICAgICBzZXF1ZW5jZTxET01TdHJp
bmc+IGdldEF0dHJpYnV0ZU5hbWVzKCk7Ci0gICAgW0RPTUpJVD1SZWFkRE9NXSBET01TdHJpbmc/
IGdldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CisgICAgW0RPTUpJVD1SZWFk
RE9NLCBJbXBsZW1lbnRlZEFzPWdldEF0dHJpYnV0ZUZvckJpbmRpbmdzXSBET01TdHJpbmc/IGdl
dEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgRE9NU3RyaW5nPyBnZXRB
dHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxvY2FsTmFtZSk7
CiAgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgc2V0QXR0cmlidXRlKERPTVN0cmluZyBxdWFs
aWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVk
IHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJpbmcgcXVhbGlm
aWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCBhMzIyZGVjNDFkZGY0YjM1YmUxODMxNmY5YWYwNGUyNTBjYjZlYTliLi41MjlhZTkwYmNjMjI5
YzM1N2FhNDYxYjc4ZDdmZGZmYWU0ZjcxOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CkBAIC0xNzgsNyArMTc4LDcgQEAgU3R5bGVTaGVldExpc3QmIFNoYWRvd1Jvb3Q6OnN0eWxlU2hl
ZXRzKCkKIAogU3RyaW5nIFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZD
aGlsZHJlbik7CisgICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVk
Tm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVk
aW5nVVJMc0ZvclByaXZhY3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTaGFkb3dSb290Ojpz
ZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBtYXJrdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJk
MGFmMTI3ZWMxMDU0NDAuLjgxZjkwOGUwZGRiOTI1Y2EyYWUzYjY1NzM3M2RiYTIxMzZkMzk0NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0y
MzIsMTkgKzIzMiw3IEBAIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzV2l0
aE5hbWVzcGFjZXMoTm9kZSYgdGFyZ2V0Tm9kZSwgU2VyaWFsaXplCiAKIFN0cmluZyBNYXJrdXBB
Y2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIHN3aXRjaCAobV9yZXNvbHZlVVJM
cykgewotICAgIGNhc2UgUmVzb2x2ZVVSTHM6OlllczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQu
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpLnN0cmluZygpOwotCi0gICAgY2FzZSBS
ZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3k6Ci0gICAgICAg
IGlmICghZWxlbWVudC5kb2N1bWVudCgpLnVybCgpLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAg
ICByZXR1cm4gZWxlbWVudC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykuc3RyaW5n
KCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6Tm86Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdXJsU3RyaW5nOworICAgIHJldHVybiBlbGVtZW50
LnJlc29sdmVVUkxTdHJpbmdJZk5lZWRlZCh1cmxTdHJpbmcsIG1fcmVzb2x2ZVVSTHMpOwogfQog
CiB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjpzdGFydEFwcGVuZGluZ05vZGUoY29uc3QgTm9kZSYg
bm9kZSwgTmFtZXNwYWNlcyogbmFtZXNwYWNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCmluZGV4IGY4OGE4MTZlYTYzNzZkMTcyNDBhNjQ4MTFlOTY4YTk1
ZjM4OWM4MDMuLjZlOWNkYTcwMDE4YmM2NGZhN2MwN2I2NzU0ZTc1Y2NkZDcyZTQxNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtODAsNyArODAs
NyBAQCBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogewogICAgIGlmIChJ
bWFnZU92ZXJsYXk6OmlzSW5zaWRlT3ZlcmxheShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gc2VyaWFsaXplUHJlc2Vy
dmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwg
UmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxp
emVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1
YWxBcHBlYXJhbmNlKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVV
UkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZ
ZXMpOwogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCmluZGV4IDk0ZTM4MTM3NWI5NzcxNzA4MjgyOGUwYzk2
NDhiNTQ5N2Q2ZjI0ZmUuLmVmOTlhMmVmNjliNGUxNDEzOTc4MjA3M2NiMjAyMWNhZTRmYThiYzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMTE3LDcgKzEx
Nyw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkKQogICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBhc3RlYm9hcmRDb250ZW50
OwogICAgIHBhc3RlYm9hcmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlID0gY2FuU21hcnRD
b3B5T3JEZWxldGUoKTsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRUZXh0
Rm9yRGF0YVRyYW5zZmVyKCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFs
aXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5
LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQubWFy
a3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2
YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQu
Y29udGVudE9yaWdpbiA9IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQo
KTsKICAgICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4
ZjhlODgyYmJjN2QwZjkxY2FkNzZjMzgyNTA4ZTlhM2YuLjkwMDVjOTU2ZDVlYjU2M2Q3YjNmYzJk
MDdlOGY1ZDhmZGIxNzBiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUv
RWRpdG9yTGliV1BFLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxl
Y3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIHsKICAgICBQYXN0ZWJv
YXJkV2ViQ29udGVudCBwYXN0ZWJvYXJkQ29udGVudDsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50
ZXh0ID0gc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyKCk7Ci0gICAgcGFzdGVib2FyZENvbnRl
bnQubWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVu
dC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2Fs
RmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgcGFz
dGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFu
Y2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4
Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiAgICAg
cGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAxYTJjZDAzZjAwY2VlMDI2OTI2YmMzYTI0ZmZh
OWJiYzVlMDg5NjYzLi4yZmY5YmJkNDgwYzU2Njc5MGQzMWM4ZjYzYjY3NjY2YWMxNDYzZDIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yNzIsNyArMjcyLDcg
QEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVi
b2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJ
bldlYkFyY2hpdmVGb3JtYXQgPSBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQp
OwogCiAgICAgaWYgKGF1dG8gaW1hZ2VSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoaW1h
Z2VFbGVtZW50KSkKLSAgICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQgPSBz
ZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShWaXNpYmxlU2VsZWN0aW9uIHsgKmlt
YWdlUmFuZ2UgfSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2
YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgICAgIHBhc3RlYm9hcmRJbWFn
ZS5kYXRhSW5IVE1MRm9ybWF0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2Uo
VmlzaWJsZVNlbGVjdGlvbiB7ICppbWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogCiAgICAgcGFz
dGVib2FyZEltYWdlLnVybC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRs
ZSA9IHRpdGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDIwYjNmY2Y4ZGRmOTU0
NDM0OWIxODY0ZWY5ZDliZjBmYjRhZWU2NDYuLmFkY2E5ZDFlMDk1YjliZTc0MjEwY2E0ZDUxNzYx
ZDYxYzRlYjUzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEwMTEsNyArMTAx
MSw3IEBAIFN0cmluZyBzYW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERv
Y3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIERvCiAKICAgICAvLyBTZXJpYWxpemVDb21wb3Nl
ZFRyZWU6Ok5vIGJlY2F1c2UgdGhlcmUgY2FuJ3QgYmUgYSBzaGFkb3cgdHJlZSBpbiB0aGUgcGFz
dGVkIGZyYWdtZW50LgogICAgIGF1dG8gcmVzdWx0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3Vh
bEFwcGVhcmFuY2VJbnRlcm5hbChmaXJzdFBvc2l0aW9uSW5Ob2RlKGJvZHlFbGVtZW50LmdldCgp
KSwgbGFzdFBvc2l0aW9uSW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbnVsbHB0ciwKLSAgICAg
ICAgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJp
YWxpemVDb21wb3NlZFRyZWU6Ok5vLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpZZXMsIENvbnZl
cnRCbG9ja3NUb0lubGluZXM6Ok5vLCAgU3RhbmRhcmRGb250RmFtaWx5U2VyaWFsaXphdGlvbk1v
ZGU6OlN0cmlwLCBtc29MaXN0TW9kZSk7CisgICAgICAgIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpObywgQW5ub3RhdGVGb3JJ
bnRlcmNoYW5nZTo6WWVzLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgIFN0YW5kYXJkRm9u
dEZhbWlseVNlcmlhbGl6YXRpb25Nb2RlOjpTdHJpcCwgbXNvTGlzdE1vZGUpOwogCiAgICAgaWYg
KG1zb0xpc3RNb2RlICE9IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCmluZGV4IDkyNTExYTkzNDY2YmE5NDg0MTI0MWJh
ZmQ2NGUwZmNkMTNlMTFhZTMuLjQxNzQwZWZmN2JkOWM1YTU1MTNmZjEwM2MyYmVjNDlhNmIwYTgy
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgog
I2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbi5oIgpAQCAtNzAsNyArNzEsNiBAQCBib29sIGlzUGxhaW5UZXh0TWFya3VwKE5vZGUqKTsK
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgYnkgSFRNTEVsZW1lbnQgJiBTaGFkb3dSb290IHRv
IHJlcGxhY2UgdGhlIGNoaWxkcmVuIHdpdGggcmVzcGVjdGVkIGZyYWdtZW50L3RleHQuCiBFeGNl
cHRpb25Pcjx2b2lkPiByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYs
IFJlZjxEb2N1bWVudEZyYWdtZW50PiYmKTsKIAotZW51bSBjbGFzcyBSZXNvbHZlVVJMcyA6IHVp
bnQ4X3QgeyBObywgWWVzLCBZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSB9Owog
ZW51bSBjbGFzcyBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzIDogdWludDhfdCB7IE5vLCBZZXMgfTsK
IGVudW0gY2xhc3MgU2VyaWFsaXplQ29tcG9zZWRUcmVlIDogdWludDhfdCB7IE5vLCBZZXMgfTsK
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5j
ZShjb25zdCBTaW1wbGVSYW5nZSYsIFZlY3RvcjxOb2RlKj4qID0gbnVsbHB0ciwgQW5ub3RhdGVG
b3JJbnRlcmNoYW5nZSA9IEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tz
VG9JbmxpbmVzID0gQ29udmVydEJsb2Nrc1RvSW5saW5lczo6Tm8sIFJlc29sdmVVUkxzID0gUmVz
b2x2ZVVSTHM6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDc5OGZlODZiYzRmMzIwMjY3MWNkMmQ3MTQ2NjAwMGI2ZWJhYmI2YmYuLjYyZTE5Y2U2NWI0
MWE1YTQxOGVlMTgwMzkyOTg0YjYzYzZiZGJmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcApAQCAtNTY1LDcgKzU2NSw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVu
dDo6YXR0cmlidXRlQ29udGFpbnNVUkwoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0
CiAgICAgICAgIHx8IEhUTUxFbGVtZW50OjphdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUp
OwogfQogCi1TdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVW
YWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAor
U3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29u
c3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgUmVzb2x2ZVVSTHMgcmVz
b2x2ZVVSTHMpIGNvbnN0CiB7CiAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3Jjc2V0QXR0
cikgewogICAgICAgICBWZWN0b3I8SW1hZ2VDYW5kaWRhdGU+IGltYWdlQ2FuZGlkYXRlcyA9IHBh
cnNlSW1hZ2VDYW5kaWRhdGVzRnJvbVNyY3NldEF0dHJpYnV0ZShTdHJpbmdWaWV3KGF0dHJpYnV0
ZS52YWx1ZSgpKSk7CkBAIC01NzMsNyArNTczLDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6
OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHQK
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjYW5kaWRhdGUgOiBpbWFnZUNhbmRpZGF0ZXMpIHsK
ICAgICAgICAgICAgIGlmICgmY2FuZGlkYXRlICE9ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoVVJMKGJhc2UsIGNhbmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoY2FuZGlkYXRl
LnN0cmluZy50b1N0cmluZygpLCByZXNvbHZlVVJMcywgYmFzZSkpOwogICAgICAgICAgICAgaWYg
KGNhbmRpZGF0ZS5kZW5zaXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnLCBjYW5kaWRhdGUuZGVuc2l0eSwgJ3gnKTsKICAgICAg
ICAgICAgIGlmIChjYW5kaWRhdGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3Jp
cHRvcikKQEAgLTU4MSw3ICs1ODEsOCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxl
dGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dAogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9Ci0gICAgcmV0dXJu
IEhUTUxFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGJhc2UsIGF0dHJpYnV0
ZSk7CisKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFs
dWUoYmFzZSwgYXR0cmlidXRlLCByZXNvbHZlVVJMcyk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxl
bWVudDo6bWF0Y2hlc1VzZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QKQEAg
LTg3Niw2ICs4NzcsMTYgQEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1lbnQ6OnBlbmRpbmdEZWNvZGVQ
cm9taXNlc0NvdW50Rm9yVGVzdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXIt
PnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwogfQogCitBdG9tU3RyaW5n
IEhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRpbmdzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZ2V0QXR0cmlidXRlRm9yQmluZGluZ3Moc3Jjc2V0QXR0ciwgUmVzb2x2ZVVSTHM6Olllc0V4
Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KTsKK30KKwordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpzZXRT
cmNzZXRGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBzZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY3NldEF0dHIsIHZhbHVlKTsKK30KKwogY29u
c3QgQXRvbVN0cmluZyYgSFRNTEltYWdlRWxlbWVudDo6bG9hZGluZ0ZvckJpbmRpbmdzKCkgY29u
c3QKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJp
bmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggMWQ5OWQzMjE3YjU2ZmUzYzFj
NWQwYzU1OGQ3ZWI0NzNhOTg5YzNlYy4uZTg0YjVhMjlmZjZjZjAxYmEyMzczYTRhNGM0ODAxMjEx
MmFkM2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTEyOSw2
ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWREZWZlcnJlZEltYWdlKCk7CiAKKyAg
ICBBdG9tU3RyaW5nIHNyY3NldEZvckJpbmRpbmdzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTcmNz
ZXRGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJik7CisKICAgICBjb25zdCBBdG9tU3RyaW5n
JiBsb2FkaW5nRm9yQmluZGluZ3MoKSBjb25zdDsKICAgICB2b2lkIHNldExvYWRpbmdGb3JCaW5k
aW5ncyhjb25zdCBBdG9tU3RyaW5nJik7CiAKQEAgLTE3Myw3ICsxNzYsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIGF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIFN0cmluZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0
IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRy
aWJ1dGUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc0RyYWdnYWJsZUlnbm9yaW5nQXR0cmlidXRlcygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwK
aW5kZXggZjkzNjM4NjJjOTI4NGM2YTBjNzhiM2E3MGM3N2Y2MjE0MDgxZjAyNS4uY2RiNjk2MzM5
NDZkM2JkN2RjNzc5ZDVhZmYwN2NkMmRkNWQ0YmFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuaWRsCkBAIC0yOCw3ICsyOCw3IEBACiBdIGludGVyZmFjZSBIVE1MSW1h
Z2VFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWx0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIFJlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmluZyBzcmM7Ci0gICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFVTVlN0cmluZyBzcmNzZXQ7CisgICAg
W0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgSW1wbGVtZW50ZWRBcz1zcmNzZXRGb3JCaW5kaW5nc10g
YXR0cmlidXRlIFVTVlN0cmluZyBzcmNzZXQ7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwg
UmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBzaXplczsKICAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBjcm9zc09yaWdpbjsKICAgICBbQ0VSZWFjdGlv
bnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVzZU1hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCmluZGV4IDY2M2Y5ODRiNTdkNGQwZWQzNDM5ZjA5MTNjMTRiMWNiMWUxOGZjMTcu
LmU2YzgxNTExYzQ2MTFiZGU0NGE0M2UxYzliOWFjMGNmYmYzYTc3ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcApAQCAtMzM3LDYgKzMzNyw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBw
YWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRl
cihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIpKQogI2VuZGlmCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyhXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCisgICAgLCBtX21hc2tlZFVSTFNj
aGVtZXMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tYXNrZWRVUkxTY2hlbWVzKSkKICAgICAs
IG1fYWxsb3dlZE5ldHdvcmtIb3N0cyhXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmFsbG93ZWRO
ZXR3b3JrSG9zdHMpKQogICAgICwgbV9sb2Fkc1N1YnJlc291cmNlcyhwYWdlQ29uZmlndXJhdGlv
bi5sb2Fkc1N1YnJlc291cmNlcykKICAgICAsIG1fc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcocGFnZUNvbmZpZ3VyYXRpb24uc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcpCkBAIC0zNzI5LDYgKzM3MzAsMTMgQEAgYm9vbCBQYWdlOjpzaG91bGREaXNhYmxlQ29y
c0ZvclJlcXVlc3RUbyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICB9KTsKIH0KIAorYm9vbCBQ
YWdlOjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJiB1cmwpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fbWFza2VkVVJMU2NoZW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9tYXNrZWRVUkxTY2hlbWVzLmNvbnRhaW5zKHVybC5wcm90b2NvbCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Cit9CisKIHZvaWQgUGFnZTo6cmV2ZWFsQ3VycmVu
dFNlbGVjdGlvbigpCiB7CiAgICAgQ2hlY2tlZFJlZihmb2N1c0NvbnRyb2xsZXIoKSktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTZWxlY3Rpb25SZXZl
YWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCmluZGV4IDc2MTI4YzIyMTNiZmMxNTQxOWI0MWE5N2NhM2NkMGRkYTEwMzVjODEu
LjkzMGI4YTFhNDJhYjY1MWMyMTU4ZGQ0Y2IzZDA4ZDA0MmFiMWIwMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC05MDksNiArOTA5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZm9yRWFjaEZyYW1lKGNvbnN0
IEZ1bmN0aW9uPHZvaWQoRnJhbWUmKT4mKTsKIAogICAgIGJvb2wgc2hvdWxkRGlzYWJsZUNvcnNG
b3JSZXF1ZXN0VG8oY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRNYXNrVVJMRm9y
QmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
amVjdFVzZXJTdHlsZVNoZWV0KFVzZXJTdHlsZVNoZWV0Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVJbmplY3RlZFVzZXJTdHlsZVNoZWV0KFVzZXJTdHlsZVNoZWV0Jik7CkBAIC0x
Mjc5LDYgKzEyODAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBWZWN0b3I8VXNlckNvbnRl
bnRVUkxQYXR0ZXJuPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gbV9tYXNrZWRVUkxTY2hlbWVzOwogICAgIFZlY3RvcjxVc2VyU3R5bGVTaGVldD4gbV91c2Vy
U3R5bGVTaGVldHNQZW5kaW5nSW5qZWN0aW9uOwogICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxT
dHJpbmc+PiBtX2FsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgYm9vbCBtX2lzVGFraW5nU25hcHNo
b3RzRm9yQXBwbGljYXRpb25TdXNwZW5zaW9uIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0MmE5NDRlZGQxYjM5ZDdkMmM2MTBhZTAzMThhMjA2
Zjk1Y2JiNWFlLi5lYjgxN2U2YjViNWI0ZDdiZWNhYTJhMWU1YjhkZmMwZWM4MGY3NmU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0xMzksNiArMTM5LDcgQEAg
cHVibGljOgogICAgIFJlZlB0cjxEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyPiBkZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyOwogI2VuZGlmCiAgICAgVmVjdG9yPFVzZXJDb250
ZW50VVJMUGF0dGVybj4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIEhhc2hTZXQ8U3RyaW5n
PiBtYXNrZWRVUkxTY2hlbWVzOwogICAgIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3Zp
ZGVyPiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyOwogICAgIFVuaXF1ZVJlZjxNZWRpYVJlY29y
ZGVyUHJvdmlkZXI+IG1lZGlhUmVjb3JkZXJQcm92aWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDBiMjVmZjZjMzhjODYzNGYzN2Vl
YTJhZmQwMjRhOGQ0MmE0ZjQyYzUuLjQxN2E3OTBhYzVjMzQ5ZDhkYjRjMjk4ODNmZTFlODI1MWM4
MTVkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU2VsZWN0aW9uKGNv
bnN0IFNpbXBsZVJhbmdlJiBzZWxlY3RlZFJhbmdlLCBib29sIGNhblNtYXJ0QwogICAgIC8vIFB1
dCBDRl9IVE1MIGZvcm1hdCBvbiB0aGUgcGFzdGVib2FyZCAKICAgICBpZiAoOjpPcGVuQ2xpcGJv
YXJkKG1fb3duZXIpKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgICAgICAvLyBG
SVhNRTogVXNlIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFj
eS4KKyAgICAgICAgLy8gRklYTUU6IFVzZSBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0Zv
clByaXZhY3kuCiAgICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1
YWxBcHBlYXJhbmNlKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSwKICAgICAgICAgICAg
IHNlbGVjdGVkUmFuZ2Uuc3RhcnQuY29udGFpbmVyLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygp
LCBkYXRhKTsKICAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAppbmRleCBlYzQzOWQwNjcxNGU2ZGU1Yjk0ZTIxZmI5Y2U4ZWUyMzljOTYyMmZhLi45ZmQ3
YmViMWFlN2FlZmFlMTY0NWVlMmUyNGNmOWQyYTRmNjdjZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTQ4LDYgKzE0
OCw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IG9sZFBhZ2VJRDsKICAgICBlbmNvZGVy
IDw8IG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgZW5jb2RlciA8PCBjb3JzRGlzYWJsaW5nUGF0
dGVybnM7CisgICAgZW5jb2RlciA8PCBtYXNrZWRVUkxTY2hlbWVzOwogICAgIGVuY29kZXIgPDwg
bG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgZW5jb2RlciA8PCBhbGxvd2VkTmV0d29ya0hvc3RzOwog
ICAgIGVuY29kZXIgPDwgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CkBA
IC00OTUsNiArNDk2LDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBX
VEZNb3ZlKCpjb3JzRGlzYWJsaW5nUGF0dGVybnMpOwogCisgICAgc3RkOjpvcHRpb25hbDxIYXNo
U2V0PFN0cmluZz4+IG1hc2tlZFVSTFNjaGVtZXM7CisgICAgZGVjb2RlciA+PiBtYXNrZWRVUkxT
Y2hlbWVzOworICAgIGlmICghbWFza2VkVVJMU2NoZW1lcykKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKCptYXNr
ZWRVUkxTY2hlbWVzKTsKKwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbG9hZHNTdWJyZXNvdXJj
ZXM7CiAgICAgZGVjb2RlciA+PiBsb2Fkc1N1YnJlc291cmNlczsKICAgICBpZiAoIWxvYWRzU3Vi
cmVzb3VyY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oCmluZGV4IGNiNzQxNjkzZGIzMGE3NTAyYjQ4OWM4Mzk3Y2VmNmM3MzlmZWRhOTEu
LjI4NmExZTdkOTUwZGUwYTU0YTZmYTQzODhmY2ZmNTM4NmU5YTY3OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTIxOSw2ICsy
MTksNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcg
b3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBWZWN0b3I8U3RyaW5nPiBjb3JzRGlzYWJsaW5nUGF0
dGVybnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1hc2tlZFVSTFNjaGVtZXM7CiAgICAgYm9vbCB1
c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBib29s
IGxvYWRzU3VicmVzb3VyY2VzIHsgdHJ1ZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxT
dHJpbmc+PiBhbGxvd2VkTmV0d29ya0hvc3RzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYjY5Mjk2NmEzZWY2YTk4
NmNiNjAzZDBmM2ExZTg4MDI3NjE0OWEzZS4uMTZmZGNiN2ZlMTRlMjA0OWRmMGFmZTE2ZGUxYzEz
NTQzODZiODhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC04Myw2ICs4Myw3IEBAIFJlZjxQYWdlQ29uZmlndXJh
dGlvbj4gUGFnZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGZvciAoYXV0byYgcGFp
ciA6IHRoaXMtPm1fdXJsU2NoZW1lSGFuZGxlcnMpCiAgICAgICAgIGNvcHktPm1fdXJsU2NoZW1l
SGFuZGxlcnMuc2V0KHBhaXIua2V5LCBwYWlyLnZhbHVlLmNvcHlSZWYoKSk7CiAgICAgY29weS0+
bV9jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSB0aGlzLT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsK
KyAgICBjb3B5LT5tX21hc2tlZFVSTFNjaGVtZXMgPSB0aGlzLT5tX21hc2tlZFVSTFNjaGVtZXM7
CiAgICAgY29weS0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgPSB0aGlz
LT5tX2Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDsKICAgICBjb3B5LT5tX3Vz
ZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdGhpcy0+bV91c2VyU2NyaXB0
c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0MmIyY2M1ZGVmZmVmN2Fj
ZjczMzQ5ZWYzOTZmZjViNGY0MmJjY2I0Li5mOGZmYmQ5NzIwMWU0NTZiZDMxMzkzNDU2MDA3YWQ0
ZjRjMTI0ZTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFn
ZUNvbmZpZ3VyYXRpb24uaApAQCAtMTQzLDcgKzE0MywxMCBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBjb3JzRGlzYWJsaW5nUGF0dGVybnMoKSBjb25zdCB7IHJl
dHVybiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJuczsgfQogICAgIHZvaWQgc2V0Q09SU0Rpc2FibGlu
Z1BhdHRlcm5zKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBwYXR0ZXJucykgeyBtX2NvcnNEaXNhYmxp
bmdQYXR0ZXJucyA9IFdURk1vdmUocGF0dGVybnMpOyB9Ci0gICAgCisKKyAgICBjb25zdCBIYXNo
U2V0PFdURjo6U3RyaW5nPiYgbWFza2VkVVJMU2NoZW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWFz
a2VkVVJMU2NoZW1lczsgfQorICAgIHZvaWQgc2V0TWFza2VkVVJMU2NoZW1lcyhIYXNoU2V0PFdU
Rjo6U3RyaW5nPiYmIHNjaGVtZXMpIHsgbV9tYXNrZWRVUkxTY2hlbWVzID0gV1RGTW92ZShzY2hl
bWVzKTsgfQorCiAgICAgYm9vbCB1c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRp
b247IH0KICAgICB2b2lkIHNldFVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
KGJvb2wgdmFsdWUpIHsgbV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9
IHZhbHVlOyB9CiAKQEAgLTIyNyw2ICsyMzAsNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxX
VEY6OlN0cmluZywgUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4+IG1fdXJsU2NoZW1l
SGFuZGxlcnM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
czsKKyAgICBIYXNoU2V0PFdURjo6U3RyaW5nPiBtX21hc2tlZFVSTFNjaGVtZXM7CiAgICAgYm9v
bCBtX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgeyB0cnVlIH07CiAg
ICAgV1RGOjpTdHJpbmcgbV9wcm9jZXNzRGlzcGxheU5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
CmluZGV4IDA0ZTA0NDI5ODgzMWNjYWNjZGQ3NTMxZTQ0YzQwNDU3ZWQ2YzU2NDkuLjBhMmY5ZjI3
ZDE2OWRlNjljNzcyOWQyODJiNDhkM2NmNjEyYzY1N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
CkBAIC05NzgsNiArOTc4LDIzIEBAIC0gKHZvaWQpX3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczoo
TlNBcnJheTxOU1N0cmluZyAqPiAqKXBhdHRlcm5zCiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5z
ZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMobWFrZVZlY3RvcjxTdHJpbmc+KHBhdHRlcm5zKSk7CiB9
CiAKKy0gKE5TU2V0PE5TU3RyaW5nICo+ICopX21hc2tlZFVSTFNjaGVtZXMKK3sKKyAgICBjb25z
dCBhdXRvJiBzY2hlbWVzID0gX3BhZ2VDb25maWd1cmF0aW9uLT5tYXNrZWRVUkxTY2hlbWVzKCk7
CisgICAgTlNNdXRhYmxlU2V0PE5TU3RyaW5nICo+ICpzZXQgPSBbTlNNdXRhYmxlU2V0IHNldFdp
dGhDYXBhY2l0eTpzY2hlbWVzLnNpemUoKV07CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUg
OiBzY2hlbWVzKQorICAgICAgICBbc2V0IGFkZE9iamVjdDpzY2hlbWVdOworICAgIHJldHVybiBz
ZXQ7Cit9CisKKy0gKHZvaWQpX3NldE1hc2tlZFVSTFNjaGVtZXM6KE5TU2V0PE5TU3RyaW5nICo+
ICopc2NoZW1lcworeworICAgIEhhc2hTZXQ8U3RyaW5nPiBzZXQ7CisgICAgZm9yIChOU1N0cmlu
ZyAqc2NoZW1lIGluIHNjaGVtZXMpCisgICAgICAgIHNldC5hZGQoc2NoZW1lKTsKKyAgICBfcGFn
ZUNvbmZpZ3VyYXRpb24tPnNldE1hc2tlZFVSTFNjaGVtZXMoV1RGTW92ZShzZXQpKTsKK30KKwog
LSAodm9pZClfc2V0TG9hZHNGcm9tTmV0d29yazooQk9PTClsb2FkcwogewogICAgIF9wYWdlQ29u
ZmlndXJhdGlvbi0+c2V0QWxsb3dlZE5ldHdvcmtIb3N0cyhsb2FkcyA/IHN0ZDo6bnVsbG9wdCA6
IHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+PiB7IEhhc2hTZXQ8U3RyaW5nPiB7IH0gfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCmluZGV4IDgxMzY1NTdjMWZhYTU2NDA5
YzkwZThjNGFjZTVmMTIyMjJjNTI4YmIuLjhjYWM5OWU5NWUyNzgzZDI5NmEzMGM2MzczMDNkZmFj
NTdmNjUwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCkBAIC04Miw2ICs4
Miw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfV0tBdHRyaWJ1dGlvbk92ZXJyaWRl
VGVzdGluZykgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2Vic2l0ZURh
dGFTdG9yZSAqX3dlYnNpdGVEYXRhU3RvcmVJZkV4aXN0cyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE1LjQpLCBpb3MoMTMuNCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRl
cj1fc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOikgTlNBcnJheTxOU1N0cmluZyAqPiAqX2NvcnNE
aXNhYmxpbmdQYXR0ZXJucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMu
NCkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0TWFza2VkVVJMU2No
ZW1lczopIE5TU2V0PE5TU3RyaW5nICo+ICpfbWFza2VkVVJMU2NoZW1lcyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0RGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uOikgQk9PTCBfZGVmZXJyYWJsZVVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVj
a0VuYWJsZWQ6KSBCT09MIF9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWM3YWQ0NGMyNDZhZDcwOTc3YWZhN2M2ZTQz
YmQwM2NjMjA1YjZlYy4uNzFiNDdkYjQ2YWY4NjkwZmU0MTIxZjZlMGZmZWU3NDI3MzQzMmRkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC04Mzc3LDYgKzgz
NzcsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25Q
YXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogCiAgICAgcGFyYW1ldGVycy5vdmVycmlk
ZGVuTWVkaWFUeXBlID0gbV9vdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIHBhcmFtZXRlcnMuY29y
c0Rpc2FibGluZ1BhdHRlcm5zID0gY29yc0Rpc2FibGluZ1BhdHRlcm5zKCk7CisgICAgcGFyYW1l
dGVycy5tYXNrZWRVUkxTY2hlbWVzID0gbV9jb25maWd1cmF0aW9uLT5tYXNrZWRVUkxTY2hlbWVz
KCk7CiAgICAgcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
biA9IG1fY29uZmlndXJhdGlvbi0+dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRp
b24oKTsKICAgICBwYXJhbWV0ZXJzLmFsbG93ZWROZXR3b3JrSG9zdHMgPSBtX2NvbmZpZ3VyYXRp
b24tPmFsbG93ZWROZXR3b3JrSG9zdHMoKTsKICAgICBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3Vy
Y2VzID0gbV9jb25maWd1cmF0aW9uLT5sb2Fkc1N1YnJlc291cmNlcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGll
bnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9X
ZWJFZGl0b3JDbGllbnRHdGsuY3BwCmluZGV4IGJmNGQyOGUzZThkZWZhYTQyNmJiOGY1YzEwOWU2
MmZjN2YxMDhhNjEuLjIwZGMwNDJlODVjZGEyN2VhOTU5ZDQzZGJhNWRhNGYzZWJhNDZjNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2Vi
RWRpdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6dXBkYXRlR2xvYmFsU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSkK
ICAgICBQYXN0ZWJvYXJkV2ViQ29udGVudCBwYXN0ZWJvYXJkQ29udGVudDsKICAgICBwYXN0ZWJv
YXJkQ29udGVudC5jYW5TbWFydENvcHlPckRlbGV0ZSA9IGZhbHNlOwogICAgIHBhc3RlYm9hcmRD
b250ZW50LnRleHQgPSBwbGFpblRleHQoKnJhbmdlKTsKLSAgICBwYXN0ZWJvYXJkQ29udGVudC5t
YXJrdXAgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShmcmFtZS0+c2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxz
Rm9yUHJpdmFjeSk7CisgICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXplUHJl
c2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLCBS
ZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpOwogICAgIFBhc3RlYm9hcmQ6
OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShm
cmFtZS0+cGFnZUlEKCkpKS0+d3JpdGUocGFzdGVib2FyZENvbnRlbnQpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBhYTdmYTRkNDY1
NzMyZDgzNGE5YWQyNTdhNTE1M2QxYmIwZDhiNjcuLmUxYzYwZWVhMWQzOTBkZmFjMDU5ZTIzMWEy
NDk4ZDY2MTIxYmUxMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC02NDMsNiArNjQzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
ICAgICBzeW5jaHJvbml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2Vzcygp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHBhcnNlQW5k
QWxsb3dBY2Nlc3NUb0NPUlNEaXNhYmxpbmdQYXR0ZXJucyhtX2NvcnNEaXNhYmxpbmdQYXR0ZXJu
cyk7CiAKKyAgICBwYWdlQ29uZmlndXJhdGlvbi5tYXNrZWRVUkxTY2hlbWVzID0gcGFyYW1ldGVy
cy5tYXNrZWRVUkxTY2hlbWVzOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLnVzZXJTY3JpcHRzU2hv
dWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gcGFyYW1ldGVycy51c2VyU2NyaXB0c1Nob3VsZFdh
aXRVbnRpbE5vdGlmaWNhdGlvbjsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJlc291
cmNlcyA9IHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24uYWxsb3dlZE5ldHdvcmtIb3N0cyA9IHBhcmFtZXRlcnMuYWxsb3dlZE5ldHdvcmtIb3N0czsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiM2U2
YWQ0YjIzZGZlNjU0YTkyZWMzZWQ3YmVjNzU3MTdhODc5NGU2Li43ODk1ZmJmNzlkZjE2MTQ3MjZk
Mjk1MTVkYTFhZDYwNGRmOTQ2MTBkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMDMgIFRpbW90aHkgSGF0
Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhYmlsaXR5IHRvIG1hc2sg
VVJMcyBmcm9tIERPTSBhbmQgSmF2YVNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTc2CisgICAgICAgIHJkYXI6Ly84MTk5MTI0NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAg
ICAoVEVTVChXZWJLaXQsIENvbmZpZ3VyYXRpb25NYXNrZWRVUkxTY2hlbWVzKSk6IEFkZGVkLgor
CiAyMDIyLTAzLTIyICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWVyZ2UtUXVldWVdIEFkZCBWYWxpZGF0ZVNxdWFzaGVkCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KaW5kZXggYzA3NWRkNTM0ZmRhODZmNjc5MmMxOWFkZDBlMjUxZThhZjMwMjAz
ZC4uOGZhZjg5YjY5OGNkNzI5Mjg2NGQzYjUzZjZkMzQ2M2IzMGY4ZjJhMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMTcyLDMgKzE3Miw2NSBAQCBURVNUKFdlYktpdCwgQ29u
ZmlndXJhdGlvbkRpc2FibGVKYXZhU2NyaXB0TmVzdGVkQm9keSkKICAgICBOU1N0cmluZyAqYm9k
eUhUTUwgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwiXTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoYm9keUhUTUwsIEAiPHRhYmxl
PjwvdGFibGU+Iik7CiB9CisKK1RFU1QoV2ViS2l0LCBDb25maWd1cmF0aW9uTWFza2VkVVJMU2No
ZW1lcykKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIG5ld10pOworICAgIEVYUEVDVF9FUShbY29uZmlndXJhdGlvbiBfbWFza2VkVVJM
U2NoZW1lc10uY291bnQsIDBVKTsKKworICAgIFtjb25maWd1cmF0aW9uIF9zZXRNYXNrZWRVUkxT
Y2hlbWVzOltOU1NldCBzZXRXaXRoT2JqZWN0czpAInRlc3Qtc2NoZW1lIiwgQCJhbm90aGVyLXNj
aGVtZSIsIG5pbF1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPGltZyBzcmM9XCJ0ZXN0LXNjaGVtZTovL2Zvby5jb20vYmFyLmpw
Z1wiPjxpbWcgc3JjPVwiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZ1wiPiIgYmFzZVVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CisKKyAgICBOU1N0cmlu
ZyAqaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVswXS5zcmMiXTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIik7CisK
KyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0dHJpYnV0ZShcInNy
Y1wiKSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2Vk
LXVybDovL2hpZGRlbi8iKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilb
MF0uZ2V0QXR0cmlidXRlTm9kZShcInNyY1wiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJF
UShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8iKTsKKworICAgIGlt
YWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uc3JjIl07CisgICAgRVhQRUNUX1dLX1NU
UkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmciKTsKKworICAgIGlt
YWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0QXR0cmlidXRlKFwic3JjXCIpIl07
CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jh
ei5wbmciKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0QXR0
cmlidXRlTm9kZShcInNyY1wiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNv
dXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIik7CisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW1nIHNyY3NldD1cInRlc3Qtc2NoZW1lOi8vZm9v
LmNvbS9iYXIuanBnIDF4LCBiYXIuanBnIDJ4LCBhbm90aGVyLXNjaGVtZTovL2Zvby5jb20vYmFy
LmdpZiAzeFwiPjxpbWcgc3Jjc2V0PVwiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwgYmF6
LnBuZyAxeFwiPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBs
ZS5jb20iXV07CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLnNyY3Nl
dCJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVy
bDovL2hpZGRlbi8gMXgsIGh0dHBzOi8vZXhhbXBsZS5jb20vYmFyLmpwZyAyeCwgd2Via2l0LW1h
c2tlZC11cmw6Ly9oaWRkZW4vIDN4Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwi
aW1nXCIpWzBdLmdldEF0dHJpYnV0ZShcInNyY3NldFwiKSJdOworICAgIEVYUEVDVF9XS19TVFJF
UShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gMXgsIGJhci5qcGcg
MngsIHdlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAzeCIpOworCisgICAgaW1hZ2VTb3VyY2Ug
PSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbChcImltZ1wiKVswXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3Jjc2V0XCIpLnZhbHVl
Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJs
Oi8vaGlkZGVuLyAxeCwgYmFyLmpwZyAyeCwgd2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDN4
Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLnNyY3NldCJdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXou
cG5nIDJ4LCBodHRwczovL2V4YW1wbGUuY29tL2Jhei5wbmcgMXgiKTsKKworICAgIGltYWdlU291
cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0QXR0cmlidXRlKFwic3Jjc2V0XCIpIl07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5w
bmcgMngsIGJhei5wbmcgMXgiKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdc
IilbMV0uZ2V0QXR0cmlidXRlTm9kZShcInNyY3NldFwiKS52YWx1ZSJdOworICAgIEVYUEVDVF9X
S19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIDJ4LCBiYXou
cG5nIDF4Iik7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8
c2NyaXB0IHNyYz1cImFub3RoZXItc2NoZW1lOi8vZm9vLmNvbS9iYXIuanNcIj48L3NjcmlwdD48
c2NyaXB0IHNyYz1cImh0dHA6Ly9hcHBsZS5jb20vYmF6LmpzXCI+PC9zY3JpcHQ+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKworICAgIE5T
U3RyaW5nICpzY3JpcHRTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFwiKVswXS5zcmMiXTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoc2NyaXB0U291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlk
ZGVuLyIpOworCisgICAgc2NyaXB0U291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRcIilbMV0uc3Jj
Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKHNjcmlwdFNvdXJjZSwgQCJodHRwOi8vYXBwbGUuY29t
L2Jhei5qcyIpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
PGlmcmFtZSBzcmM9XCJ0ZXN0LXNjaGVtZTovL2Zvby5jb20vYmFyLmh0bWxcIj48L2lmcmFtZT48
aWZyYW1lIHNyYz1cImh0dHA6Ly9hcHBsZS5jb20vYmF6Lmh0bWxcIj48L2lmcmFtZT4iIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOworCisgICAg
TlNTdHJpbmcgKmh0bWxTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXTsKKyAgICBFWFBFQ1RfRVEoW2h0bWxTb3Vy
Y2UgY29udGFpbnNTdHJpbmc6QCI8aWZyYW1lIHNyYz1cIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlk
ZGVuL1wiPjwvaWZyYW1lPiJdLCBZRVMpOworfQo=
</data>
<flag name="commit-queue"
          id="484952"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456598</attachid>
            <date>2022-04-04 11:44:16 -0700</date>
            <delta_ts>2022-04-04 18:46:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220404114415.patch</filename>
            <type>text/plain</type>
            <size>52470</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjhiZTQ2MDVlZjQ5MWFhYmRiNDU3Yzk0ZWQ3ZmYzNmMyMDU5MWZlLi5mNjJmOTM1MWVmZjJlOGFh
MDU0OGYwZGE4YzFiZWE2M2ExMDVhOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZh
U2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1NzYKKyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOiBSZXR1cm4gIltleHRlbnNpb24g
Y29kZV0iIGZvciBhbnkgc291cmNlVVJMIHRoYXQgc3RhcnRzIHdpdGggInNhZmFyaS0iLgorICAg
ICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOiBBZGRlZCBzb21lIHdo
aXRlc3BhY2UuCisKIDIwMjItMDMtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBDaGFuZ2UgRGF0ZS5wYXJzZSB0byBzdG9wIHJldHVybmluZyBu
dW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uMjk1ZDMyZmQ1YzY0ZDM4ZTA0ODNlYTc5YTI4Mzlj
YjJkM2E5MTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5u
ZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpvdXRlckhUTUwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgY29uc3QpOiBBZGRlZC4g
TW92ZWQgZnJvbSBNYXJrdXBBY2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGFuZCBhZGRl
ZCBuZXcgTm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSBwYXRoLgorICAgICAgICBDaGFuZ2VkIFll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5IGFuZCBpbmNsdWRlZCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoKSBjaGVjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29u
c3QpOiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBk
aXJlY3RseS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDogVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIGZvciBnZXRBdHRyaWJ1dGUuCisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
aW5uZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9y
UHJpdmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgICogZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVs
YXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGNvbnN0KTogVXNlIEVsZW1lbnQ6OnJlc29sdmVVUkxT
dHJpbmdJZk5lZWRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQpOiBDaGFuZ2Vk
IFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3Qp
OiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRp
bmdzIGNvbnN0KTogQWRkZWQuIFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyB3aXRoIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnNldFNyY3NldEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIyLTAzLTIy
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmE2
ZmZmOGU1YjZhNmU1OTBlNTY2M2U0YzM4NzkyYmQ0YjM4NzYzLi4wYjJjM2QyNzY0Y2ZlNDUyNWU1
OTZhNTIxMTJhYjc0OTJjOTNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA0
LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFy
Oi8vODE5OTEyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogQWRkZWQgbWFz
a2VkVVJMU2NoZW1lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBBZGRlZCBt
YXNrZWRVUkxTY2hlbWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Om1hc2tlZFVSTFNjaGVt
ZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldE1h
c2tlZFVSTFNjaGVtZXMpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX21hc2tlZFVSTFNjaGVtZXNdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBBZGRlZCBtYXNrZWRVUkxTY2hlbWVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisKIDIwMjItMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tIGFuZCBTaGFyZWRWaWRlb0ZyYW1lLmNwcCBkbyBub3QgbmVlZCB0byBiZSBidWls
dCBhcyBwYXJ0IG9mIFdlYkNvbnRlbnQgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAppbmRleCA2YjhmM2RmNjMzNTA0NWQ1YWMyMWVmNWEw
ODJkNDg2ODA0ZmEzZTZiLi5hMjY1YjE4MDNlMjljMmIxZTY2OTA2MDNmYzA5Njc0MDE4MTViZjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAt
NjMsMTEgKzYzLDEzIEBAIFN0cmluZyBTdGFja0ZyYW1lOjpzb3VyY2VVUkwoKSBjb25zdAogICAg
IGlmIChtX2lzV2FzbUZyYW1lKQogICAgICAgICByZXR1cm4gIlt3YXNtIGNvZGVdIl9zOwogCi0g
ICAgaWYgKCFtX2NvZGVCbG9jaykgeworICAgIGlmICghbV9jb2RlQmxvY2spCiAgICAgICAgIHJl
dHVybiAiW25hdGl2ZSBjb2RlXSJfczsKLSAgICB9CiAKICAgICBTdHJpbmcgc291cmNlVVJMID0g
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCBoZXJlLCBidXQgY29tZSBmcm9tIHNvbWUg
QVBJIHdpdGggd2hhdCBzY2hlbWVzIHRvIG1hc2suCisgICAgaWYgKHNvdXJjZVVSTC5zdGFydHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoInNhZmFyaS0iX3MpKQorICAgICAgICByZXR1cm4gIltleHRl
bnNpb24gY29kZV0iX3M7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBzb3VyY2VVUkw7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC05MiwxMSArOTQs
MTMgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KKwogICAgIFN0
cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkgewogICAgICAgICBpZiAobV9jYWxsZWUtPmlz
T2JqZWN0KCkpCiAgICAgICAgICAgICBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZt
LCBqc0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZS5nZXQoKSkpLmltcGwoKTsKICAgICB9CisKICAg
ICByZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXgg
NzFiMzZiY2U1NTNjYzFlNGRmMzk5NmQyYmQ0YTI4YWVkMDdhMmM5Mi4uZWVhYmJlNTQzMDA1YzFh
MDU0MzE1ZmMzYTE1NTNiNWRiYjAxY2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgc3ViIEdl
dHRlckV4cHJlc3Npb24KIAogICAgIG15ICRmdW5jdGlvbk5hbWU7CiAgICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVUkwifSkgewotICAgICAgICAkZnVuY3Rpb25OYW1l
ID0gImdldFVSTEF0dHJpYnV0ZSI7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJMQXR0
cmlidXRlRm9yQmluZGluZ3MiOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJib29sZWFuIikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24iOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJsb25nIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBiNDQ3Mzk1ZWUzN2M2NDIwYTI4NDExYjI2YzdjNTBk
YjI2Nzc5YWRjLi5kYTlhNzUzYzY1ZDRkYmFlYjBmZjJkMTMzN2I1MDM1M2EyODUxNGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcApAQCAtMzg5MCw3ICszODkwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ial9yZWZsZWN0ZWRVUkxBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2wKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRy
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0
ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKSkp
OwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3JlZmxlY3RlZFVSTEF0
dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCkBAIC0zOTIxLDcgKzM5MjEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHJH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0cikpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfcmVmbGVjdGVkVVNWVVJMQXR0ciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKQEAgLTQwNDUsNyArNDA0NSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggMTJjNDAyNmQ3Yjc1MmUxNGUxMDkxMGQy
YzZhZTBmODIxNmFlYTc5Ni4uNDM1YTM0NDhhYzEwY2Y4MWJiZjM0M2E4ZDE0MTI3MmMzNjEzMDk5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIwLDEwICsxMjAsMTAgQEAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogQXR0cjo6c3R5bGUoKQogICAgIHJldHVybiAmbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVE
ZWNsYXJhdGlvbigpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBBdHRyOjp2YWx1ZSgpIGNvbnN0
CitBdG9tU3RyaW5nIEF0dHI6OnZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50KQot
ICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MocXVhbGlm
aWVkTmFtZSgpKTsKICAgICByZXR1cm4gbV9zdGFuZGFsb25lVmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5o
CmluZGV4IGFjOTRjODA5ZTkzNjNjYjRjNjc3NmUzNTQ2MDYyMTBhYmM0NTI3YWMuLmFlYTQ4M2I4
MGE1NzYyMzE0MDE1ZjY5NWQ3MTM2MjZiNWI2MjhiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHF1YWxpZmllZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0ODI1NDZlNzczOWI1
NTA1ZjhjMGYyODEuLjkwN2FjMmEyMDY2MGY4ODIzZjVkYzUwMGNiZDA3ZGYwYzFhNzFhOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTYwMCw2ICs1NjAwLDM3IEBAIFVSTCBEb2N1bWVu
dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEZvcmNlVVRGOCBmb3JjZVVURjgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMLCBmb3JjZVVURjgpOwog
fQogCitib29sIERvY3VtZW50OjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJiB1
cmwpIGNvbnN0Cit7CisgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFnZS0+c2hvdWxkTWFza1VS
TEZvckJpbmRpbmdzKHVybCk7Cit9CisKK1VSTCBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3NJZk5lZWRlZChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoc2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzKHVybCkpKQorICAgICAgICByZXR1cm4gbWFza2VkVVJMRm9y
QmluZGluZ3MoKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBBdG9tU3RyaW5nJiBEb2N1
bWVudDo6bWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBN
YWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsKCJ3ZWJraXQtbWFz
a2VkLXVybDovL2hpZGRlbi8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Cisg
ICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmlu
ZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVk
PFVSTD4gbWFza2VkVVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAg
ICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWFza2VkVVJMLmNvbnN0
cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpLnN0cmluZygpKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gbWFza2VkVVJMOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRCYWNrRm9yd2FyZENh
Y2hlU3RhdGUoQmFja0ZvcndhcmRDYWNoZVN0YXRlIHN0YXRlKQogewogICAgIGlmIChtX2JhY2tG
b3J3YXJkQ2FjaGVTdGF0ZSA9PSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZDNkOTNk
OGRiZjlmMDNjMTQ3NTEwNDM2NWRjMDcxOTc5N2MzYWFjYy4uOTRhNzIzMjU5NTBkNWRjZGIxNzU1
ZGE3ZTg2OTE2MzdkNjY3NTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTcyMCw2ICs3MjAs
MTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChjb25zdCBT
dHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAgICBVUkwg
Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJpZGUsIEZv
cmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRNYXNrVVJM
Rm9yQmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgVVJMIG1hc2tlZFVSTEZvckJpbmRp
bmdzSWZOZWVkZWQoY29uc3QgVVJMJikgY29uc3Q7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbWFz
a2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBjb25zdCBVUkwmIG1hc2tlZFVS
TEZvckJpbmRpbmdzKCkgY29uc3Q7CisKICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYjk5N2JmZDBmZGI5ZmVl
ZjQ0M2Y4YjNjY2E0ZDIwZTYxYzBiN2M5Yy4uMDYyNjRjOWFiOWFkYmJkM2EyYjYyN2U3ZjVjZmQ1
ZTBiNGM1NjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNzIwLDYgKzcyMCwyMyBAQCBj
b25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gbnVsbEF0b20oKTsKIH0KIAorQXRvbVN0cmluZyBF
bGVtZW50OjpnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyhjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBSZXNvbHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QKK3sKKyAgICBpZiAoIWVsZW1lbnREYXRh
KCkpCisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOworCisgICAgc3luY2hyb25pemVBdHRyaWJ1
dGUobmFtZSk7CisKKyAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGZpbmRBdHRyaWJ1
dGVCeU5hbWUobmFtZSk7CisgICAgaWYgKCFhdHRyaWJ1dGUpCisgICAgICAgIHJldHVybiBudWxs
QXRvbSgpOworCisgICAgaWYgKGF0dHJpYnV0ZUNvbnRhaW5zVVJMKCphdHRyaWJ1dGUpKQorICAg
ICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShVUkwoKSwgKmF0dHJpYnV0
ZSwgcmVzb2x2ZVVSTHMpOworCisgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKK30KKwog
VmVjdG9yPFN0cmluZz4gRWxlbWVudDo6Z2V0QXR0cmlidXRlTmFtZXMoKSBjb25zdAogewogICAg
IFZlY3RvcjxTdHJpbmc+IGF0dHJpYnV0ZXNWZWN0b3I7CkBAIC0xNzk4LDYgKzE4MTUsMjMgQEAg
Y29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcm
IHF1YWxpZmllZE5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKK0F0b21T
dHJpbmcgRWxlbWVudDo6Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYg
bG9jYWxOYW1lLCBSZXNvbHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QKK3sKKyAgICBpZiAoIWVs
ZW1lbnREYXRhKCkpCisgICAgICAgIHJldHVybiBudWxsQXRvbSgpOworCisgICAgc3luY2hyb25p
emVBdHRyaWJ1dGUobG9jYWxOYW1lKTsKKworICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRl
ID0gZWxlbWVudERhdGEoKS0+ZmluZEF0dHJpYnV0ZUJ5TmFtZShsb2NhbE5hbWUsIHNob3VsZEln
bm9yZUF0dHJpYnV0ZUNhc2UoKnRoaXMpKTsKKyAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAg
cmV0dXJuIG51bGxBdG9tKCk7CisKKyAgICBpZiAoYXR0cmlidXRlQ29udGFpbnNVUkwoKmF0dHJp
YnV0ZSkpCisgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKFVSTCgp
LCAqYXR0cmlidXRlLCByZXNvbHZlVVJMcyk7CisKKyAgICByZXR1cm4gYXR0cmlidXRlLT52YWx1
ZSgpOworfQorCiBjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGVOUyhjb25z
dCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gZ2V0QXR0cmlidXRlKFF1YWxpZmllZE5hbWUobnVsbEF0b20o
KSwgbG9jYWxOYW1lLCBuYW1lc3BhY2VVUkkpKTsKQEAgLTMyNzAsMTIgKzMzMDQsMTIgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRWxlbWVudDo6bWVyZ2VXaXRoTmV4dFRleHROb2RlKFRleHQmIG5vZGUp
CiAKIFN0cmluZyBFbGVtZW50Ojppbm5lckhUTUwoKSBjb25zdAogewotICAgIHJldHVybiBzZXJp
YWxpemVGcmFnbWVudCgqdGhpcywgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlc09mQ2hpbGRyZW4p
OworICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywgU2VyaWFsaXplZE5vZGVzOjpT
dWJ0cmVlc09mQ2hpbGRyZW4sIG51bGxwdHIsIFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5KTsKIH0KIAogU3RyaW5nIEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRy
ZWVJbmNsdWRpbmdOb2RlKTsKKyAgICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNl
cmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUsIG51bGxwdHIsIFJlc29sdmVVUkxz
OjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRWxl
bWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCkKQEAgLTM4NDgsNiArMzg4Miwx
MSBAQCBVUkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuY29tcGxldGVVUkwoZ2V0QXR0cmlidXRl
KG5hbWUpKTsKIH0KIAorVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvY3VtZW50KCku
bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZChnZXRVUkxBdHRyaWJ1dGUobmFtZSkpOworfQor
CiBVUkwgRWxlbWVudDo6Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtNDU1MCw5ICs0NTg5LDM3
IEBAIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdAogICAgIHJl
dHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKIH0KIAotU3RyaW5nIEVsZW1lbnQ6OmNvbXBs
ZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkgY29uc3QKK1N0cmluZyBFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVk
ZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzIHJlc29sdmVVUkxzLCBjb25z
dCBVUkwmIGJhc2UpIGNvbnN0Cit7CisgICAgVVJMIGNvbXBsZXRlVVJMID0gYmFzZS5pc051bGwo
KSA/IGRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKSA6IFVSTChiYXNlLCB1cmxTdHJp
bmcpOworCisgICAgc3dpdGNoIChyZXNvbHZlVVJMcykgeworICAgIGNhc2UgUmVzb2x2ZVVSTHM6
OlllczoKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRlVVJMLnN0cmluZygpOworCisgICAgY2FzZSBS
ZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3k6IHsKKyAgICAgICAgaWYgKGRv
Y3VtZW50KCkuc2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbXBsZXRlVVJMKSkKKyAgICAgICAg
ICAgIHJldHVybiBkb2N1bWVudCgpLm1hc2tlZFVSTEZvckJpbmRpbmdzKCkuc3RyaW5nKCk7Cisg
ICAgICAgIGlmICghY29tcGxldGVVUkwuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJldHVy
biBjb21wbGV0ZVVSTC5zdHJpbmcoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2Fz
ZSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeToKKyAgICAgICAgaWYgKGRv
Y3VtZW50KCkuc2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbXBsZXRlVVJMKSkKKyAgICAgICAg
ICAgIHJldHVybiBkb2N1bWVudCgpLm1hc2tlZFVSTEZvckJpbmRpbmdzKCkuc3RyaW5nKCk7Cisg
ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSZXNvbHZlVVJMczo6Tm86CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIHJldHVybiB1cmxTdHJpbmc7Cit9CisKK1N0cmluZyBFbGVtZW50Ojpj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUsIFJlc29sdmVVUkxzIHJlc29sdmVVUkxzKSBjb25zdAogewotICAgIHJl
dHVybiBVUkwoYmFzZSwgYXR0cmlidXRlLnZhbHVlKCkpLnN0cmluZygpOworICAgIHJldHVybiBy
ZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoYXR0cmlidXRlLnZhbHVlKCksIHJlc29sdmVVUkxzLCBi
YXNlKTsKIH0KIAogRXhjZXB0aW9uT3I8Tm9kZSo+IEVsZW1lbnQ6Omluc2VydEFkamFjZW50KGNv
bnN0IFN0cmluZyYgd2hlcmUsIFJlZjxOb2RlPiYmIG5ld0NoaWxkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggYTUyOGQxNzA1ZWRhMWEyM2Y1ZDlmMTMzZjdmMjZmZjVlM2VhNWY5MC4uODdlMzdjMzk3
MTVhZjViYjI2N2VjOGFiNjc5MjhkNWMxZTE3NTFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC04
MSw2ICs4MSw3IEBAIGVudW0gY2xhc3MgQW5pbWF0aW9uSW1wYWN0OwogZW51bSBjbGFzcyBFdmVu
dEhhbmRsaW5nIDogdWludDhfdDsKIGVudW0gY2xhc3MgRXZlbnRQcm9jZXNzaW5nIDogdWludDhf
dDsKIGVudW0gY2xhc3MgSXNTeW50aGV0aWNDbGljayA6IGJvb2wgeyBObywgWWVzIH07CitlbnVt
IGNsYXNzIFJlc29sdmVVUkxzIDogdWludDhfdCB7IE5vLCBOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2
YWN5LCBZZXMsIFllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5IH07CiBlbnVtIGNsYXNzIFNlbGVj
dGlvblJlc3RvcmF0aW9uTW9kZSA6IHVpbnQ4X3Q7CiAKIHN0cnVjdCBHZXRBbmltYXRpb25zT3B0
aW9uczsKQEAgLTEwNyw2ICsxMDgsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdDsKKyAgICBBdG9tU3RyaW5nIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VS
THNGb3JQcml2YWN5KSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBRdWFsaWZpZWRO
YW1lcz4KICAgICBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBRdWFsaWZpZWROYW1lcyYuLi4pIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSk7CkBAIC0xMzksOSArMTQxLDExIEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWRO
YW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0F0dHJpYnV0ZU5TKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBj
b25zdDsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0
ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgbG9j
YWxOYW1lKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBnZXRB
dHRyaWJ1dGVOUyhjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJp
bmcmIGxvY2FsTmFtZSkgY29uc3Q7CiAKKyAgICBBdG9tU3RyaW5nIGdldEF0dHJpYnV0ZUZvckJp
bmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZl
VVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSkgY29uc3Q7CisKICAgICBXRUJDT1JFX0VY
UE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVh
bGlmaWVkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpOwogICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxRdWFsaWZpZWROYW1lPiBwYXJzZUF0dHJpYnV0ZU5hbWUoY29uc3QgQXRvbVN0cmluZyYg
bmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBdHRyaWJ1dGVOUyhjb25zdCBBdG9tU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKTsKQEAgLTQxNiwxMCArNDIwLDEyIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBhdHRyaWJ1dGVDb250YWluc1VSTChjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QgeyByZXR1cm4gaXNVUkxBdHRyaWJ1dGUoYXR0
cmlidXRlKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFs
dWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmKSBjb25zdDsKKyAgICBTdHJpbmcg
cmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZXNvbHZl
VVJMcyA9IFJlc29sdmVVUkxzOjpZZXMsIGNvbnN0IFVSTCYgYmFzZSA9IFVSTCgpKSBjb25zdDsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVS
TCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJiwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6WWVz
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ29udGVudEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQg
VVJMIGdldFVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CisgICAgVVJM
IGdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsK
ICAgICBVUkwgZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCmluZGV4IGE1MjMzMWZmODdhMjgyZDAxNmM5MjYxMDUy
OWYzODRjMmMzZDQ3MDQuLmRmYjRkOWYyODRlOTZmYWM5MjkwNDZmNzNmMDgwNjJkNzlkOTlkOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBbRE9NSklUPVJl
YWRET01dIGJvb2xlYW4gaGFzQXR0cmlidXRlcygpOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25s
eSBhdHRyaWJ1dGUgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7CiAgICAgc2VxdWVuY2U8RE9NU3Ry
aW5nPiBnZXRBdHRyaWJ1dGVOYW1lcygpOwotICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5n
PyBnZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOworICAgIFtET01KSVQ9UmVh
ZERPTSwgSW1wbGVtZW50ZWRBcz1nZXRBdHRyaWJ1dGVGb3JCaW5kaW5nc10gRE9NU3RyaW5nPyBn
ZXRBdHRyaWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0
QXR0cmlidXRlTlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUp
OwogICAgIFtDRVJlYWN0aW9uc10gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVh
bGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5l
ZCBzZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxp
ZmllZE5hbWUsIERPTVN0cmluZyB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5k
ZXggYTMyMmRlYzQxZGRmNGIzNWJlMTgzMTZmOWFmMDRlMjUwY2I2ZWE5Yi4uNTI5YWU5MGJjYzIy
OWMzNTdhYTQ2MWI3OGQ3ZmRmZmFlNGY3MThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cApAQCAtMTc4LDcgKzE3OCw3IEBAIFN0eWxlU2hlZXRMaXN0JiBTaGFkb3dSb290OjpzdHlsZVNo
ZWV0cygpCiAKIFN0cmluZyBTaGFkb3dSb290Ojppbm5lckhUTUwoKSBjb25zdAogewotICAgIHJl
dHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlc09m
Q2hpbGRyZW4pOworICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywgU2VyaWFsaXpl
ZE5vZGVzOjpTdWJ0cmVlc09mQ2hpbGRyZW4sIG51bGxwdHIsIFJlc29sdmVVUkxzOjpOb0V4Y2x1
ZGluZ1VSTHNGb3JQcml2YWN5KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gU2hhZG93Um9vdDo6
c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgbWFya3VwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRleCAzZTY5NjFkMTczMGQ0Mzc0YzY0ZmY4N2Ey
ZDBhZjEyN2VjMTA1NDQwLi44MWY5MDhlMGRkYjkyNWNhMmFlM2I2NTczNzNkYmEyMTM2ZDM5NDRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAt
MjMyLDE5ICsyMzIsNyBAQCB2b2lkIE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlc1dp
dGhOYW1lc3BhY2VzKE5vZGUmIHRhcmdldE5vZGUsIFNlcmlhbGl6ZQogCiBTdHJpbmcgTWFya3Vw
QWNjdW11bGF0b3I6OnJlc29sdmVVUkxJZk5lZWRlZChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZykgY29uc3QKIHsKLSAgICBzd2l0Y2ggKG1fcmVzb2x2ZVVS
THMpIHsKLSAgICBjYXNlIFJlc29sdmVVUkxzOjpZZXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50
LmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKS5zdHJpbmcoKTsKLQotICAgIGNhc2Ug
UmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5OgotICAgICAg
ICBpZiAoIWVsZW1lbnQuZG9jdW1lbnQoKS51cmwoKS5pc0xvY2FsRmlsZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpLnN0cmlu
ZygpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vOgotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHVybFN0cmluZzsKKyAgICByZXR1cm4gZWxlbWVu
dC5yZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQodXJsU3RyaW5nLCBtX3Jlc29sdmVVUkxzKTsKIH0K
IAogdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6c3RhcnRBcHBlbmRpbmdOb2RlKGNvbnN0IE5vZGUm
IG5vZGUsIE5hbWVzcGFjZXMqIG5hbWVzcGFjZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCBmODhhODE2ZWE2Mzc2ZDE3MjQwYTY0ODExZTk2OGE5
NWYzODljODAzLi42ZTljZGE3MDAxOGJjNjRmYTdjMDdiNjc1NGU3NWNjZGQ3MmU0MTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KQEAgLTgwLDcgKzgw
LDcgQEAgU3RyaW5nIEVkaXRvcjo6c2VsZWN0aW9uSW5IVE1MRm9ybWF0KCkKIHsKICAgICBpZiAo
SW1hZ2VPdmVybGF5Ojppc0luc2lkZU92ZXJsYXkobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKSkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNl
cnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCks
IFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSwgU2VyaWFs
aXplQ29tcG9zZWRUcmVlOjpZZXMpOworICAgIHJldHVybiBzZXJpYWxpemVQcmVzZXJ2aW5nVmlz
dWFsQXBwZWFyYW5jZShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLCBSZXNvbHZl
VVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6
WWVzKTsKIH0KIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAppbmRleCA5NGUzODEzNzViOTc3MTcwODI4MjhlMGM5
NjQ4YjU0OTdkNmYyNGZlLi5lZjk5YTJlZjY5YjRlMTQxMzk3ODIwNzNjYjIwMjFjYWU0ZmE4YmMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2Fy
ZCYgcGFzdGVib2FyZCkKICAgICBQYXN0ZWJvYXJkV2ViQ29udGVudCBwYXN0ZWJvYXJkQ29udGVu
dDsKICAgICBwYXN0ZWJvYXJkQ29udGVudC5jYW5TbWFydENvcHlPckRlbGV0ZSA9IGNhblNtYXJ0
Q29weU9yRGVsZXRlKCk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQudGV4dCA9IHNlbGVjdGVkVGV4
dEZvckRhdGFUcmFuc2ZlcigpOwotICAgIHBhc3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlh
bGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOworICAgIHBhc3RlYm9hcmRDb250ZW50Lm1h
cmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1fZG9jdW1lbnQuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogICAgIHBhc3RlYm9hcmRDb250ZW50
LmNvbnRlbnRPcmlnaW4gPSBtX2RvY3VtZW50Lm9yaWdpbklkZW50aWZpZXJGb3JQYXN0ZWJvYXJk
KCk7CiAgICAgcGFzdGVib2FyZC53cml0ZShwYXN0ZWJvYXJkQ29udGVudCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcAppbmRleCBiOTc4ZTJl
OGY4ZTg4MmJiYzdkMGY5MWNhZDc2YzM4MjUwOGU5YTNmLi45MDA1Yzk1NmQ1ZWI1NjNkN2IzZmMy
ZDA3ZThmNWQ4ZmRiMTcwYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xp
YndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3Bl
L0VkaXRvckxpYldQRS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiB7CiAgICAgUGFzdGVi
b2FyZFdlYkNvbnRlbnQgcGFzdGVib2FyZENvbnRlbnQ7CiAgICAgcGFzdGVib2FyZENvbnRlbnQu
dGV4dCA9IHNlbGVjdGVkVGV4dEZvckRhdGFUcmFuc2ZlcigpOwotICAgIHBhc3RlYm9hcmRDb250
ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2Nh
bEZpbGVVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOworICAgIHBh
c3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNF
eGNsdWRpbmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogICAg
IHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZENvbnRlbnQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggMWEyY2QwM2YwMGNlZTAyNjkyNmJjM2EyNGZm
YTliYmM1ZTA4OTY2My4uMmZmOWJiZDQ4MGM1NjY3OTBkMzFjOGY2M2I2NzY2NmFjMTQ2M2QyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAtMjcyLDcgKzI3Miw3
IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3Rl
Ym9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRh
SW5XZWJBcmNoaXZlRm9ybWF0ID0gaW1hZ2VJbldlYkFyY2hpdmVGb3JtYXQoaW1hZ2VFbGVtZW50
KTsKIAogICAgIGlmIChhdXRvIGltYWdlUmFuZ2UgPSBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlKGlt
YWdlRWxlbWVudCkpCi0gICAgICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9ybWF0ID0g
c2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoVmlzaWJsZVNlbGVjdGlvbiB7ICpp
bWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJp
dmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOworICAgICAgICBwYXN0ZWJvYXJkSW1h
Z2UuZGF0YUluSFRNTEZvcm1hdCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNl
KFZpc2libGVTZWxlY3Rpb24geyAqaW1hZ2VSYW5nZSB9LCBSZXNvbHZlVVJMczo6WWVzRXhjbHVk
aW5nVVJMc0ZvclByaXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKIAogICAgIHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsID0gdXJsOwogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0
bGUgPSB0aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAyMGIzZmNmOGRkZjk1
NDQzNDliMTg2NGVmOWQ5YmYwZmI0YWVlNjQ2Li5hZGNhOWQxZTA5NWI5YmU3NDIxMGNhNGQ1MTc2
MWQ2MWM0ZWI1MzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMDExLDcgKzEw
MTEsNyBAQCBTdHJpbmcgc2FuaXRpemVkTWFya3VwRm9yRnJhZ21lbnRJbkRvY3VtZW50KFJlZjxE
b2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBEbwogCiAgICAgLy8gU2VyaWFsaXplQ29tcG9z
ZWRUcmVlOjpObyBiZWNhdXNlIHRoZXJlIGNhbid0IGJlIGEgc2hhZG93IHRyZWUgaW4gdGhlIHBh
c3RlZCBmcmFnbWVudC4KICAgICBhdXRvIHJlc3VsdCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1
YWxBcHBlYXJhbmNlSW50ZXJuYWwoZmlyc3RQb3NpdGlvbkluTm9kZShib2R5RWxlbWVudC5nZXQo
KSksIGxhc3RQb3NpdGlvbkluTm9kZShib2R5RWxlbWVudC5nZXQoKSksIG51bGxwdHIsCi0gICAg
ICAgIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSwgU2Vy
aWFsaXplQ29tcG9zZWRUcmVlOjpObywgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVzLCBDb252
ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgIFN0YW5kYXJkRm9udEZhbWlseVNlcmlhbGl6YXRpb25N
b2RlOjpTdHJpcCwgbXNvTGlzdE1vZGUpOworICAgICAgICBSZXNvbHZlVVJMczo6WWVzRXhjbHVk
aW5nVVJMc0ZvclByaXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6Tm8sIEFubm90YXRlRm9y
SW50ZXJjaGFuZ2U6OlllcywgQ29udmVydEJsb2Nrc1RvSW5saW5lczo6Tm8sICBTdGFuZGFyZEZv
bnRGYW1pbHlTZXJpYWxpemF0aW9uTW9kZTo6U3RyaXAsIG1zb0xpc3RNb2RlKTsKIAogICAgIGlm
IChtc29MaXN0TW9kZSAhPSBNU09MaXN0TW9kZTo6UHJlc2VydmUpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA5MjUxMWE5MzQ2NmJhOTQ4NDEyNDFi
YWZkNjRlMGZjZDEzZTExYWUzLi40MTc0MGVmZjdiZDljNWE1NTEzZmYxMDNjMmJlYzQ5YTZiMGE4
MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJGbG9hdFNpemUuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGluZ1Blcm1p
c3Npb24uaCIKQEAgLTcwLDcgKzcxLDYgQEAgYm9vbCBpc1BsYWluVGV4dE1hcmt1cChOb2RlKik7
CiAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGJ5IEhUTUxFbGVtZW50ICYgU2hhZG93Um9vdCB0
byByZXBsYWNlIHRoZSBjaGlsZHJlbiB3aXRoIHJlc3BlY3RlZCBmcmFnbWVudC90ZXh0LgogRXhj
ZXB0aW9uT3I8dm9pZD4gcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KENvbnRhaW5lck5vZGUm
LCBSZWY8RG9jdW1lbnRGcmFnbWVudD4mJik7CiAKLWVudW0gY2xhc3MgUmVzb2x2ZVVSTHMgOiB1
aW50OF90IHsgTm8sIFllcywgWWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kgfTsK
IGVudW0gY2xhc3MgQ29udmVydEJsb2Nrc1RvSW5saW5lcyA6IHVpbnQ4X3QgeyBObywgWWVzIH07
CiBlbnVtIGNsYXNzIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZSA6IHVpbnQ4X3QgeyBObywgWWVzIH07
CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFu
Y2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBWZWN0b3I8Tm9kZSo+KiA9IG51bGxwdHIsIEFubm90YXRl
Rm9ySW50ZXJjaGFuZ2UgPSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpObywgQ29udmVydEJsb2Nr
c1RvSW5saW5lcyA9IENvbnZlcnRCbG9ja3NUb0lubGluZXM6Ok5vLCBSZXNvbHZlVVJMcyA9IFJl
c29sdmVVUkxzOjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApp
bmRleCA3OThmZTg2YmM0ZjMyMDI2NzFjZDJkNzE0NjYwMDBiNmViYWJiNmJmLi42MmUxOWNlNjVi
NDFhNWE0MThlZTE4MDM5Mjk4NGI2M2M2YmRiZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHAKQEAgLTU2NSw3ICs1NjUsNyBAQCBib29sIEhUTUxJbWFnZUVsZW1l
bnQ6OmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25z
dAogICAgICAgICB8fCBIVE1MRWxlbWVudDo6YXR0cmlidXRlQ29udGFpbnNVUkwoYXR0cmlidXRl
KTsKIH0KIAotU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRl
VmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QK
K1N0cmluZyBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNv
bnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUsIFJlc29sdmVVUkxzIHJl
c29sdmVVUkxzKSBjb25zdAogewogICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNyY3NldEF0
dHIpIHsKICAgICAgICAgVmVjdG9yPEltYWdlQ2FuZGlkYXRlPiBpbWFnZUNhbmRpZGF0ZXMgPSBw
YXJzZUltYWdlQ2FuZGlkYXRlc0Zyb21TcmNzZXRBdHRyaWJ1dGUoU3RyaW5nVmlldyhhdHRyaWJ1
dGUudmFsdWUoKSkpOwpAQCAtNTczLDcgKzU3Myw3IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50
Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY2FuZGlkYXRlIDogaW1hZ2VDYW5kaWRhdGVzKSB7
CiAgICAgICAgICAgICBpZiAoJmNhbmRpZGF0ZSAhPSAmaW1hZ2VDYW5kaWRhdGVzWzBdKQogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7Ci0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKFVSTChiYXNlLCBjYW5kaWRhdGUuc3RyaW5nLnRvU3RyaW5nKCkpLnN0cmluZygpKTsKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkKGNhbmRpZGF0
ZS5zdHJpbmcudG9TdHJpbmcoKSwgcmVzb2x2ZVVSTHMsIGJhc2UpKTsKICAgICAgICAgICAgIGlm
IChjYW5kaWRhdGUuZGVuc2l0eSAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgJywgY2FuZGlkYXRlLmRlbnNpdHksICd4Jyk7CiAgICAg
ICAgICAgICBpZiAoY2FuZGlkYXRlLnJlc291cmNlV2lkdGggIT0gVW5pbml0aWFsaXplZERlc2Ny
aXB0b3IpCkBAIC01ODEsNyArNTgxLDggQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBs
ZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHQKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAgICAgfQotICAgIHJldHVy
biBIVE1MRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShiYXNlLCBhdHRyaWJ1
dGUpOworCisgICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZh
bHVlKGJhc2UsIGF0dHJpYnV0ZSwgcmVzb2x2ZVVSTHMpOwogfQogCiBib29sIEhUTUxJbWFnZUVs
ZW1lbnQ6Om1hdGNoZXNVc2VtYXAoY29uc3QgQXRvbVN0cmluZ0ltcGwmIG5hbWUpIGNvbnN0CkBA
IC04NzYsNiArODc3LDE2IEBAIHNpemVfdCBIVE1MSW1hZ2VFbGVtZW50OjpwZW5kaW5nRGVjb2Rl
UHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlTG9hZGVy
LT5wZW5kaW5nRGVjb2RlUHJvbWlzZXNDb3VudEZvclRlc3RpbmcoKTsKIH0KIAorQXRvbVN0cmlu
ZyBIVE1MSW1hZ2VFbGVtZW50OjpzcmNzZXRGb3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKHNyY3NldEF0dHIsIFJlc29sdmVVUkxzOjpZZXNF
eGNsdWRpbmdVUkxzRm9yUHJpdmFjeSk7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0
U3Jjc2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCit7CisgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNzZXRBdHRyLCB2YWx1ZSk7Cit9CisKIGNv
bnN0IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNv
bnN0CiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDFkOTlkMzIxN2I1NmZlM2Mx
YzVkMGM1NThkN2ViNDczYTk4OWMzZWMuLmU4NGI1YTI5ZmY2Y2YwMWJhMjM3M2E0YTRjNDgwMTIx
MTJhZDNhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0xMjks
NiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkRGVmZXJyZWRJbWFnZSgpOwogCisg
ICAgQXRvbVN0cmluZyBzcmNzZXRGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIHZvaWQgc2V0U3Jj
c2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOworCiAgICAgY29uc3QgQXRvbVN0cmlu
ZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2FkaW5nRm9yQmlu
ZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOwogCkBAIC0xNzMsNyArMTc2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBhdHRyaWJ1dGVDb250YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25z
dCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
cmlidXRlJiwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6WWVzKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNEcmFnZ2FibGVJZ25vcmluZ0F0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRs
CmluZGV4IGY5MzYzODYyYzkyODRjNmEwYzc4YjNhNzBjNzdmNjIxNDA4MWYwMjUuLmNkYjY5NjMz
OTQ2ZDNiZDdkYzc3OWQ1YWZmMDdjZDJkZDVkNGJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmlkbApAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRNTElt
YWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsdDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3JjOwotICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OworICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEltcGxlbWVudGVkQXM9c3Jjc2V0Rm9yQmluZGluZ3Nd
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2l6ZXM7CiAgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZz8gY3Jvc3NPcmlnaW47CiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB1c2VNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA2NjNmOTg0YjU3ZDRkMGVkMzQzOWYwOTEzYzE0YjFjYjFlMThmYzE3
Li5lNmM4MTUxMWM0NjExYmRlNDRhNDNlMWM5YjlhYzBjZmJmM2E3Nzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyKSkKICNlbmRpZgogICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMpKQorICAgICwgbV9tYXNrZWRVUkxT
Y2hlbWVzKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubWFza2VkVVJMU2NoZW1lcykpCiAgICAg
LCBtX2FsbG93ZWROZXR3b3JrSG9zdHMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2Vk
TmV0d29ya0hvc3RzKSkKICAgICAsIG1fbG9hZHNTdWJyZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRp
b24ubG9hZHNTdWJyZXNvdXJjZXMpCiAgICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9uLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKQpAQCAtMzcyOSw2ICszNzMwLDEzIEBAIGJvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNv
cnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2Jvb2wg
UGFnZTo6c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAorewor
ICAgIGlmIChtX21hc2tlZFVSTFNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fbWFza2VkVVJMU2NoZW1lcy5jb250YWlucyh1cmwucHJvdG9jb2wo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworfQorCiB2b2lkIFBhZ2U6OnJldmVhbEN1cnJl
bnRTZWxlY3Rpb24oKQogewogICAgIENoZWNrZWRSZWYoZm9jdXNDb250cm9sbGVyKCkpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2
ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA3NjEyOGMyMjEzYmZjMTU0MTliNDFhOTdjYTNjZDBkZGExMDM1Yzgx
Li45MzBiOGExYTQyYWI2NTFjMjE1OGRkNGNiM2QwOGQwNDJhYjFiMDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtOTA5LDYgKzkwOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hGcmFtZShjb25z
dCBGdW5jdGlvbjx2b2lkKEZyYW1lJik+Jik7CiAKICAgICBib29sIHNob3VsZERpc2FibGVDb3Jz
Rm9yUmVxdWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkTWFza1VSTEZv
ckJpbmRpbmdzKGNvbnN0IFVSTCYpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bmplY3RVc2VyU3R5bGVTaGVldChVc2VyU3R5bGVTaGVldCYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlSW5qZWN0ZWRVc2VyU3R5bGVTaGVldChVc2VyU3R5bGVTaGVldCYpOwpAQCAt
MTI3OSw2ICsxMjgwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgVmVjdG9yPFVzZXJDb250
ZW50VVJMUGF0dGVybj4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgSGFzaFNldDxTdHJp
bmc+IG1fbWFza2VkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+IG1fdXNl
clN0eWxlU2hlZXRzUGVuZGluZ0luamVjdGlvbjsKICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
U3RyaW5nPj4gbV9hbGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wgbV9pc1Rha2luZ1NuYXBz
aG90c0ZvckFwcGxpY2F0aW9uU3VzcGVuc2lvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggNDJhOTQ0ZWRkMWIzOWQ3ZDJjNjEwYWUwMzE4YTIw
NmY5NWNiYjVhZS4uZWI4MTdlNmI1YjViNGQ3YmVjYWEyYTFlNWI4ZGZjMGVjODBmNzZlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMTM5LDYgKzEzOSw3IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcj4gZGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcjsKICNlbmRpZgogICAgIFZlY3RvcjxVc2VyQ29u
dGVudFVSTFBhdHRlcm4+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gbWFza2VkVVJMU2NoZW1lczsKICAgICBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92
aWRlcj4gc3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcjsKICAgICBVbmlxdWVSZWY8TWVkaWFSZWNv
cmRlclByb3ZpZGVyPiBtZWRpYVJlY29yZGVyUHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4Yzg2MzRmMzdl
ZWEyYWZkMDI0YThkNDJhNGY0MmM1Li40MTdhNzkwYWM1YzM0OWQ4ZGI0YzI5ODgzZmUxZTgyNTFj
ODE1ZDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihj
b25zdCBTaW1wbGVSYW5nZSYgc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydEMKICAgICAvLyBQ
dXQgQ0ZfSFRNTCBmb3JtYXQgb24gdGhlIHBhc3RlYm9hcmQgCiAgICAgaWYgKDo6T3BlbkNsaXBi
b2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgLy8g
RklYTUU6IFVzZSBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZh
Y3kuCisgICAgICAgIC8vIEZJWE1FOiBVc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgogICAgICAgICBtYXJrdXBUb0NGSFRNTChzZXJpYWxpemVQcmVzZXJ2aW5nVmlz
dWFsQXBwZWFyYW5jZShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSksCiAgICAgICAgICAg
ICBzZWxlY3RlZFJhbmdlLnN0YXJ0LmNvbnRhaW5lci0+ZG9jdW1lbnQoKS51cmwoKS5zdHJpbmco
KSwgZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRh
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggZWM0MzlkMDY3MTRlNmRlNWI5NGUyMWZiOWNlOGVlMjM5Yzk2MjJmYS4uOWZk
N2JlYjFhZTdhZWZhZTE2NDVlZTJlMjRjZjlkMmE0ZjY3Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE0OCw2ICsx
NDgsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBvbGRQYWdlSUQ7CiAgICAgZW5jb2Rl
ciA8PCBvdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIGVuY29kZXIgPDwgY29yc0Rpc2FibGluZ1Bh
dHRlcm5zOworICAgIGVuY29kZXIgPDwgbWFza2VkVVJMU2NoZW1lczsKICAgICBlbmNvZGVyIDw8
IGxvYWRzU3VicmVzb3VyY2VzOwogICAgIGVuY29kZXIgPDwgYWxsb3dlZE5ldHdvcmtIb3N0czsK
ICAgICBlbmNvZGVyIDw8IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwpA
QCAtNDk1LDYgKzQ5NiwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0g
V1RGTW92ZSgqY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8SGFz
aFNldDxTdHJpbmc+PiBtYXNrZWRVUkxTY2hlbWVzOworICAgIGRlY29kZXIgPj4gbWFza2VkVVJM
U2NoZW1lczsKKyAgICBpZiAoIW1hc2tlZFVSTFNjaGVtZXMpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5tYXNrZWRVUkxTY2hlbWVzID0gV1RGTW92ZSgqbWFz
a2VkVVJMU2NoZW1lcyk7CisKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxvYWRzU3VicmVzb3Vy
Y2VzOwogICAgIGRlY29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgaWYgKCFsb2Fkc1N1
YnJlc291cmNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaAppbmRleCBjYjc0MTY5M2RiMzBhNzUwMmI0ODljODM5N2NlZjZjNzM5ZmVkYTkx
Li4yODZhMWU3ZDk1MGRlMGE1NGE2ZmE0Mzg4ZmNmZjUzODZlOWE2NzlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMTksNiAr
MjE5LDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5n
IG92ZXJyaWRkZW5NZWRpYVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1Bh
dHRlcm5zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtYXNrZWRVUkxTY2hlbWVzOwogICAgIGJvb2wg
dXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgYm9v
bCBsb2Fkc1N1YnJlc291cmNlcyB7IHRydWUgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8
U3RyaW5nPj4gYWxsb3dlZE5ldHdvcmtIb3N0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGI2OTI5NjZhM2VmNmE5
ODZjYjYwM2QwZjNhMWU4ODAyNzYxNDlhM2UuLjE2ZmRjYjdmZTE0ZTIwNDlkZjBhZmUxNmRlMWMx
MzU0Mzg2Yjg4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SVBhZ2VDb25maWd1cmF0aW9uLmNwcApAQCAtODMsNiArODMsNyBAQCBSZWY8UGFnZUNvbmZpZ3Vy
YXRpb24+IFBhZ2VDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBmb3IgKGF1dG8mIHBh
aXIgOiB0aGlzLT5tX3VybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVt
ZUhhbmRsZXJzLnNldChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHkt
Pm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7
CisgICAgY29weS0+bV9tYXNrZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9tYXNrZWRVUkxTY2hlbWVz
OwogICAgIGNvcHktPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gdGhp
cy0+bV9jcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgY29weS0+bV91
c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHRoaXMtPm1fdXNlclNjcmlw
dHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggNDJiMmNjNWRlZmZlZjdh
Y2Y3MzM0OWVmMzk2ZmY1YjRmNDJiY2NiNC4uZjhmZmJkOTcyMDFlNDU2YmQzMTM5MzQ1NjAwN2Fk
NGY0YzEyNGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBh
Z2VDb25maWd1cmF0aW9uLmgKQEAgLTE0Myw3ICsxNDMsMTAgQEAgcHVibGljOgogCiAgICAgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgY29yc0Rpc2FibGluZ1BhdHRlcm5zKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7IH0KICAgICB2b2lkIHNldENPUlNEaXNhYmxp
bmdQYXR0ZXJucyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgcGF0dGVybnMpIHsgbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnMgPSBXVEZNb3ZlKHBhdHRlcm5zKTsgfQotICAgIAorCisgICAgY29uc3QgSGFz
aFNldDxXVEY6OlN0cmluZz4mIG1hc2tlZFVSTFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX21h
c2tlZFVSTFNjaGVtZXM7IH0KKyAgICB2b2lkIHNldE1hc2tlZFVSTFNjaGVtZXMoSGFzaFNldDxX
VEY6OlN0cmluZz4mJiBzY2hlbWVzKSB7IG1fbWFza2VkVVJMU2NoZW1lcyA9IFdURk1vdmUoc2No
ZW1lcyk7IH0KKwogICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRp
b24oKSBjb25zdCB7IHJldHVybiBtX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uOyB9CiAgICAgdm9pZCBzZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlv
bihib29sIHZhbHVlKSB7IG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24g
PSB2YWx1ZTsgfQogCkBAIC0yMjcsNiArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8
V1RGOjpTdHJpbmcsIFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVt
ZUhhbmRsZXJzOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVy
bnM7CisgICAgSGFzaFNldDxXVEY6OlN0cmluZz4gbV9tYXNrZWRVUkxTY2hlbWVzOwogICAgIGJv
b2wgbV91c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAg
ICBib29sIG1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9Owog
ICAgIFdURjo6U3RyaW5nIG1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQppbmRleCAwNGUwNDQyOTg4MzFjY2FjY2RkNzUzMWU0NGM0MDQ1N2VkNmM1NjQ5Li4wYTJmOWYy
N2QxNjlkZTY5Yzc3MjlkMjgyYjQ4ZDNjZjYxMmM2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQpAQCAtOTc4LDYgKzk3OCwyMyBAQCAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXR0ZXJucwogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+
c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0ZXJucykpOwog
fQogCistIChOU1NldDxOU1N0cmluZyAqPiAqKV9tYXNrZWRVUkxTY2hlbWVzCit7CisgICAgY29u
c3QgYXV0byYgc2NoZW1lcyA9IF9wYWdlQ29uZmlndXJhdGlvbi0+bWFza2VkVVJMU2NoZW1lcygp
OworICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqc2V0ID0gW05TTXV0YWJsZVNldCBzZXRX
aXRoQ2FwYWNpdHk6c2NoZW1lcy5zaXplKCldOworICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1l
IDogc2NoZW1lcykKKyAgICAgICAgW3NldCBhZGRPYmplY3Q6c2NoZW1lXTsKKyAgICByZXR1cm4g
c2V0OworfQorCistICh2b2lkKV9zZXRNYXNrZWRVUkxTY2hlbWVzOihOU1NldDxOU1N0cmluZyAq
PiAqKXNjaGVtZXMKK3sKKyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIGZvciAoTlNTdHJp
bmcgKnNjaGVtZSBpbiBzY2hlbWVzKQorICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CisgICAgX3Bh
Z2VDb25maWd1cmF0aW9uLT5zZXRNYXNrZWRVUkxTY2hlbWVzKFdURk1vdmUoc2V0KSk7Cit9CisK
IC0gKHZvaWQpX3NldExvYWRzRnJvbU5ldHdvcms6KEJPT0wpbG9hZHMKIHsKICAgICBfcGFnZUNv
bmZpZ3VyYXRpb24tPnNldEFsbG93ZWROZXR3b3JrSG9zdHMobG9hZHMgPyBzdGQ6Om51bGxvcHQg
OiBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0PFN0cmluZz4geyB9IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAppbmRleCA4MTM2NTU3YzFmYWE1NjQw
OWM5MGU4YzRhY2U1ZjEyMjIyYzUyOGJiLi44Y2FjOTllOTVlMjc4M2QyOTZhMzBjNjM3MzAzZGZh
YzU3ZjY1MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaApAQCAtODIsNiAr
ODIsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLQXR0cmlidXRpb25PdmVycmlk
ZVRlc3RpbmcpIHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNpdGVE
YXRhU3RvcmUgKl93ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNS40KSwgaW9zKDEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0
ZXI9X3NldENPUlNEaXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9jb3Jz
RGlzYWJsaW5nUGF0dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEz
LjQpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldE1hc2tlZFVSTFNj
aGVtZXM6KSBOU1NldDxOU1N0cmluZyAqPiAqX21hc2tlZFVSTFNjaGVtZXMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldERlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbjopIEJPT0wgX2RlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5v
dGlmaWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hl
Y2tFbmFibGVkOikgQk9PTCBfY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFjN2FkNDRjMjQ2YWQ3MDk3N2FmYTdjNmU0
M2JkMDNjYzIwNWI2ZWMuLjcxYjQ3ZGI0NmFmODY5MGZlNDEyMWY2ZTBmZmVlNzQyNzM0MzJkZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODM3Nyw2ICs4
Mzc3LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9u
UGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKIAogICAgIHBhcmFtZXRlcnMub3ZlcnJp
ZGRlbk1lZGlhVHlwZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBwYXJhbWV0ZXJzLmNv
cnNEaXNhYmxpbmdQYXR0ZXJucyA9IGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFt
ZXRlcnMubWFza2VkVVJMU2NoZW1lcyA9IG1fY29uZmlndXJhdGlvbi0+bWFza2VkVVJMU2NoZW1l
cygpOwogICAgIHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRp
b24gPSBtX2NvbmZpZ3VyYXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0
aW9uKCk7CiAgICAgcGFyYW1ldGVycy5hbGxvd2VkTmV0d29ya0hvc3RzID0gbV9jb25maWd1cmF0
aW9uLT5hbGxvd2VkTmV0d29ya0hvc3RzKCk7CiAgICAgcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291
cmNlcyA9IG1fY29uZmlndXJhdGlvbi0+bG9hZHNTdWJyZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xp
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsv
V2ViRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCBiZjRkMjhlM2U4ZGVmYWE0MjZiYjhmNWMxMDll
NjJmYzdmMTA4YTYxLi4yMGRjMDQyZTg1Y2RhMjdlYTk1OWQ0M2RiYTVkYTRmM2ViYTQ2YzRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dl
YkVkaXRvckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnVwZGF0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSogZnJhbWUp
CiAgICAgUGFzdGVib2FyZFdlYkNvbnRlbnQgcGFzdGVib2FyZENvbnRlbnQ7CiAgICAgcGFzdGVi
b2FyZENvbnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUgPSBmYWxzZTsKICAgICBwYXN0ZWJvYXJk
Q29udGVudC50ZXh0ID0gcGxhaW5UZXh0KCpyYW5nZSk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQu
bWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJM
c0ZvclByaXZhY3kpOworICAgIHBhc3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVBy
ZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwg
UmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KTsKICAgICBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24oUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUo
ZnJhbWUtPnBhZ2VJRCgpKSktPndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwYWE3ZmE0ZDQ2
NTczMmQ4MzRhOWFkMjU3YTUxNTNkMWJiMGQ4YjY3Li5lMWM2MGVlYTFkMzkwZGZhYzA1OWUyMzFh
MjQ5OGQ2NjEyMWJlMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtNjQzLDYgKzY0Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAg
ICAgICAgc3luY2hyb25pemVDT1JTRGlzYWJsaW5nUGF0dGVybnNXaXRoTmV0d29ya1Byb2Nlc3Mo
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBwYXJzZUFu
ZEFsbG93QWNjZXNzVG9DT1JTRGlzYWJsaW5nUGF0dGVybnMobV9jb3JzRGlzYWJsaW5nUGF0dGVy
bnMpOwogCisgICAgcGFnZUNvbmZpZ3VyYXRpb24ubWFza2VkVVJMU2NoZW1lcyA9IHBhcmFtZXRl
cnMubWFza2VkVVJMU2NoZW1lczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRX
YWl0VW50aWxOb3RpZmljYXRpb247CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNv
dXJjZXMgPSBwYXJhbWV0ZXJzLmxvYWRzU3VicmVzb3VyY2VzOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmFsbG93ZWROZXR3b3JrSG9zdHMgPSBwYXJhbWV0ZXJzLmFsbG93ZWROZXR3b3JrSG9zdHM7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjNl
NmFkNGIyM2RmZTY1NGE5MmVjM2VkN2JlYzc1NzE3YTg3OTRlNi4uNzg5NWZiZjc5ZGYxNjE0NzI2
ZDI5NTE1ZGExYWQ2MDRkZjk0NjEwZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTA0LTAzICBUaW1vdGh5IEhh
dGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0byBtYXNr
IFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEyNDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKFRFU1QoV2ViS2l0LCBDb25maWd1cmF0aW9uTWFza2VkVVJMU2NoZW1lcykpOiBBZGRlZC4K
KwogMjAyMi0wMy0yMiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW01lcmdlLVF1ZXVlXSBBZGQgVmFsaWRhdGVTcXVhc2hlZApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tCmluZGV4IGMwNzVkZDUzNGZkYTg2ZjY3OTJjMTlhZGQwZTI1MWU4YWYzMDIw
M2QuLjhmYWY4OWI2OThjZDcyOTI4NjRkM2I1M2Y2ZDM0NjNiMzBmOGYyYTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTE3MiwzICsxNzIsNjUgQEAgVEVTVChXZWJLaXQsIENv
bmZpZ3VyYXRpb25EaXNhYmxlSmF2YVNjcmlwdE5lc3RlZEJvZHkpCiAgICAgTlNTdHJpbmcgKmJv
ZHlIVE1MID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmJvZHkuaW5uZXJIVE1MIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKGJvZHlIVE1MLCBAIjx0YWJs
ZT48L3RhYmxlPiIpOwogfQorCitURVNUKFdlYktpdCwgQ29uZmlndXJhdGlvbk1hc2tlZFVSTFNj
aGVtZXMpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBuZXddKTsKKyAgICBFWFBFQ1RfRVEoW2NvbmZpZ3VyYXRpb24gX21hc2tlZFVS
TFNjaGVtZXNdLmNvdW50LCAwVSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0TWFza2VkVVJM
U2NoZW1lczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6QCJ0ZXN0LXNjaGVtZSIsIEAiYW5vdGhlci1z
Y2hlbWUiLCBuaWxdXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxpbWcgc3JjPVwidGVzdC1zY2hlbWU6Ly9mb28uY29tL2Jhci5q
cGdcIj48aW1nIHNyYz1cImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmdcIj4iIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOworCisgICAgTlNTdHJp
bmcgKmltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uc3JjIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIpOwor
CisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVswXS5nZXRBdHRyaWJ1dGUoXCJz
cmNcIikiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tl
ZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIp
WzBdLmdldEF0dHJpYnV0ZU5vZGUoXCJzcmNcIikudmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBp
bWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLnNyYyJdOworICAgIEVYUEVDVF9XS19T
VFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIik7CisKKyAgICBp
bWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0dHJpYnV0ZShcInNyY1wiKSJd
OworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9i
YXoucG5nIik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0
dHJpYnV0ZU5vZGUoXCJzcmNcIikudmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VT
b3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyIpOworCisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGltZyBzcmNzZXQ9XCJ0ZXN0LXNjaGVtZTovL2Zv
by5jb20vYmFyLmpwZyAxeCwgYmFyLmpwZyAyeCwgYW5vdGhlci1zY2hlbWU6Ly9mb28uY29tL2Jh
ci5naWYgM3hcIj48aW1nIHNyY3NldD1cImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmcgMngsIGJh
ei5wbmcgMXhcIj4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1w
bGUuY29tIl1dOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVswXS5zcmNz
ZXQiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11
cmw6Ly9oaWRkZW4vIDF4LCBodHRwczovL2V4YW1wbGUuY29tL2Jhci5qcGcgMngsIHdlYmtpdC1t
YXNrZWQtdXJsOi8vaGlkZGVuLyAzeCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChc
ImltZ1wiKVswXS5nZXRBdHRyaWJ1dGUoXCJzcmNzZXRcIikiXTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDF4LCBiYXIuanBn
IDJ4LCB3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gM3giKTsKKworICAgIGltYWdlU291cmNl
ID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uZ2V0QXR0cmlidXRlTm9kZShcInNyY3NldFwiKS52YWx1
ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVy
bDovL2hpZGRlbi8gMXgsIGJhci5qcGcgMngsIHdlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAz
eCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5zcmNzZXQiXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20vYmF6
LnBuZyAyeCwgaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXoucG5nIDF4Iik7CisKKyAgICBpbWFnZVNv
dXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0dHJpYnV0ZShcInNyY3NldFwiKSJdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXou
cG5nIDJ4LCBiYXoucG5nIDF4Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1n
XCIpWzFdLmdldEF0dHJpYnV0ZU5vZGUoXCJzcmNzZXRcIikudmFsdWUiXTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwgYmF6
LnBuZyAxeCIpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
PHNjcmlwdCBzcmM9XCJhbm90aGVyLXNjaGVtZTovL2Zvby5jb20vYmFyLmpzXCI+PC9zY3JpcHQ+
PHNjcmlwdCBzcmM9XCJodHRwOi8vYXBwbGUuY29tL2Jhei5qc1wiPjwvc2NyaXB0PiIgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CisKKyAgICBO
U1N0cmluZyAqc2NyaXB0U291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRcIilbMF0uc3JjIl07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKHNjcmlwdFNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hp
ZGRlbi8iKTsKKworICAgIHNjcmlwdFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0XCIpWzFdLnNy
YyJdOworICAgIEVYUEVDVF9XS19TVFJFUShzY3JpcHRTb3VyY2UsIEAiaHR0cDovL2FwcGxlLmNv
bS9iYXouanMiKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjxpZnJhbWUgc3JjPVwidGVzdC1zY2hlbWU6Ly9mb28uY29tL2Jhci5odG1sXCI+PC9pZnJhbWU+
PGlmcmFtZSBzcmM9XCJodHRwOi8vYXBwbGUuY29tL2Jhei5odG1sXCI+PC9pZnJhbWU+IiBiYXNl
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKworICAg
IE5TU3RyaW5nICpodG1sU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl07CisgICAgRVhQRUNUX0VRKFtodG1sU291
cmNlIGNvbnRhaW5zU3RyaW5nOkAiPGlmcmFtZSBzcmM9XCJ3ZWJraXQtbWFza2VkLXVybDovL2hp
ZGRlbi9cIj48L2lmcmFtZT4iXSwgWUVTKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456658</attachid>
            <date>2022-04-04 18:46:18 -0700</date>
            <delta_ts>2022-04-11 11:23:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220404184617.patch</filename>
            <type>text/plain</type>
            <size>53677</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjhiZTQ2MDVlZjQ5MWFhYmRiNDU3Yzk0ZWQ3ZmYzNmMyMDU5MWZlLi5mNjJmOTM1MWVmZjJlOGFh
MDU0OGYwZGE4YzFiZWE2M2ExMDVhOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZh
U2NyaXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mzg1NzYKKyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3BwOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOiBSZXR1cm4gIltleHRlbnNpb24g
Y29kZV0iIGZvciBhbnkgc291cmNlVVJMIHRoYXQgc3RhcnRzIHdpdGggInNhZmFyaS0iLgorICAg
ICAgICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOiBBZGRlZCBzb21lIHdo
aXRlc3BhY2UuCisKIDIwMjItMDMtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBDaGFuZ2UgRGF0ZS5wYXJzZSB0byBzdG9wIHJldHVybmluZyBu
dW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uMjk1ZDMyZmQ1YzY0ZDM4ZTA0ODNlYTc5YTI4Mzlj
YjJkM2E5MTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5u
ZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpvdXRlckhUTUwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgY29uc3QpOiBBZGRlZC4g
TW92ZWQgZnJvbSBNYXJrdXBBY2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGFuZCBhZGRl
ZCBuZXcgTm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSBwYXRoLgorICAgICAgICBDaGFuZ2VkIFll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5IGFuZCBpbmNsdWRlZCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoKSBjaGVjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29u
c3QpOiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBk
aXJlY3RseS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDogVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIGZvciBnZXRBdHRyaWJ1dGUuCisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
aW5uZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9y
UHJpdmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgICogZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVs
YXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGNvbnN0KTogVXNlIEVsZW1lbnQ6OnJlc29sdmVVUkxT
dHJpbmdJZk5lZWRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQpOiBDaGFuZ2Vk
IFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3Qp
OiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRp
bmdzIGNvbnN0KTogQWRkZWQuIFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyB3aXRoIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnNldFNyY3NldEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIyLTAzLTIy
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmE2
ZmZmOGU1YjZhNmU1OTBlNTY2M2U0YzM4NzkyYmQ0YjM4NzYzLi4wYjJjM2QyNzY0Y2ZlNDUyNWU1
OTZhNTIxMTJhYjc0OTJjOTNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA0
LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFy
Oi8vODE5OTEyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogQWRkZWQgbWFz
a2VkVVJMU2NoZW1lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBBZGRlZCBt
YXNrZWRVUkxTY2hlbWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Om1hc2tlZFVSTFNjaGVt
ZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldE1h
c2tlZFVSTFNjaGVtZXMpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX21hc2tlZFVSTFNjaGVtZXNdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBBZGRlZCBtYXNrZWRVUkxTY2hlbWVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisKIDIwMjItMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tIGFuZCBTaGFyZWRWaWRlb0ZyYW1lLmNwcCBkbyBub3QgbmVlZCB0byBiZSBidWls
dCBhcyBwYXJ0IG9mIFdlYkNvbnRlbnQgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcAppbmRleCA2YjhmM2RmNjMzNTA0NWQ1YWMyMWVmNWEw
ODJkNDg2ODA0ZmEzZTZiLi5hMjY1YjE4MDNlMjljMmIxZTY2OTA2MDNmYzA5Njc0MDE4MTViZjZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdGFja0ZyYW1lLmNwcApAQCAt
NjMsMTEgKzYzLDEzIEBAIFN0cmluZyBTdGFja0ZyYW1lOjpzb3VyY2VVUkwoKSBjb25zdAogICAg
IGlmIChtX2lzV2FzbUZyYW1lKQogICAgICAgICByZXR1cm4gIlt3YXNtIGNvZGVdIl9zOwogCi0g
ICAgaWYgKCFtX2NvZGVCbG9jaykgeworICAgIGlmICghbV9jb2RlQmxvY2spCiAgICAgICAgIHJl
dHVybiAiW25hdGl2ZSBjb2RlXSJfczsKLSAgICB9CiAKICAgICBTdHJpbmcgc291cmNlVVJMID0g
bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCBoZXJlLCBidXQgY29tZSBmcm9tIHNvbWUg
QVBJIHdpdGggd2hhdCBzY2hlbWVzIHRvIG1hc2suCisgICAgaWYgKHNvdXJjZVVSTC5zdGFydHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UoInNhZmFyaS0iX3MpKQorICAgICAgICByZXR1cm4gIltleHRl
bnNpb24gY29kZV0iX3M7CiAgICAgaWYgKCFzb3VyY2VVUkwuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBzb3VyY2VVUkw7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkBAIC05MiwxMSArOTQs
MTMgQEAgU3RyaW5nIFN0YWNrRnJhbWU6OmZ1bmN0aW9uTmFtZShWTSYgdm0pIGNvbnN0CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogICAgIH0KKwogICAgIFN0
cmluZyBuYW1lOwogICAgIGlmIChtX2NhbGxlZSkgewogICAgICAgICBpZiAobV9jYWxsZWUtPmlz
T2JqZWN0KCkpCiAgICAgICAgICAgICBuYW1lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKHZt
LCBqc0Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZS5nZXQoKSkpLmltcGwoKTsKICAgICB9CisKICAg
ICByZXR1cm4gbmFtZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuYW1lOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXgg
NzFiMzZiY2U1NTNjYzFlNGRmMzk5NmQyYmQ0YTI4YWVkMDdhMmM5Mi4uZWVhYmJlNTQzMDA1YzFh
MDU0MzE1ZmMzYTE1NTNiNWRiYjAxY2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQpAQCAtMTEwMSw3ICsxMTAxLDcgQEAgc3ViIEdl
dHRlckV4cHJlc3Npb24KIAogICAgIG15ICRmdW5jdGlvbk5hbWU7CiAgICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVUkwifSkgewotICAgICAgICAkZnVuY3Rpb25OYW1l
ID0gImdldFVSTEF0dHJpYnV0ZSI7CisgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJMQXR0
cmlidXRlRm9yQmluZGluZ3MiOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJib29sZWFuIikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImhhc0F0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24iOwogICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGVUeXBlLT5uYW1lIGVx
ICJsb25nIikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBiNDQ3Mzk1ZWUzN2M2NDIwYTI4NDExYjI2YzdjNTBk
YjI2Nzc5YWRjLi5kYTlhNzUzYzY1ZDRkYmFlYjBmZjJkMTMzN2I1MDM1M2EyODUxNGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcApAQCAtMzg5MCw3ICszODkwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ial9yZWZsZWN0ZWRVUkxBdHRyR2V0dGVyKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2wKICAg
ICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwg
KHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBs
LmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRy
KSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0
ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdXJsYXR0ckF0dHIpKSkp
OwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNUZXN0T2JqX3JlZmxlY3RlZFVSTEF0
dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRlTmFtZSkpCkBAIC0zOTIxLDcgKzM5MjEs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHJH
ZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleGljYQogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgm
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAg
IFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGlj
YWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6cmVmbGVjdGVkdXN2dXJsYXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTih0aHJvd1Njb3BlLCAodG9KUzxJRExVU1ZTdHJpbmc+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUsIGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWR1c3Z1cmxhdHRyQXR0cikpKSk7CiB9CiAKIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUihqc1Rlc3RPYmpfcmVmbGVjdGVkVVNWVVJMQXR0ciwgKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSBhdHRyaWJ1dGVOYW1lKSkKQEAgLTQwNDUsNyArNDA0NSw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckdldHRlcihKU0dsb2Jh
bE9iamVjdCYgbGV4CiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Nj
b3BlLCAodG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
IGltcGwuZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50VVJMQXR0ckF0dHIpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
anNUZXN0T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0
cmlidXRlTmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggMTJjNDAyNmQ3Yjc1MmUxNGUxMDkxMGQy
YzZhZTBmODIxNmFlYTc5Ni4uNDM1YTM0NDhhYzEwY2Y4MWJiZjM0M2E4ZDE0MTI3MmMzNjEzMDk5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTIwLDEwICsxMjAsMTAgQEAgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogQXR0cjo6c3R5bGUoKQogICAgIHJldHVybiAmbV9zdHlsZS0+ZW5zdXJlQ1NTU3R5bGVE
ZWNsYXJhdGlvbigpOwogfQogCi1jb25zdCBBdG9tU3RyaW5nJiBBdHRyOjp2YWx1ZSgpIGNvbnN0
CitBdG9tU3RyaW5nIEF0dHI6OnZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAobV9lbGVtZW50KQot
ICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5nZXRBdHRyaWJ1dGUocXVhbGlmaWVkTmFtZSgpKTsK
KyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MocXVhbGlm
aWVkTmFtZSgpKTsKICAgICByZXR1cm4gbV9zdGFuZGFsb25lVmFsdWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5o
CmluZGV4IGFjOTRjODA5ZTkzNjNjYjRjNjc3NmUzNTQ2MDYyMTBhYmM0NTI3YWMuLmFlYTQ4M2I4
MGE1NzYyMzE0MDE1ZjY5NWQ3MTM2MjZiNWI2MjhiZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzcGVjaWZpZWQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSgpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIEF0b21TdHJpbmcgdmFsdWUoKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21TdHJpbmcmKTsKIAogICAgIGNvbnN0
IFF1YWxpZmllZE5hbWUmIHF1YWxpZmllZE5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0ODI1NDZlNzczOWI1
NTA1ZjhjMGYyODEuLjcwZmNlZDhjMDAxYjRmMmM2ZDUzYTA0NjU5NDQ1NTFmMGM1ZDIzM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTYwMCw2ICs1NjAwLDQ1IEBAIFVSTCBEb2N1bWVu
dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEZvcmNlVVRGOCBmb3JjZVVURjgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbXBsZXRlVVJMKHVybCwgbV9iYXNlVVJMLCBmb3JjZVVURjgpOwog
fQogCitib29sIERvY3VtZW50OjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJiB1
cmwpIGNvbnN0Cit7CisgICAgYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKTsKKyAgICBpZiAoVU5M
SUtFTFkoIXBhZ2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHBhZ2UtPnNo
b3VsZE1hc2tVUkxGb3JCaW5kaW5ncyh1cmwpOworfQorCitib29sIERvY3VtZW50OjpoYXNVUkxz
VG9NYXNrRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdl
KCk7CisgICAgaWYgKFVOTElLRUxZKCFwYWdlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBwYWdlLT5oYXNVUkxzVG9NYXNrRm9yQmluZGluZ3MoKTsKK30KKworVVJMIERvY3Vt
ZW50OjptYXNrZWRVUkxGb3JCaW5kaW5nc0lmTmVlZGVkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAor
eworICAgIGlmIChVTkxJS0VMWShzaG91bGRNYXNrVVJMRm9yQmluZGluZ3ModXJsKSkpCisgICAg
ICAgIHJldHVybiBtYXNrZWRVUkxGb3JCaW5kaW5ncygpOworICAgIHJldHVybiB1cmw7Cit9CisK
K2NvbnN0IEF0b21TdHJpbmcmIERvY3VtZW50OjptYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygp
IGNvbnN0Cit7CisgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9t
U3RyaW5nPiB1cmwoIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIsIEF0b21TdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBVUkwmIERv
Y3VtZW50OjptYXNrZWRVUkxGb3JCaW5kaW5ncygpIGNvbnN0Cit7CisgICAgc3RhdGljIE1haW5U
aHJlYWRMYXp5TmV2ZXJEZXN0cm95ZWQ8VVJMPiBtYXNrZWRVUkw7CisgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIG9uY2VGbGFnOworICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0gewor
ICAgICAgICBtYXNrZWRVUkwuY29uc3RydWN0KG1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzKCku
c3RyaW5nKCkpOworICAgIH0pOworICAgIHJldHVybiBtYXNrZWRVUkw7Cit9CisKIHZvaWQgRG9j
dW1lbnQ6OnNldEJhY2tGb3J3YXJkQ2FjaGVTdGF0ZShCYWNrRm9yd2FyZENhY2hlU3RhdGUgc3Rh
dGUpCiB7CiAgICAgaWYgKG1fYmFja0ZvcndhcmRDYWNoZVN0YXRlID09IHN0YXRlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCBkM2Q5M2Q4ZGJmOWYwM2MxNDc1MTA0MzY1ZGMwNzE5Nzk3YzNhYWNj
Li4yM2M2ZmY5NTRmZjU5Y2NlMjhhOGZmNzQxYTdlNTAyMGQzMDMxNmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNzIwLDYgKzcyMCwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
VVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8p
IGNvbnN0IGZpbmFsOwogICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmLCBjb25zdCBV
UkwmIGJhc2VVUkxPdmVycmlkZSwgRm9yY2VVVEY4ID0gRm9yY2VVVEY4OjpObykgY29uc3Q7CiAK
KyAgICBib29sIHNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb25zdCBVUkwmKSBjb25zdDsKKyAg
ICBib29sIGhhc1VSTHNUb01hc2tGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIFVSTCBtYXNrZWRV
UkxGb3JCaW5kaW5nc0lmTmVlZGVkKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGNvbnN0IEF0b21T
dHJpbmcmIG1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzKCkgY29uc3Q7CisgICAgY29uc3QgVVJM
JiBtYXNrZWRVUkxGb3JCaW5kaW5ncygpIGNvbnN0OworCiAgICAgU3RyaW5nIHVzZXJBZ2VudChj
b25zdCBVUkwmKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGI5OTdi
ZmQwZmRiOWZlZWY0NDNmOGIzY2NhNGQyMGU2MWMwYjdjOWMuLjY0NGMxZTkxNDQ2NzRmYWZkY2Fh
ZGRmMTFmOTY3NDBmM2JjOWQyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTcyMCw2ICs3
MjAsMzQgQEAgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKK0F0
b21TdHJpbmcgRWxlbWVudDo6Z2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0Cit7CisgICAgaWYgKCFl
bGVtZW50RGF0YSgpKQorICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKKworICAgIHN5bmNocm9u
aXplQXR0cmlidXRlKG5hbWUpOworCisgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBm
aW5kQXR0cmlidXRlQnlOYW1lKG5hbWUpOworICAgIGlmICghYXR0cmlidXRlKQorICAgICAgICBy
ZXR1cm4gbnVsbEF0b20oKTsKKworICAgIHN3aXRjaCAocmVzb2x2ZVVSTHMpIHsKKyAgICBjYXNl
IFJlc29sdmVVUkxzOjpZZXM6CisgICAgY2FzZSBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJM
c0ZvclByaXZhY3k6CisgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVl
KFVSTCgpLCAqYXR0cmlidXRlLCByZXNvbHZlVVJMcyk7CisKKyAgICBjYXNlIFJlc29sdmVVUkxz
OjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OgorICAgICAgICBpZiAoZG9jdW1lbnQoKS5oYXNV
UkxzVG9NYXNrRm9yQmluZGluZ3MoKSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTHNJ
bkF0dHJpYnV0ZVZhbHVlKFVSTCgpLCAqYXR0cmlidXRlLCByZXNvbHZlVVJMcyk7CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBSZXNvbHZlVVJMczo6Tm86CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIHJldHVybiBhdHRyaWJ1dGUtPnZhbHVlKCk7Cit9CisKIFZlY3RvcjxTdHJpbmc+
IEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5hbWVzKCkgY29uc3QKIHsKICAgICBWZWN0b3I8U3RyaW5n
PiBhdHRyaWJ1dGVzVmVjdG9yOwpAQCAtMTc5OCw2ICsxODI2LDM0IEBAIGNvbnN0IEF0b21TdHJp
bmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1l
KSBjb25zdAogICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCitBdG9tU3RyaW5nIEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSwgUmVz
b2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0Cit7CisgICAgaWYgKCFlbGVtZW50RGF0YSgpKQor
ICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKKworICAgIHN5bmNocm9uaXplQXR0cmlidXRlKGxv
Y2FsTmFtZSk7CisKKyAgICBjb25zdCBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGVsZW1lbnREYXRh
KCktPmZpbmRBdHRyaWJ1dGVCeU5hbWUobG9jYWxOYW1lLCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVD
YXNlKCp0aGlzKSk7CisgICAgaWYgKCFhdHRyaWJ1dGUpCisgICAgICAgIHJldHVybiBudWxsQXRv
bSgpOworCisgICAgc3dpdGNoIChyZXNvbHZlVVJMcykgeworICAgIGNhc2UgUmVzb2x2ZVVSTHM6
OlllczoKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeToK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoVVJMKCksICphdHRy
aWJ1dGUsIHJlc29sdmVVUkxzKTsKKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5n
VVJMc0ZvclByaXZhY3k6CisgICAgICAgIGlmIChkb2N1bWVudCgpLmhhc1VSTHNUb01hc2tGb3JC
aW5kaW5ncygpKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFs
dWUoVVJMKCksICphdHRyaWJ1dGUsIHJlc29sdmVVUkxzKTsKKyAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIFJlc29sdmVVUkxzOjpObzoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0
dXJuIGF0dHJpYnV0ZS0+dmFsdWUoKTsKK30KKwogY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6
Z2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9t
U3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEF0dHJpYnV0ZShRdWFs
aWZpZWROYW1lKG51bGxBdG9tKCksIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJKSk7CkBAIC0zMjcw
LDEyICszMzI2LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6Om1lcmdlV2l0aE5leHRU
ZXh0Tm9kZShUZXh0JiBub2RlKQogCiBTdHJpbmcgRWxlbWVudDo6aW5uZXJIVE1MKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6
U3VidHJlZXNPZkNoaWxkcmVuKTsKKyAgICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMs
IFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZXNPZkNoaWxkcmVuLCBudWxscHRyLCBSZXNvbHZlVVJM
czo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSk7CiB9CiAKIFN0cmluZyBFbGVtZW50OjpvdXRl
ckhUTUwoKSBjb25zdAogewotICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywgU2Vy
aWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSk7CisgICAgcmV0dXJuIHNlcmlhbGl6
ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVJbmNsdWRpbmdOb2RlLCBu
dWxscHRyLCBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwp
CkBAIC00NTUwLDkgKzQ2MDYsNDEgQEAgYm9vbCBFbGVtZW50OjpjYW5Db250YWluUmFuZ2VFbmRQ
b2ludCgpIGNvbnN0CiAgICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShh
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHJvbGVBdHRyKSwgImltZyIpOwogfQogCi1T
dHJpbmcgRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAorU3RyaW5nIEVsZW1lbnQ6OnJl
c29sdmVVUkxTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVzb2x2ZVVS
THMgcmVzb2x2ZVVSTHMsIGNvbnN0IFVSTCYgYmFzZSkgY29uc3QKK3sKKyAgICBpZiAocmVzb2x2
ZVVSTHMgPT0gUmVzb2x2ZVVSTHM6Ok5vKQorICAgICAgICByZXR1cm4gdXJsU3RyaW5nOworCisg
ICAgVVJMIGNvbXBsZXRlVVJMID0gYmFzZS5pc051bGwoKSA/IGRvY3VtZW50KCkuY29tcGxldGVV
UkwodXJsU3RyaW5nKSA6IFVSTChiYXNlLCB1cmxTdHJpbmcpOworCisgICAgc3dpdGNoIChyZXNv
bHZlVVJMcykgeworICAgIGNhc2UgUmVzb2x2ZVVSTHM6OlllczoKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRlVVJMLnN0cmluZygpOworCisgICAgY2FzZSBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5n
VVJMc0ZvclByaXZhY3k6IHsKKyAgICAgICAgaWYgKGRvY3VtZW50KCkuc2hvdWxkTWFza1VSTEZv
ckJpbmRpbmdzKGNvbXBsZXRlVVJMKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLm1h
c2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzKCk7CisgICAgICAgIGlmICghY29tcGxldGVVUkwuaXNM
b2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTC5zdHJpbmcoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdV
UkxzRm9yUHJpdmFjeToKKyAgICAgICAgaWYgKGRvY3VtZW50KCkuc2hvdWxkTWFza1VSTEZvckJp
bmRpbmdzKGNvbXBsZXRlVVJMKSkKKyAgICAgICAgICAgIHJldHVybiBkb2N1bWVudCgpLm1hc2tl
ZFVSTFN0cmluZ0ZvckJpbmRpbmdzKCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSZXNv
bHZlVVJMczo6Tm86CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gdXJsU3RyaW5nOworfQorCitTdHJpbmcgRWxlbWVudDo6
Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlLCBSZXNvbHZlVVJMcyByZXNvbHZlVVJMcykgY29uc3QKIHsKLSAgICBy
ZXR1cm4gVVJMKGJhc2UsIGF0dHJpYnV0ZS52YWx1ZSgpKS5zdHJpbmcoKTsKKyAgICByZXR1cm4g
cmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkKGF0dHJpYnV0ZS52YWx1ZSgpLCByZXNvbHZlVVJMcywg
YmFzZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPE5vZGUqPiBFbGVtZW50OjppbnNlcnRBZGphY2VudChj
b25zdCBTdHJpbmcmIHdoZXJlLCBSZWY8Tm9kZT4mJiBuZXdDaGlsZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IGE1MjhkMTcwNWVkYTFhMjNmNWQ5ZjEzM2Y3ZjI2ZmY1ZTNlYTVmOTAuLjM1MDFhZGIx
NjBmOWFhOWI0NWVlM2E1N2I1ODdkZjlmNWNhMzc1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
ODEsNiArODEsNyBAQCBlbnVtIGNsYXNzIEFuaW1hdGlvbkltcGFjdDsKIGVudW0gY2xhc3MgRXZl
bnRIYW5kbGluZyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIEV2ZW50UHJvY2Vzc2luZyA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIElzU3ludGhldGljQ2xpY2sgOiBib29sIHsgTm8sIFllcyB9OworZW51
bSBjbGFzcyBSZXNvbHZlVVJMcyA6IHVpbnQ4X3QgeyBObywgTm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSwgWWVzLCBZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSB9OwogZW51bSBjbGFzcyBTZWxl
Y3Rpb25SZXN0b3JhdGlvbk1vZGUgOiB1aW50OF90OwogCiBzdHJ1Y3QgR2V0QW5pbWF0aW9uc09w
dGlvbnM7CkBAIC0xMDcsNiArMTA4LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CisgICAgQXRvbVN0cmluZyBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyhjb25z
dCBRdWFsaWZpZWROYW1lJiwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdV
UkxzRm9yUHJpdmFjeSkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gUXVhbGlmaWVk
TmFtZXM+CiAgICAgaW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgUXVhbGlmaWVkTmFtZXMmLi4uKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbVN0cmluZyYgdmFsdWUpOwpAQCAtMTM5LDkgKzE0MSwxMSBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVk
TmFtZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBdHRyaWJ1dGVOUyhjb25z
dCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21TdHJpbmcmIGxvY2FsTmFtZSkg
Y29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1
dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIGxv
Y2FsTmFtZSkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0
QXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3Ry
aW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCisgICAgQXRvbVN0cmluZyBnZXRBdHRyaWJ1dGVGb3JC
aW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIFJlc29sdmVVUkxzID0gUmVzb2x2
ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpIGNvbnN0OworCiAgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1
YWxpZmllZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKTsKICAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8UXVhbGlmaWVkTmFtZT4gcGFyc2VBdHRyaWJ1dGVOYW1lKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QXR0cmlidXRlTlMoY29uc3QgQXRvbVN0
cmluZyYgbmFtZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSk7CkBAIC00MTYsMTAgKzQyMCwxMiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgYXR0cmlidXRlQ29udGFpbnNVUkwoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0IHsgcmV0dXJuIGlzVVJMQXR0cmlidXRlKGF0
dHJpYnV0ZSk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZh
bHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJikgY29uc3Q7CisgICAgU3RyaW5n
IHJlc29sdmVVUkxTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVzb2x2
ZVVSTHMgPSBSZXNvbHZlVVJMczo6WWVzLCBjb25zdCBVUkwmIGJhc2UgPSBVUkwoKSkgY29uc3Q7
CisgICAgdmlydHVhbCBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBV
UkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYsIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Olll
cykgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzSFRNTENvbnRlbnRBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCBnZXRVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAgIGlu
bGluZSBVUkwgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0OwogICAgIFVSTCBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIGltYWdlU291cmNl
VVJMKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKaW5kZXggYTUyMzMxZmY4N2EyODJkMDE2
YzkyNjEwNTI5ZjM4NGMyYzNkNDcwNC4uZGZiNGQ5ZjI4NGU5NmZhYzkyOTA0NmY3M2YwODA2MmQ3
OWQ5OWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbApAQCAtNDAsNyArNDAsNyBAQAogICAgIFtE
T01KSVQ9UmVhZERPTV0gYm9vbGVhbiBoYXNBdHRyaWJ1dGVzKCk7CiAgICAgW1NhbWVPYmplY3Rd
IHJlYWRvbmx5IGF0dHJpYnV0ZSBOYW1lZE5vZGVNYXAgYXR0cmlidXRlczsKICAgICBzZXF1ZW5j
ZTxET01TdHJpbmc+IGdldEF0dHJpYnV0ZU5hbWVzKCk7Ci0gICAgW0RPTUpJVD1SZWFkRE9NXSBE
T01TdHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CisgICAgW0RP
TUpJVD1SZWFkRE9NLCBJbXBsZW1lbnRlZEFzPWdldEF0dHJpYnV0ZUZvckJpbmRpbmdzXSBET01T
dHJpbmc/IGdldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFtZSk7CiAgICAgRE9NU3Ry
aW5nPyBnZXRBdHRyaWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIGxv
Y2FsTmFtZSk7CiAgICAgW0NFUmVhY3Rpb25zXSB1bmRlZmluZWQgc2V0QXR0cmlidXRlKERPTVN0
cmluZyBxdWFsaWZpZWROYW1lLCBET01TdHJpbmcgdmFsdWUpOwogICAgIFtDRVJlYWN0aW9uc10g
dW5kZWZpbmVkIHNldEF0dHJpYnV0ZU5TKERPTVN0cmluZz8gbmFtZXNwYWNlVVJJLCBET01TdHJp
bmcgcXVhbGlmaWVkTmFtZSwgRE9NU3RyaW5nIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJ
bmxpbmVzLmgKaW5kZXggM2Y4NTdhNjQzM2Q2ZTFiMmIzMzJjMGY2OTMzZjU3NDQwNDRmZWY4OS4u
NTQwYjIwZjlkMDA4MDA1MGU0M2Y3NmQzNDQ1ZTNlMDQ4ZGEwZDVjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRJbmxpbmVzLmgKQEAgLTkwLDYgKzkwLDExIEBAIGlubGluZSBjb25zdCBBdG9tU3Ry
aW5nJiBFbGVtZW50OjphdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGNvbnN0IFF1YWxp
ZmllCiAgICAgcmV0dXJuIG51bGxBdG9tKCk7CiB9CiAKK2lubGluZSBVUkwgRWxlbWVudDo6Z2V0
VVJMQXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxGb3JCaW5kaW5nc0lmTmVlZGVkKGdl
dFVSTEF0dHJpYnV0ZShuYW1lKSk7Cit9CisKIGlubGluZSBib29sIEVsZW1lbnQ6Omhhc0F0dHJp
YnV0ZXNXaXRob3V0VXBkYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gZWxlbWVudERhdGEoKSAm
JiAhZWxlbWVudERhdGEoKS0+aXNFbXB0eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmlu
ZGV4IGEzMjJkZWM0MWRkZjRiMzViZTE4MzE2ZjlhZjA0ZTI1MGNiNmVhOWIuLjUyOWFlOTBiY2My
MjljMzU3YWE0NjFiNzhkN2ZkZmZhZTRmNzE4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKQEAgLTE3OCw3ICsxNzgsNyBAQCBTdHlsZVNoZWV0TGlzdCYgU2hhZG93Um9vdDo6c3R5bGVT
aGVldHMoKQogCiBTdHJpbmcgU2hhZG93Um9vdDo6aW5uZXJIVE1MKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZXNP
ZkNoaWxkcmVuKTsKKyAgICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6
ZWROb2Rlczo6U3VidHJlZXNPZkNoaWxkcmVuLCBudWxscHRyLCBSZXNvbHZlVVJMczo6Tm9FeGNs
dWRpbmdVUkxzRm9yUHJpdmFjeSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNoYWRvd1Jvb3Q6
OnNldElubmVySFRNTChjb25zdCBTdHJpbmcmIG1hcmt1cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKaW5kZXggM2U2OTYxZDE3MzBkNDM3NGM2NGZmODdh
MmQwYWYxMjdlYzEwNTQ0MC4uODFmOTA4ZTBkZGI5MjVjYTJhZTNiNjU3MzczZGJhMjEzNmQzOTQ0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRvci5jcHAKQEAg
LTIzMiwxOSArMjMyLDcgQEAgdm9pZCBNYXJrdXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplTm9kZXNX
aXRoTmFtZXNwYWNlcyhOb2RlJiB0YXJnZXROb2RlLCBTZXJpYWxpemUKIAogU3RyaW5nIE1hcmt1
cEFjY3VtdWxhdG9yOjpyZXNvbHZlVVJMSWZOZWVkZWQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChtX3Jlc29sdmVV
UkxzKSB7Ci0gICAgY2FzZSBSZXNvbHZlVVJMczo6WWVzOgotICAgICAgICByZXR1cm4gZWxlbWVu
dC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykuc3RyaW5nKCk7Ci0KLSAgICBjYXNl
IFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeToKLSAgICAg
ICAgaWYgKCFlbGVtZW50LmRvY3VtZW50KCkudXJsKCkuaXNMb2NhbEZpbGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50LmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKS5zdHJp
bmcoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFJlc29sdmVVUkxzOjpObzoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB1cmxTdHJpbmc7CisgICAgcmV0dXJuIGVsZW1l
bnQucmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkKHVybFN0cmluZywgbV9yZXNvbHZlVVJMcyk7CiB9
CiAKIHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OnN0YXJ0QXBwZW5kaW5nTm9kZShjb25zdCBOb2Rl
JiBub2RlLCBOYW1lc3BhY2VzKiBuYW1lc3BhY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggZjg4YTgxNmVhNjM3NmQxNzI0MGE2NDgxMWU5Njhh
OTVmMzg5YzgwMy4uNmU5Y2RhNzAwMThiYzY0ZmE3YzA3YjY3NTRlNzVjY2RkNzJlNDE2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC04MCw3ICs4
MCw3IEBAIFN0cmluZyBFZGl0b3I6OnNlbGVjdGlvbkluSFRNTEZvcm1hdCgpCiB7CiAgICAgaWYg
KEltYWdlT3ZlcmxheTo6aXNJbnNpZGVPdmVybGF5KG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJldHVybiBzZXJpYWxpemVQcmVz
ZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
LCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3ksIFNlcmlh
bGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKKyAgICByZXR1cm4gc2VyaWFsaXplUHJlc2VydmluZ1Zp
c3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2
ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6
Olllcyk7CiB9CiAKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKaW5kZXggOTRlMzgxMzc1Yjk3NzE3MDgyODI4ZTBj
OTY0OGI1NDk3ZDZmMjRmZS4uZWY5OWEyZWY2OWI0ZTE0MTM5NzgyMDczY2IyMDIxY2FlNGZhOGJj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0b3JHdGsuY3BwCkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9h
cmQmIHBhc3RlYm9hcmQpCiAgICAgUGFzdGVib2FyZFdlYkNvbnRlbnQgcGFzdGVib2FyZENvbnRl
bnQ7CiAgICAgcGFzdGVib2FyZENvbnRlbnQuY2FuU21hcnRDb3B5T3JEZWxldGUgPSBjYW5TbWFy
dENvcHlPckRlbGV0ZSgpOwogICAgIHBhc3RlYm9hcmRDb250ZW50LnRleHQgPSBzZWxlY3RlZFRl
eHRGb3JEYXRhVHJhbnNmZXIoKTsKLSAgICBwYXN0ZWJvYXJkQ29udGVudC5tYXJrdXAgPSBzZXJp
YWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZh
Y3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKKyAgICBwYXN0ZWJvYXJkQ29udGVudC5t
YXJrdXAgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShtX2RvY3VtZW50LnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclBy
aXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKICAgICBwYXN0ZWJvYXJkQ29udGVu
dC5jb250ZW50T3JpZ2luID0gbV9kb2N1bWVudC5vcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVib2Fy
ZCgpOwogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2FyZENvbnRlbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUy
ZThmOGU4ODJiYmM3ZDBmOTFjYWQ3NmMzODI1MDhlOWEzZi4uOTAwNWM5NTZkNWViNTYzZDdiM2Zj
MmQwN2U4ZjVkOGZkYjE3MGI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9s
aWJ3cGUvRWRpdG9yTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndw
ZS9FZGl0b3JMaWJXUEUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIFBhc3Rl
Ym9hcmRXZWJDb250ZW50IHBhc3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9hcmRDb250ZW50
LnRleHQgPSBzZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIoKTsKLSAgICBwYXN0ZWJvYXJkQ29u
dGVudC5tYXJrdXAgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShtX2RvY3Vt
ZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9j
YWxGaWxlVVJMc0ZvclByaXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKKyAgICBw
YXN0ZWJvYXJkQ29udGVudC5tYXJrdXAgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFy
YW5jZShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLCBSZXNvbHZlVVJMczo6WWVz
RXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKICAg
ICBwYXN0ZWJvYXJkLndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDFhMmNkMDNmMDBjZWUwMjY5MjZiYzNhMjRm
ZmE5YmJjNWUwODk2NjMuLjJmZjliYmQ0ODBjNTY2NzkwZDMxYzhmNjNiNjc2NjZhYzE0NjNkMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTI3Miw3ICsyNzIs
NyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0
ZWJvYXJkLCBFbGVtZW50JiBpbWFnZUVsZW1lbgogICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UuZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdCA9IGltYWdlSW5XZWJBcmNoaXZlRm9ybWF0KGltYWdlRWxlbWVu
dCk7CiAKICAgICBpZiAoYXV0byBpbWFnZVJhbmdlID0gbWFrZVJhbmdlU2VsZWN0aW5nTm9kZShp
bWFnZUVsZW1lbnQpKQotICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UuZGF0YUluSFRNTEZvcm1hdCA9
IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKFZpc2libGVTZWxlY3Rpb24geyAq
aW1hZ2VSYW5nZSB9LCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclBy
aXZhY3ksIFNlcmlhbGl6ZUNvbXBvc2VkVHJlZTo6WWVzKTsKKyAgICAgICAgcGFzdGVib2FyZElt
YWdlLmRhdGFJbkhUTUxGb3JtYXQgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5j
ZShWaXNpYmxlU2VsZWN0aW9uIHsgKmltYWdlUmFuZ2UgfSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1
ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiAKICAgICBw
YXN0ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRp
dGxlID0gdGl0bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMjBiM2ZjZjhkZGY5
NTQ0MzQ5YjE4NjRlZjlkOWJmMGZiNGFlZTY0Ni4uYWRjYTlkMWUwOTViOWJlNzQyMTBjYTRkNTE3
NjFkNjFjNGViNTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTAxMSw3ICsx
MDExLDcgQEAgU3RyaW5nIHNhbml0aXplZE1hcmt1cEZvckZyYWdtZW50SW5Eb2N1bWVudChSZWY8
RG9jdW1lbnRGcmFnbWVudD4mJiBmcmFnbWVudCwgRG8KIAogICAgIC8vIFNlcmlhbGl6ZUNvbXBv
c2VkVHJlZTo6Tm8gYmVjYXVzZSB0aGVyZSBjYW4ndCBiZSBhIHNoYWRvdyB0cmVlIGluIHRoZSBw
YXN0ZWQgZnJhZ21lbnQuCiAgICAgYXV0byByZXN1bHQgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlz
dWFsQXBwZWFyYW5jZUludGVybmFsKGZpcnN0UG9zaXRpb25Jbk5vZGUoYm9keUVsZW1lbnQuZ2V0
KCkpLCBsYXN0UG9zaXRpb25Jbk5vZGUoYm9keUVsZW1lbnQuZ2V0KCkpLCBudWxscHRyLAotICAg
ICAgICBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3ksIFNl
cmlhbGl6ZUNvbXBvc2VkVHJlZTo6Tm8sIEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6OlllcywgQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6Tm8sICBTdGFuZGFyZEZvbnRGYW1pbHlTZXJpYWxpemF0aW9u
TW9kZTo6U3RyaXAsIG1zb0xpc3RNb2RlKTsKKyAgICAgICAgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1
ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Ok5vLCBBbm5vdGF0ZUZv
ckludGVyY2hhbmdlOjpZZXMsIENvbnZlcnRCbG9ja3NUb0lubGluZXM6Ok5vLCAgU3RhbmRhcmRG
b250RmFtaWx5U2VyaWFsaXphdGlvbk1vZGU6OlN0cmlwLCBtc29MaXN0TW9kZSk7CiAKICAgICBp
ZiAobXNvTGlzdE1vZGUgIT0gTVNPTGlzdE1vZGU6OlByZXNlcnZlKQogICAgICAgICByZXR1cm4g
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggOTI1MTFhOTM0NjZiYTk0ODQxMjQx
YmFmZDY0ZTBmY2QxM2UxMWFlMy4uNDE3NDBlZmY3YmQ5YzVhNTUxM2ZmMTAzYzJiZWM0OWE2YjBh
ODI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgi
CiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJt
aXNzaW9uLmgiCkBAIC03MCw3ICs3MSw2IEBAIGJvb2wgaXNQbGFpblRleHRNYXJrdXAoTm9kZSop
OwogLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBieSBIVE1MRWxlbWVudCAmIFNoYWRvd1Jvb3Qg
dG8gcmVwbGFjZSB0aGUgY2hpbGRyZW4gd2l0aCByZXNwZWN0ZWQgZnJhZ21lbnQvdGV4dC4KIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250YWluZXJOb2Rl
JiwgUmVmPERvY3VtZW50RnJhZ21lbnQ+JiYpOwogCi1lbnVtIGNsYXNzIFJlc29sdmVVUkxzIDog
dWludDhfdCB7IE5vLCBZZXMsIFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IH07
CiBlbnVtIGNsYXNzIENvbnZlcnRCbG9ja3NUb0lubGluZXMgOiB1aW50OF90IHsgTm8sIFllcyB9
OwogZW51bSBjbGFzcyBTZXJpYWxpemVDb21wb3NlZFRyZWUgOiB1aW50OF90IHsgTm8sIFllcyB9
OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJh
bmNlKGNvbnN0IFNpbXBsZVJhbmdlJiwgVmVjdG9yPE5vZGUqPiogPSBudWxscHRyLCBBbm5vdGF0
ZUZvckludGVyY2hhbmdlID0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6Tm8sIENvbnZlcnRCbG9j
a3NUb0lubGluZXMgPSBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgUmVzb2x2ZVVSTHMgPSBS
ZXNvbHZlVVJMczo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAK
aW5kZXggNzk4ZmU4NmJjNGYzMjAyNjcxY2QyZDcxNDY2MDAwYjZlYmFiYjZiZi4uYjQ4YzU0MjMx
ZDFmYTY0ZjZjOTg2MTExZjcwZjI5N2VlNWRhZmI5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwCkBAIC01NjUsNyArNTY1LDcgQEAgYm9vbCBIVE1MSW1hZ2VFbGVt
ZW50OjphdHRyaWJ1dGVDb250YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29u
c3QKICAgICAgICAgfHwgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGF0dHJpYnV0
ZSk7CiB9CiAKLVN0cmluZyBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZVVSTHNJbkF0dHJpYnV0
ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0
CitTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShj
b25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlLCBSZXNvbHZlVVJMcyBy
ZXNvbHZlVVJMcykgY29uc3QKIHsKICAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBzcmNzZXRB
dHRyKSB7CiAgICAgICAgIFZlY3RvcjxJbWFnZUNhbmRpZGF0ZT4gaW1hZ2VDYW5kaWRhdGVzID0g
cGFyc2VJbWFnZUNhbmRpZGF0ZXNGcm9tU3Jjc2V0QXR0cmlidXRlKFN0cmluZ1ZpZXcoYXR0cmli
dXRlLnZhbHVlKCkpKTsKQEAgLTU3Myw3ICs1NzMsNyBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVu
dDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0
dAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNhbmRpZGF0ZSA6IGltYWdlQ2FuZGlkYXRlcykg
ewogICAgICAgICAgICAgaWYgKCZjYW5kaWRhdGUgIT0gJmltYWdlQ2FuZGlkYXRlc1swXSkKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOwotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChVUkwoYmFzZSwgY2FuZGlkYXRlLnN0cmluZy50b1N0cmluZygpKS5zdHJpbmcoKSk7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlc29sdmVVUkxTdHJpbmdJZk5lZWRlZChjYW5kaWRh
dGUuc3RyaW5nLnRvU3RyaW5nKCksIHJlc29sdmVVUkxzLCBiYXNlKSk7CiAgICAgICAgICAgICBp
ZiAoY2FuZGlkYXRlLmRlbnNpdHkgIT0gVW5pbml0aWFsaXplZERlc2NyaXB0b3IpCiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcsIGNhbmRpZGF0ZS5kZW5zaXR5LCAneCcpOwogICAg
ICAgICAgICAgaWYgKGNhbmRpZGF0ZS5yZXNvdXJjZVdpZHRoICE9IFVuaW5pdGlhbGl6ZWREZXNj
cmlwdG9yKQpAQCAtNTgxLDcgKzU4MSw4IEBAIFN0cmluZyBIVE1MSW1hZ2VFbGVtZW50Ojpjb21w
bGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogICAgIH0KLSAgICByZXR1
cm4gSFRNTEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoYmFzZSwgYXR0cmli
dXRlKTsKKworICAgIHJldHVybiBIVE1MRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVW
YWx1ZShiYXNlLCBhdHRyaWJ1dGUsIHJlc29sdmVVUkxzKTsKIH0KIAogYm9vbCBIVE1MSW1hZ2VF
bGVtZW50OjptYXRjaGVzVXNlbWFwKGNvbnN0IEF0b21TdHJpbmdJbXBsJiBuYW1lKSBjb25zdApA
QCAtODc2LDYgKzg3NywxNiBAQCBzaXplX3QgSFRNTEltYWdlRWxlbWVudDo6cGVuZGluZ0RlY29k
ZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKCkgY29uc3QKICAgICByZXR1cm4gbV9pbWFnZUxvYWRl
ci0+cGVuZGluZ0RlY29kZVByb21pc2VzQ291bnRGb3JUZXN0aW5nKCk7CiB9CiAKK0F0b21TdHJp
bmcgSFRNTEltYWdlRWxlbWVudDo6c3Jjc2V0Rm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHJl
dHVybiBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyhzcmNzZXRBdHRyKTsKK30KKwordm9pZCBIVE1M
SW1hZ2VFbGVtZW50OjpzZXRTcmNzZXRGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKK3sKKyAgICBzZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY3NldEF0dHIs
IHZhbHVlKTsKK30KKwogY29uc3QgQXRvbVN0cmluZyYgSFRNTEltYWdlRWxlbWVudDo6bG9hZGlu
Z0ZvckJpbmRpbmdzKCkgY29uc3QKIHsKICAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJv
eWVkPGNvbnN0IEF0b21TdHJpbmc+IGVhZ2VyKCJlYWdlciIsIEF0b21TdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXgg
MWQ5OWQzMjE3YjU2ZmUzYzFjNWQwYzU1OGQ3ZWI0NzNhOTg5YzNlYy4uZTg0YjVhMjlmZjZjZjAx
YmEyMzczYTRhNGM0ODAxMjExMmFkM2FjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmgKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWREZWZl
cnJlZEltYWdlKCk7CiAKKyAgICBBdG9tU3RyaW5nIHNyY3NldEZvckJpbmRpbmdzKCkgY29uc3Q7
CisgICAgdm9pZCBzZXRTcmNzZXRGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJik7CisKICAg
ICBjb25zdCBBdG9tU3RyaW5nJiBsb2FkaW5nRm9yQmluZGluZ3MoKSBjb25zdDsKICAgICB2b2lk
IHNldExvYWRpbmdGb3JCaW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJik7CiAKQEAgLTE3Myw3ICsx
NzYsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0
IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFN0cmluZyBjb21wbGV0ZVVSTHNJbkF0
dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgU3RyaW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJM
JiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0RyYWdnYWJsZUlnbm9yaW5nQXR0cmlidXRl
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5pZGwKaW5kZXggZjkzNjM4NjJjOTI4NGM2YTBjNzhiM2E3MGM3N2Y2MjE0
MDgxZjAyNS4uY2RiNjk2MzM5NDZkM2JkN2RjNzc5ZDVhZmYwN2NkMmRkNWQ0YmFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRsCkBAIC0yOCw3ICsyOCw3IEBACiBd
IGludGVyZmFjZSBIVE1MSW1hZ2VFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgYWx0OwogICAgIFtD
RVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3QsIFVSTF0gYXR0cmlidXRlIFVTVlN0cmluZyBz
cmM7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIFVTVlN0
cmluZyBzcmNzZXQ7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgSW1wbGVtZW50ZWRBcz1z
cmNzZXRGb3JCaW5kaW5nc10gYXR0cmlidXRlIFVTVlN0cmluZyBzcmNzZXQ7CiAgICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBzaXplczsKICAg
ICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBjcm9zc09yaWdp
bjsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHVzZU1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDY2M2Y5ODRiNTdkNGQwZWQzNDM5ZjA5
MTNjMTRiMWNiMWUxOGZjMTcuLmU2YzgxNTExYzQ2MTFiZGU0NGE0M2UxYzliOWFjMGNmYmYzYTc3
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMzM3LDYgKzMzNyw3IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbikKICAgICAsIG1fZGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXIpKQogI2VuZGlmCiAgICAgLCBtX2NvcnNEaXNhYmxpbmdQYXR0
ZXJucyhXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmNvcnNEaXNhYmxpbmdQYXR0ZXJucykpCisg
ICAgLCBtX21hc2tlZFVSTFNjaGVtZXMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tYXNrZWRV
UkxTY2hlbWVzKSkKICAgICAsIG1fYWxsb3dlZE5ldHdvcmtIb3N0cyhXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uLmFsbG93ZWROZXR3b3JrSG9zdHMpKQogICAgICwgbV9sb2Fkc1N1YnJlc291cmNl
cyhwYWdlQ29uZmlndXJhdGlvbi5sb2Fkc1N1YnJlc291cmNlcykKICAgICAsIG1fc2hvdWxkUmVs
YXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcocGFnZUNvbmZpZ3VyYXRpb24uc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmcpCkBAIC0zNzI5LDYgKzM3MzAsMTMgQEAgYm9vbCBQYWdl
OjpzaG91bGREaXNhYmxlQ29yc0ZvclJlcXVlc3RUbyhjb25zdCBVUkwmIHVybCkgY29uc3QKICAg
ICB9KTsKIH0KIAorYm9vbCBQYWdlOjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJM
JiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKG1fbWFza2VkVVJMU2NoZW1lcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9tYXNrZWRVUkxTY2hlbWVzLmNvbnRh
aW5zKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7Cit9CisKIHZvaWQg
UGFnZTo6cmV2ZWFsQ3VycmVudFNlbGVjdGlvbigpCiB7CiAgICAgQ2hlY2tlZFJlZihmb2N1c0Nv
bnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgpLnNlbGVjdGlvbigpLnJldmVhbFNlbGVj
dGlvbihTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25D
ZW50ZXJJZk5lZWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDc2MTI4YzIyMTNiZmMxNTQxOWI0MWE5
N2NhM2NkMGRkYTEwMzVjODEuLmE0MDJhNzVmNzc1YmQ1NDc5NjhiNWMzY2ZkMzRhMmExZGZmNTMw
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC05MDksNiArOTA5LDggQEAgcHVibGljOgogICAgIHZvaWQg
Zm9yRWFjaEZyYW1lKGNvbnN0IEZ1bmN0aW9uPHZvaWQoRnJhbWUmKT4mKTsKIAogICAgIGJvb2wg
c2hvdWxkRGlzYWJsZUNvcnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9v
bCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBo
YXNVUkxzVG9NYXNrRm9yQmluZGluZ3MoKSBjb25zdCB7IHJldHVybiAhbV9tYXNrZWRVUkxTY2hl
bWVzLmlzRW1wdHkoKTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmplY3RVc2VyU3R5
bGVTaGVldChVc2VyU3R5bGVTaGVldCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3Zl
SW5qZWN0ZWRVc2VyU3R5bGVTaGVldChVc2VyU3R5bGVTaGVldCYpOwpAQCAtMTI3OSw2ICsxMjgx
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVy
bj4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1fbWFza2Vk
VVJMU2NoZW1lczsKICAgICBWZWN0b3I8VXNlclN0eWxlU2hlZXQ+IG1fdXNlclN0eWxlU2hlZXRz
UGVuZGluZ0luamVjdGlvbjsKICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gbV9h
bGxvd2VkTmV0d29ya0hvc3RzOwogICAgIGJvb2wgbV9pc1Rha2luZ1NuYXBzaG90c0ZvckFwcGxp
Y2F0aW9uU3VzcGVuc2lvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmgKaW5kZXggNDJhOTQ0ZWRkMWIzOWQ3ZDJjNjEwYWUwMzE4YTIwNmY5NWNiYjVhZS4u
ZWI4MTdlNmI1YjViNGQ3YmVjYWEyYTFlNWI4ZGZjMGVjODBmNzZlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaApAQCAtMTM5LDYgKzEzOSw3IEBAIHB1YmxpYzoKICAg
ICBSZWZQdHI8RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlcj4gZGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlcjsKICNlbmRpZgogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRl
cm4+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmluZz4gbWFza2VkVVJM
U2NoZW1lczsKICAgICBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4gc3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlcjsKICAgICBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVy
PiBtZWRpYVJlY29yZGVyUHJvdmlkZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4Yzg2MzRmMzdlZWEyYWZkMDI0YThk
NDJhNGY0MmM1Li40MTdhNzkwYWM1YzM0OWQ4ZGI0YzI5ODgzZmUxZTgyNTFjODE1ZDkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC01MDks
NyArNTA5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihjb25zdCBTaW1wbGVS
YW5nZSYgc2VsZWN0ZWRSYW5nZSwgYm9vbCBjYW5TbWFydEMKICAgICAvLyBQdXQgQ0ZfSFRNTCBm
b3JtYXQgb24gdGhlIHBhc3RlYm9hcmQgCiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVy
KSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgLy8gRklYTUU6IFVzZSBS
ZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kuCisgICAgICAg
IC8vIEZJWE1FOiBVc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5Lgog
ICAgICAgICBtYXJrdXBUb0NGSFRNTChzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5j
ZShmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSksCiAgICAgICAgICAgICBzZWxlY3RlZFJh
bmdlLnN0YXJ0LmNvbnRhaW5lci0+ZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKSwgZGF0YSk7CiAg
ICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXgg
ZWM0MzlkMDY3MTRlNmRlNWI5NGUyMWZiOWNlOGVlMjM5Yzk2MjJmYS4uOWZkN2JlYjFhZTdhZWZh
ZTE2NDVlZTJlMjRjZjlkMmE0ZjY3Y2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE0OCw2ICsxNDgsNyBAQCB2b2lk
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgZW5jb2RlciA8PCBvbGRQYWdlSUQ7CiAgICAgZW5jb2RlciA8PCBvdmVycmlk
ZGVuTWVkaWFUeXBlOwogICAgIGVuY29kZXIgPDwgY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAg
IGVuY29kZXIgPDwgbWFza2VkVVJMU2NoZW1lczsKICAgICBlbmNvZGVyIDw8IGxvYWRzU3VicmVz
b3VyY2VzOwogICAgIGVuY29kZXIgPDwgYWxsb3dlZE5ldHdvcmtIb3N0czsKICAgICBlbmNvZGVy
IDw8IHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwpAQCAtNDk1LDYgKzQ5
NiwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIHBhcmFtZXRlcnMuY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZSgqY29y
c0Rpc2FibGluZ1BhdHRlcm5zKTsKIAorICAgIHN0ZDo6b3B0aW9uYWw8SGFzaFNldDxTdHJpbmc+
PiBtYXNrZWRVUkxTY2hlbWVzOworICAgIGRlY29kZXIgPj4gbWFza2VkVVJMU2NoZW1lczsKKyAg
ICBpZiAoIW1hc2tlZFVSTFNjaGVtZXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgcGFyYW1ldGVycy5tYXNrZWRVUkxTY2hlbWVzID0gV1RGTW92ZSgqbWFza2VkVVJMU2NoZW1l
cyk7CisKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGxvYWRzU3VicmVzb3VyY2VzOwogICAgIGRl
Y29kZXIgPj4gbG9hZHNTdWJyZXNvdXJjZXM7CiAgICAgaWYgKCFsb2Fkc1N1YnJlc291cmNlcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApp
bmRleCBjYjc0MTY5M2RiMzBhNzUwMmI0ODljODM5N2NlZjZjNzM5ZmVkYTkxLi4yODZhMWU3ZDk1
MGRlMGE1NGE2ZmE0Mzg4ZmNmZjUzODZlOWE2NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yMTksNiArMjE5LDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5nIG92ZXJyaWRkZW5N
ZWRpYVR5cGU7CiAgICAgVmVjdG9yPFN0cmluZz4gY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAg
IEhhc2hTZXQ8U3RyaW5nPiBtYXNrZWRVUkxTY2hlbWVzOwogICAgIGJvb2wgdXNlclNjcmlwdHNT
aG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgYm9vbCBsb2Fkc1N1YnJl
c291cmNlcyB7IHRydWUgfTsKICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gYWxs
b3dlZE5ldHdvcmtIb3N0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGI2OTI5NjZhM2VmNmE5ODZjYjYwM2QwZjNh
MWU4ODAyNzYxNDlhM2UuLjE2ZmRjYjdmZTE0ZTIwNDlkZjBhZmUxNmRlMWMxMzU0Mzg2Yjg4YzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1
cmF0aW9uLmNwcApAQCAtODMsNiArODMsNyBAQCBSZWY8UGFnZUNvbmZpZ3VyYXRpb24+IFBhZ2VD
b25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0aGlzLT5t
X3VybFNjaGVtZUhhbmRsZXJzKQogICAgICAgICBjb3B5LT5tX3VybFNjaGVtZUhhbmRsZXJzLnNl
dChwYWlyLmtleSwgcGFpci52YWx1ZS5jb3B5UmVmKCkpOwogICAgIGNvcHktPm1fY29yc0Rpc2Fi
bGluZ1BhdHRlcm5zID0gdGhpcy0+bV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgY29weS0+
bV9tYXNrZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9tYXNrZWRVUkxTY2hlbWVzOwogICAgIGNvcHkt
Pm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkID0gdGhpcy0+bV9jcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2xDaGVja0VuYWJsZWQ7CiAgICAgY29weS0+bV91c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiA9IHRoaXMtPm1fdXNlclNjcmlwdHNTaG91bGRXYWl0
VW50aWxOb3RpZmljYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVBhZ2VDb25maWd1cmF0aW9uLmgKaW5kZXggNDJiMmNjNWRlZmZlZjdhY2Y3MzM0OWVmMzk2
ZmY1YjRmNDJiY2NiNC4uZjhmZmJkOTcyMDFlNDU2YmQzMTM5MzQ1NjAwN2FkNGY0YzEyNGU1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmgKQEAgLTE0Myw3ICsxNDMsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYgY29yc0Rpc2FibGluZ1BhdHRlcm5zKCkgY29uc3QgeyByZXR1cm4gbV9jb3Jz
RGlzYWJsaW5nUGF0dGVybnM7IH0KICAgICB2b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhW
ZWN0b3I8V1RGOjpTdHJpbmc+JiYgcGF0dGVybnMpIHsgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMg
PSBXVEZNb3ZlKHBhdHRlcm5zKTsgfQotICAgIAorCisgICAgY29uc3QgSGFzaFNldDxXVEY6OlN0
cmluZz4mIG1hc2tlZFVSTFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX21hc2tlZFVSTFNjaGVt
ZXM7IH0KKyAgICB2b2lkIHNldE1hc2tlZFVSTFNjaGVtZXMoSGFzaFNldDxXVEY6OlN0cmluZz4m
JiBzY2hlbWVzKSB7IG1fbWFza2VkVVJMU2NoZW1lcyA9IFdURk1vdmUoc2NoZW1lcyk7IH0KKwog
ICAgIGJvb2wgdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOyB9CiAgICAg
dm9pZCBzZXRVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbihib29sIHZhbHVl
KSB7IG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSB2YWx1ZTsgfQog
CkBAIC0yMjcsNiArMjMwLDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V1RGOjpTdHJpbmcs
IFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzOwog
ICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jb3JzRGlzYWJsaW5nUGF0dGVybnM7CisgICAgSGFz
aFNldDxXVEY6OlN0cmluZz4gbV9tYXNrZWRVUkxTY2hlbWVzOwogICAgIGJvb2wgbV91c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiB7IHRydWUgfTsKICAgICBib29sIG1fY3Jv
c3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIHsgdHJ1ZSB9OwogICAgIFdURjo6U3Ry
aW5nIG1fcHJvY2Vzc0Rpc3BsYXlOYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCAwNGUw
NDQyOTg4MzFjY2FjY2RkNzUzMWU0NGM0MDQ1N2VkNmM1NjQ5Li4wYTJmOWYyN2QxNjlkZTY5Yzc3
MjlkMjgyYjQ4ZDNjZjYxMmM2NTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtOTc4LDYg
Kzk3OCwyMyBAQCAtICh2b2lkKV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6KE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilwYXR0ZXJucwogICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0Q09SU0Rpc2Fi
bGluZ1BhdHRlcm5zKG1ha2VWZWN0b3I8U3RyaW5nPihwYXR0ZXJucykpOwogfQogCistIChOU1Nl
dDxOU1N0cmluZyAqPiAqKV9tYXNrZWRVUkxTY2hlbWVzCit7CisgICAgY29uc3QgYXV0byYgc2No
ZW1lcyA9IF9wYWdlQ29uZmlndXJhdGlvbi0+bWFza2VkVVJMU2NoZW1lcygpOworICAgIE5TTXV0
YWJsZVNldDxOU1N0cmluZyAqPiAqc2V0ID0gW05TTXV0YWJsZVNldCBzZXRXaXRoQ2FwYWNpdHk6
c2NoZW1lcy5zaXplKCldOworICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogc2NoZW1lcykK
KyAgICAgICAgW3NldCBhZGRPYmplY3Q6c2NoZW1lXTsKKyAgICByZXR1cm4gc2V0OworfQorCist
ICh2b2lkKV9zZXRNYXNrZWRVUkxTY2hlbWVzOihOU1NldDxOU1N0cmluZyAqPiAqKXNjaGVtZXMK
K3sKKyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIGZvciAoTlNTdHJpbmcgKnNjaGVtZSBp
biBzY2hlbWVzKQorICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CisgICAgX3BhZ2VDb25maWd1cmF0
aW9uLT5zZXRNYXNrZWRVUkxTY2hlbWVzKFdURk1vdmUoc2V0KSk7Cit9CisKIC0gKHZvaWQpX3Nl
dExvYWRzRnJvbU5ldHdvcms6KEJPT0wpbG9hZHMKIHsKICAgICBfcGFnZUNvbmZpZ3VyYXRpb24t
PnNldEFsbG93ZWROZXR3b3JrSG9zdHMobG9hZHMgPyBzdGQ6Om51bGxvcHQgOiBzdGQ6Om9wdGlv
bmFsPEhhc2hTZXQ8U3RyaW5nPj4geyBIYXNoU2V0PFN0cmluZz4geyB9IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaAppbmRleCA4MTM2NTU3YzFmYWE1NjQwOWM5MGU4YzRhY2U1
ZjEyMjIyYzUyOGJiLi44Y2FjOTllOTVlMjc4M2QyOTZhMzBjNjM3MzAzZGZhYzU3ZjY1MDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaApAQCAtODIsNiArODIsNyBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwgX1dLQXR0cmlidXRpb25PdmVycmlkZVRlc3RpbmcpIHsK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYnNpdGVEYXRhU3RvcmUgKl93
ZWJzaXRlRGF0YVN0b3JlSWZFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwg
aW9zKDEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldENPUlNE
aXNhYmxpbmdQYXR0ZXJuczopIE5TQXJyYXk8TlNTdHJpbmcgKj4gKl9jb3JzRGlzYWJsaW5nUGF0
dGVybnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBzZXR0ZXI9X3NldE1hc2tlZFVSTFNjaGVtZXM6KSBOU1Nl
dDxOU1N0cmluZyAqPiAqX21hc2tlZFVSTFNjaGVtZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldERlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjop
IEJPT0wgX2RlZmVycmFibGVVc2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbiBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0Q3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkOikg
Qk9PTCBfY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sQ2hlY2tFbmFibGVkIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDFjN2FkNDRjMjQ2YWQ3MDk3N2FmYTdjNmU0M2JkMDNjYzIwNWI2
ZWMuLjcxYjQ3ZGI0NmFmODY5MGZlNDEyMWY2ZTBmZmVlNzQyNzM0MzJkZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODM3Nyw2ICs4Mzc3LDcgQEAgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhX
ZWJQcm9jZXNzUHJveHkmIHByb2MKIAogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGRlbk1lZGlhVHlw
ZSA9IG1fb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAgICBwYXJhbWV0ZXJzLmNvcnNEaXNhYmxpbmdQ
YXR0ZXJucyA9IGNvcnNEaXNhYmxpbmdQYXR0ZXJucygpOworICAgIHBhcmFtZXRlcnMubWFza2Vk
VVJMU2NoZW1lcyA9IG1fY29uZmlndXJhdGlvbi0+bWFza2VkVVJMU2NoZW1lcygpOwogICAgIHBh
cmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBtX2NvbmZp
Z3VyYXRpb24tPnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCk7CiAgICAg
cGFyYW1ldGVycy5hbGxvd2VkTmV0d29ya0hvc3RzID0gbV9jb25maWd1cmF0aW9uLT5hbGxvd2Vk
TmV0d29ya0hvc3RzKCk7CiAgICAgcGFyYW1ldGVycy5sb2Fkc1N1YnJlc291cmNlcyA9IG1fY29u
ZmlndXJhdGlvbi0+bG9hZHNTdWJyZXNvdXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xp
ZW50R3RrLmNwcAppbmRleCBiZjRkMjhlM2U4ZGVmYWE0MjZiYjhmNWMxMDllNjJmYzdmMTA4YTYx
Li4yMGRjMDQyZTg1Y2RhMjdlYTk1OWQ0M2RiYTVkYTRmM2ViYTQ2YzRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVu
dEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0
ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnVwZGF0ZUdsb2JhbFNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgUGFzdGVi
b2FyZFdlYkNvbnRlbnQgcGFzdGVib2FyZENvbnRlbnQ7CiAgICAgcGFzdGVib2FyZENvbnRlbnQu
Y2FuU21hcnRDb3B5T3JEZWxldGUgPSBmYWxzZTsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0
ID0gcGxhaW5UZXh0KCpyYW5nZSk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVj
dGlvbigpLCBSZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3kp
OworICAgIHBhc3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1
YWxBcHBlYXJhbmNlKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6
Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5KTsKICAgICBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JH
bG9iYWxTZWxlY3Rpb24oUGFnZVBhc3RlYm9hcmRDb250ZXh0OjpjcmVhdGUoZnJhbWUtPnBhZ2VJ
RCgpKSktPndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAwYWE3ZmE0ZDQ2NTczMmQ4MzRhOWFk
MjU3YTUxNTNkMWJiMGQ4YjY3Li5lMWM2MGVlYTFkMzkwZGZhYzA1OWUyMzFhMjQ5OGQ2NjEyMWJl
MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNjQzLDYgKzY0Myw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgc3luY2hy
b25pemVDT1JTRGlzYWJsaW5nUGF0dGVybnNXaXRoTmV0d29ya1Byb2Nlc3MoKTsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBwYXJzZUFuZEFsbG93QWNjZXNz
VG9DT1JTRGlzYWJsaW5nUGF0dGVybnMobV9jb3JzRGlzYWJsaW5nUGF0dGVybnMpOwogCisgICAg
cGFnZUNvbmZpZ3VyYXRpb24ubWFza2VkVVJMU2NoZW1lcyA9IHBhcmFtZXRlcnMubWFza2VkVVJM
U2NoZW1lczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi51c2VyU2NyaXB0c1Nob3VsZFdhaXRVbnRp
bE5vdGlmaWNhdGlvbiA9IHBhcmFtZXRlcnMudXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb247CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJyZXNvdXJjZXMgPSBwYXJh
bWV0ZXJzLmxvYWRzU3VicmVzb3VyY2VzOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFsbG93ZWRO
ZXR3b3JrSG9zdHMgPSBwYXJhbWV0ZXJzLmFsbG93ZWROZXR3b3JrSG9zdHM7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjNlNmFkNGIyM2RmZTY1
NGE5MmVjM2VkN2JlYzc1NzE3YTg3OTRlNi4uNzg5NWZiZjc5ZGYxNjE0NzI2ZDI5NTE1ZGExYWQ2
MDRkZjk0NjEwZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTA0LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1v
dGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBE
T00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEyNDUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKFRFU1QoV2Vi
S2l0LCBDb25maWd1cmF0aW9uTWFza2VkVVJMU2NoZW1lcykpOiBBZGRlZC4KKwogMjAyMi0wMy0y
MiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW01lcmdl
LVF1ZXVlXSBBZGQgVmFsaWRhdGVTcXVhc2hlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
CmluZGV4IGMwNzVkZDUzNGZkYTg2ZjY3OTJjMTlhZGQwZTI1MWU4YWYzMDIwM2QuLmFjNDdhYzMz
ODk2ZTMzMjVlYzQxMTc2NDQxZWI5MWFmMDZhM2Q1ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0KQEAgLTE3MiwzICsxNzIsNjUgQEAgVEVTVChXZWJLaXQsIENvbmZpZ3VyYXRpb25E
aXNhYmxlSmF2YVNjcmlwdE5lc3RlZEJvZHkpCiAgICAgTlNTdHJpbmcgKmJvZHlIVE1MID0gW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJI
VE1MIl07CiAgICAgRVhQRUNUX1dLX1NUUkVRKGJvZHlIVE1MLCBAIjx0YWJsZT48L3RhYmxlPiIp
OwogfQorCitURVNUKFdlYktpdCwgQ29uZmlndXJhdGlvbk1hc2tlZFVSTFNjaGVtZXMpCit7Cisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBu
ZXddKTsKKyAgICBFWFBFQ1RfRVEoW2NvbmZpZ3VyYXRpb24gX21hc2tlZFVSTFNjaGVtZXNdLmNv
dW50LCAwVSk7CisKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0TWFza2VkVVJMU2NoZW1lczpbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6QCJ0ZXN0LXNjaGVtZSIsIEAiYW5vdGhlci1zY2hlbWUiLCBuaWxd
XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAIjxpbWcgc3JjPVwidGVzdC1zY2hlbWU6Ly9mb28uY29tL2Jhci5qcGdcIj48aW1nIHNy
Yz1cImJhei5wbmdcIj4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4
YW1wbGUuY29tIl1dOworCisgICAgTlNTdHJpbmcgKmltYWdlU291cmNlID0gW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJp
bWdcIilbMF0uc3JjIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtp
dC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChc
ImltZ1wiKVswXS5nZXRBdHRyaWJ1dGUoXCJzcmNcIikiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
aW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBpbWFn
ZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0dHJpYnV0ZU5vZGUoXCJzcmNcIiku
dmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tl
ZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIp
WzFdLnNyYyJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2V4
YW1wbGUuY29tL2Jhei5wbmciKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdc
IilbMV0uZ2V0QXR0cmlidXRlKFwic3JjXCIpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdl
U291cmNlLCBAImJhei5wbmciKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdc
IilbMV0uZ2V0QXR0cmlidXRlTm9kZShcInNyY1wiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19T
VFJFUShpbWFnZVNvdXJjZSwgQCJiYXoucG5nIik7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW1nIHNyY3NldD1cInRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9i
YXIuanBnIDF4LCBiYXIuanBnIDJ4LCBhbm90aGVyLXNjaGVtZTovL2Zvby5jb20vYmFyLmdpZiAz
eFwiPjxpbWcgc3Jjc2V0PVwiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwgYmF6LnBuZyAx
eFwiPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20i
XV07CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLnNyY3NldCJdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hp
ZGRlbi8gMXgsIGJhci5qcGcgMngsIHdlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAzeCIpOwor
CisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVswXS5nZXRBdHRyaWJ1dGUoXCJz
cmNzZXRcIikiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1h
c2tlZC11cmw6Ly9oaWRkZW4vIDF4LCBiYXIuanBnIDJ4LCB3ZWJraXQtbWFza2VkLXVybDovL2hp
ZGRlbi8gM3giKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uZ2V0
QXR0cmlidXRlTm9kZShcInNyY3NldFwiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShp
bWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gMXgsIGJhci5qcGcgMngs
IHdlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAzeCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxl
Y3RvckFsbChcImltZ1wiKVsxXS5zcmNzZXQiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VT
b3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwgYmF6LnBuZyAxeCIpOworCisg
ICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5nZXRBdHRyaWJ1dGUoXCJzcmNz
ZXRcIikiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBs
ZS5jb20vYmF6LnBuZyAyeCwgYmF6LnBuZyAxeCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
ckFsbChcImltZ1wiKVsxXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3Jjc2V0XCIpLnZhbHVlIl07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5w
bmcgMngsIGJhei5wbmcgMXgiKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRN
TFN0cmluZzpAIjxzY3JpcHQgc3JjPVwiYW5vdGhlci1zY2hlbWU6Ly9mb28uY29tL2Jhci5qc1wi
Pjwvc2NyaXB0PjxzY3JpcHQgc3JjPVwiaHR0cDovL2FwcGxlLmNvbS9iYXouanNcIj48L3Njcmlw
dD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1d
OworCisgICAgTlNTdHJpbmcgKnNjcmlwdFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0XCIpWzBd
LnNyYyJdOworICAgIEVYUEVDVF9XS19TVFJFUShzY3JpcHRTb3VyY2UsIEAid2Via2l0LW1hc2tl
ZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBzY3JpcHRTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNjcmlw
dFwiKVsxXS5zcmMiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoc2NyaXB0U291cmNlLCBAImh0dHA6
Ly9hcHBsZS5jb20vYmF6LmpzIik7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8aWZyYW1lIHNyYz1cInRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9iYXIuaHRtbFwi
PjwvaWZyYW1lPjxpZnJhbWUgc3JjPVwiaHR0cDovL2FwcGxlLmNvbS9iYXouaHRtbFwiPjwvaWZy
YW1lPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20i
XV07CisKKyAgICBOU1N0cmluZyAqaHRtbFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdOworICAgIEVYUEVDVF9F
UShbaHRtbFNvdXJjZSBjb250YWluc1N0cmluZzpAIjxpZnJhbWUgc3JjPVwid2Via2l0LW1hc2tl
ZC11cmw6Ly9oaWRkZW4vXCI+PC9pZnJhbWU+Il0sIFlFUyk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457274</attachid>
            <date>2022-04-11 11:23:26 -0700</date>
            <delta_ts>2022-04-12 14:40:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220411112325.patch</filename>
            <type>text/plain</type>
            <size>51980</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uMjk1ZDMyZmQ1YzY0ZDM4ZTA0ODNlYTc5YTI4Mzlj
YjJkM2E5MTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5u
ZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpvdXRlckhUTUwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgY29uc3QpOiBBZGRlZC4g
TW92ZWQgZnJvbSBNYXJrdXBBY2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGFuZCBhZGRl
ZCBuZXcgTm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSBwYXRoLgorICAgICAgICBDaGFuZ2VkIFll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5IGFuZCBpbmNsdWRlZCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoKSBjaGVjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29u
c3QpOiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBk
aXJlY3RseS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDogVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIGZvciBnZXRBdHRyaWJ1dGUuCisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
aW5uZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9y
UHJpdmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgICogZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVs
YXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGNvbnN0KTogVXNlIEVsZW1lbnQ6OnJlc29sdmVVUkxT
dHJpbmdJZk5lZWRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQpOiBDaGFuZ2Vk
IFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3Qp
OiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRp
bmdzIGNvbnN0KTogQWRkZWQuIFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyB3aXRoIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnNldFNyY3NldEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIyLTAzLTIy
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmE2
ZmZmOGU1YjZhNmU1OTBlNTY2M2U0YzM4NzkyYmQ0YjM4NzYzLi4wYjJjM2QyNzY0Y2ZlNDUyNWU1
OTZhNTIxMTJhYjc0OTJjOTNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA0
LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFy
Oi8vODE5OTEyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogQWRkZWQgbWFz
a2VkVVJMU2NoZW1lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBBZGRlZCBt
YXNrZWRVUkxTY2hlbWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Om1hc2tlZFVSTFNjaGVt
ZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldE1h
c2tlZFVSTFNjaGVtZXMpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX21hc2tlZFVSTFNjaGVtZXNdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBBZGRlZCBtYXNrZWRVUkxTY2hlbWVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisKIDIwMjItMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tIGFuZCBTaGFyZWRWaWRlb0ZyYW1lLmNwcCBkbyBub3QgbmVlZCB0byBiZSBidWls
dCBhcyBwYXJ0IG9mIFdlYkNvbnRlbnQgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDcxYjM2YmNlNTUzY2MxZTRk
ZjM5OTZkMmJkNGEyOGFlZDA3YTJjOTIuLmVlYWJiZTU0MzAwNWMxYTA1NDMxNWZjM2ExNTUzYjVk
YmIwMWNiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KQEAgLTExMDEsNyArMTEwMSw3IEBAIHN1YiBHZXR0ZXJFeHByZXNzaW9uCiAK
ICAgICBteSAkZnVuY3Rpb25OYW1lOwogICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVVJMIn0pIHsKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVUkxBdHRyaWJ1
dGUiOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdz
IjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiIpIHsKICAg
ICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
IjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAibG9uZyIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggYjQ0NzM5NWVlMzdjNjQyMGEyODQxMWIyNmM3YzUwZGIyNjc3OWFkYy4uZGE5YTc1
M2M2NWQ0ZGJhZWIwZmYyZDEzMzdiNTAzNTNhMjg1MTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTM4OTAs
NyArMzg5MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkVVJM
QXR0ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsCiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmlu
Zz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGVGb3JCaW5kaW5ncyhXZWJD
b3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRyLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQpAQCAtMzkyMSw3ICszOTIxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2EKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMVVNWU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVzdnVybGF0dHJBdHRyKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMVVNWU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkdXN2dXJsYXR0ckF0dHIpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCkBAIC00MDQ1LDcgKzQwNDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleAogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJB
dHRyKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9N
U3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJp
YnV0ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJB
dHRyKSkpKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0
ZWRDdXN0b21VUkxBdHRyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuY3BwCmluZGV4IDEyYzQwMjZkN2I3NTJlMTRlMTA5MTBkMmM2YWUwZjgyMTZhZWE3OTYu
LjQzNWEzNDQ4YWMxMGNmODFiYmYzNDNhOGQxNDEyNzJjMzYxMzA5OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKQEAgLTEyMCwxMCArMTIwLDEwIEBAIENTU1N0eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxl
KCkKICAgICByZXR1cm4gJm1fc3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH0K
IAotY29uc3QgQXRvbVN0cmluZyYgQXR0cjo6dmFsdWUoKSBjb25zdAorQXRvbVN0cmluZyBBdHRy
Ojp2YWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSk7CisgICAgICAgIHJldHVybiBt
X2VsZW1lbnQtPmdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKHF1YWxpZmllZE5hbWUoKSk7CiAgICAg
cmV0dXJuIG1fc3RhbmRhbG9uZVZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBhYzk0YzgwOWU5
MzYzY2I0YzY3NzZlMzU0NjA2MjEwYWJjNDUyN2FjLi5hZWE0ODNiODBhNTc2MjMxNDAxNWY2OTVk
NzEzNjI2YjViNjI4YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgc3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEVsZW1lbnQq
IG93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBBdG9tU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWYWx1ZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBx
dWFsaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA5NThhMDg1NGNjNDhhZWUwNDgyNTQ2ZTc3MzliNTUwNWY4YzBmMjgxLi43MGZj
ZWQ4YzAwMWI0ZjJjNmQ1M2EwNDY1OTQ0NTUxZjBjNWQyMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTU2MDAsNiArNTYwMCw0NSBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBGb3JjZVVURjggZm9yY2VVVEY4KSBjb25zdAogICAgIHJldHVybiBj
b21wbGV0ZVVSTCh1cmwsIG1fYmFzZVVSTCwgZm9yY2VVVEY4KTsKIH0KIAorYm9vbCBEb2N1bWVu
dDo6c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAg
IGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKFVOTElLRUxZKCFwYWdlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBwYWdlLT5zaG91bGRNYXNrVVJMRm9yQmlu
ZGluZ3ModXJsKTsKK30KKworYm9vbCBEb2N1bWVudDo6aGFzVVJMc1RvTWFza0ZvckJpbmRpbmdz
KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmIChVTkxJ
S0VMWSghcGFnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFnZS0+aGFz
VVJMc1RvTWFza0ZvckJpbmRpbmdzKCk7Cit9CisKK1VSTCBEb2N1bWVudDo6bWFza2VkVVJMRm9y
QmluZGluZ3NJZk5lZWRlZChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtF
TFkoc2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKHVybCkpKQorICAgICAgICByZXR1cm4gbWFza2Vk
VVJMRm9yQmluZGluZ3MoKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBBdG9tU3RyaW5n
JiBEb2N1bWVudDo6bWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsKCJ3ZWJr
aXQtbWFza2VkLXVybDovL2hpZGRlbi8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJM
Rm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPFVSTD4gbWFza2VkVVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWFza2VkVVJM
LmNvbnN0cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpLnN0cmluZygpKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gbWFza2VkVVJMOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRCYWNrRm9y
d2FyZENhY2hlU3RhdGUoQmFja0ZvcndhcmRDYWNoZVN0YXRlIHN0YXRlKQogewogICAgIGlmICht
X2JhY2tGb3J3YXJkQ2FjaGVTdGF0ZSA9PSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
ZDNkOTNkOGRiZjlmMDNjMTQ3NTEwNDM2NWRjMDcxOTc5N2MzYWFjYy4uMjNjNmZmOTU0ZmY1OWNj
ZTI4YThmZjc0MWE3ZTUwMjBkMzAzMTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTcyMCw2
ICs3MjAsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChj
b25zdCBTdHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAg
ICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJp
ZGUsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRN
YXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBoYXNVUkxzVG9N
YXNrRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBVUkwgbWFza2VkVVJMRm9yQmluZGluZ3NJZk5l
ZWRlZChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBtYXNrZWRVUkxT
dHJpbmdGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgbWFza2VkVVJMRm9yQmlu
ZGluZ3MoKSBjb25zdDsKKwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiOTk3YmZkMGZkYjlmZWVmNDQzZjhi
M2NjYTRkMjBlNjFjMGI3YzljLi42NDRjMWU5MTQ0Njc0ZmFmZGNhYWRkZjExZjk2NzQwZjNiYzlk
MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03MjAsNiArNzIwLDM0IEBAIGNvbnN0IEF0
b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCitBdG9tU3RyaW5nIEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIFJlc29s
dmVVUkxzIHJlc29sdmVVUkxzKSBjb25zdAoreworICAgIGlmICghZWxlbWVudERhdGEoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CisKKyAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShuYW1l
KTsKKworICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZmluZEF0dHJpYnV0ZUJ5TmFt
ZShuYW1lKTsKKyAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CisKKyAgICBzd2l0Y2ggKHJlc29sdmVVUkxzKSB7CisgICAgY2FzZSBSZXNvbHZlVVJMczo6WWVz
OgorICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OgorICAg
ICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShVUkwoKSwgKmF0dHJpYnV0
ZSwgcmVzb2x2ZVVSTHMpOworCisgICAgY2FzZSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxz
Rm9yUHJpdmFjeToKKyAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFzVVJMc1RvTWFza0ZvckJpbmRp
bmdzKCkpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShV
UkwoKSwgKmF0dHJpYnV0ZSwgcmVzb2x2ZVVSTHMpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgUmVzb2x2ZVVSTHM6Ok5vOgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
YXR0cmlidXRlLT52YWx1ZSgpOworfQorCiBWZWN0b3I8U3RyaW5nPiBFbGVtZW50OjpnZXRBdHRy
aWJ1dGVOYW1lcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYXR0cmlidXRlc1ZlY3Rv
cjsKQEAgLTE3OTgsNiArMTgyNiwzNCBAQCBjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkgY29uc3QKICAgICByZXR1
cm4gbnVsbEF0b20oKTsKIH0KIAorQXRvbVN0cmluZyBFbGVtZW50OjpnZXRBdHRyaWJ1dGVGb3JC
aW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIFJlc29sdmVVUkxzIHJlc29sdmVV
UkxzKSBjb25zdAoreworICAgIGlmICghZWxlbWVudERhdGEoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxBdG9tKCk7CisKKyAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShsb2NhbE5hbWUpOworCisgICAg
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YSgpLT5maW5kQXR0cmlidXRl
QnlOYW1lKGxvY2FsTmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSgqdGhpcykpOworICAg
IGlmICghYXR0cmlidXRlKQorICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKKworICAgIHN3aXRj
aCAocmVzb2x2ZVVSTHMpIHsKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpZZXM6CisgICAgY2FzZSBS
ZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3k6CisgICAgICAgIHJldHVybiBj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKFVSTCgpLCAqYXR0cmlidXRlLCByZXNvbHZlVVJM
cyk7CisKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5Ogor
ICAgICAgICBpZiAoZG9jdW1lbnQoKS5oYXNVUkxzVG9NYXNrRm9yQmluZGluZ3MoKSkKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKFVSTCgpLCAqYXR0cmli
dXRlLCByZXNvbHZlVVJMcyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSZXNvbHZlVVJM
czo6Tm86CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBhdHRyaWJ1dGUtPnZh
bHVlKCk7Cit9CisKIGNvbnN0IEF0b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1l
KSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRv
bSgpLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwpAQCAtMzI3MCwxMiArMzMyNiwxMiBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjptZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9k
ZSkKIAogU3RyaW5nIEVsZW1lbnQ6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNl
cmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJl
bik7CisgICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6
OlN1YnRyZWVzT2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJM
c0ZvclByaXZhY3kpOwogfQogCiBTdHJpbmcgRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6U3Vi
dHJlZUluY2x1ZGluZ05vZGUpOworICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywg
U2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSwgbnVsbHB0ciwgUmVzb2x2ZVVS
THM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBF
bGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sKQpAQCAtNDU1MCw5ICs0NjA2
LDQxIEBAIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdAogICAg
IHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKIH0KIAotU3RyaW5nIEVsZW1lbnQ6OmNv
bXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkgY29uc3QKK1N0cmluZyBFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZO
ZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzIHJlc29sdmVVUkxzLCBj
b25zdCBVUkwmIGJhc2UpIGNvbnN0Cit7CisgICAgaWYgKHJlc29sdmVVUkxzID09IFJlc29sdmVV
UkxzOjpObykKKyAgICAgICAgcmV0dXJuIHVybFN0cmluZzsKKworICAgIFVSTCBjb21wbGV0ZVVS
TCA9IGJhc2UuaXNOdWxsKCkgPyBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykgOiBV
UkwoYmFzZSwgdXJsU3RyaW5nKTsKKworICAgIHN3aXRjaCAocmVzb2x2ZVVSTHMpIHsKKyAgICBj
YXNlIFJlc29sdmVVUkxzOjpZZXM6CisgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTC5zdHJpbmco
KTsKKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OiB7
CisgICAgICAgIGlmIChkb2N1bWVudCgpLnNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb21wbGV0
ZVVSTCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxTdHJpbmdGb3JC
aW5kaW5ncygpOworICAgICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzTG9jYWxGaWxlKCkpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGVVUkwuc3RyaW5nKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3k6Cisg
ICAgICAgIGlmIChkb2N1bWVudCgpLnNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb21wbGV0ZVVS
TCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxTdHJpbmdGb3JCaW5k
aW5ncygpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
cmV0dXJuIHVybFN0cmluZzsKK30KKworU3RyaW5nIEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0
cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwg
UmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChiYXNlLCBh
dHRyaWJ1dGUudmFsdWUoKSkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHJlc29sdmVVUkxTdHJpbmdJ
Zk5lZWRlZChhdHRyaWJ1dGUudmFsdWUoKSwgcmVzb2x2ZVVSTHMsIGJhc2UpOwogfQogCiBFeGNl
cHRpb25PcjxOb2RlKj4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29uc3QgU3RyaW5nJiB3aGVy
ZSwgUmVmPE5vZGU+JiYgbmV3Q2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBhNTI4ZDE3MDVl
ZGExYTIzZjVkOWYxMzNmN2YyNmZmNWUzZWE1ZjkwLi4zNTAxYWRiMTYwZjlhYTliNDVlZTNhNTdi
NTg3ZGY5ZjVjYTM3NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTgxLDYgKzgxLDcgQEAgZW51
bSBjbGFzcyBBbmltYXRpb25JbXBhY3Q7CiBlbnVtIGNsYXNzIEV2ZW50SGFuZGxpbmcgOiB1aW50
OF90OwogZW51bSBjbGFzcyBFdmVudFByb2Nlc3NpbmcgOiB1aW50OF90OwogZW51bSBjbGFzcyBJ
c1N5bnRoZXRpY0NsaWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgUmVzb2x2ZVVS
THMgOiB1aW50OF90IHsgTm8sIE5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFllcywgWWVzRXhj
bHVkaW5nVVJMc0ZvclByaXZhY3kgfTsKIGVudW0gY2xhc3MgU2VsZWN0aW9uUmVzdG9yYXRpb25N
b2RlIDogdWludDhfdDsKIAogc3RydWN0IEdldEFuaW1hdGlvbnNPcHRpb25zOwpAQCAtMTA3LDYg
KzEwOCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBB
dG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAg
IEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpIGNv
bnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFF1YWxpZmllZE5hbWVzPgogICAgIGlubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IFF1YWxpZmllZE5hbWVzJi4uLikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KTsKQEAgLTEzOSw5ICsxNDEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFzQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJp
bmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21T
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZU5TKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBj
b25zdDsKIAorICAgIEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGlu
Z1VSTHNGb3JQcml2YWN5KSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFF1YWxpZmllZE5h
bWU+IHBhcnNlQXR0cmlidXRlTmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpOwpAQCAtNDE2LDEwICs0MjAsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKSBjb25zdCB7IHJldHVybiBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0OworICAgIFN0cmluZyByZXNvbHZlVVJMU3RyaW5n
SWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVS
THM6OlllcywgY29uc3QgVVJMJiBiYXNlID0gVVJMKCkpIGNvbnN0OworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBB
dHRyaWJ1dGUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgZ2V0VVJMQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBpbmxpbmUgVVJMIGdldFVSTEF0
dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBVUkwg
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCmluZGV4IGE1MjMzMWZmODdhMjgyZDAxNmM5MjYxMDUyOWYzODRjMmMz
ZDQ3MDQuLmRmYjRkOWYyODRlOTZmYWM5MjkwNDZmNzNmMDgwNjJkNzlkOTlkOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBbRE9NSklUPVJlYWRET01dIGJv
b2xlYW4gaGFzQXR0cmlidXRlcygpOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRB
dHRyaWJ1dGVOYW1lcygpOwotICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRy
aWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTSwgSW1w
bGVtZW50ZWRBcz1nZXRBdHRyaWJ1dGVGb3JCaW5kaW5nc10gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1
dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRl
TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIFtD
RVJlYWN0aW9uc10gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzZXRBdHRy
aWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUs
IERPTVN0cmluZyB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dElubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SW5saW5lcy5oCmluZGV4IDNm
ODU3YTY0MzNkNmUxYjJiMzMyYzBmNjkzM2Y1NzQ0MDQ0ZmVmODkuLjU0MGIyMGY5ZDAwODAwNTBl
NDNmNzZkMzQ0NWUzZTA0OGRhMGQ1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50SW5saW5lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SW5saW5lcy5o
CkBAIC05MCw2ICs5MCwxMSBAQCBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZQogICAgIHJldHVybiBu
dWxsQXRvbSgpOwogfQogCitpbmxpbmUgVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJp
bmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRv
Y3VtZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZChnZXRVUkxBdHRyaWJ1dGUobmFt
ZSkpOworfQorCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCkgJiYgIWVsZW1lbnREYXRhKCkt
PmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBhMzIyZGVjNDFkZGY0
YjM1YmUxODMxNmY5YWYwNGUyNTBjYjZlYTliLi41MjlhZTkwYmNjMjI5YzM1N2FhNDYxYjc4ZDdm
ZGZmYWU0ZjcxOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xNzgsNyArMTc4
LDcgQEAgU3R5bGVTaGVldExpc3QmIFNoYWRvd1Jvb3Q6OnN0eWxlU2hlZXRzKCkKIAogU3RyaW5n
IFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZy
YWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJlbik7CisgICAg
cmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVz
T2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZh
Y3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTaGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29u
c3QgU3RyaW5nJiBtYXJrdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFmMTI3ZWMxMDU0NDAu
LjgxZjkwOGUwZGRiOTI1Y2EyYWUzYjY1NzM3M2RiYTIxMzZkMzk0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yMzIsMTkgKzIzMiw3IEBA
IHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzV2l0aE5hbWVzcGFjZXMoTm9k
ZSYgdGFyZ2V0Tm9kZSwgU2VyaWFsaXplCiAKIFN0cmluZyBNYXJrdXBBY2N1bXVsYXRvcjo6cmVz
b2x2ZVVSTElmTmVlZGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKSBjb25zdAogewotICAgIHN3aXRjaCAobV9yZXNvbHZlVVJMcykgewotICAgIGNhc2Ug
UmVzb2x2ZVVSTHM6OlllczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpLnN0cmluZygpOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6WWVz
RXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3k6Ci0gICAgICAgIGlmICghZWxlbWVudC5k
b2N1bWVudCgpLnVybCgpLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVu
dC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykuc3RyaW5nKCk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6Tm86Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gdXJsU3RyaW5nOworICAgIHJldHVybiBlbGVtZW50LnJlc29sdmVVUkxTdHJp
bmdJZk5lZWRlZCh1cmxTdHJpbmcsIG1fcmVzb2x2ZVVSTHMpOwogfQogCiB2b2lkIE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdGFydEFwcGVuZGluZ05vZGUoY29uc3QgTm9kZSYgbm9kZSwgTmFtZXNwYWNl
cyogbmFtZXNwYWNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tCmluZGV4IGY4OGE4MTZlYTYzNzZkMTcyNDBhNjQ4MTFlOTY4YTk1ZjM4OWM4MDMuLjZlOWNk
YTcwMDE4YmM2NGZhN2MwN2I2NzU0ZTc1Y2NkZDcyZTQxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgRWRp
dG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogewogICAgIGlmIChJbWFnZU92ZXJsYXk6Omlz
SW5zaWRlT3ZlcmxheShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVh
cmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6
Olllcyk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogfQogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0
b3JHdGsuY3BwCmluZGV4IDk0ZTM4MTM3NWI5NzcxNzA4MjgyOGUwYzk2NDhiNTQ5N2Q2ZjI0ZmUu
LmVmOTlhMmVmNjliNGUxNDEzOTc4MjA3M2NiMjAyMWNhZTRmYThiYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQog
ICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBhc3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9h
cmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlID0gY2FuU21hcnRDb3B5T3JEZWxldGUoKTsK
ICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVy
KCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zp
c3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2
ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21w
b3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXpl
UHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQuY29udGVudE9yaWdpbiA9
IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlODgyYmJjN2QwZjkx
Y2FkNzZjMzgyNTA4ZTlhM2YuLjkwMDVjOTU2ZDVlYjU2M2Q3YjNmYzJkMDdlOGY1ZDhmZGIxNzBi
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQ
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNw
cApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIHsKICAgICBQYXN0ZWJvYXJkV2ViQ29udGVudCBw
YXN0ZWJvYXJkQ29udGVudDsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRU
ZXh0Rm9yRGF0YVRyYW5zZmVyKCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2
YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQu
bWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZC53cml0
ZShwYXN0ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQppbmRleCAxYTJjZDAzZjAwY2VlMDI2OTI2YmMzYTI0ZmZhOWJiYzVlMDg5NjYzLi4y
ZmY5YmJkNDgwYzU2Njc5MGQzMWM4ZjYzYjY3NjY2YWMxNDYzZDIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBFZGl0b3I6
OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYg
aW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQgPSBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQpOwogCiAgICAgaWYgKGF1
dG8gaW1hZ2VSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoaW1hZ2VFbGVtZW50KSkKLSAg
ICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQgPSBzZXJpYWxpemVQcmVzZXJ2
aW5nVmlzdWFsQXBwZWFyYW5jZShWaXNpYmxlU2VsZWN0aW9uIHsgKmltYWdlUmFuZ2UgfSwgUmVz
b2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CisgICAgICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9y
bWF0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoVmlzaWJsZVNlbGVjdGlv
biB7ICppbWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogCiAgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDIwYjNmY2Y4ZGRmOTU0NDM0OWIxODY0ZWY5ZDli
ZjBmYjRhZWU2NDYuLmFkY2E5ZDFlMDk1YjliZTc0MjEwY2E0ZDUxNzYxZDYxYzRlYjUzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEwMTEsNyArMTAxMSw3IEBAIFN0cmluZyBz
YW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+
JiYgZnJhZ21lbnQsIERvCiAKICAgICAvLyBTZXJpYWxpemVDb21wb3NlZFRyZWU6Ok5vIGJlY2F1
c2UgdGhlcmUgY2FuJ3QgYmUgYSBzaGFkb3cgdHJlZSBpbiB0aGUgcGFzdGVkIGZyYWdtZW50Lgog
ICAgIGF1dG8gcmVzdWx0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2VJbnRl
cm5hbChmaXJzdFBvc2l0aW9uSW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbGFzdFBvc2l0aW9u
SW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbnVsbHB0ciwKLSAgICAgICAgUmVzb2x2ZVVSTHM6
Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRy
ZWU6Ok5vLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpZZXMsIENvbnZlcnRCbG9ja3NUb0lubGlu
ZXM6Ok5vLCAgU3RhbmRhcmRGb250RmFtaWx5U2VyaWFsaXphdGlvbk1vZGU6OlN0cmlwLCBtc29M
aXN0TW9kZSk7CisgICAgICAgIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpObywgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVz
LCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgIFN0YW5kYXJkRm9udEZhbWlseVNlcmlhbGl6
YXRpb25Nb2RlOjpTdHJpcCwgbXNvTGlzdE1vZGUpOwogCiAgICAgaWYgKG1zb0xpc3RNb2RlICE9
IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCmluZGV4IDkyNTExYTkzNDY2YmE5NDg0MTI0MWJhZmQ2NGUwZmNkMTNlMTFh
ZTMuLjQxNzQwZWZmN2JkOWM1YTU1MTNmZjEwM2MyYmVjNDlhNmIwYTgyNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgpAQCAtNzAs
NyArNzEsNiBAQCBib29sIGlzUGxhaW5UZXh0TWFya3VwKE5vZGUqKTsKIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHVzZWQgYnkgSFRNTEVsZW1lbnQgJiBTaGFkb3dSb290IHRvIHJlcGxhY2UgdGhlIGNo
aWxkcmVuIHdpdGggcmVzcGVjdGVkIGZyYWdtZW50L3RleHQuCiBFeGNlcHRpb25Pcjx2b2lkPiBy
ZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYsIFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmKTsKIAotZW51bSBjbGFzcyBSZXNvbHZlVVJMcyA6IHVpbnQ4X3QgeyBObywgWWVz
LCBZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSB9OwogZW51bSBjbGFzcyBDb252
ZXJ0QmxvY2tzVG9JbmxpbmVzIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgU2Vy
aWFsaXplQ29tcG9zZWRUcmVlIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShjb25zdCBTaW1wbGVS
YW5nZSYsIFZlY3RvcjxOb2RlKj4qID0gbnVsbHB0ciwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9
IEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6Tm8sIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDc5OGZlODZiYzRm
MzIwMjY3MWNkMmQ3MTQ2NjAwMGI2ZWJhYmI2YmYuLmI0OGM1NDIzMWQxZmE2NGY2Yzk4NjExMWY3
MGYyOTdlZTVkYWZiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtNTY1LDcgKzU2NSw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YXR0cmlidXRlQ29u
dGFpbnNVUkwoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgICAgIHx8IEhU
TUxFbGVtZW50OjphdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpOwogfQogCi1TdHJpbmcg
SFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwm
IGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAorU3RyaW5nIEhUTUxJbWFn
ZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0
CiB7CiAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3Jjc2V0QXR0cikgewogICAgICAgICBW
ZWN0b3I8SW1hZ2VDYW5kaWRhdGU+IGltYWdlQ2FuZGlkYXRlcyA9IHBhcnNlSW1hZ2VDYW5kaWRh
dGVzRnJvbVNyY3NldEF0dHJpYnV0ZShTdHJpbmdWaWV3KGF0dHJpYnV0ZS52YWx1ZSgpKSk7CkBA
IC01NzMsNyArNTczLDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0lu
QXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHQKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjYW5kaWRhdGUgOiBpbWFnZUNhbmRpZGF0ZXMpIHsKICAgICAgICAgICAgIGlm
ICgmY2FuZGlkYXRlICE9ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNh
bmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoY2FuZGlkYXRlLnN0cmluZy50b1N0cmlu
ZygpLCByZXNvbHZlVVJMcywgYmFzZSkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZW5z
aXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAnLCBjYW5kaWRhdGUuZGVuc2l0eSwgJ3gnKTsKICAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKQEAgLTU4MSw3
ICs1ODEsOCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1
dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dAogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGJhc2UsIGF0dHJpYnV0ZSk7CisKKyAgICByZXR1
cm4gSFRNTEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoYmFzZSwgYXR0cmli
dXRlLCByZXNvbHZlVVJMcyk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6bWF0Y2hlc1Vz
ZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QKQEAgLTg3Niw2ICs4NzcsMTYg
QEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1lbnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9y
VGVzdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXItPnBlbmRpbmdEZWNvZGVQ
cm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwogfQogCitBdG9tU3RyaW5nIEhUTUxJbWFnZUVsZW1l
bnQ6OnNyY3NldEZvckJpbmRpbmdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
Rm9yQmluZGluZ3Moc3Jjc2V0QXR0cik7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0
U3Jjc2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCit7CisgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNzZXRBdHRyLCB2YWx1ZSk7Cit9CisKIGNv
bnN0IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNv
bnN0CiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDFkOTlkMzIxN2I1NmZlM2Mx
YzVkMGM1NThkN2ViNDczYTk4OWMzZWMuLmU4NGI1YTI5ZmY2Y2YwMWJhMjM3M2E0YTRjNDgwMTIx
MTJhZDNhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0xMjks
NiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkRGVmZXJyZWRJbWFnZSgpOwogCisg
ICAgQXRvbVN0cmluZyBzcmNzZXRGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIHZvaWQgc2V0U3Jj
c2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOworCiAgICAgY29uc3QgQXRvbVN0cmlu
ZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2FkaW5nRm9yQmlu
ZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOwogCkBAIC0xNzMsNyArMTc2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBhdHRyaWJ1dGVDb250YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25z
dCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
cmlidXRlJiwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6WWVzKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNEcmFnZ2FibGVJZ25vcmluZ0F0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRs
CmluZGV4IGY5MzYzODYyYzkyODRjNmEwYzc4YjNhNzBjNzdmNjIxNDA4MWYwMjUuLmNkYjY5NjMz
OTQ2ZDNiZDdkYzc3OWQ1YWZmMDdjZDJkZDVkNGJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmlkbApAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRNTElt
YWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsdDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3JjOwotICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OworICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEltcGxlbWVudGVkQXM9c3Jjc2V0Rm9yQmluZGluZ3Nd
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2l6ZXM7CiAgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZz8gY3Jvc3NPcmlnaW47CiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB1c2VNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA2NjNmOTg0YjU3ZDRkMGVkMzQzOWYwOTEzYzE0YjFjYjFlMThmYzE3
Li5lNmM4MTUxMWM0NjExYmRlNDRhNDNlMWM5YjlhYzBjZmJmM2E3Nzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyKSkKICNlbmRpZgogICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMpKQorICAgICwgbV9tYXNrZWRVUkxT
Y2hlbWVzKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubWFza2VkVVJMU2NoZW1lcykpCiAgICAg
LCBtX2FsbG93ZWROZXR3b3JrSG9zdHMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2Vk
TmV0d29ya0hvc3RzKSkKICAgICAsIG1fbG9hZHNTdWJyZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRp
b24ubG9hZHNTdWJyZXNvdXJjZXMpCiAgICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9uLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKQpAQCAtMzcyOSw2ICszNzMwLDEzIEBAIGJvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNv
cnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2Jvb2wg
UGFnZTo6c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAorewor
ICAgIGlmIChtX21hc2tlZFVSTFNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fbWFza2VkVVJMU2NoZW1lcy5jb250YWlucyh1cmwucHJvdG9jb2wo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworfQorCiB2b2lkIFBhZ2U6OnJldmVhbEN1cnJl
bnRTZWxlY3Rpb24oKQogewogICAgIENoZWNrZWRSZWYoZm9jdXNDb250cm9sbGVyKCkpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2
ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA3NjEyOGMyMjEzYmZjMTU0MTliNDFhOTdjYTNjZDBkZGExMDM1Yzgx
Li5hNDAyYTc1Zjc3NWJkNTQ3OTY4YjVjM2NmZDM0YTJhMWRmZjUzMGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtOTA5LDYgKzkwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hGcmFtZShjb25z
dCBGdW5jdGlvbjx2b2lkKEZyYW1lJik+Jik7CiAKICAgICBib29sIHNob3VsZERpc2FibGVDb3Jz
Rm9yUmVxdWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkTWFza1VSTEZv
ckJpbmRpbmdzKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzVVJMc1RvTWFza0ZvckJp
bmRpbmdzKCkgY29uc3QgeyByZXR1cm4gIW1fbWFza2VkVVJMU2NoZW1lcy5pc0VtcHR5KCk7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5qZWN0VXNlclN0eWxlU2hlZXQoVXNlclN0eWxl
U2hlZXQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUluamVjdGVkVXNlclN0eWxl
U2hlZXQoVXNlclN0eWxlU2hlZXQmKTsKQEAgLTEyNzksNiArMTI4MSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IG1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX21hc2tlZFVSTFNjaGVtZXM7CiAgICAg
VmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0c1BlbmRpbmdJbmplY3Rpb247
CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IG1fYWxsb3dlZE5ldHdvcmtIb3N0
czsKICAgICBib29sIG1faXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24g
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQy
YTk0NGVkZDFiMzlkN2QyYzYxMGFlMDMxOGEyMDZmOTVjYmI1YWUuLmViODE3ZTZiNWI1YjRkN2Jl
Y2FhMmExZTViOGRmYzBlYzgwZjc2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXI+IGRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI7
CiAjZW5kaWYKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBjb3JzRGlzYWJsaW5n
UGF0dGVybnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1hc2tlZFVSTFNjaGVtZXM7CiAgICAgVW5p
cXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+IHNwZWVjaFJlY29nbml0aW9uUHJvdmlk
ZXI7CiAgICAgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4gbWVkaWFSZWNvcmRlclBy
b3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggMGIyNWZmNmMzOGM4NjM0ZjM3ZWVhMmFmZDAyNGE4ZDQyYTRmNDJjNS4uNDE3YTc5
MGFjNWMzNDlkOGRiNGMyOTg4M2ZlMWU4MjUxYzgxNWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNlbGVjdGVkUmFu
Z2UsIGJvb2wgY2FuU21hcnRDCiAgICAgLy8gUHV0IENGX0hUTUwgZm9ybWF0IG9uIHRoZSBwYXN0
ZWJvYXJkIAogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVj
dG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgUmVzb2x2ZVVSTHM6Olllc0V4
Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LgorICAgICAgICAvLyBGSVhNRTogVXNlIFJl
c29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KICAgICAgICAgbWFya3VwVG9D
RkhUTUwoc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkpLAogICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS5zdGFydC5jb250YWlu
ZXItPmRvY3VtZW50KCkudXJsKCkuc3RyaW5nKCksIGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNi
RGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGVjNDM5ZDA2NzE0ZTZkZTVi
OTRlMjFmYjljZThlZTIzOWM5NjIyZmEuLjlmZDdiZWIxYWU3YWVmYWUxNjQ1ZWUyZTI0Y2Y5ZDJh
NGY2N2NmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgb2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAg
ICBlbmNvZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IG1hc2tl
ZFVSTFNjaGVtZXM7CiAgICAgZW5jb2RlciA8PCBsb2Fkc1N1YnJlc291cmNlczsKICAgICBlbmNv
ZGVyIDw8IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKQEAgLTQ5NSw2ICs0OTYsMTIgQEAgc3RkOjpvcHRp
b25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0
ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJu
cyk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gbWFza2VkVVJMU2NoZW1l
czsKKyAgICBkZWNvZGVyID4+IG1hc2tlZFVSTFNjaGVtZXM7CisgICAgaWYgKCFtYXNrZWRVUkxT
Y2hlbWVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubWFz
a2VkVVJMU2NoZW1lcyA9IFdURk1vdmUoKm1hc2tlZFVSTFNjaGVtZXMpOworCiAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBsb2Fkc1N1YnJlc291cmNlczsKICAgICBkZWNvZGVyID4+IGxvYWRzU3Vi
cmVzb3VyY2VzOwogICAgIGlmICghbG9hZHNTdWJyZXNvdXJjZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggY2I3NDE2OTNkYjMw
YTc1MDJiNDg5YzgzOTdjZWY2YzczOWZlZGE5MS4uMjg2YTFlN2Q5NTBkZTBhNTRhNmZhNDM4OGZj
ZmY1Mzg2ZTlhNjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaApAQCAtMjE5LDYgKzIxOSw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBvdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmluZz4g
bWFza2VkVVJMU2NoZW1lczsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07
CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWROZXR3b3JrSG9zdHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmNwcAppbmRleCBiNjkyOTY2YTNlZjZhOTg2Y2I2MDNkMGYzYTFlODgwMjc2MTQ5YTNlLi4x
NmZkY2I3ZmUxNGUyMDQ5ZGYwYWZlMTZkZTFjMTM1NDM4NmI4OGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTgz
LDYgKzgzLDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29w
eSgpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVy
cykKICAgICAgICAgY29weS0+bV91cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIu
dmFsdWUuY29weVJlZigpKTsKICAgICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRo
aXMtPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGNvcHktPm1fbWFza2VkVVJMU2NoZW1l
cyA9IHRoaXMtPm1fbWFza2VkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IHRoaXMtPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkOwogICAgIGNvcHktPm1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb24gPSB0aGlzLT5tX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCmluZGV4IDQyYjJjYzVkZWZmZWY3YWNmNzMzNDllZjM5NmZmNWI0ZjQyYmNjYjQuLmY4
ZmZiZDk3MjAxZTQ1NmJkMzEzOTM0NTYwMDdhZDRmNGMxMjRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0xNDMsNyAr
MTQzLDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvcnNE
aXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5z
OyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3RyaW5n
PiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0ZXJu
cyk7IH0KLSAgICAKKworICAgIGNvbnN0IEhhc2hTZXQ8V1RGOjpTdHJpbmc+JiBtYXNrZWRVUkxT
Y2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrZWRVUkxTY2hlbWVzOyB9CisgICAgdm9pZCBz
ZXRNYXNrZWRVUkxTY2hlbWVzKEhhc2hTZXQ8V1RGOjpTdHJpbmc+JiYgc2NoZW1lcykgeyBtX21h
c2tlZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKHNjaGVtZXMpOyB9CisKICAgICBib29sIHVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsgfQogICAgIHZvaWQgc2V0VXNlclNjcmlw
dHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3VzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdmFsdWU7IH0KIApAQCAtMjI3LDYgKzIzMCw3
IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWY8V2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0b3I8V1RGOjpT
dHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+
IG1fbWFza2VkVVJMU2NoZW1lczsKICAgICBib29sIG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBXVEY6OlN0cmluZyBtX3Byb2Nlc3NEaXNw
bGF5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggMDRlMDQ0Mjk4ODMxY2NhY2NkZDc1
MzFlNDRjNDA0NTdlZDZjNTY0OS4uMGEyZjlmMjdkMTY5ZGU2OWM3NzI5ZDI4MmI0OGQzY2Y2MTJj
NjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTk3OCw2ICs5NzgsMjMgQEAgLSAodm9p
ZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVy
bnMKICAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtYWtl
VmVjdG9yPFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAorLSAoTlNTZXQ8TlNTdHJpbmcgKj4gKilf
bWFza2VkVVJMU2NoZW1lcworeworICAgIGNvbnN0IGF1dG8mIHNjaGVtZXMgPSBfcGFnZUNvbmZp
Z3VyYXRpb24tPm1hc2tlZFVSTFNjaGVtZXMoKTsKKyAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcg
Kj4gKnNldCA9IFtOU011dGFibGVTZXQgc2V0V2l0aENhcGFjaXR5OnNjaGVtZXMuc2l6ZSgpXTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IHNjaGVtZXMpCisgICAgICAgIFtzZXQgYWRk
T2JqZWN0OnNjaGVtZV07CisgICAgcmV0dXJuIHNldDsKK30KKworLSAodm9pZClfc2V0TWFza2Vk
VVJMU2NoZW1lczooTlNTZXQ8TlNTdHJpbmcgKj4gKilzY2hlbWVzCit7CisgICAgSGFzaFNldDxT
dHJpbmc+IHNldDsKKyAgICBmb3IgKE5TU3RyaW5nICpzY2hlbWUgaW4gc2NoZW1lcykKKyAgICAg
ICAgc2V0LmFkZChzY2hlbWUpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TWFza2VkVVJM
U2NoZW1lcyhXVEZNb3ZlKHNldCkpOworfQorCiAtICh2b2lkKV9zZXRMb2Fkc0Zyb21OZXR3b3Jr
OihCT09MKWxvYWRzCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29y
a0hvc3RzKGxvYWRzID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmlu
Zz4+IHsgSGFzaFNldDxTdHJpbmc+IHsgfSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgKaW5kZXggODEzNjU1N2MxZmFhNTY0MDljOTBlOGM0YWNlNWYxMjIyMmM1MjhiYi4uOGNh
Yzk5ZTk1ZTI3ODNkMjk2YTMwYzYzNzMwM2RmYWM1N2Y2NTAyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUlu
dGVnZXIsIF9XS0F0dHJpYnV0aW9uT3ZlcnJpZGVUZXN0aW5nKSB7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgV0tXZWJzaXRlRGF0YVN0b3JlICpfd2Vic2l0ZURhdGFTdG9yZUlm
RXhpc3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfY29yc0Rpc2FibGluZ1BhdHRlcm5zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgc2V0dGVyPV9zZXRNYXNrZWRVUkxTY2hlbWVzOikgTlNTZXQ8TlNTdHJpbmcgKj4gKl9t
YXNrZWRVUkxTY2hlbWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZWZlcnJhYmxl
VXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF9kZWZlcnJhYmxl
VXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBp
b3MoMTQuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAxYzdhZDQ0YzI0NmFkNzA5NzdhZmE3YzZlNDNiZDAzY2MyMDViNmVjLi43MWI0N2RiNDZhZjg2
OTBmZTQxMjFmNmUwZmZlZTc0MjczNDMyZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTgzNzcsNiArODM3Nyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jCiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5N
ZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBjb3JzRGlz
YWJsaW5nUGF0dGVybnMoKTsKKyAgICBwYXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXMgPSBtX2Nv
bmZpZ3VyYXRpb24tPm1hc2tlZFVSTFNjaGVtZXMoKTsKICAgICBwYXJhbWV0ZXJzLnVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gbV9jb25maWd1cmF0aW9uLT51c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpOwogICAgIHBhcmFtZXRlcnMuYWxsb3dl
ZE5ldHdvcmtIb3N0cyA9IG1fY29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpOwog
ICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSBtX2NvbmZpZ3VyYXRpb24tPmxvYWRz
U3VicmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKaW5kZXgg
YmY0ZDI4ZTNlOGRlZmFhNDI2YmI4ZjVjMTA5ZTYyZmM3ZjEwOGE2MS4uMjBkYzA0MmU4NWNkYTI3
ZWE5NTlkNDNkYmE1ZGE0ZjNlYmE0NmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50
R3RrLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVH
bG9iYWxTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBh
c3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9hcmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVs
ZXRlID0gZmFsc2U7CiAgICAgcGFzdGVib2FyZENvbnRlbnQudGV4dCA9IHBsYWluVGV4dCgqcmFu
Z2UpOwotICAgIHBhc3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdW
aXN1YWxBcHBlYXJhbmNlKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVS
THM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5KTsKKyAgICBwYXN0ZWJvYXJk
Q29udGVudC5tYXJrdXAgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShmcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxz
Rm9yUHJpdmFjeSk7CiAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKFBh
Z2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZShwYXN0
ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggMGFhN2ZhNGQ0NjU3MzJkODM0YTlhZDI1N2E1MTUzZDFiYjBkOGI2
Ny4uZTFjNjBlZWExZDM5MGRmYWMwNTllMjMxYTI0OThkNjYxMjFiZTExOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY0Myw2ICs2NDMsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIHN5bmNocm9uaXplQ09SU0Rpc2FibGlu
Z1BhdHRlcm5zV2l0aE5ldHdvcmtQcm9jZXNzKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29y
c0Rpc2FibGluZ1BhdHRlcm5zID0gcGFyc2VBbmRBbGxvd0FjY2Vzc1RvQ09SU0Rpc2FibGluZ1Bh
dHRlcm5zKG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAorICAgIHBhZ2VDb25maWd1cmF0aW9u
Lm1hc2tlZFVSTFNjaGVtZXMgPSBwYXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXM7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBw
YXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJl
c291cmNlczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2VkTmV0d29ya0hvc3RzID0gcGFy
YW1ldGVycy5hbGxvd2VkTmV0d29ya0hvc3RzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzZTZhZDRiMjNkZmU2NTRhOTJlYzNlZDdiZWM3NTcx
N2E4Nzk0ZTYuLjc4OTVmYmY3OWRmMTYxNDcyNmQyOTUxNWRhMWFkNjA0ZGY5NDYxMGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZhU2NyaXB0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzYK
KyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgIChURVNUKFdlYktpdCwgQ29uZmlndXJhdGlv
bk1hc2tlZFVSTFNjaGVtZXMpKTogQWRkZWQuCisKIDIwMjItMDMtMjIgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZXJnZS1RdWV1ZV0gQWRkIFZhbGlk
YXRlU3F1YXNoZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBjMDc1ZGQ1MzRm
ZGE4NmY2NzkyYzE5YWRkMGUyNTFlOGFmMzAyMDNkLi4zNTg3NWRkNDgzNmI1ZjRlZjVkZDI0ZTY3
Y2FjNDA1Yjg4OWI0ODczIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0xNzIs
MyArMTcyLDY4IEBAIFRFU1QoV2ViS2l0LCBDb25maWd1cmF0aW9uRGlzYWJsZUphdmFTY3JpcHRO
ZXN0ZWRCb2R5KQogICAgIE5TU3RyaW5nICpib2R5SFRNTCA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdOwogICAgIEVYUEVD
VF9XS19TVFJFUShib2R5SFRNTCwgQCI8dGFibGU+PC90YWJsZT4iKTsKIH0KKworVEVTVChXZWJL
aXQsIENvbmZpZ3VyYXRpb25NYXNrZWRVUkxTY2hlbWVzKQoreworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgRVhQRUNU
X0VRKFtjb25maWd1cmF0aW9uIF9tYXNrZWRVUkxTY2hlbWVzXS5jb3VudCwgMFUpOworCisgICAg
W2NvbmZpZ3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6W05TU2V0IHNldFdpdGhPYmplY3Rz
OkAidGVzdC1zY2hlbWUiLCBAImFub3RoZXItc2NoZW1lIiwgbmlsXV07CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW1nIHNyYz1c
InRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9iYXIuanBnXCI+PGltZyBzcmM9XCJiYXoucG5nXCI+IiBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKwor
ICAgIE5TU3RyaW5nICppbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLnNyYyJdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hp
ZGRlbi8iKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uZ2V0QXR0
cmlidXRlKFwic3JjXCIpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndl
YmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bChcImltZ1wiKVswXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3JjXCIpLnZhbHVlIl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIp
OworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5zcmMiXTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXoucG5n
Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0dHJpYnV0
ZShcInNyY1wiKSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJiYXoucG5n
Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0dHJpYnV0
ZU5vZGUoXCJzcmNcIikudmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2Us
IEAiYmF6LnBuZyIpOworCisgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjxpbWcgc3Jjc2V0PVwidGVzdC1zY2hlbWU6Ly9mb28uY29tL2Jhci5qcGcg
MXgsIGJhci5qcGcgMngsIGFub3RoZXItc2NoZW1lOi8vZm9vLmNvbS9iYXIuZ2lmIDN4XCI+PGlt
ZyBzcmNzZXQ9XCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIDJ4LCBiYXoucG5nIDF4XCI+IiBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKwor
ICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uc3Jjc2V0Il07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAx
eCwgYmFyLmpwZyAyeCwgd2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDN4Iik7CisKKyAgICBp
bWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0dHJpYnV0ZShcInNyY3NldFwi
KSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVy
bDovL2hpZGRlbi8gMXgsIGJhci5qcGcgMngsIHdlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAz
eCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVswXS5nZXRBdHRyaWJ1
dGVOb2RlKFwic3Jjc2V0XCIpLnZhbHVlIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291
cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAxeCwgYmFyLmpwZyAyeCwgd2Via2l0
LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDN4Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KFwiaW1nXCIpWzFdLnNyY3NldCJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwg
QCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIDJ4LCBiYXoucG5nIDF4Iik7CisKKyAgICBpbWFn
ZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0dHJpYnV0ZShcInNyY3NldFwiKSJd
OworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9i
YXoucG5nIDJ4LCBiYXoucG5nIDF4Iik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwi
aW1nXCIpWzFdLmdldEF0dHJpYnV0ZU5vZGUoXCJzcmNzZXRcIikudmFsdWUiXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwg
YmF6LnBuZyAxeCIpOworCisgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjxzY3JpcHQgc3JjPVwiYW5vdGhlci1zY2hlbWU6Ly9mb28uY29tL2Jhci5q
c1wiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPVwiaHR0cDovL2FwcGxlLmNvbS9iYXouanNcIj48L3Nj
cmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29t
Il1dOworCisgICAgTlNTdHJpbmcgKnNjcmlwdFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0XCIp
WzBdLnNyYyJdOworICAgIEVYUEVDVF9XS19TVFJFUShzY3JpcHRTb3VyY2UsIEAid2Via2l0LW1h
c2tlZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBzY3JpcHRTb3VyY2UgPSBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNj
cmlwdFwiKVsxXS5zcmMiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoc2NyaXB0U291cmNlLCBAImh0
dHA6Ly9hcHBsZS5jb20vYmF6LmpzIik7CisKKyAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlmcmFtZSBzcmM9XCJ0ZXN0LXNjaGVtZTovL2Zvby5j
b20vYmFyLmh0bWxcIj48L2lmcmFtZT48aWZyYW1lIHNyYz1cImh0dHA6Ly9hcHBsZS5jb20vYmF6
Lmh0bWxcIj48L2lmcmFtZT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczov
L2V4YW1wbGUuY29tIl1dOworCisgICAgTlNTdHJpbmcgKmh0bWxTb3VyY2UgPSBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXTsK
KyAgICBFWFBFQ1RfRVEoW2h0bWxTb3VyY2UgY29udGFpbnNTdHJpbmc6QCI8aWZyYW1lIHNyYz1c
IndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuL1wiPjwvaWZyYW1lPiJdLCBZRVMpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457479</attachid>
            <date>2022-04-12 14:40:12 -0700</date>
            <delta_ts>2022-04-12 18:17:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220412144011.patch</filename>
            <type>text/plain</type>
            <size>51659</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uMjk1ZDMyZmQ1YzY0ZDM4ZTA0ODNlYTc5YTI4Mzlj
YjJkM2E5MTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5u
ZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpvdXRlckhUTUwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgY29uc3QpOiBBZGRlZC4g
TW92ZWQgZnJvbSBNYXJrdXBBY2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGFuZCBhZGRl
ZCBuZXcgTm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSBwYXRoLgorICAgICAgICBDaGFuZ2VkIFll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5IGFuZCBpbmNsdWRlZCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoKSBjaGVjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29u
c3QpOiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBk
aXJlY3RseS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDogVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIGZvciBnZXRBdHRyaWJ1dGUuCisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
aW5uZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9y
UHJpdmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgICogZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVs
YXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGNvbnN0KTogVXNlIEVsZW1lbnQ6OnJlc29sdmVVUkxT
dHJpbmdJZk5lZWRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQpOiBDaGFuZ2Vk
IFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3Qp
OiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRp
bmdzIGNvbnN0KTogQWRkZWQuIFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyB3aXRoIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnNldFNyY3NldEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIyLTAzLTIy
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmE2
ZmZmOGU1YjZhNmU1OTBlNTY2M2U0YzM4NzkyYmQ0YjM4NzYzLi4wYjJjM2QyNzY0Y2ZlNDUyNWU1
OTZhNTIxMTJhYjc0OTJjOTNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA0
LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFy
Oi8vODE5OTEyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogQWRkZWQgbWFz
a2VkVVJMU2NoZW1lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBBZGRlZCBt
YXNrZWRVUkxTY2hlbWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Om1hc2tlZFVSTFNjaGVt
ZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldE1h
c2tlZFVSTFNjaGVtZXMpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX21hc2tlZFVSTFNjaGVtZXNdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBBZGRlZCBtYXNrZWRVUkxTY2hlbWVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisKIDIwMjItMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tIGFuZCBTaGFyZWRWaWRlb0ZyYW1lLmNwcCBkbyBub3QgbmVlZCB0byBiZSBidWls
dCBhcyBwYXJ0IG9mIFdlYkNvbnRlbnQgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDcxYjM2YmNlNTUzY2MxZTRk
ZjM5OTZkMmJkNGEyOGFlZDA3YTJjOTIuLmVlYWJiZTU0MzAwNWMxYTA1NDMxNWZjM2ExNTUzYjVk
YmIwMWNiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KQEAgLTExMDEsNyArMTEwMSw3IEBAIHN1YiBHZXR0ZXJFeHByZXNzaW9uCiAK
ICAgICBteSAkZnVuY3Rpb25OYW1lOwogICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVVJMIn0pIHsKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVUkxBdHRyaWJ1
dGUiOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdz
IjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiIpIHsKICAg
ICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
IjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAibG9uZyIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggYjQ0NzM5NWVlMzdjNjQyMGEyODQxMWIyNmM3YzUwZGIyNjc3OWFkYy4uZGE5YTc1
M2M2NWQ0ZGJhZWIwZmYyZDEzMzdiNTAzNTNhMjg1MTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTM4OTAs
NyArMzg5MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkVVJM
QXR0ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsCiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmlu
Zz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGVGb3JCaW5kaW5ncyhXZWJD
b3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRyLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQpAQCAtMzkyMSw3ICszOTIxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2EKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMVVNWU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVzdnVybGF0dHJBdHRyKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMVVNWU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkdXN2dXJsYXR0ckF0dHIpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCkBAIC00MDQ1LDcgKzQwNDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleAogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJB
dHRyKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9N
U3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJp
YnV0ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJB
dHRyKSkpKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0
ZWRDdXN0b21VUkxBdHRyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuY3BwCmluZGV4IDEyYzQwMjZkN2I3NTJlMTRlMTA5MTBkMmM2YWUwZjgyMTZhZWE3OTYu
LjQzNWEzNDQ4YWMxMGNmODFiYmYzNDNhOGQxNDEyNzJjMzYxMzA5OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKQEAgLTEyMCwxMCArMTIwLDEwIEBAIENTU1N0eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxl
KCkKICAgICByZXR1cm4gJm1fc3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH0K
IAotY29uc3QgQXRvbVN0cmluZyYgQXR0cjo6dmFsdWUoKSBjb25zdAorQXRvbVN0cmluZyBBdHRy
Ojp2YWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSk7CisgICAgICAgIHJldHVybiBt
X2VsZW1lbnQtPmdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKHF1YWxpZmllZE5hbWUoKSk7CiAgICAg
cmV0dXJuIG1fc3RhbmRhbG9uZVZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBhYzk0YzgwOWU5
MzYzY2I0YzY3NzZlMzU0NjA2MjEwYWJjNDUyN2FjLi5hZWE0ODNiODBhNTc2MjMxNDAxNWY2OTVk
NzEzNjI2YjViNjI4YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgc3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEVsZW1lbnQq
IG93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBBdG9tU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWYWx1ZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBx
dWFsaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA5NThhMDg1NGNjNDhhZWUwNDgyNTQ2ZTc3MzliNTUwNWY4YzBmMjgxLi43MGZj
ZWQ4YzAwMWI0ZjJjNmQ1M2EwNDY1OTQ0NTUxZjBjNWQyMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTU2MDAsNiArNTYwMCw0NSBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBGb3JjZVVURjggZm9yY2VVVEY4KSBjb25zdAogICAgIHJldHVybiBj
b21wbGV0ZVVSTCh1cmwsIG1fYmFzZVVSTCwgZm9yY2VVVEY4KTsKIH0KIAorYm9vbCBEb2N1bWVu
dDo6c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAg
IGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKFVOTElLRUxZKCFwYWdlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBwYWdlLT5zaG91bGRNYXNrVVJMRm9yQmlu
ZGluZ3ModXJsKTsKK30KKworYm9vbCBEb2N1bWVudDo6aGFzVVJMc1RvTWFza0ZvckJpbmRpbmdz
KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmIChVTkxJ
S0VMWSghcGFnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFnZS0+aGFz
VVJMc1RvTWFza0ZvckJpbmRpbmdzKCk7Cit9CisKK1VSTCBEb2N1bWVudDo6bWFza2VkVVJMRm9y
QmluZGluZ3NJZk5lZWRlZChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtF
TFkoc2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKHVybCkpKQorICAgICAgICByZXR1cm4gbWFza2Vk
VVJMRm9yQmluZGluZ3MoKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBBdG9tU3RyaW5n
JiBEb2N1bWVudDo6bWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsKCJ3ZWJr
aXQtbWFza2VkLXVybDovL2hpZGRlbi8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJM
Rm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPFVSTD4gbWFza2VkVVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWFza2VkVVJM
LmNvbnN0cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpLnN0cmluZygpKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gbWFza2VkVVJMOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRCYWNrRm9y
d2FyZENhY2hlU3RhdGUoQmFja0ZvcndhcmRDYWNoZVN0YXRlIHN0YXRlKQogewogICAgIGlmICht
X2JhY2tGb3J3YXJkQ2FjaGVTdGF0ZSA9PSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
ZDNkOTNkOGRiZjlmMDNjMTQ3NTEwNDM2NWRjMDcxOTc5N2MzYWFjYy4uMjNjNmZmOTU0ZmY1OWNj
ZTI4YThmZjc0MWE3ZTUwMjBkMzAzMTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTcyMCw2
ICs3MjAsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChj
b25zdCBTdHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAg
ICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJp
ZGUsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRN
YXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBoYXNVUkxzVG9N
YXNrRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBVUkwgbWFza2VkVVJMRm9yQmluZGluZ3NJZk5l
ZWRlZChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBtYXNrZWRVUkxT
dHJpbmdGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgbWFza2VkVVJMRm9yQmlu
ZGluZ3MoKSBjb25zdDsKKwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiOTk3YmZkMGZkYjlmZWVmNDQzZjhi
M2NjYTRkMjBlNjFjMGI3YzljLi42NDRjMWU5MTQ0Njc0ZmFmZGNhYWRkZjExZjk2NzQwZjNiYzlk
MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03MjAsNiArNzIwLDM0IEBAIGNvbnN0IEF0
b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCitBdG9tU3RyaW5nIEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIFJlc29s
dmVVUkxzIHJlc29sdmVVUkxzKSBjb25zdAoreworICAgIGlmICghZWxlbWVudERhdGEoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CisKKyAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShuYW1l
KTsKKworICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZmluZEF0dHJpYnV0ZUJ5TmFt
ZShuYW1lKTsKKyAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CisKKyAgICBzd2l0Y2ggKHJlc29sdmVVUkxzKSB7CisgICAgY2FzZSBSZXNvbHZlVVJMczo6WWVz
OgorICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OgorICAg
ICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShVUkwoKSwgKmF0dHJpYnV0
ZSwgcmVzb2x2ZVVSTHMpOworCisgICAgY2FzZSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxz
Rm9yUHJpdmFjeToKKyAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFzVVJMc1RvTWFza0ZvckJpbmRp
bmdzKCkpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShV
UkwoKSwgKmF0dHJpYnV0ZSwgcmVzb2x2ZVVSTHMpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgUmVzb2x2ZVVSTHM6Ok5vOgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
YXR0cmlidXRlLT52YWx1ZSgpOworfQorCiBWZWN0b3I8U3RyaW5nPiBFbGVtZW50OjpnZXRBdHRy
aWJ1dGVOYW1lcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYXR0cmlidXRlc1ZlY3Rv
cjsKQEAgLTE3OTgsNiArMTgyNiwzNCBAQCBjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkgY29uc3QKICAgICByZXR1
cm4gbnVsbEF0b20oKTsKIH0KIAorQXRvbVN0cmluZyBFbGVtZW50OjpnZXRBdHRyaWJ1dGVGb3JC
aW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIFJlc29sdmVVUkxzIHJlc29sdmVV
UkxzKSBjb25zdAoreworICAgIGlmICghZWxlbWVudERhdGEoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxBdG9tKCk7CisKKyAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShsb2NhbE5hbWUpOworCisgICAg
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YSgpLT5maW5kQXR0cmlidXRl
QnlOYW1lKGxvY2FsTmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSgqdGhpcykpOworICAg
IGlmICghYXR0cmlidXRlKQorICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKKworICAgIHN3aXRj
aCAocmVzb2x2ZVVSTHMpIHsKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpZZXM6CisgICAgY2FzZSBS
ZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3k6CisgICAgICAgIHJldHVybiBj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKFVSTCgpLCAqYXR0cmlidXRlLCByZXNvbHZlVVJM
cyk7CisKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5Ogor
ICAgICAgICBpZiAoZG9jdW1lbnQoKS5oYXNVUkxzVG9NYXNrRm9yQmluZGluZ3MoKSkKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKFVSTCgpLCAqYXR0cmli
dXRlLCByZXNvbHZlVVJMcyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSZXNvbHZlVVJM
czo6Tm86CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBhdHRyaWJ1dGUtPnZh
bHVlKCk7Cit9CisKIGNvbnN0IEF0b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1l
KSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRv
bSgpLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwpAQCAtMzI3MCwxMiArMzMyNiwxMiBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjptZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9k
ZSkKIAogU3RyaW5nIEVsZW1lbnQ6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNl
cmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJl
bik7CisgICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6
OlN1YnRyZWVzT2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJM
c0ZvclByaXZhY3kpOwogfQogCiBTdHJpbmcgRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6U3Vi
dHJlZUluY2x1ZGluZ05vZGUpOworICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywg
U2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSwgbnVsbHB0ciwgUmVzb2x2ZVVS
THM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBF
bGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sKQpAQCAtNDU1MCw5ICs0NjA2
LDQxIEBAIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdAogICAg
IHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKIH0KIAotU3RyaW5nIEVsZW1lbnQ6OmNv
bXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkgY29uc3QKK1N0cmluZyBFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZO
ZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzIHJlc29sdmVVUkxzLCBj
b25zdCBVUkwmIGJhc2UpIGNvbnN0Cit7CisgICAgaWYgKHJlc29sdmVVUkxzID09IFJlc29sdmVV
UkxzOjpObykKKyAgICAgICAgcmV0dXJuIHVybFN0cmluZzsKKworICAgIFVSTCBjb21wbGV0ZVVS
TCA9IGJhc2UuaXNOdWxsKCkgPyBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykgOiBV
UkwoYmFzZSwgdXJsU3RyaW5nKTsKKworICAgIHN3aXRjaCAocmVzb2x2ZVVSTHMpIHsKKyAgICBj
YXNlIFJlc29sdmVVUkxzOjpZZXM6CisgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTC5zdHJpbmco
KTsKKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OiB7
CisgICAgICAgIGlmIChkb2N1bWVudCgpLnNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb21wbGV0
ZVVSTCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxTdHJpbmdGb3JC
aW5kaW5ncygpOworICAgICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzTG9jYWxGaWxlKCkpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGVVUkwuc3RyaW5nKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3k6Cisg
ICAgICAgIGlmIChkb2N1bWVudCgpLnNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb21wbGV0ZVVS
TCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxTdHJpbmdGb3JCaW5k
aW5ncygpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
cmV0dXJuIHVybFN0cmluZzsKK30KKworU3RyaW5nIEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0
cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwg
UmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChiYXNlLCBh
dHRyaWJ1dGUudmFsdWUoKSkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHJlc29sdmVVUkxTdHJpbmdJ
Zk5lZWRlZChhdHRyaWJ1dGUudmFsdWUoKSwgcmVzb2x2ZVVSTHMsIGJhc2UpOwogfQogCiBFeGNl
cHRpb25PcjxOb2RlKj4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29uc3QgU3RyaW5nJiB3aGVy
ZSwgUmVmPE5vZGU+JiYgbmV3Q2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBhNTI4ZDE3MDVl
ZGExYTIzZjVkOWYxMzNmN2YyNmZmNWUzZWE1ZjkwLi4zNTAxYWRiMTYwZjlhYTliNDVlZTNhNTdi
NTg3ZGY5ZjVjYTM3NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTgxLDYgKzgxLDcgQEAgZW51
bSBjbGFzcyBBbmltYXRpb25JbXBhY3Q7CiBlbnVtIGNsYXNzIEV2ZW50SGFuZGxpbmcgOiB1aW50
OF90OwogZW51bSBjbGFzcyBFdmVudFByb2Nlc3NpbmcgOiB1aW50OF90OwogZW51bSBjbGFzcyBJ
c1N5bnRoZXRpY0NsaWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgUmVzb2x2ZVVS
THMgOiB1aW50OF90IHsgTm8sIE5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFllcywgWWVzRXhj
bHVkaW5nVVJMc0ZvclByaXZhY3kgfTsKIGVudW0gY2xhc3MgU2VsZWN0aW9uUmVzdG9yYXRpb25N
b2RlIDogdWludDhfdDsKIAogc3RydWN0IEdldEFuaW1hdGlvbnNPcHRpb25zOwpAQCAtMTA3LDYg
KzEwOCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBB
dG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAg
IEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpIGNv
bnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFF1YWxpZmllZE5hbWVzPgogICAgIGlubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IFF1YWxpZmllZE5hbWVzJi4uLikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KTsKQEAgLTEzOSw5ICsxNDEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFzQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJp
bmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21T
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZU5TKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBj
b25zdDsKIAorICAgIEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGlu
Z1VSTHNGb3JQcml2YWN5KSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFF1YWxpZmllZE5h
bWU+IHBhcnNlQXR0cmlidXRlTmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpOwpAQCAtNDE2LDEwICs0MjAsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKSBjb25zdCB7IHJldHVybiBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0OworICAgIFN0cmluZyByZXNvbHZlVVJMU3RyaW5n
SWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVS
THM6OlllcywgY29uc3QgVVJMJiBiYXNlID0gVVJMKCkpIGNvbnN0OworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBB
dHRyaWJ1dGUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgZ2V0VVJMQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBpbmxpbmUgVVJMIGdldFVSTEF0
dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBVUkwg
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCmluZGV4IGE1MjMzMWZmODdhMjgyZDAxNmM5MjYxMDUyOWYzODRjMmMz
ZDQ3MDQuLmRmYjRkOWYyODRlOTZmYWM5MjkwNDZmNzNmMDgwNjJkNzlkOTlkOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBbRE9NSklUPVJlYWRET01dIGJv
b2xlYW4gaGFzQXR0cmlidXRlcygpOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRB
dHRyaWJ1dGVOYW1lcygpOwotICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRy
aWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTSwgSW1w
bGVtZW50ZWRBcz1nZXRBdHRyaWJ1dGVGb3JCaW5kaW5nc10gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1
dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRl
TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIFtD
RVJlYWN0aW9uc10gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzZXRBdHRy
aWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUs
IERPTVN0cmluZyB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dElubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SW5saW5lcy5oCmluZGV4IDNm
ODU3YTY0MzNkNmUxYjJiMzMyYzBmNjkzM2Y1NzQ0MDQ0ZmVmODkuLjU0MGIyMGY5ZDAwODAwNTBl
NDNmNzZkMzQ0NWUzZTA0OGRhMGQ1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50SW5saW5lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SW5saW5lcy5o
CkBAIC05MCw2ICs5MCwxMSBAQCBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZQogICAgIHJldHVybiBu
dWxsQXRvbSgpOwogfQogCitpbmxpbmUgVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJp
bmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRv
Y3VtZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZChnZXRVUkxBdHRyaWJ1dGUobmFt
ZSkpOworfQorCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCkgJiYgIWVsZW1lbnREYXRhKCkt
PmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBhMzIyZGVjNDFkZGY0
YjM1YmUxODMxNmY5YWYwNGUyNTBjYjZlYTliLi41MjlhZTkwYmNjMjI5YzM1N2FhNDYxYjc4ZDdm
ZGZmYWU0ZjcxOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xNzgsNyArMTc4
LDcgQEAgU3R5bGVTaGVldExpc3QmIFNoYWRvd1Jvb3Q6OnN0eWxlU2hlZXRzKCkKIAogU3RyaW5n
IFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZy
YWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJlbik7CisgICAg
cmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVz
T2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZh
Y3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTaGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29u
c3QgU3RyaW5nJiBtYXJrdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFmMTI3ZWMxMDU0NDAu
LjgxZjkwOGUwZGRiOTI1Y2EyYWUzYjY1NzM3M2RiYTIxMzZkMzk0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yMzIsMTkgKzIzMiw3IEBA
IHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzV2l0aE5hbWVzcGFjZXMoTm9k
ZSYgdGFyZ2V0Tm9kZSwgU2VyaWFsaXplCiAKIFN0cmluZyBNYXJrdXBBY2N1bXVsYXRvcjo6cmVz
b2x2ZVVSTElmTmVlZGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKSBjb25zdAogewotICAgIHN3aXRjaCAobV9yZXNvbHZlVVJMcykgewotICAgIGNhc2Ug
UmVzb2x2ZVVSTHM6OlllczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpLnN0cmluZygpOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6WWVz
RXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3k6Ci0gICAgICAgIGlmICghZWxlbWVudC5k
b2N1bWVudCgpLnVybCgpLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVu
dC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykuc3RyaW5nKCk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6Tm86Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gdXJsU3RyaW5nOworICAgIHJldHVybiBlbGVtZW50LnJlc29sdmVVUkxTdHJp
bmdJZk5lZWRlZCh1cmxTdHJpbmcsIG1fcmVzb2x2ZVVSTHMpOwogfQogCiB2b2lkIE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdGFydEFwcGVuZGluZ05vZGUoY29uc3QgTm9kZSYgbm9kZSwgTmFtZXNwYWNl
cyogbmFtZXNwYWNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tCmluZGV4IGY4OGE4MTZlYTYzNzZkMTcyNDBhNjQ4MTFlOTY4YTk1ZjM4OWM4MDMuLjZlOWNk
YTcwMDE4YmM2NGZhN2MwN2I2NzU0ZTc1Y2NkZDcyZTQxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgRWRp
dG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogewogICAgIGlmIChJbWFnZU92ZXJsYXk6Omlz
SW5zaWRlT3ZlcmxheShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVh
cmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6
Olllcyk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogfQogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0
b3JHdGsuY3BwCmluZGV4IDk0ZTM4MTM3NWI5NzcxNzA4MjgyOGUwYzk2NDhiNTQ5N2Q2ZjI0ZmUu
LmVmOTlhMmVmNjliNGUxNDEzOTc4MjA3M2NiMjAyMWNhZTRmYThiYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQog
ICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBhc3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9h
cmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlID0gY2FuU21hcnRDb3B5T3JEZWxldGUoKTsK
ICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVy
KCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zp
c3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2
ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21w
b3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXpl
UHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQuY29udGVudE9yaWdpbiA9
IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlODgyYmJjN2QwZjkx
Y2FkNzZjMzgyNTA4ZTlhM2YuLjkwMDVjOTU2ZDVlYjU2M2Q3YjNmYzJkMDdlOGY1ZDhmZGIxNzBi
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQ
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNw
cApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIHsKICAgICBQYXN0ZWJvYXJkV2ViQ29udGVudCBw
YXN0ZWJvYXJkQ29udGVudDsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRU
ZXh0Rm9yRGF0YVRyYW5zZmVyKCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2
YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQu
bWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZC53cml0
ZShwYXN0ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQppbmRleCAxYTJjZDAzZjAwY2VlMDI2OTI2YmMzYTI0ZmZhOWJiYzVlMDg5NjYzLi4y
ZmY5YmJkNDgwYzU2Njc5MGQzMWM4ZjYzYjY3NjY2YWMxNDYzZDIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBFZGl0b3I6
OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYg
aW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQgPSBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQpOwogCiAgICAgaWYgKGF1
dG8gaW1hZ2VSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoaW1hZ2VFbGVtZW50KSkKLSAg
ICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQgPSBzZXJpYWxpemVQcmVzZXJ2
aW5nVmlzdWFsQXBwZWFyYW5jZShWaXNpYmxlU2VsZWN0aW9uIHsgKmltYWdlUmFuZ2UgfSwgUmVz
b2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CisgICAgICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9y
bWF0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoVmlzaWJsZVNlbGVjdGlv
biB7ICppbWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogCiAgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDIwYjNmY2Y4ZGRmOTU0NDM0OWIxODY0ZWY5ZDli
ZjBmYjRhZWU2NDYuLmFkY2E5ZDFlMDk1YjliZTc0MjEwY2E0ZDUxNzYxZDYxYzRlYjUzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEwMTEsNyArMTAxMSw3IEBAIFN0cmluZyBz
YW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+
JiYgZnJhZ21lbnQsIERvCiAKICAgICAvLyBTZXJpYWxpemVDb21wb3NlZFRyZWU6Ok5vIGJlY2F1
c2UgdGhlcmUgY2FuJ3QgYmUgYSBzaGFkb3cgdHJlZSBpbiB0aGUgcGFzdGVkIGZyYWdtZW50Lgog
ICAgIGF1dG8gcmVzdWx0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2VJbnRl
cm5hbChmaXJzdFBvc2l0aW9uSW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbGFzdFBvc2l0aW9u
SW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbnVsbHB0ciwKLSAgICAgICAgUmVzb2x2ZVVSTHM6
Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRy
ZWU6Ok5vLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpZZXMsIENvbnZlcnRCbG9ja3NUb0lubGlu
ZXM6Ok5vLCAgU3RhbmRhcmRGb250RmFtaWx5U2VyaWFsaXphdGlvbk1vZGU6OlN0cmlwLCBtc29M
aXN0TW9kZSk7CisgICAgICAgIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpObywgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVz
LCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgIFN0YW5kYXJkRm9udEZhbWlseVNlcmlhbGl6
YXRpb25Nb2RlOjpTdHJpcCwgbXNvTGlzdE1vZGUpOwogCiAgICAgaWYgKG1zb0xpc3RNb2RlICE9
IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCmluZGV4IDkyNTExYTkzNDY2YmE5NDg0MTI0MWJhZmQ2NGUwZmNkMTNlMTFh
ZTMuLjQxNzQwZWZmN2JkOWM1YTU1MTNmZjEwM2MyYmVjNDlhNmIwYTgyNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgpAQCAtNzAs
NyArNzEsNiBAQCBib29sIGlzUGxhaW5UZXh0TWFya3VwKE5vZGUqKTsKIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHVzZWQgYnkgSFRNTEVsZW1lbnQgJiBTaGFkb3dSb290IHRvIHJlcGxhY2UgdGhlIGNo
aWxkcmVuIHdpdGggcmVzcGVjdGVkIGZyYWdtZW50L3RleHQuCiBFeGNlcHRpb25Pcjx2b2lkPiBy
ZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYsIFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmKTsKIAotZW51bSBjbGFzcyBSZXNvbHZlVVJMcyA6IHVpbnQ4X3QgeyBObywgWWVz
LCBZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSB9OwogZW51bSBjbGFzcyBDb252
ZXJ0QmxvY2tzVG9JbmxpbmVzIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgU2Vy
aWFsaXplQ29tcG9zZWRUcmVlIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShjb25zdCBTaW1wbGVS
YW5nZSYsIFZlY3RvcjxOb2RlKj4qID0gbnVsbHB0ciwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9
IEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6Tm8sIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDc5OGZlODZiYzRm
MzIwMjY3MWNkMmQ3MTQ2NjAwMGI2ZWJhYmI2YmYuLmI0OGM1NDIzMWQxZmE2NGY2Yzk4NjExMWY3
MGYyOTdlZTVkYWZiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtNTY1LDcgKzU2NSw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YXR0cmlidXRlQ29u
dGFpbnNVUkwoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgICAgIHx8IEhU
TUxFbGVtZW50OjphdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpOwogfQogCi1TdHJpbmcg
SFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwm
IGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAorU3RyaW5nIEhUTUxJbWFn
ZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0
CiB7CiAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3Jjc2V0QXR0cikgewogICAgICAgICBW
ZWN0b3I8SW1hZ2VDYW5kaWRhdGU+IGltYWdlQ2FuZGlkYXRlcyA9IHBhcnNlSW1hZ2VDYW5kaWRh
dGVzRnJvbVNyY3NldEF0dHJpYnV0ZShTdHJpbmdWaWV3KGF0dHJpYnV0ZS52YWx1ZSgpKSk7CkBA
IC01NzMsNyArNTczLDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0lu
QXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHQKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjYW5kaWRhdGUgOiBpbWFnZUNhbmRpZGF0ZXMpIHsKICAgICAgICAgICAgIGlm
ICgmY2FuZGlkYXRlICE9ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNh
bmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoY2FuZGlkYXRlLnN0cmluZy50b1N0cmlu
ZygpLCByZXNvbHZlVVJMcywgYmFzZSkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZW5z
aXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAnLCBjYW5kaWRhdGUuZGVuc2l0eSwgJ3gnKTsKICAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKQEAgLTU4MSw3
ICs1ODEsOCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1
dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dAogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGJhc2UsIGF0dHJpYnV0ZSk7CisKKyAgICByZXR1
cm4gSFRNTEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoYmFzZSwgYXR0cmli
dXRlLCByZXNvbHZlVVJMcyk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6bWF0Y2hlc1Vz
ZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QKQEAgLTg3Niw2ICs4NzcsMTYg
QEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1lbnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9y
VGVzdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXItPnBlbmRpbmdEZWNvZGVQ
cm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwogfQogCitBdG9tU3RyaW5nIEhUTUxJbWFnZUVsZW1l
bnQ6OnNyY3NldEZvckJpbmRpbmdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
Rm9yQmluZGluZ3Moc3Jjc2V0QXR0cik7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0
U3Jjc2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCit7CisgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNzZXRBdHRyLCB2YWx1ZSk7Cit9CisKIGNv
bnN0IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNv
bnN0CiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDFkOTlkMzIxN2I1NmZlM2Mx
YzVkMGM1NThkN2ViNDczYTk4OWMzZWMuLmU4NGI1YTI5ZmY2Y2YwMWJhMjM3M2E0YTRjNDgwMTIx
MTJhZDNhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0xMjks
NiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkRGVmZXJyZWRJbWFnZSgpOwogCisg
ICAgQXRvbVN0cmluZyBzcmNzZXRGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIHZvaWQgc2V0U3Jj
c2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOworCiAgICAgY29uc3QgQXRvbVN0cmlu
ZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2FkaW5nRm9yQmlu
ZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOwogCkBAIC0xNzMsNyArMTc2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBhdHRyaWJ1dGVDb250YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25z
dCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
cmlidXRlJiwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6WWVzKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNEcmFnZ2FibGVJZ25vcmluZ0F0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRs
CmluZGV4IGY5MzYzODYyYzkyODRjNmEwYzc4YjNhNzBjNzdmNjIxNDA4MWYwMjUuLmNkYjY5NjMz
OTQ2ZDNiZDdkYzc3OWQ1YWZmMDdjZDJkZDVkNGJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmlkbApAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRNTElt
YWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsdDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3JjOwotICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OworICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEltcGxlbWVudGVkQXM9c3Jjc2V0Rm9yQmluZGluZ3Nd
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2l6ZXM7CiAgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZz8gY3Jvc3NPcmlnaW47CiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB1c2VNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA2NjNmOTg0YjU3ZDRkMGVkMzQzOWYwOTEzYzE0YjFjYjFlMThmYzE3
Li5lNmM4MTUxMWM0NjExYmRlNDRhNDNlMWM5YjlhYzBjZmJmM2E3Nzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyKSkKICNlbmRpZgogICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMpKQorICAgICwgbV9tYXNrZWRVUkxT
Y2hlbWVzKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubWFza2VkVVJMU2NoZW1lcykpCiAgICAg
LCBtX2FsbG93ZWROZXR3b3JrSG9zdHMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2Vk
TmV0d29ya0hvc3RzKSkKICAgICAsIG1fbG9hZHNTdWJyZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRp
b24ubG9hZHNTdWJyZXNvdXJjZXMpCiAgICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9uLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKQpAQCAtMzcyOSw2ICszNzMwLDEzIEBAIGJvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNv
cnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2Jvb2wg
UGFnZTo6c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAorewor
ICAgIGlmIChtX21hc2tlZFVSTFNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fbWFza2VkVVJMU2NoZW1lcy5jb250YWlucyh1cmwucHJvdG9jb2wo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworfQorCiB2b2lkIFBhZ2U6OnJldmVhbEN1cnJl
bnRTZWxlY3Rpb24oKQogewogICAgIENoZWNrZWRSZWYoZm9jdXNDb250cm9sbGVyKCkpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2
ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA3NjEyOGMyMjEzYmZjMTU0MTliNDFhOTdjYTNjZDBkZGExMDM1Yzgx
Li5hNDAyYTc1Zjc3NWJkNTQ3OTY4YjVjM2NmZDM0YTJhMWRmZjUzMGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtOTA5LDYgKzkwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hGcmFtZShjb25z
dCBGdW5jdGlvbjx2b2lkKEZyYW1lJik+Jik7CiAKICAgICBib29sIHNob3VsZERpc2FibGVDb3Jz
Rm9yUmVxdWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkTWFza1VSTEZv
ckJpbmRpbmdzKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzVVJMc1RvTWFza0ZvckJp
bmRpbmdzKCkgY29uc3QgeyByZXR1cm4gIW1fbWFza2VkVVJMU2NoZW1lcy5pc0VtcHR5KCk7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5qZWN0VXNlclN0eWxlU2hlZXQoVXNlclN0eWxl
U2hlZXQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUluamVjdGVkVXNlclN0eWxl
U2hlZXQoVXNlclN0eWxlU2hlZXQmKTsKQEAgLTEyNzksNiArMTI4MSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IG1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX21hc2tlZFVSTFNjaGVtZXM7CiAgICAg
VmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0c1BlbmRpbmdJbmplY3Rpb247
CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IG1fYWxsb3dlZE5ldHdvcmtIb3N0
czsKICAgICBib29sIG1faXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24g
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQy
YTk0NGVkZDFiMzlkN2QyYzYxMGFlMDMxOGEyMDZmOTVjYmI1YWUuLmViODE3ZTZiNWI1YjRkN2Jl
Y2FhMmExZTViOGRmYzBlYzgwZjc2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXI+IGRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI7
CiAjZW5kaWYKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBjb3JzRGlzYWJsaW5n
UGF0dGVybnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1hc2tlZFVSTFNjaGVtZXM7CiAgICAgVW5p
cXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+IHNwZWVjaFJlY29nbml0aW9uUHJvdmlk
ZXI7CiAgICAgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4gbWVkaWFSZWNvcmRlclBy
b3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggMGIyNWZmNmMzOGM4NjM0ZjM3ZWVhMmFmZDAyNGE4ZDQyYTRmNDJjNS4uNDE3YTc5
MGFjNWMzNDlkOGRiNGMyOTg4M2ZlMWU4MjUxYzgxNWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNlbGVjdGVkUmFu
Z2UsIGJvb2wgY2FuU21hcnRDCiAgICAgLy8gUHV0IENGX0hUTUwgZm9ybWF0IG9uIHRoZSBwYXN0
ZWJvYXJkIAogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVj
dG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgUmVzb2x2ZVVSTHM6Olllc0V4
Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LgorICAgICAgICAvLyBGSVhNRTogVXNlIFJl
c29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KICAgICAgICAgbWFya3VwVG9D
RkhUTUwoc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkpLAogICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS5zdGFydC5jb250YWlu
ZXItPmRvY3VtZW50KCkudXJsKCkuc3RyaW5nKCksIGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNi
RGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGVjNDM5ZDA2NzE0ZTZkZTVi
OTRlMjFmYjljZThlZTIzOWM5NjIyZmEuLjlmZDdiZWIxYWU3YWVmYWUxNjQ1ZWUyZTI0Y2Y5ZDJh
NGY2N2NmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgb2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAg
ICBlbmNvZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IG1hc2tl
ZFVSTFNjaGVtZXM7CiAgICAgZW5jb2RlciA8PCBsb2Fkc1N1YnJlc291cmNlczsKICAgICBlbmNv
ZGVyIDw8IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKQEAgLTQ5NSw2ICs0OTYsMTIgQEAgc3RkOjpvcHRp
b25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0
ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJu
cyk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gbWFza2VkVVJMU2NoZW1l
czsKKyAgICBkZWNvZGVyID4+IG1hc2tlZFVSTFNjaGVtZXM7CisgICAgaWYgKCFtYXNrZWRVUkxT
Y2hlbWVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubWFz
a2VkVVJMU2NoZW1lcyA9IFdURk1vdmUoKm1hc2tlZFVSTFNjaGVtZXMpOworCiAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBsb2Fkc1N1YnJlc291cmNlczsKICAgICBkZWNvZGVyID4+IGxvYWRzU3Vi
cmVzb3VyY2VzOwogICAgIGlmICghbG9hZHNTdWJyZXNvdXJjZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggY2I3NDE2OTNkYjMw
YTc1MDJiNDg5YzgzOTdjZWY2YzczOWZlZGE5MS4uMjg2YTFlN2Q5NTBkZTBhNTRhNmZhNDM4OGZj
ZmY1Mzg2ZTlhNjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaApAQCAtMjE5LDYgKzIxOSw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBvdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmluZz4g
bWFza2VkVVJMU2NoZW1lczsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07
CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWROZXR3b3JrSG9zdHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmNwcAppbmRleCBiNjkyOTY2YTNlZjZhOTg2Y2I2MDNkMGYzYTFlODgwMjc2MTQ5YTNlLi4x
NmZkY2I3ZmUxNGUyMDQ5ZGYwYWZlMTZkZTFjMTM1NDM4NmI4OGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTgz
LDYgKzgzLDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29w
eSgpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVy
cykKICAgICAgICAgY29weS0+bV91cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIu
dmFsdWUuY29weVJlZigpKTsKICAgICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRo
aXMtPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGNvcHktPm1fbWFza2VkVVJMU2NoZW1l
cyA9IHRoaXMtPm1fbWFza2VkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IHRoaXMtPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkOwogICAgIGNvcHktPm1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb24gPSB0aGlzLT5tX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCmluZGV4IDQyYjJjYzVkZWZmZWY3YWNmNzMzNDllZjM5NmZmNWI0ZjQyYmNjYjQuLmY4
ZmZiZDk3MjAxZTQ1NmJkMzEzOTM0NTYwMDdhZDRmNGMxMjRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0xNDMsNyAr
MTQzLDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvcnNE
aXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5z
OyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3RyaW5n
PiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0ZXJu
cyk7IH0KLSAgICAKKworICAgIGNvbnN0IEhhc2hTZXQ8V1RGOjpTdHJpbmc+JiBtYXNrZWRVUkxT
Y2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrZWRVUkxTY2hlbWVzOyB9CisgICAgdm9pZCBz
ZXRNYXNrZWRVUkxTY2hlbWVzKEhhc2hTZXQ8V1RGOjpTdHJpbmc+JiYgc2NoZW1lcykgeyBtX21h
c2tlZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKHNjaGVtZXMpOyB9CisKICAgICBib29sIHVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsgfQogICAgIHZvaWQgc2V0VXNlclNjcmlw
dHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3VzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdmFsdWU7IH0KIApAQCAtMjI3LDYgKzIzMCw3
IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWY8V2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0b3I8V1RGOjpT
dHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+
IG1fbWFza2VkVVJMU2NoZW1lczsKICAgICBib29sIG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBXVEY6OlN0cmluZyBtX3Byb2Nlc3NEaXNw
bGF5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggMDRlMDQ0Mjk4ODMxY2NhY2NkZDc1
MzFlNDRjNDA0NTdlZDZjNTY0OS4uMGEyZjlmMjdkMTY5ZGU2OWM3NzI5ZDI4MmI0OGQzY2Y2MTJj
NjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTk3OCw2ICs5NzgsMjMgQEAgLSAodm9p
ZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVy
bnMKICAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtYWtl
VmVjdG9yPFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAorLSAoTlNTZXQ8TlNTdHJpbmcgKj4gKilf
bWFza2VkVVJMU2NoZW1lcworeworICAgIGNvbnN0IGF1dG8mIHNjaGVtZXMgPSBfcGFnZUNvbmZp
Z3VyYXRpb24tPm1hc2tlZFVSTFNjaGVtZXMoKTsKKyAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcg
Kj4gKnNldCA9IFtOU011dGFibGVTZXQgc2V0V2l0aENhcGFjaXR5OnNjaGVtZXMuc2l6ZSgpXTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IHNjaGVtZXMpCisgICAgICAgIFtzZXQgYWRk
T2JqZWN0OnNjaGVtZV07CisgICAgcmV0dXJuIHNldDsKK30KKworLSAodm9pZClfc2V0TWFza2Vk
VVJMU2NoZW1lczooTlNTZXQ8TlNTdHJpbmcgKj4gKilzY2hlbWVzCit7CisgICAgSGFzaFNldDxT
dHJpbmc+IHNldDsKKyAgICBmb3IgKE5TU3RyaW5nICpzY2hlbWUgaW4gc2NoZW1lcykKKyAgICAg
ICAgc2V0LmFkZChzY2hlbWUpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TWFza2VkVVJM
U2NoZW1lcyhXVEZNb3ZlKHNldCkpOworfQorCiAtICh2b2lkKV9zZXRMb2Fkc0Zyb21OZXR3b3Jr
OihCT09MKWxvYWRzCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29y
a0hvc3RzKGxvYWRzID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmlu
Zz4+IHsgSGFzaFNldDxTdHJpbmc+IHsgfSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgKaW5kZXggODEzNjU1N2MxZmFhNTY0MDljOTBlOGM0YWNlNWYxMjIyMmM1MjhiYi4uOGNh
Yzk5ZTk1ZTI3ODNkMjk2YTMwYzYzNzMwM2RmYWM1N2Y2NTAyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUlu
dGVnZXIsIF9XS0F0dHJpYnV0aW9uT3ZlcnJpZGVUZXN0aW5nKSB7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgV0tXZWJzaXRlRGF0YVN0b3JlICpfd2Vic2l0ZURhdGFTdG9yZUlm
RXhpc3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfY29yc0Rpc2FibGluZ1BhdHRlcm5zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgc2V0dGVyPV9zZXRNYXNrZWRVUkxTY2hlbWVzOikgTlNTZXQ8TlNTdHJpbmcgKj4gKl9t
YXNrZWRVUkxTY2hlbWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZWZlcnJhYmxl
VXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF9kZWZlcnJhYmxl
VXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBp
b3MoMTQuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAxYzdhZDQ0YzI0NmFkNzA5NzdhZmE3YzZlNDNiZDAzY2MyMDViNmVjLi43MWI0N2RiNDZhZjg2
OTBmZTQxMjFmNmUwZmZlZTc0MjczNDMyZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTgzNzcsNiArODM3Nyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jCiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5N
ZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBjb3JzRGlz
YWJsaW5nUGF0dGVybnMoKTsKKyAgICBwYXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXMgPSBtX2Nv
bmZpZ3VyYXRpb24tPm1hc2tlZFVSTFNjaGVtZXMoKTsKICAgICBwYXJhbWV0ZXJzLnVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gbV9jb25maWd1cmF0aW9uLT51c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpOwogICAgIHBhcmFtZXRlcnMuYWxsb3dl
ZE5ldHdvcmtIb3N0cyA9IG1fY29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpOwog
ICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSBtX2NvbmZpZ3VyYXRpb24tPmxvYWRz
U3VicmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKaW5kZXgg
YmY0ZDI4ZTNlOGRlZmFhNDI2YmI4ZjVjMTA5ZTYyZmM3ZjEwOGE2MS4uMjBkYzA0MmU4NWNkYTI3
ZWE5NTlkNDNkYmE1ZGE0ZjNlYmE0NmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50
R3RrLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVH
bG9iYWxTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBh
c3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9hcmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVs
ZXRlID0gZmFsc2U7CiAgICAgcGFzdGVib2FyZENvbnRlbnQudGV4dCA9IHBsYWluVGV4dCgqcmFu
Z2UpOwotICAgIHBhc3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdW
aXN1YWxBcHBlYXJhbmNlKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVS
THM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5KTsKKyAgICBwYXN0ZWJvYXJk
Q29udGVudC5tYXJrdXAgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShmcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxz
Rm9yUHJpdmFjeSk7CiAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKFBh
Z2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZShwYXN0
ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggMGFhN2ZhNGQ0NjU3MzJkODM0YTlhZDI1N2E1MTUzZDFiYjBkOGI2
Ny4uZTFjNjBlZWExZDM5MGRmYWMwNTllMjMxYTI0OThkNjYxMjFiZTExOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY0Myw2ICs2NDMsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIHN5bmNocm9uaXplQ09SU0Rpc2FibGlu
Z1BhdHRlcm5zV2l0aE5ldHdvcmtQcm9jZXNzKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29y
c0Rpc2FibGluZ1BhdHRlcm5zID0gcGFyc2VBbmRBbGxvd0FjY2Vzc1RvQ09SU0Rpc2FibGluZ1Bh
dHRlcm5zKG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAorICAgIHBhZ2VDb25maWd1cmF0aW9u
Lm1hc2tlZFVSTFNjaGVtZXMgPSBwYXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXM7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBw
YXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJl
c291cmNlczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2VkTmV0d29ya0hvc3RzID0gcGFy
YW1ldGVycy5hbGxvd2VkTmV0d29ya0hvc3RzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzZTZhZDRiMjNkZmU2NTRhOTJlYzNlZDdiZWM3NTcx
N2E4Nzk0ZTYuLjc4OTVmYmY3OWRmMTYxNDcyNmQyOTUxNWRhMWFkNjA0ZGY5NDYxMGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZhU2NyaXB0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzYK
KyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgIChURVNUKFdlYktpdCwgQ29uZmlndXJhdGlv
bk1hc2tlZFVSTFNjaGVtZXMpKTogQWRkZWQuCisKIDIwMjItMDMtMjIgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZXJnZS1RdWV1ZV0gQWRkIFZhbGlk
YXRlU3F1YXNoZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBjMDc1ZGQ1MzRm
ZGE4NmY2NzkyYzE5YWRkMGUyNTFlOGFmMzAyMDNkLi43MjdkMGI5NTMzYjk5MDdkNmQyODllNDYw
YTBmOGEwZDM4ZDAxODRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0xNzIs
MyArMTcyLDY3IEBAIFRFU1QoV2ViS2l0LCBDb25maWd1cmF0aW9uRGlzYWJsZUphdmFTY3JpcHRO
ZXN0ZWRCb2R5KQogICAgIE5TU3RyaW5nICpib2R5SFRNTCA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdOwogICAgIEVYUEVD
VF9XS19TVFJFUShib2R5SFRNTCwgQCI8dGFibGU+PC90YWJsZT4iKTsKIH0KKworVEVTVChXZWJL
aXQsIENvbmZpZ3VyYXRpb25NYXNrZWRVUkxTY2hlbWVzKQoreworICAgIFtUZXN0UHJvdG9jb2wg
cmVnaXN0ZXJXaXRoU2NoZW1lOkAiaHR0cHMiXTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgRVhQRUNUX0VRKFtj
b25maWd1cmF0aW9uIF9tYXNrZWRVUkxTY2hlbWVzXS5jb3VudCwgMFUpOworCisgICAgW2NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOkAidGVz
dC1zY2hlbWUiLCBAImFub3RoZXItc2NoZW1lIiwgbmlsXV07CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8aW1nIHNyYz1cInRlc3Qt
c2NoZW1lOi8vZm9vLmNvbS9iYXIuanBnXCI+PGltZyBzcmM9XCJiYXoucG5nXCI+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKworICAgIE5T
U3RyaW5nICppbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLnNyYyJdOworICAgIEVY
UEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8i
KTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uZ2V0QXR0cmlidXRl
KFwic3JjXCIpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1t
YXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImlt
Z1wiKVswXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3JjXCIpLnZhbHVlIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisg
ICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5zcmMiXTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXoucG5nIik7CisK
KyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0dHJpYnV0ZShcInNy
Y1wiKSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJiYXoucG5nIik7CisK
KyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLmdldEF0dHJpYnV0ZU5vZGUo
XCJzcmNcIikudmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiYmF6
LnBuZyIpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlt
ZyBzcmNzZXQ9XCJ0ZXN0LXNjaGVtZTovL2Zvby5jb20vYmFyLmpwZyAxeCwgYmFyLmpwZyAyeCwg
YW5vdGhlci1zY2hlbWU6Ly9mb28uY29tL2Jhci5naWYgM3hcIj48aW1nIHNyY3NldD1cImh0dHBz
Oi8vYXBwbGUuY29tL2Jhei5wbmcgMngsIGJhei5wbmcgMXhcIj4iIGJhc2VVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOworCisgICAgaW1hZ2VTb3VyY2Ug
PSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlT
ZWxlY3RvckFsbChcImltZ1wiKVswXS5zcmNzZXQiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1h
Z2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDF4LCBiYXIuanBnIDJ4LCB3
ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gM3giKTsKKworICAgIGltYWdlU291cmNlID0gW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoXCJpbWdcIilbMF0uZ2V0QXR0cmlidXRlKFwic3Jjc2V0XCIpIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAxeCwg
YmFyLmpwZyAyeCwgd2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIDN4Iik7CisKKyAgICBpbWFn
ZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0dHJpYnV0ZU5vZGUoXCJzcmNzZXRc
IikudmFsdWUiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1h
c2tlZC11cmw6Ly9oaWRkZW4vIDF4LCBiYXIuanBnIDJ4LCB3ZWJraXQtbWFza2VkLXVybDovL2hp
ZGRlbi8gM3giKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uc3Jj
c2V0Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUu
Y29tL2Jhei5wbmcgMngsIGJhei5wbmcgMXgiKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoXCJpbWdcIilbMV0uZ2V0QXR0cmlidXRlKFwic3Jjc2V0XCIpIl07CisgICAgRVhQRUNUX1dL
X1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmcgMngsIGJhei5w
bmcgMXgiKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0QXR0
cmlidXRlTm9kZShcInNyY3NldFwiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFn
ZVNvdXJjZSwgQCJodHRwczovL2FwcGxlLmNvbS9iYXoucG5nIDJ4LCBiYXoucG5nIDF4Iik7CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8c2NyaXB0IHNyYz1c
ImFub3RoZXItc2NoZW1lOi8vZm9vLmNvbS9iYXIuanNcIj48L3NjcmlwdD48c2NyaXB0IHNyYz1c
Imh0dHA6Ly9hcHBsZS5jb20vYmF6LmpzXCI+PC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cHM6Ly9leGFtcGxlLmNvbSJdXTsKKworICAgIE5TU3RyaW5nICpzY3Jp
cHRTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFwiKVswXS5zcmMiXTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoc2NyaXB0U291cmNlLCBAIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIpOworCisg
ICAgc2NyaXB0U291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRcIilbMV0uc3JjIl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKHNjcmlwdFNvdXJjZSwgQCJodHRwOi8vYXBwbGUuY29tL2Jhei5qcyIpOwor
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGlmcmFtZSBzcmM9
XCJ0ZXN0LXNjaGVtZTovL2Zvby5jb20vYmFyLmh0bWxcIj48L2lmcmFtZT48aWZyYW1lIHNyYz1c
Imh0dHA6Ly9hcHBsZS5jb20vYmF6Lmh0bWxcIj48L2lmcmFtZT4iIGJhc2VVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOworCisgICAgTlNTdHJpbmcgKmh0
bWxTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQuYm9keS5pbm5lckhUTUwiXTsKKyAgICBFWFBFQ1RfRVEoW2h0bWxTb3VyY2UgY29udGFpbnNT
dHJpbmc6QCI8aWZyYW1lIHNyYz1cIndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuL1wiPjwvaWZy
YW1lPiJdLCBZRVMpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457495</attachid>
            <date>2022-04-12 18:17:37 -0700</date>
            <delta_ts>2022-06-24 13:04:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238576-20220412181736.patch</filename>
            <type>text/plain</type>
            <size>51901</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uMjk1ZDMyZmQ1YzY0ZDM4ZTA0ODNlYTc5YTI4Mzlj
YjJkM2E5MTA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIyLTA0LTAzICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYWJpbGl0eSB0
byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFyOi8vODE5OTEy
NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdldHRlckV4cHJlc3Np
b24pOiBVc2UgZ2V0VVJMQXR0cmlidXRlRm9yQmluZGluZ3MgZm9yIFVSTCB0eXBlcy4KKyAgICAg
ICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdHRyOjp2YWx1ZSBjb25zdCk6
IFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncy4KKyAgICAgICAgKiBkb20vQXR0ci5oOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hv
dWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZCBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGlu
Z3MgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBdHRyaWJ1dGVG
b3JCaW5kaW5ncyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5u
ZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9yUHJp
dmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpvdXRlckhUTUwgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQgY29uc3QpOiBBZGRlZC4g
TW92ZWQgZnJvbSBNYXJrdXBBY2N1bXVsYXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGFuZCBhZGRl
ZCBuZXcgTm9FeGNsdWRpbmdVUkxzRm9yUHJpdmFjeSBwYXRoLgorICAgICAgICBDaGFuZ2VkIFll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5IGFuZCBpbmNsdWRlZCBzaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoKSBjaGVjay4KKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29u
c3QpOiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBk
aXJlY3RseS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50
LmlkbDogVXNlIGdldEF0dHJpYnV0ZUZvckJpbmRpbmdzIGZvciBnZXRBdHRyaWJ1dGUuCisgICAg
ICAgICogZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
aW5uZXJIVE1MIGNvbnN0KTogVXNlIG5ldyBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxzRm9y
UHJpdmFjeSB3aGVuIGNhbGxpbmcgc2VyaWFsaXplRnJhZ21lbnQuCisgICAgICAgICogZWRpdGlu
Zy9NYXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVs
YXRvcjo6cmVzb2x2ZVVSTElmTmVlZGVkIGNvbnN0KTogVXNlIEVsZW1lbnQ6OnJlc29sdmVVUkxT
dHJpbmdJZk5lZWRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQpOiBDaGFuZ2Vk
IFllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5IHRvIFllc0V4Y2x1ZGluZ1VSTHNG
b3JQcml2YWN5LgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplZE1hcmt1
cEZvckZyYWdtZW50SW5Eb2N1bWVudCk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvbWFya3Vw
Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUgY29uc3Qp
OiBVc2UgcmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkIGluc3RlYWQgb2YgbWFraW5nIFVSTCBkaXJl
Y3RseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnNyY3NldEZvckJpbmRp
bmdzIGNvbnN0KTogQWRkZWQuIFVzZSBnZXRBdHRyaWJ1dGVGb3JCaW5kaW5ncyB3aXRoIFJlc29s
dmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnNldFNyY3NldEZvckJpbmRpbmdzKTogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmlkbDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzIGNvbnN0KTogQWRkZWQuCisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorCiAyMDIyLTAzLTIy
ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBFbmFibGUg
Y29udGVudCBmaWx0ZXJpbmcgaW4gdGhlIE5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMmE2
ZmZmOGU1YjZhNmU1OTBlNTY2M2U0YzM4NzkyYmQ0YjM4NzYzLi4wYjJjM2QyNzY0Y2ZlNDUyNWU1
OTZhNTIxMTJhYjc0OTJjOTNmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA0
LTAzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YWJpbGl0eSB0byBtYXNrIFVSTHMgZnJvbSBET00gYW5kIEphdmFTY3JpcHQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NgorICAgICAgICByZGFy
Oi8vODE5OTEyNDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KTogQWRkZWQgbWFz
a2VkVVJMU2NoZW1lcy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OmNvcHkgY29uc3QpOiBBZGRlZCBt
YXNrZWRVUkxTY2hlbWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246Om1hc2tlZFVSTFNjaGVt
ZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6UGFnZUNvbmZpZ3VyYXRpb246OnNldE1h
c2tlZFVSTFNjaGVtZXMpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX21hc2tlZFVSTFNjaGVtZXNdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3NldE1hc2tlZFVSTFNjaGVtZXM6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOiBBZGRlZCBtYXNrZWRVUkxTY2hlbWVzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6IEFkZGVkIG1hc2tlZFVSTFNjaGVtZXMuCisKIDIwMjItMDMtMjIgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIExpYldlYlJUQ0NvZGVj
c1Byb3h5Lm1tIGFuZCBTaGFyZWRWaWRlb0ZyYW1lLmNwcCBkbyBub3QgbmVlZCB0byBiZSBidWls
dCBhcyBwYXJ0IG9mIFdlYkNvbnRlbnQgZXhlY3V0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCmluZGV4IDcxYjM2YmNlNTUzY2MxZTRk
ZjM5OTZkMmJkNGEyOGFlZDA3YTJjOTIuLmVlYWJiZTU0MzAwNWMxYTA1NDMxNWZjM2ExNTUzYjVk
YmIwMWNiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KQEAgLTExMDEsNyArMTEwMSw3IEBAIHN1YiBHZXR0ZXJFeHByZXNzaW9uCiAK
ICAgICBteSAkZnVuY3Rpb25OYW1lOwogICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiVVJMIn0pIHsKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJnZXRVUkxBdHRyaWJ1
dGUiOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdz
IjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiIpIHsKICAg
ICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
IjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAibG9uZyIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggYjQ0NzM5NWVlMzdjNjQyMGEyODQxMWIyNmM3YzUwZGIyNjc3OWFkYy4uZGE5YTc1
M2M2NWQ0ZGJhZWIwZmYyZDEzMzdiNTAzNTNhMjg1MTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTM4OTAs
NyArMzg5MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpfcmVmbGVjdGVkVVJM
QXR0ckdldHRlcihKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsCiAgICAgYXV0byYgdm0gPSBKU0M6
OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVk
KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmlu
Zz4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0cikpKSk7CisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC5nZXRVUkxBdHRyaWJ1dGVGb3JCaW5kaW5ncyhXZWJD
b3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSkpKTsKIH0KIAogSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0ZWRVUkxBdHRyLCAoSlNHbG9iYWxPYmpl
Y3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQpAQCAtMzkyMSw3ICszOTIxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ial9yZWZsZWN0ZWRVU1ZVUkxBdHRyR2V0dGVyKEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2EKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmpl
Y3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMVVNWU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxl
Y3RlZHVzdnVybGF0dHJBdHRyKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29w
ZSwgKHRvSlM8SURMVVNWU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBp
bXBsLmdldFVSTEF0dHJpYnV0ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVj
dGVkdXN2dXJsYXR0ckF0dHIpKSkpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoanNU
ZXN0T2JqX3JlZmxlY3RlZFVTVlVSTEF0dHIsIChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUgYXR0cmlidXRl
TmFtZSkpCkBAIC00MDQ1LDcgKzQwNDUsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqX3JlZmxlY3RlZEN1c3RvbVVSTEF0dHJHZXR0ZXIoSlNHbG9iYWxPYmplY3QmIGxleAogICAg
IGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCAo
dG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwu
Z2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJB
dHRyKSkpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMRE9N
U3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBpbXBsLmdldFVSTEF0dHJp
YnV0ZUZvckJpbmRpbmdzKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJB
dHRyKSkpKTsKIH0KIAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGpzVGVzdE9ial9yZWZsZWN0
ZWRDdXN0b21VUkxBdHRyLCAoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIGF0dHJpYnV0ZU5hbWUpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0F0dHIuY3BwCmluZGV4IDEyYzQwMjZkN2I3NTJlMTRlMTA5MTBkMmM2YWUwZjgyMTZhZWE3OTYu
LjQzNWEzNDQ4YWMxMGNmODFiYmYzNDNhOGQxNDEyNzJjMzYxMzA5OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5j
cHAKQEAgLTEyMCwxMCArMTIwLDEwIEBAIENTU1N0eWxlRGVjbGFyYXRpb24qIEF0dHI6OnN0eWxl
KCkKICAgICByZXR1cm4gJm1fc3R5bGUtPmVuc3VyZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKIH0K
IAotY29uc3QgQXRvbVN0cmluZyYgQXR0cjo6dmFsdWUoKSBjb25zdAorQXRvbVN0cmluZyBBdHRy
Ojp2YWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIG1f
ZWxlbWVudC0+Z2V0QXR0cmlidXRlKHF1YWxpZmllZE5hbWUoKSk7CisgICAgICAgIHJldHVybiBt
X2VsZW1lbnQtPmdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKHF1YWxpZmllZE5hbWUoKSk7CiAgICAg
cmV0dXJuIG1fc3RhbmRhbG9uZVZhbHVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaAppbmRleCBhYzk0YzgwOWU5
MzYzY2I0YzY3NzZlMzU0NjA2MjEwYWJjNDUyN2FjLi5hZWE0ODNiODBhNTc2MjMxNDAxNWY2OTVk
NzEzNjI2YjViNjI4YmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIGJvb2wgc3BlY2lmaWVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEVsZW1lbnQq
IG93bmVyRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBBdG9tU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRWYWx1ZShjb25zdCBBdG9tU3RyaW5nJik7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBx
dWFsaWZpZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCA5NThhMDg1NGNjNDhhZWUwNDgyNTQ2ZTc3MzliNTUwNWY4YzBmMjgxLi43MGZj
ZWQ4YzAwMWI0ZjJjNmQ1M2EwNDY1OTQ0NTUxZjBjNWQyMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTU2MDAsNiArNTYwMCw0NSBAQCBVUkwgRG9jdW1lbnQ6OmNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYgdXJsLCBGb3JjZVVURjggZm9yY2VVVEY4KSBjb25zdAogICAgIHJldHVybiBj
b21wbGV0ZVVSTCh1cmwsIG1fYmFzZVVSTCwgZm9yY2VVVEY4KTsKIH0KIAorYm9vbCBEb2N1bWVu
dDo6c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAg
IGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKFVOTElLRUxZKCFwYWdlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBwYWdlLT5zaG91bGRNYXNrVVJMRm9yQmlu
ZGluZ3ModXJsKTsKK30KKworYm9vbCBEb2N1bWVudDo6aGFzVVJMc1RvTWFza0ZvckJpbmRpbmdz
KCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIGlmIChVTkxJ
S0VMWSghcGFnZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcGFnZS0+aGFz
VVJMc1RvTWFza0ZvckJpbmRpbmdzKCk7Cit9CisKK1VSTCBEb2N1bWVudDo6bWFza2VkVVJMRm9y
QmluZGluZ3NJZk5lZWRlZChjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtF
TFkoc2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKHVybCkpKQorICAgICAgICByZXR1cm4gbWFza2Vk
VVJMRm9yQmluZGluZ3MoKTsKKyAgICByZXR1cm4gdXJsOworfQorCitjb25zdCBBdG9tU3RyaW5n
JiBEb2N1bWVudDo6bWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0
YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gdXJsKCJ3ZWJr
aXQtbWFza2VkLXVybDovL2hpZGRlbi8iLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7CisgICAgcmV0dXJuIHVybDsKK30KKworY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJM
Rm9yQmluZGluZ3MoKSBjb25zdAoreworICAgIHN0YXRpYyBNYWluVGhyZWFkTGF6eU5ldmVyRGVz
dHJveWVkPFVSTD4gbWFza2VkVVJMOworICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxh
ZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKKyAgICAgICAgbWFza2VkVVJM
LmNvbnN0cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpLnN0cmluZygpKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gbWFza2VkVVJMOworfQorCiB2b2lkIERvY3VtZW50OjpzZXRCYWNrRm9y
d2FyZENhY2hlU3RhdGUoQmFja0ZvcndhcmRDYWNoZVN0YXRlIHN0YXRlKQogewogICAgIGlmICht
X2JhY2tGb3J3YXJkQ2FjaGVTdGF0ZSA9PSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXgg
ZDNkOTNkOGRiZjlmMDNjMTQ3NTEwNDM2NWRjMDcxOTc5N2MzYWFjYy4uMjNjNmZmOTU0ZmY1OWNj
ZTI4YThmZjc0MWE3ZTUwMjBkMzAzMTZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTcyMCw2
ICs3MjAsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChj
b25zdCBTdHJpbmcmLCBGb3JjZVVURjggPSBGb3JjZVVURjg6Ok5vKSBjb25zdCBmaW5hbDsKICAg
ICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJiBiYXNlVVJMT3ZlcnJp
ZGUsIEZvcmNlVVRGOCA9IEZvcmNlVVRGODo6Tm8pIGNvbnN0OwogCisgICAgYm9vbCBzaG91bGRN
YXNrVVJMRm9yQmluZGluZ3MoY29uc3QgVVJMJikgY29uc3Q7CisgICAgYm9vbCBoYXNVUkxzVG9N
YXNrRm9yQmluZGluZ3MoKSBjb25zdDsKKyAgICBVUkwgbWFza2VkVVJMRm9yQmluZGluZ3NJZk5l
ZWRlZChjb25zdCBVUkwmKSBjb25zdDsKKyAgICBjb25zdCBBdG9tU3RyaW5nJiBtYXNrZWRVUkxT
dHJpbmdGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIGNvbnN0IFVSTCYgbWFza2VkVVJMRm9yQmlu
ZGluZ3MoKSBjb25zdDsKKwogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7CiAKICAgICB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBiOTk3YmZkMGZkYjlmZWVmNDQzZjhi
M2NjYTRkMjBlNjFjMGI3YzljLi42NDRjMWU5MTQ0Njc0ZmFmZGNhYWRkZjExZjk2NzQwZjNiYzlk
MmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC03MjAsNiArNzIwLDM0IEBAIGNvbnN0IEF0
b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
KSBjb25zdAogICAgIHJldHVybiBudWxsQXRvbSgpOwogfQogCitBdG9tU3RyaW5nIEVsZW1lbnQ6
OmdldEF0dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIFJlc29s
dmVVUkxzIHJlc29sdmVVUkxzKSBjb25zdAoreworICAgIGlmICghZWxlbWVudERhdGEoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxBdG9tKCk7CisKKyAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShuYW1l
KTsKKworICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gZmluZEF0dHJpYnV0ZUJ5TmFt
ZShuYW1lKTsKKyAgICBpZiAoIWF0dHJpYnV0ZSkKKyAgICAgICAgcmV0dXJuIG51bGxBdG9tKCk7
CisKKyAgICBzd2l0Y2ggKHJlc29sdmVVUkxzKSB7CisgICAgY2FzZSBSZXNvbHZlVVJMczo6WWVz
OgorICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OgorICAg
ICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShVUkwoKSwgKmF0dHJpYnV0
ZSwgcmVzb2x2ZVVSTHMpOworCisgICAgY2FzZSBSZXNvbHZlVVJMczo6Tm9FeGNsdWRpbmdVUkxz
Rm9yUHJpdmFjeToKKyAgICAgICAgaWYgKGRvY3VtZW50KCkuaGFzVVJMc1RvTWFza0ZvckJpbmRp
bmdzKCkpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShV
UkwoKSwgKmF0dHJpYnV0ZSwgcmVzb2x2ZVVSTHMpOworICAgICAgICBicmVhazsKKworICAgIGNh
c2UgUmVzb2x2ZVVSTHM6Ok5vOgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
YXR0cmlidXRlLT52YWx1ZSgpOworfQorCiBWZWN0b3I8U3RyaW5nPiBFbGVtZW50OjpnZXRBdHRy
aWJ1dGVOYW1lcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gYXR0cmlidXRlc1ZlY3Rv
cjsKQEAgLTE3OTgsNiArMTgyNiwzNCBAQCBjb25zdCBBdG9tU3RyaW5nJiBFbGVtZW50OjpnZXRB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSkgY29uc3QKICAgICByZXR1
cm4gbnVsbEF0b20oKTsKIH0KIAorQXRvbVN0cmluZyBFbGVtZW50OjpnZXRBdHRyaWJ1dGVGb3JC
aW5kaW5ncyhjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUsIFJlc29sdmVVUkxzIHJlc29sdmVV
UkxzKSBjb25zdAoreworICAgIGlmICghZWxlbWVudERhdGEoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxBdG9tKCk7CisKKyAgICBzeW5jaHJvbml6ZUF0dHJpYnV0ZShsb2NhbE5hbWUpOworCisgICAg
Y29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBlbGVtZW50RGF0YSgpLT5maW5kQXR0cmlidXRl
QnlOYW1lKGxvY2FsTmFtZSwgc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSgqdGhpcykpOworICAg
IGlmICghYXR0cmlidXRlKQorICAgICAgICByZXR1cm4gbnVsbEF0b20oKTsKKworICAgIHN3aXRj
aCAocmVzb2x2ZVVSTHMpIHsKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpZZXM6CisgICAgY2FzZSBS
ZXNvbHZlVVJMczo6WWVzRXhjbHVkaW5nVVJMc0ZvclByaXZhY3k6CisgICAgICAgIHJldHVybiBj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKFVSTCgpLCAqYXR0cmlidXRlLCByZXNvbHZlVVJM
cyk7CisKKyAgICBjYXNlIFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5Ogor
ICAgICAgICBpZiAoZG9jdW1lbnQoKS5oYXNVUkxzVG9NYXNrRm9yQmluZGluZ3MoKSkKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKFVSTCgpLCAqYXR0cmli
dXRlLCByZXNvbHZlVVJMcyk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSZXNvbHZlVVJM
czo6Tm86CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBhdHRyaWJ1dGUtPnZh
bHVlKCk7Cit9CisKIGNvbnN0IEF0b21TdHJpbmcmIEVsZW1lbnQ6OmdldEF0dHJpYnV0ZU5TKGNv
bnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1l
KSBjb25zdAogewogICAgIHJldHVybiBnZXRBdHRyaWJ1dGUoUXVhbGlmaWVkTmFtZShudWxsQXRv
bSgpLCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSkpOwpAQCAtMzI3MCwxMiArMzMyNiwxMiBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBFbGVtZW50OjptZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9k
ZSkKIAogU3RyaW5nIEVsZW1lbnQ6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNl
cmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJl
bik7CisgICAgcmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6
OlN1YnRyZWVzT2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJM
c0ZvclByaXZhY3kpOwogfQogCiBTdHJpbmcgRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc2VyaWFsaXplRnJhZ21lbnQoKnRoaXMsIFNlcmlhbGl6ZWROb2Rlczo6U3Vi
dHJlZUluY2x1ZGluZ05vZGUpOworICAgIHJldHVybiBzZXJpYWxpemVGcmFnbWVudCgqdGhpcywg
U2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSwgbnVsbHB0ciwgUmVzb2x2ZVVS
THM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBF
bGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sKQpAQCAtNDU1MCw5ICs0NjA2
LDQxIEBAIGJvb2wgRWxlbWVudDo6Y2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdAogICAg
IHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihyb2xlQXR0ciksICJpbWciKTsKIH0KIAotU3RyaW5nIEVsZW1lbnQ6OmNv
bXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkgY29uc3QKK1N0cmluZyBFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZO
ZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzIHJlc29sdmVVUkxzLCBj
b25zdCBVUkwmIGJhc2UpIGNvbnN0Cit7CisgICAgaWYgKHJlc29sdmVVUkxzID09IFJlc29sdmVV
UkxzOjpObykKKyAgICAgICAgcmV0dXJuIHVybFN0cmluZzsKKworICAgIFVSTCBjb21wbGV0ZVVS
TCA9IGJhc2UuaXNOdWxsKCkgPyBkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykgOiBV
UkwoYmFzZSwgdXJsU3RyaW5nKTsKKworICAgIHN3aXRjaCAocmVzb2x2ZVVSTHMpIHsKKyAgICBj
YXNlIFJlc29sdmVVUkxzOjpZZXM6CisgICAgICAgIHJldHVybiBjb21wbGV0ZVVSTC5zdHJpbmco
KTsKKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OiB7
CisgICAgICAgIGlmIChkb2N1bWVudCgpLnNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb21wbGV0
ZVVSTCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxTdHJpbmdGb3JC
aW5kaW5ncygpOworICAgICAgICBpZiAoIWNvbXBsZXRlVVJMLmlzTG9jYWxGaWxlKCkpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGVVUkwuc3RyaW5nKCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3k6Cisg
ICAgICAgIGlmIChkb2N1bWVudCgpLnNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb21wbGV0ZVVS
TCkpCisgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQoKS5tYXNrZWRVUkxTdHJpbmdGb3JCaW5k
aW5ncygpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUmVzb2x2ZVVSTHM6Ok5vOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
cmV0dXJuIHVybFN0cmluZzsKK30KKworU3RyaW5nIEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0
cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwg
UmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChiYXNlLCBh
dHRyaWJ1dGUudmFsdWUoKSkuc3RyaW5nKCk7CisgICAgcmV0dXJuIHJlc29sdmVVUkxTdHJpbmdJ
Zk5lZWRlZChhdHRyaWJ1dGUudmFsdWUoKSwgcmVzb2x2ZVVSTHMsIGJhc2UpOwogfQogCiBFeGNl
cHRpb25PcjxOb2RlKj4gRWxlbWVudDo6aW5zZXJ0QWRqYWNlbnQoY29uc3QgU3RyaW5nJiB3aGVy
ZSwgUmVmPE5vZGU+JiYgbmV3Q2hpbGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBhNTI4ZDE3MDVl
ZGExYTIzZjVkOWYxMzNmN2YyNmZmNWUzZWE1ZjkwLi4zNTAxYWRiMTYwZjlhYTliNDVlZTNhNTdi
NTg3ZGY5ZjVjYTM3NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTgxLDYgKzgxLDcgQEAgZW51
bSBjbGFzcyBBbmltYXRpb25JbXBhY3Q7CiBlbnVtIGNsYXNzIEV2ZW50SGFuZGxpbmcgOiB1aW50
OF90OwogZW51bSBjbGFzcyBFdmVudFByb2Nlc3NpbmcgOiB1aW50OF90OwogZW51bSBjbGFzcyBJ
c1N5bnRoZXRpY0NsaWNrIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgUmVzb2x2ZVVS
THMgOiB1aW50OF90IHsgTm8sIE5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3ksIFllcywgWWVzRXhj
bHVkaW5nVVJMc0ZvclByaXZhY3kgfTsKIGVudW0gY2xhc3MgU2VsZWN0aW9uUmVzdG9yYXRpb25N
b2RlIDogdWludDhfdDsKIAogc3RydWN0IEdldEFuaW1hdGlvbnNPcHRpb25zOwpAQCAtMTA3LDYg
KzEwOCw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBB
dG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OworICAg
IEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZhY3kpIGNv
bnN0OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFF1YWxpZmllZE5hbWVzPgogICAgIGlubGlu
ZSBjb25zdCBBdG9tU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IFF1YWxpZmllZE5hbWVzJi4uLikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KTsKQEAgLTEzOSw5ICsxNDEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
aGFzQXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQXR0cmlidXRlTlMoY29uc3QgQXRvbVN0cmluZyYgbmFt
ZXNwYWNlVVJJLCBjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0OwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgY29uc3QgQXRvbVN0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IEF0b21TdHJp
bmcmIHF1YWxpZmllZE5hbWUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21T
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBsb2NhbE5hbWUpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEF0b21TdHJpbmcmIGdldEF0dHJpYnV0ZU5TKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgQXRvbVN0cmluZyYgbG9jYWxOYW1lKSBj
b25zdDsKIAorICAgIEF0b21TdHJpbmcgZ2V0QXR0cmlidXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bVN0cmluZyYgbG9jYWxOYW1lLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpOb0V4Y2x1ZGlu
Z1VSTHNGb3JQcml2YWN5KSBjb25zdDsKKwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEF0dHJpYnV0ZShjb25zdCBBdG9tU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSk7CiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFF1YWxpZmllZE5h
bWU+IHBhcnNlQXR0cmlidXRlTmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IEF0b21TdHJpbmcmIHF1YWxpZmllZE5hbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEF0dHJpYnV0ZU5TKGNvbnN0IEF0b21TdHJpbmcmIG5hbWVzcGFjZVVS
SSwgY29uc3QgQXRvbVN0cmluZyYgcXVhbGlmaWVkTmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpOwpAQCAtNDE2LDEwICs0MjAsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGF0dHJpYnV0ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKSBjb25zdCB7IHJldHVybiBpc1VSTEF0dHJpYnV0ZShhdHRyaWJ1dGUpOyB9Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwmIGJh
c2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0OworICAgIFN0cmluZyByZXNvbHZlVVJMU3RyaW5n
SWZOZWVkZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVS
THM6OlllcywgY29uc3QgVVJMJiBiYXNlID0gVVJMKCkpIGNvbnN0OworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBB
dHRyaWJ1dGUmLCBSZXNvbHZlVVJMcyA9IFJlc29sdmVVUkxzOjpZZXMpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBpc0hUTUxDb250ZW50QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgZ2V0VVJMQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKKyAgICBpbmxpbmUgVVJMIGdldFVSTEF0
dHJpYnV0ZUZvckJpbmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBVUkwg
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCmluZGV4IGE1MjMzMWZmODdhMjgyZDAxNmM5MjYxMDUyOWYzODRjMmMz
ZDQ3MDQuLmRmYjRkOWYyODRlOTZmYWM5MjkwNDZmNzNmMDgwNjJkNzlkOTlkOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBbRE9NSklUPVJlYWRET01dIGJv
b2xlYW4gaGFzQXR0cmlidXRlcygpOwogICAgIFtTYW1lT2JqZWN0XSByZWFkb25seSBhdHRyaWJ1
dGUgTmFtZWROb2RlTWFwIGF0dHJpYnV0ZXM7CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBnZXRB
dHRyaWJ1dGVOYW1lcygpOwotICAgIFtET01KSVQ9UmVhZERPTV0gRE9NU3RyaW5nPyBnZXRBdHRy
aWJ1dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOworICAgIFtET01KSVQ9UmVhZERPTSwgSW1w
bGVtZW50ZWRBcz1nZXRBdHRyaWJ1dGVGb3JCaW5kaW5nc10gRE9NU3RyaW5nPyBnZXRBdHRyaWJ1
dGUoRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0QXR0cmlidXRl
TlMoRE9NU3RyaW5nPyBuYW1lc3BhY2VVUkksIERPTVN0cmluZyBsb2NhbE5hbWUpOwogICAgIFtD
RVJlYWN0aW9uc10gdW5kZWZpbmVkIHNldEF0dHJpYnV0ZShET01TdHJpbmcgcXVhbGlmaWVkTmFt
ZSwgRE9NU3RyaW5nIHZhbHVlKTsKICAgICBbQ0VSZWFjdGlvbnNdIHVuZGVmaW5lZCBzZXRBdHRy
aWJ1dGVOUyhET01TdHJpbmc/IG5hbWVzcGFjZVVSSSwgRE9NU3RyaW5nIHF1YWxpZmllZE5hbWUs
IERPTVN0cmluZyB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dElubGluZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SW5saW5lcy5oCmluZGV4IDNm
ODU3YTY0MzNkNmUxYjJiMzMyYzBmNjkzM2Y1NzQ0MDQ0ZmVmODkuLjU0MGIyMGY5ZDAwODAwNTBl
NDNmNzZkMzQ0NWUzZTA0OGRhMGQ1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50SW5saW5lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SW5saW5lcy5o
CkBAIC05MCw2ICs5MCwxMSBAQCBpbmxpbmUgY29uc3QgQXRvbVN0cmluZyYgRWxlbWVudDo6YXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihjb25zdCBRdWFsaWZpZQogICAgIHJldHVybiBu
dWxsQXRvbSgpOwogfQogCitpbmxpbmUgVVJMIEVsZW1lbnQ6OmdldFVSTEF0dHJpYnV0ZUZvckJp
bmRpbmdzKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRv
Y3VtZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3NJZk5lZWRlZChnZXRVUkxBdHRyaWJ1dGUobmFt
ZSkpOworfQorCiBpbmxpbmUgYm9vbCBFbGVtZW50OjpoYXNBdHRyaWJ1dGVzV2l0aG91dFVwZGF0
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVsZW1lbnREYXRhKCkgJiYgIWVsZW1lbnREYXRhKCkt
PmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBhMzIyZGVjNDFkZGY0
YjM1YmUxODMxNmY5YWYwNGUyNTBjYjZlYTliLi41MjlhZTkwYmNjMjI5YzM1N2FhNDYxYjc4ZDdm
ZGZmYWU0ZjcxOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0xNzgsNyArMTc4
LDcgQEAgU3R5bGVTaGVldExpc3QmIFNoYWRvd1Jvb3Q6OnN0eWxlU2hlZXRzKCkKIAogU3RyaW5n
IFNoYWRvd1Jvb3Q6OmlubmVySFRNTCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZy
YWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVzT2ZDaGlsZHJlbik7CisgICAg
cmV0dXJuIHNlcmlhbGl6ZUZyYWdtZW50KCp0aGlzLCBTZXJpYWxpemVkTm9kZXM6OlN1YnRyZWVz
T2ZDaGlsZHJlbiwgbnVsbHB0ciwgUmVzb2x2ZVVSTHM6Ok5vRXhjbHVkaW5nVVJMc0ZvclByaXZh
Y3kpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTaGFkb3dSb290OjpzZXRJbm5lckhUTUwoY29u
c3QgU3RyaW5nJiBtYXJrdXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01h
cmt1cEFjY3VtdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11
bGF0b3IuY3BwCmluZGV4IDNlNjk2MWQxNzMwZDQzNzRjNjRmZjg3YTJkMGFmMTI3ZWMxMDU0NDAu
LjgxZjkwOGUwZGRiOTI1Y2EyYWUzYjY1NzM3M2RiYTIxMzZkMzk0NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvTWFya3VwQWNjdW11bGF0b3IuY3BwCkBAIC0yMzIsMTkgKzIzMiw3IEBA
IHZvaWQgTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzV2l0aE5hbWVzcGFjZXMoTm9k
ZSYgdGFyZ2V0Tm9kZSwgU2VyaWFsaXplCiAKIFN0cmluZyBNYXJrdXBBY2N1bXVsYXRvcjo6cmVz
b2x2ZVVSTElmTmVlZGVkKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKSBjb25zdAogewotICAgIHN3aXRjaCAobV9yZXNvbHZlVVJMcykgewotICAgIGNhc2Ug
UmVzb2x2ZVVSTHM6OlllczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuZG9jdW1lbnQoKS5jb21w
bGV0ZVVSTCh1cmxTdHJpbmcpLnN0cmluZygpOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6WWVz
RXhjbHVkaW5nTG9jYWxGaWxlVVJMc0ZvclByaXZhY3k6Ci0gICAgICAgIGlmICghZWxlbWVudC5k
b2N1bWVudCgpLnVybCgpLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZWxlbWVu
dC5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybFN0cmluZykuc3RyaW5nKCk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgY2FzZSBSZXNvbHZlVVJMczo6Tm86Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICByZXR1cm4gdXJsU3RyaW5nOworICAgIHJldHVybiBlbGVtZW50LnJlc29sdmVVUkxTdHJp
bmdJZk5lZWRlZCh1cmxTdHJpbmcsIG1fcmVzb2x2ZVVSTHMpOwogfQogCiB2b2lkIE1hcmt1cEFj
Y3VtdWxhdG9yOjpzdGFydEFwcGVuZGluZ05vZGUoY29uc3QgTm9kZSYgbm9kZSwgTmFtZXNwYWNl
cyogbmFtZXNwYWNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2Ev
RWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29h
Lm1tCmluZGV4IGY4OGE4MTZlYTYzNzZkMTcyNDBhNjQ4MTFlOTY4YTk1ZjM4OWM4MDMuLjZlOWNk
YTcwMDE4YmM2NGZhN2MwN2I2NzU0ZTc1Y2NkZDcyZTQxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgRWRp
dG9yOjpzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKQogewogICAgIGlmIChJbWFnZU92ZXJsYXk6Omlz
SW5zaWRlT3ZlcmxheShtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVh
cmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olll
c0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6
Olllcyk7CisgICAgcmV0dXJuIHNlcmlhbGl6ZVByZXNlcnZpbmdWaXN1YWxBcHBlYXJhbmNlKG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRp
bmdVUkxzRm9yUHJpdmFjeSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogfQogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9FZGl0
b3JHdGsuY3BwCmluZGV4IDk0ZTM4MTM3NWI5NzcxNzA4MjgyOGUwYzk2NDhiNTQ5N2Q2ZjI0ZmUu
LmVmOTlhMmVmNjliNGUxNDEzOTc4MjA3M2NiMjAyMWNhZTRmYThiYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgRWRp
dG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQog
ICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBhc3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9h
cmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlID0gY2FuU21hcnRDb3B5T3JEZWxldGUoKTsK
ICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVy
KCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zp
c3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2
ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21w
b3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2VyaWFsaXpl
UHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZENvbnRlbnQuY29udGVudE9yaWdpbiA9
IG1fZG9jdW1lbnQub3JpZ2luSWRlbnRpZmllckZvclBhc3RlYm9hcmQoKTsKICAgICBwYXN0ZWJv
YXJkLndyaXRlKHBhc3RlYm9hcmRDb250ZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlODgyYmJjN2QwZjkx
Y2FkNzZjMzgyNTA4ZTlhM2YuLjkwMDVjOTU2ZDVlYjU2M2Q3YjNmYzJkMDdlOGY1ZDhmZGIxNzBi
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQ
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNw
cApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIHsKICAgICBQYXN0ZWJvYXJkV2ViQ29udGVudCBw
YXN0ZWJvYXJkQ29udGVudDsKICAgICBwYXN0ZWJvYXJkQ29udGVudC50ZXh0ID0gc2VsZWN0ZWRU
ZXh0Rm9yRGF0YVRyYW5zZmVyKCk7Ci0gICAgcGFzdGVib2FyZENvbnRlbnQubWFya3VwID0gc2Vy
aWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2
YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CisgICAgcGFzdGVib2FyZENvbnRlbnQu
bWFya3VwID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UobV9kb2N1bWVudC5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRyZWU6Olllcyk7CiAgICAgcGFzdGVib2FyZC53cml0
ZShwYXN0ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQppbmRleCAxYTJjZDAzZjAwY2VlMDI2OTI2YmMzYTI0ZmZhOWJiYzVlMDg5NjYzLi4y
ZmY5YmJkNDgwYzU2Njc5MGQzMWM4ZjYzYjY3NjY2YWMxNDYzZDIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBFZGl0b3I6
OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYg
aW1hZ2VFbGVtZW4KICAgICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbldlYkFyY2hpdmVGb3Jt
YXQgPSBpbWFnZUluV2ViQXJjaGl2ZUZvcm1hdChpbWFnZUVsZW1lbnQpOwogCiAgICAgaWYgKGF1
dG8gaW1hZ2VSYW5nZSA9IG1ha2VSYW5nZVNlbGVjdGluZ05vZGUoaW1hZ2VFbGVtZW50KSkKLSAg
ICAgICAgcGFzdGVib2FyZEltYWdlLmRhdGFJbkhUTUxGb3JtYXQgPSBzZXJpYWxpemVQcmVzZXJ2
aW5nVmlzdWFsQXBwZWFyYW5jZShWaXNpYmxlU2VsZWN0aW9uIHsgKmltYWdlUmFuZ2UgfSwgUmVz
b2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVD
b21wb3NlZFRyZWU6Olllcyk7CisgICAgICAgIHBhc3RlYm9hcmRJbWFnZS5kYXRhSW5IVE1MRm9y
bWF0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoVmlzaWJsZVNlbGVjdGlv
biB7ICppbWFnZVJhbmdlIH0sIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpZZXMpOwogCiAgICAgcGFzdGVib2FyZEltYWdlLnVy
bC51cmwgPSB1cmw7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSA9IHRpdGxlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDIwYjNmY2Y4ZGRmOTU0NDM0OWIxODY0ZWY5ZDli
ZjBmYjRhZWU2NDYuLmFkY2E5ZDFlMDk1YjliZTc0MjEwY2E0ZDUxNzYxZDYxYzRlYjUzNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEwMTEsNyArMTAxMSw3IEBAIFN0cmluZyBz
YW5pdGl6ZWRNYXJrdXBGb3JGcmFnbWVudEluRG9jdW1lbnQoUmVmPERvY3VtZW50RnJhZ21lbnQ+
JiYgZnJhZ21lbnQsIERvCiAKICAgICAvLyBTZXJpYWxpemVDb21wb3NlZFRyZWU6Ok5vIGJlY2F1
c2UgdGhlcmUgY2FuJ3QgYmUgYSBzaGFkb3cgdHJlZSBpbiB0aGUgcGFzdGVkIGZyYWdtZW50Lgog
ICAgIGF1dG8gcmVzdWx0ID0gc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2VJbnRl
cm5hbChmaXJzdFBvc2l0aW9uSW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbGFzdFBvc2l0aW9u
SW5Ob2RlKGJvZHlFbGVtZW50LmdldCgpKSwgbnVsbHB0ciwKLSAgICAgICAgUmVzb2x2ZVVSTHM6
Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LCBTZXJpYWxpemVDb21wb3NlZFRy
ZWU6Ok5vLCBBbm5vdGF0ZUZvckludGVyY2hhbmdlOjpZZXMsIENvbnZlcnRCbG9ja3NUb0lubGlu
ZXM6Ok5vLCAgU3RhbmRhcmRGb250RmFtaWx5U2VyaWFsaXphdGlvbk1vZGU6OlN0cmlwLCBtc29M
aXN0TW9kZSk7CisgICAgICAgIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFj
eSwgU2VyaWFsaXplQ29tcG9zZWRUcmVlOjpObywgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTo6WWVz
LCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzOjpObywgIFN0YW5kYXJkRm9udEZhbWlseVNlcmlhbGl6
YXRpb25Nb2RlOjpTdHJpcCwgbXNvTGlzdE1vZGUpOwogCiAgICAgaWYgKG1zb0xpc3RNb2RlICE9
IE1TT0xpc3RNb2RlOjpQcmVzZXJ2ZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5oCmluZGV4IDkyNTExYTkzNDY2YmE5NDg0MTI0MWJhZmQ2NGUwZmNkMTNlMTFh
ZTMuLjQxNzQwZWZmN2JkOWM1YTU1MTNmZjEwM2MyYmVjNDlhNmIwYTgyNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZsb2F0
U2l6ZS5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgpAQCAtNzAs
NyArNzEsNiBAQCBib29sIGlzUGxhaW5UZXh0TWFya3VwKE5vZGUqKTsKIC8vIFRoZXNlIG1ldGhv
ZHMgYXJlIHVzZWQgYnkgSFRNTEVsZW1lbnQgJiBTaGFkb3dSb290IHRvIHJlcGxhY2UgdGhlIGNo
aWxkcmVuIHdpdGggcmVzcGVjdGVkIGZyYWdtZW50L3RleHQuCiBFeGNlcHRpb25Pcjx2b2lkPiBy
ZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYsIFJlZjxEb2N1bWVudEZy
YWdtZW50PiYmKTsKIAotZW51bSBjbGFzcyBSZXNvbHZlVVJMcyA6IHVpbnQ4X3QgeyBObywgWWVz
LCBZZXNFeGNsdWRpbmdMb2NhbEZpbGVVUkxzRm9yUHJpdmFjeSB9OwogZW51bSBjbGFzcyBDb252
ZXJ0QmxvY2tzVG9JbmxpbmVzIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgU2Vy
aWFsaXplQ29tcG9zZWRUcmVlIDogdWludDhfdCB7IE5vLCBZZXMgfTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShjb25zdCBTaW1wbGVS
YW5nZSYsIFZlY3RvcjxOb2RlKj4qID0gbnVsbHB0ciwgQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSA9
IEFubm90YXRlRm9ySW50ZXJjaGFuZ2U6Ok5vLCBDb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gQ29u
dmVydEJsb2Nrc1RvSW5saW5lczo6Tm8sIFJlc29sdmVVUkxzID0gUmVzb2x2ZVVSTHM6Ok5vKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDc5OGZlODZiYzRm
MzIwMjY3MWNkMmQ3MTQ2NjAwMGI2ZWJhYmI2YmYuLmI0OGM1NDIzMWQxZmE2NGY2Yzk4NjExMWY3
MGYyOTdlZTVkYWZiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNw
cApAQCAtNTY1LDcgKzU2NSw3IEBAIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6YXR0cmlidXRlQ29u
dGFpbnNVUkwoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAgICAgIHx8IEhU
TUxFbGVtZW50OjphdHRyaWJ1dGVDb250YWluc1VSTChhdHRyaWJ1dGUpOwogfQogCi1TdHJpbmcg
SFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25zdCBVUkwm
IGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAorU3RyaW5nIEhUTUxJbWFn
ZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSwgUmVzb2x2ZVVSTHMgcmVzb2x2ZVVSTHMpIGNvbnN0
CiB7CiAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3Jjc2V0QXR0cikgewogICAgICAgICBW
ZWN0b3I8SW1hZ2VDYW5kaWRhdGU+IGltYWdlQ2FuZGlkYXRlcyA9IHBhcnNlSW1hZ2VDYW5kaWRh
dGVzRnJvbVNyY3NldEF0dHJpYnV0ZShTdHJpbmdWaWV3KGF0dHJpYnV0ZS52YWx1ZSgpKSk7CkBA
IC01NzMsNyArNTczLDcgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlVVJMc0lu
QXR0cmlidXRlVmFsdWUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBBdHQKICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBjYW5kaWRhdGUgOiBpbWFnZUNhbmRpZGF0ZXMpIHsKICAgICAgICAgICAgIGlm
ICgmY2FuZGlkYXRlICE9ICZpbWFnZUNhbmRpZGF0ZXNbMF0pCiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiLCAiKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoVVJMKGJhc2UsIGNh
bmRpZGF0ZS5zdHJpbmcudG9TdHJpbmcoKSkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQoY2FuZGlkYXRlLnN0cmluZy50b1N0cmlu
ZygpLCByZXNvbHZlVVJMcywgYmFzZSkpOwogICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5kZW5z
aXR5ICE9IFVuaW5pdGlhbGl6ZWREZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAnLCBjYW5kaWRhdGUuZGVuc2l0eSwgJ3gnKTsKICAgICAgICAgICAgIGlmIChjYW5k
aWRhdGUucmVzb3VyY2VXaWR0aCAhPSBVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKQEAgLTU4MSw3
ICs1ODEsOCBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6Y29tcGxldGVVUkxzSW5BdHRyaWJ1
dGVWYWx1ZShjb25zdCBVUkwmIGJhc2UsIGNvbnN0IEF0dAogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50Ojpj
b21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGJhc2UsIGF0dHJpYnV0ZSk7CisKKyAgICByZXR1
cm4gSFRNTEVsZW1lbnQ6OmNvbXBsZXRlVVJMc0luQXR0cmlidXRlVmFsdWUoYmFzZSwgYXR0cmli
dXRlLCByZXNvbHZlVVJMcyk7CiB9CiAKIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6bWF0Y2hlc1Vz
ZW1hcChjb25zdCBBdG9tU3RyaW5nSW1wbCYgbmFtZSkgY29uc3QKQEAgLTg3Niw2ICs4NzcsMTYg
QEAgc2l6ZV90IEhUTUxJbWFnZUVsZW1lbnQ6OnBlbmRpbmdEZWNvZGVQcm9taXNlc0NvdW50Rm9y
VGVzdGluZygpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2VMb2FkZXItPnBlbmRpbmdEZWNvZGVQ
cm9taXNlc0NvdW50Rm9yVGVzdGluZygpOwogfQogCitBdG9tU3RyaW5nIEhUTUxJbWFnZUVsZW1l
bnQ6OnNyY3NldEZvckJpbmRpbmdzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
Rm9yQmluZGluZ3Moc3Jjc2V0QXR0cik7Cit9CisKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0
U3Jjc2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCit7CisgICAgc2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNzZXRBdHRyLCB2YWx1ZSk7Cit9CisKIGNv
bnN0IEF0b21TdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmxvYWRpbmdGb3JCaW5kaW5ncygpIGNv
bnN0CiB7CiAgICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ryb3llZDxjb25zdCBBdG9tU3Ry
aW5nPiBlYWdlcigiZWFnZXIiLCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IDFkOTlkMzIxN2I1NmZlM2Mx
YzVkMGM1NThkN2ViNDczYTk4OWMzZWMuLmU4NGI1YTI5ZmY2Y2YwMWJhMjM3M2E0YTRjNDgwMTIx
MTJhZDNhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC0xMjks
NiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkRGVmZXJyZWRJbWFnZSgpOwogCisg
ICAgQXRvbVN0cmluZyBzcmNzZXRGb3JCaW5kaW5ncygpIGNvbnN0OworICAgIHZvaWQgc2V0U3Jj
c2V0Rm9yQmluZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOworCiAgICAgY29uc3QgQXRvbVN0cmlu
ZyYgbG9hZGluZ0ZvckJpbmRpbmdzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRMb2FkaW5nRm9yQmlu
ZGluZ3MoY29uc3QgQXRvbVN0cmluZyYpOwogCkBAIC0xNzMsNyArMTc2LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBhdHRyaWJ1dGVDb250YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmKSBjb25z
dCBvdmVycmlkZTsKLSAgICBTdHJpbmcgY29tcGxldGVVUkxzSW5BdHRyaWJ1dGVWYWx1ZShjb25z
dCBVUkwmIGJhc2UsIGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
cmlidXRlJiwgUmVzb2x2ZVVSTHMgPSBSZXNvbHZlVVJMczo6WWVzKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNEcmFnZ2FibGVJZ25vcmluZ0F0dHJpYnV0ZXMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaWRs
CmluZGV4IGY5MzYzODYyYzkyODRjNmEwYzc4YjNhNzBjNzdmNjIxNDA4MWYwMjUuLmNkYjY5NjMz
OTQ2ZDNiZDdkYzc3OWQ1YWZmMDdjZDJkZDVkNGJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmlkbApAQCAtMjgsNyArMjgsNyBAQAogXSBpbnRlcmZhY2UgSFRNTElt
YWdlRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBS
ZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFsdDsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVl
ZGVkLCBSZWZsZWN0LCBVUkxdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3JjOwotICAgIFtDRVJlYWN0
aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OworICAg
IFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIEltcGxlbWVudGVkQXM9c3Jjc2V0Rm9yQmluZGluZ3Nd
IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgc3Jjc2V0OwogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQs
IFJlZmxlY3RdIGF0dHJpYnV0ZSBET01TdHJpbmcgc2l6ZXM7CiAgICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZF0gYXR0cmlidXRlIERPTVN0cmluZz8gY3Jvc3NPcmlnaW47CiAgICAgW0NFUmVhY3Rp
b25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyB1c2VNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCA2NjNmOTg0YjU3ZDRkMGVkMzQzOWYwOTEzYzE0YjFjYjFlMThmYzE3
Li5lNmM4MTUxMWM0NjExYmRlNDRhNDNlMWM5YjlhYzBjZmJmM2E3Nzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTMzNyw2ICszMzcsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5kZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyKSkKICNlbmRpZgogICAgICwgbV9jb3JzRGlzYWJsaW5nUGF0dGVybnMoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5jb3JzRGlzYWJsaW5nUGF0dGVybnMpKQorICAgICwgbV9tYXNrZWRVUkxT
Y2hlbWVzKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubWFza2VkVVJMU2NoZW1lcykpCiAgICAg
LCBtX2FsbG93ZWROZXR3b3JrSG9zdHMoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2Vk
TmV0d29ya0hvc3RzKSkKICAgICAsIG1fbG9hZHNTdWJyZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRp
b24ubG9hZHNTdWJyZXNvdXJjZXMpCiAgICAgLCBtX3Nob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nKHBhZ2VDb25maWd1cmF0aW9uLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nKQpAQCAtMzcyOSw2ICszNzMwLDEzIEBAIGJvb2wgUGFnZTo6c2hvdWxkRGlzYWJsZUNv
cnNGb3JSZXF1ZXN0VG8oY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgfSk7CiB9CiAKK2Jvb2wg
UGFnZTo6c2hvdWxkTWFza1VSTEZvckJpbmRpbmdzKGNvbnN0IFVSTCYgdXJsKSBjb25zdAorewor
ICAgIGlmIChtX21hc2tlZFVSTFNjaGVtZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fbWFza2VkVVJMU2NoZW1lcy5jb250YWlucyh1cmwucHJvdG9jb2wo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpOworfQorCiB2b2lkIFBhZ2U6OnJldmVhbEN1cnJl
bnRTZWxlY3Rpb24oKQogewogICAgIENoZWNrZWRSZWYoZm9jdXNDb250cm9sbGVyKCkpLT5mb2N1
c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2
ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAppbmRleCA3NjEyOGMyMjEzYmZjMTU0MTliNDFhOTdjYTNjZDBkZGExMDM1Yzgx
Li5hNDAyYTc1Zjc3NWJkNTQ3OTY4YjVjM2NmZDM0YTJhMWRmZjUzMGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aApAQCAtOTA5LDYgKzkwOSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hGcmFtZShjb25z
dCBGdW5jdGlvbjx2b2lkKEZyYW1lJik+Jik7CiAKICAgICBib29sIHNob3VsZERpc2FibGVDb3Jz
Rm9yUmVxdWVzdFRvKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkTWFza1VSTEZv
ckJpbmRpbmdzKGNvbnN0IFVSTCYpIGNvbnN0OworICAgIGJvb2wgaGFzVVJMc1RvTWFza0ZvckJp
bmRpbmdzKCkgY29uc3QgeyByZXR1cm4gIW1fbWFza2VkVVJMU2NoZW1lcy5pc0VtcHR5KCk7IH0K
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5qZWN0VXNlclN0eWxlU2hlZXQoVXNlclN0eWxl
U2hlZXQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUluamVjdGVkVXNlclN0eWxl
U2hlZXQoVXNlclN0eWxlU2hlZXQmKTsKQEAgLTEyNzksNiArMTI4MSw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogICAgIFZlY3RvcjxVc2VyQ29udGVudFVSTFBhdHRlcm4+IG1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX21hc2tlZFVSTFNjaGVtZXM7CiAgICAg
VmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0c1BlbmRpbmdJbmplY3Rpb247
CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IG1fYWxsb3dlZE5ldHdvcmtIb3N0
czsKICAgICBib29sIG1faXNUYWtpbmdTbmFwc2hvdHNGb3JBcHBsaWNhdGlvblN1c3BlbnNpb24g
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQy
YTk0NGVkZDFiMzlkN2QyYzYxMGFlMDMxOGEyMDZmOTVjYmI1YWUuLmViODE3ZTZiNWI1YjRkN2Jl
Y2FhMmExZTViOGRmYzBlYzgwZjc2ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmgKQEAgLTEzOSw2ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPERldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXI+IGRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXI7
CiAjZW5kaWYKICAgICBWZWN0b3I8VXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBjb3JzRGlzYWJsaW5n
UGF0dGVybnM7CisgICAgSGFzaFNldDxTdHJpbmc+IG1hc2tlZFVSTFNjaGVtZXM7CiAgICAgVW5p
cXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+IHNwZWVjaFJlY29nbml0aW9uUHJvdmlk
ZXI7CiAgICAgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4gbWVkaWFSZWNvcmRlclBy
b3ZpZGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggMGIyNWZmNmMzOGM4NjM0ZjM3ZWVhMmFmZDAyNGE4ZDQyYTRmNDJjNS4uNDE3YTc5
MGFjNWMzNDlkOGRiNGMyOTg4M2ZlMWU4MjUxYzgxNWQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNTA5LDcgKzUwOSw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24oY29uc3QgU2ltcGxlUmFuZ2UmIHNlbGVjdGVkUmFu
Z2UsIGJvb2wgY2FuU21hcnRDCiAgICAgLy8gUHV0IENGX0hUTUwgZm9ybWF0IG9uIHRoZSBwYXN0
ZWJvYXJkIAogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVj
dG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgUmVzb2x2ZVVSTHM6Olllc0V4
Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5LgorICAgICAgICAvLyBGSVhNRTogVXNlIFJl
c29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxzRm9yUHJpdmFjeS4KICAgICAgICAgbWFya3VwVG9D
RkhUTUwoc2VyaWFsaXplUHJlc2VydmluZ1Zpc3VhbEFwcGVhcmFuY2UoZnJhbWUuc2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkpLAogICAgICAgICAgICAgc2VsZWN0ZWRSYW5nZS5zdGFydC5jb250YWlu
ZXItPmRvY3VtZW50KCkudXJsKCkuc3RyaW5nKCksIGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNi
RGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGVjNDM5ZDA2NzE0ZTZkZTVi
OTRlMjFmYjljZThlZTIzOWM5NjIyZmEuLjlmZDdiZWIxYWU3YWVmYWUxNjQ1ZWUyZTI0Y2Y5ZDJh
NGY2N2NmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCkBAIC0xNDgsNiArMTQ4LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29k
ZXIgPDwgb2xkUGFnZUlEOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGRlbk1lZGlhVHlwZTsKICAg
ICBlbmNvZGVyIDw8IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBlbmNvZGVyIDw8IG1hc2tl
ZFVSTFNjaGVtZXM7CiAgICAgZW5jb2RlciA8PCBsb2Fkc1N1YnJlc291cmNlczsKICAgICBlbmNv
ZGVyIDw8IGFsbG93ZWROZXR3b3JrSG9zdHM7CiAgICAgZW5jb2RlciA8PCB1c2VyU2NyaXB0c1No
b3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsKQEAgLTQ5NSw2ICs0OTYsMTIgQEAgc3RkOjpvcHRp
b25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBwYXJhbWV0
ZXJzLmNvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IFdURk1vdmUoKmNvcnNEaXNhYmxpbmdQYXR0ZXJu
cyk7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPEhhc2hTZXQ8U3RyaW5nPj4gbWFza2VkVVJMU2NoZW1l
czsKKyAgICBkZWNvZGVyID4+IG1hc2tlZFVSTFNjaGVtZXM7CisgICAgaWYgKCFtYXNrZWRVUkxT
Y2hlbWVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMubWFz
a2VkVVJMU2NoZW1lcyA9IFdURk1vdmUoKm1hc2tlZFVSTFNjaGVtZXMpOworCiAgICAgc3RkOjpv
cHRpb25hbDxib29sPiBsb2Fkc1N1YnJlc291cmNlczsKICAgICBkZWNvZGVyID4+IGxvYWRzU3Vi
cmVzb3VyY2VzOwogICAgIGlmICghbG9hZHNTdWJyZXNvdXJjZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggY2I3NDE2OTNkYjMw
YTc1MDJiNDg5YzgzOTdjZWY2YzczOWZlZGE5MS4uMjg2YTFlN2Q5NTBkZTBhNTRhNmZhNDM4OGZj
ZmY1Mzg2ZTlhNjc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaApAQCAtMjE5LDYgKzIxOSw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBvdmVycmlkZGVuTWVkaWFUeXBlOwogICAgIFZl
Y3RvcjxTdHJpbmc+IGNvcnNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoU2V0PFN0cmluZz4g
bWFza2VkVVJMU2NoZW1lczsKICAgICBib29sIHVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90
aWZpY2F0aW9uIHsgdHJ1ZSB9OwogICAgIGJvb2wgbG9hZHNTdWJyZXNvdXJjZXMgeyB0cnVlIH07
CiAgICAgc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmluZz4+IGFsbG93ZWROZXR3b3JrSG9zdHM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3Vy
YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBhZ2VDb25maWd1cmF0
aW9uLmNwcAppbmRleCBiNjkyOTY2YTNlZjZhOTg2Y2I2MDNkMGYzYTFlODgwMjc2MTQ5YTNlLi4x
NmZkY2I3ZmUxNGUyMDQ5ZGYwYWZlMTZkZTFjMTM1NDM4NmI4OGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTgz
LDYgKzgzLDcgQEAgUmVmPFBhZ2VDb25maWd1cmF0aW9uPiBQYWdlQ29uZmlndXJhdGlvbjo6Y29w
eSgpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBwYWlyIDogdGhpcy0+bV91cmxTY2hlbWVIYW5kbGVy
cykKICAgICAgICAgY29weS0+bV91cmxTY2hlbWVIYW5kbGVycy5zZXQocGFpci5rZXksIHBhaXIu
dmFsdWUuY29weVJlZigpKTsKICAgICBjb3B5LT5tX2NvcnNEaXNhYmxpbmdQYXR0ZXJucyA9IHRo
aXMtPm1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIGNvcHktPm1fbWFza2VkVVJMU2NoZW1l
cyA9IHRoaXMtPm1fbWFza2VkVVJMU2NoZW1lczsKICAgICBjb3B5LT5tX2Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbENoZWNrRW5hYmxlZCA9IHRoaXMtPm1fY3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
Q2hlY2tFbmFibGVkOwogICAgIGNvcHktPm1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3Rp
ZmljYXRpb24gPSB0aGlzLT5tX3VzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9u
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUGFnZUNvbmZp
Z3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJh
dGlvbi5oCmluZGV4IDQyYjJjYzVkZWZmZWY3YWNmNzMzNDllZjM5NmZmNWI0ZjQyYmNjYjQuLmY4
ZmZiZDk3MjAxZTQ1NmJkMzEzOTM0NTYwMDdhZDRmNGMxMjRlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQYWdlQ29uZmlndXJhdGlvbi5oCkBAIC0xNDMsNyAr
MTQzLDEwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNvcnNE
aXNhYmxpbmdQYXR0ZXJucygpIGNvbnN0IHsgcmV0dXJuIG1fY29yc0Rpc2FibGluZ1BhdHRlcm5z
OyB9CiAgICAgdm9pZCBzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoVmVjdG9yPFdURjo6U3RyaW5n
PiYmIHBhdHRlcm5zKSB7IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zID0gV1RGTW92ZShwYXR0ZXJu
cyk7IH0KLSAgICAKKworICAgIGNvbnN0IEhhc2hTZXQ8V1RGOjpTdHJpbmc+JiBtYXNrZWRVUkxT
Y2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrZWRVUkxTY2hlbWVzOyB9CisgICAgdm9pZCBz
ZXRNYXNrZWRVUkxTY2hlbWVzKEhhc2hTZXQ8V1RGOjpTdHJpbmc+JiYgc2NoZW1lcykgeyBtX21h
c2tlZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKHNjaGVtZXMpOyB9CisKICAgICBib29sIHVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbjsgfQogICAgIHZvaWQgc2V0VXNlclNjcmlw
dHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24oYm9vbCB2YWx1ZSkgeyBtX3VzZXJTY3JpcHRz
U2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gdmFsdWU7IH0KIApAQCAtMjI3LDYgKzIzMCw3
IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFdURjo6U3RyaW5nLCBSZWY8V2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyPj4gbV91cmxTY2hlbWVIYW5kbGVyczsKICAgICBWZWN0b3I8V1RGOjpT
dHJpbmc+IG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zOworICAgIEhhc2hTZXQ8V1RGOjpTdHJpbmc+
IG1fbWFza2VkVVJMU2NoZW1lczsKICAgICBib29sIG1fdXNlclNjcmlwdHNTaG91bGRXYWl0VW50
aWxOb3RpZmljYXRpb24geyB0cnVlIH07CiAgICAgYm9vbCBtX2Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbENoZWNrRW5hYmxlZCB7IHRydWUgfTsKICAgICBXVEY6OlN0cmluZyBtX3Byb2Nlc3NEaXNw
bGF5TmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggMDRlMDQ0Mjk4ODMxY2NhY2NkZDc1
MzFlNDRjNDA0NTdlZDZjNTY0OS4uMGEyZjlmMjdkMTY5ZGU2OWM3NzI5ZDI4MmI0OGQzY2Y2MTJj
NjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTk3OCw2ICs5NzgsMjMgQEAgLSAodm9p
ZClfc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zOihOU0FycmF5PE5TU3RyaW5nICo+ICopcGF0dGVy
bnMKICAgICBfcGFnZUNvbmZpZ3VyYXRpb24tPnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhtYWtl
VmVjdG9yPFN0cmluZz4ocGF0dGVybnMpKTsKIH0KIAorLSAoTlNTZXQ8TlNTdHJpbmcgKj4gKilf
bWFza2VkVVJMU2NoZW1lcworeworICAgIGNvbnN0IGF1dG8mIHNjaGVtZXMgPSBfcGFnZUNvbmZp
Z3VyYXRpb24tPm1hc2tlZFVSTFNjaGVtZXMoKTsKKyAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcg
Kj4gKnNldCA9IFtOU011dGFibGVTZXQgc2V0V2l0aENhcGFjaXR5OnNjaGVtZXMuc2l6ZSgpXTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IHNjaGVtZXMpCisgICAgICAgIFtzZXQgYWRk
T2JqZWN0OnNjaGVtZV07CisgICAgcmV0dXJuIHNldDsKK30KKworLSAodm9pZClfc2V0TWFza2Vk
VVJMU2NoZW1lczooTlNTZXQ8TlNTdHJpbmcgKj4gKilzY2hlbWVzCit7CisgICAgSGFzaFNldDxT
dHJpbmc+IHNldDsKKyAgICBmb3IgKE5TU3RyaW5nICpzY2hlbWUgaW4gc2NoZW1lcykKKyAgICAg
ICAgc2V0LmFkZChzY2hlbWUpOworICAgIF9wYWdlQ29uZmlndXJhdGlvbi0+c2V0TWFza2VkVVJM
U2NoZW1lcyhXVEZNb3ZlKHNldCkpOworfQorCiAtICh2b2lkKV9zZXRMb2Fkc0Zyb21OZXR3b3Jr
OihCT09MKWxvYWRzCiB7CiAgICAgX3BhZ2VDb25maWd1cmF0aW9uLT5zZXRBbGxvd2VkTmV0d29y
a0hvc3RzKGxvYWRzID8gc3RkOjpudWxsb3B0IDogc3RkOjpvcHRpb25hbDxIYXNoU2V0PFN0cmlu
Zz4+IHsgSGFzaFNldDxTdHJpbmc+IHsgfSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgKaW5kZXggODEzNjU1N2MxZmFhNTY0MDljOTBlOGM0YWNlNWYxMjIyMmM1MjhiYi4uOGNh
Yzk5ZTk1ZTI3ODNkMjk2YTMwYzYzNzMwM2RmYWM1N2Y2NTAyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmgKQEAgLTgyLDYgKzgyLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TVUlu
dGVnZXIsIF9XS0F0dHJpYnV0aW9uT3ZlcnJpZGVUZXN0aW5nKSB7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgV0tXZWJzaXRlRGF0YVN0b3JlICpfd2Vic2l0ZURhdGFTdG9yZUlm
RXhpc3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSwgc2V0dGVyPV9zZXRDT1JTRGlzYWJsaW5nUGF0dGVybnM6
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpfY29yc0Rpc2FibGluZ1BhdHRlcm5zIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgc2V0dGVyPV9zZXRNYXNrZWRVUkxTY2hlbWVzOikgTlNTZXQ8TlNTdHJpbmcgKj4gKl9t
YXNrZWRVUkxTY2hlbWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREZWZlcnJhYmxl
VXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb246KSBCT09MIF9kZWZlcnJhYmxl
VXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMS4wKSwgaW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dENyb3NzT3JpZ2luQWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZDopIEJPT0wgX2Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbENoZWNrRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBp
b3MoMTQuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAxYzdhZDQ0YzI0NmFkNzA5NzdhZmE3YzZlNDNiZDAzY2MyMDViNmVjLi43MWI0N2RiNDZhZjg2
OTBmZTQxMjFmNmUwZmZlZTc0MjczNDMyZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTgzNzcsNiArODM3Nyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jCiAKICAgICBwYXJhbWV0ZXJzLm92ZXJyaWRkZW5NZWRpYVR5cGUgPSBtX292ZXJyaWRkZW5N
ZWRpYVR5cGU7CiAgICAgcGFyYW1ldGVycy5jb3JzRGlzYWJsaW5nUGF0dGVybnMgPSBjb3JzRGlz
YWJsaW5nUGF0dGVybnMoKTsKKyAgICBwYXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXMgPSBtX2Nv
bmZpZ3VyYXRpb24tPm1hc2tlZFVSTFNjaGVtZXMoKTsKICAgICBwYXJhbWV0ZXJzLnVzZXJTY3Jp
cHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uID0gbV9jb25maWd1cmF0aW9uLT51c2VyU2Ny
aXB0c1Nob3VsZFdhaXRVbnRpbE5vdGlmaWNhdGlvbigpOwogICAgIHBhcmFtZXRlcnMuYWxsb3dl
ZE5ldHdvcmtIb3N0cyA9IG1fY29uZmlndXJhdGlvbi0+YWxsb3dlZE5ldHdvcmtIb3N0cygpOwog
ICAgIHBhcmFtZXRlcnMubG9hZHNTdWJyZXNvdXJjZXMgPSBtX2NvbmZpZ3VyYXRpb24tPmxvYWRz
U3VicmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKaW5kZXgg
YmY0ZDI4ZTNlOGRlZmFhNDI2YmI4ZjVjMTA5ZTYyZmM3ZjEwOGE2MS4uMjBkYzA0MmU4NWNkYTI3
ZWE5NTlkNDNkYmE1ZGE0ZjNlYmE0NmM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50
R3RrLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp1cGRhdGVH
bG9iYWxTZWxlY3Rpb24oRnJhbWUqIGZyYW1lKQogICAgIFBhc3RlYm9hcmRXZWJDb250ZW50IHBh
c3RlYm9hcmRDb250ZW50OwogICAgIHBhc3RlYm9hcmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVs
ZXRlID0gZmFsc2U7CiAgICAgcGFzdGVib2FyZENvbnRlbnQudGV4dCA9IHBsYWluVGV4dCgqcmFu
Z2UpOwotICAgIHBhc3RlYm9hcmRDb250ZW50Lm1hcmt1cCA9IHNlcmlhbGl6ZVByZXNlcnZpbmdW
aXN1YWxBcHBlYXJhbmNlKGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwgUmVzb2x2ZVVS
THM6Olllc0V4Y2x1ZGluZ0xvY2FsRmlsZVVSTHNGb3JQcml2YWN5KTsKKyAgICBwYXN0ZWJvYXJk
Q29udGVudC5tYXJrdXAgPSBzZXJpYWxpemVQcmVzZXJ2aW5nVmlzdWFsQXBwZWFyYW5jZShmcmFt
ZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCksIFJlc29sdmVVUkxzOjpZZXNFeGNsdWRpbmdVUkxz
Rm9yUHJpdmFjeSk7CiAgICAgUGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKFBh
Z2VQYXN0ZWJvYXJkQ29udGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdlSUQoKSkpLT53cml0ZShwYXN0
ZWJvYXJkQ29udGVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggMGFhN2ZhNGQ0NjU3MzJkODM0YTlhZDI1N2E1MTUzZDFiYjBkOGI2
Ny4uZTFjNjBlZWExZDM5MGRmYWMwNTllMjMxYTI0OThkNjYxMjFiZTExOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY0Myw2ICs2NDMsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIHN5bmNocm9uaXplQ09SU0Rpc2FibGlu
Z1BhdHRlcm5zV2l0aE5ldHdvcmtQcm9jZXNzKCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29y
c0Rpc2FibGluZ1BhdHRlcm5zID0gcGFyc2VBbmRBbGxvd0FjY2Vzc1RvQ09SU0Rpc2FibGluZ1Bh
dHRlcm5zKG1fY29yc0Rpc2FibGluZ1BhdHRlcm5zKTsKIAorICAgIHBhZ2VDb25maWd1cmF0aW9u
Lm1hc2tlZFVSTFNjaGVtZXMgPSBwYXJhbWV0ZXJzLm1hc2tlZFVSTFNjaGVtZXM7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24udXNlclNjcmlwdHNTaG91bGRXYWl0VW50aWxOb3RpZmljYXRpb24gPSBw
YXJhbWV0ZXJzLnVzZXJTY3JpcHRzU2hvdWxkV2FpdFVudGlsTm90aWZpY2F0aW9uOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRzU3VicmVzb3VyY2VzID0gcGFyYW1ldGVycy5sb2Fkc1N1YnJl
c291cmNlczsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hbGxvd2VkTmV0d29ya0hvc3RzID0gcGFy
YW1ldGVycy5hbGxvd2VkTmV0d29ya0hvc3RzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzZTZhZDRiMjNkZmU2NTRhOTJlYzNlZDdiZWM3NTcx
N2E4Nzk0ZTYuLjc4OTVmYmY3OWRmMTYxNDcyNmQyOTUxNWRhMWFkNjA0ZGY5NDYxMGQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAyMi0wNC0wMyAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGFiaWxpdHkgdG8gbWFzayBVUkxzIGZyb20gRE9NIGFuZCBKYXZhU2NyaXB0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzYK
KyAgICAgICAgcmRhcjovLzgxOTkxMjQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgIChURVNUKFdlYktpdCwgQ29uZmlndXJhdGlv
bk1hc2tlZFVSTFNjaGVtZXMpKTogQWRkZWQuCisKIDIwMjItMDMtMjIgIEpvbmF0aGFuIEJlZGFy
ZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZXJnZS1RdWV1ZV0gQWRkIFZhbGlk
YXRlU3F1YXNoZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBjMDc1ZGQ1MzRm
ZGE4NmY2NzkyYzE5YWRkMGUyNTFlOGFmMzAyMDNkLi5mMDAyZmVkNjIyNmZkNzkxNDIyY2E1NDQ2
ZGUxM2VlZDRlNTBkMjJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dFByb3RvY29sLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZh
dGUuaD4KQEAgLTE3MiwzICsxNzMsNjcgQEAgVEVTVChXZWJLaXQsIENvbmZpZ3VyYXRpb25EaXNh
YmxlSmF2YVNjcmlwdE5lc3RlZEJvZHkpCiAgICAgTlNTdHJpbmcgKmJvZHlIVE1MID0gW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1M
Il07CiAgICAgRVhQRUNUX1dLX1NUUkVRKGJvZHlIVE1MLCBAIjx0YWJsZT48L3RhYmxlPiIpOwog
fQorCitURVNUKFdlYktpdCwgQ29uZmlndXJhdGlvbk1hc2tlZFVSTFNjaGVtZXMpCit7CisgICAg
W1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwcyJdOworCisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKKyAg
ICBFWFBFQ1RfRVEoW2NvbmZpZ3VyYXRpb24gX21hc2tlZFVSTFNjaGVtZXNdLmNvdW50LCAwVSk7
CisKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0TWFza2VkVVJMU2NoZW1lczpbTlNTZXQgc2V0V2l0
aE9iamVjdHM6QCJ0ZXN0LXNjaGVtZSIsIEAiYW5vdGhlci1zY2hlbWUiLCBuaWxdXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxp
bWcgc3JjPVwidGVzdC1zY2hlbWU6Ly9mb28uY29tL2Jhci5qcGdcIj48aW1nIHNyYz1cImJhei5w
bmdcIj4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29t
Il1dOworCisgICAgTlNTdHJpbmcgKmltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0u
c3JjIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBAIndlYmtpdC1tYXNrZWQt
dXJsOi8vaGlkZGVuLyIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsw
XS5nZXRBdHRyaWJ1dGUoXCJzcmNcIikiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3Vy
Y2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIik7CisKKyAgICBpbWFnZVNvdXJjZSA9
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKFwiaW1nXCIpWzBdLmdldEF0dHJpYnV0ZU5vZGUoXCJzcmNcIikudmFsdWUiXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9o
aWRkZW4vIik7CisKKyAgICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzFdLnNyYyJd
OworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJodHRwczovL2V4YW1wbGUuY29t
L2Jhei5wbmciKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0
QXR0cmlidXRlKFwic3JjXCIpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKGltYWdlU291cmNlLCBA
ImJhei5wbmciKTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMV0uZ2V0
QXR0cmlidXRlTm9kZShcInNyY1wiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFn
ZVNvdXJjZSwgQCJiYXoucG5nIik7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8aW1nIHNyY3NldD1cInRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9iYXIuanBnIDF4
LCBiYXIuanBnIDJ4LCBhbm90aGVyLXNjaGVtZTovL2Zvby5jb20vYmFyLmdpZiAzeFwiPjxpbWcg
c3Jjc2V0PVwiaHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwgYmF6LnBuZyAxeFwiPiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CisKKyAg
ICBpbWFnZVNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiaW1nXCIpWzBdLnNyY3NldCJdOworICAgIEVYUEVD
VF9XS19TVFJFUShpbWFnZVNvdXJjZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gMXgs
IGJhci5qcGcgMngsIHdlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyAzeCIpOworCisgICAgaW1h
Z2VTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVswXS5nZXRBdHRyaWJ1dGUoXCJzcmNzZXRcIiki
XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6
Ly9oaWRkZW4vIDF4LCBiYXIuanBnIDJ4LCB3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gM3gi
KTsKKworICAgIGltYWdlU291cmNlID0gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbWdcIilbMF0uZ2V0QXR0cmlidXRl
Tm9kZShcInNyY3NldFwiKS52YWx1ZSJdOworICAgIEVYUEVDVF9XS19TVFJFUShpbWFnZVNvdXJj
ZSwgQCJ3ZWJraXQtbWFza2VkLXVybDovL2hpZGRlbi8gMXgsIGJhci5qcGcgMngsIHdlYmtpdC1t
YXNrZWQtdXJsOi8vaGlkZGVuLyAzeCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChc
ImltZ1wiKVsxXS5zcmNzZXQiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAi
aHR0cHM6Ly9hcHBsZS5jb20vYmF6LnBuZyAyeCwgYmF6LnBuZyAxeCIpOworCisgICAgaW1hZ2VT
b3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbChcImltZ1wiKVsxXS5nZXRBdHRyaWJ1dGUoXCJzcmNzZXRcIikiXTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoaW1hZ2VTb3VyY2UsIEAiaHR0cHM6Ly9hcHBsZS5jb20vYmF6
LnBuZyAyeCwgYmF6LnBuZyAxeCIpOworCisgICAgaW1hZ2VTb3VyY2UgPSBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImlt
Z1wiKVsxXS5nZXRBdHRyaWJ1dGVOb2RlKFwic3Jjc2V0XCIpLnZhbHVlIl07CisgICAgRVhQRUNU
X1dLX1NUUkVRKGltYWdlU291cmNlLCBAImh0dHBzOi8vYXBwbGUuY29tL2Jhei5wbmcgMngsIGJh
ei5wbmcgMXgiKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjxzY3JpcHQgc3JjPVwiYW5vdGhlci1zY2hlbWU6Ly9mb28uY29tL2Jhci5qc1wiPjwvc2NyaXB0
PjxzY3JpcHQgc3JjPVwiaHR0cDovL2FwcGxlLmNvbS9iYXouanNcIj48L3NjcmlwdD4iIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2V4YW1wbGUuY29tIl1dOworCisgICAg
TlNTdHJpbmcgKnNjcmlwdFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0XCIpWzBdLnNyYyJdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShzY3JpcHRTb3VyY2UsIEAid2Via2l0LW1hc2tlZC11cmw6Ly9o
aWRkZW4vIik7CisKKyAgICBzY3JpcHRTb3VyY2UgPSBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFwiKVsxXS5z
cmMiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoc2NyaXB0U291cmNlLCBAImh0dHA6Ly9hcHBsZS5j
b20vYmF6LmpzIik7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCI8aWZyYW1lIHNyYz1cInRlc3Qtc2NoZW1lOi8vZm9vLmNvbS9iYXIuaHRtbFwiPjwvaWZyYW1l
PjxpZnJhbWUgc3JjPVwiaHR0cDovL2FwcGxlLmNvbS9iYXouaHRtbFwiPjwvaWZyYW1lPiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vZXhhbXBsZS5jb20iXV07CisKKyAg
ICBOU1N0cmluZyAqaHRtbFNvdXJjZSA9IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdOworICAgIEVYUEVDVF9FUShbaHRtbFNv
dXJjZSBjb250YWluc1N0cmluZzpAIjxpZnJhbWUgc3JjPVwid2Via2l0LW1hc2tlZC11cmw6Ly9o
aWRkZW4vXCI+PC9pZnJhbWU+Il0sIFlFUyk7Cit9Cg==
</data>
<flag name="commit-queue"
          id="486123"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>