<?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>88834</bug_id>
          
          <creation_ts>2012-06-11 20:34:02 -0700</creation_ts>
          <short_desc>If Node X is reachable from JavaScript, all Nodes in the same tree should be kept alive</short_desc>
          <delta_ts>2018-09-08 01:51:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92965</dependson>
    
    <dependson>94324</dependson>
    
    <dependson>98612</dependson>
          <blocked>98658</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>fenerliserdar81</cc>
    
    <cc>fishd</cc>
    
    <cc>fmalita</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gregsimon</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>mburtin</cc>
    
    <cc>mifenton</cc>
    
    <cc>mihnea</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>schenney</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>646586</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 20:34:02 -0700</bug_when>
    <thetext>The current reference-count algorithm of Node objects does not guarantee &quot;If Node X has a ref-count, all the Nodes in the tree which X belongs to are kept alive&quot;.

Look at the following example:

  div = document.createElement(&quot;div&quot;);
  document.body.appendChild(div);
  div.innerHTML = &apos;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span id=&quot;span&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;text&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&apos;;
  span = document.getElementById(&quot;span&quot;);
  div.innerHTML = &quot;&quot;;
  alert(span);  // &lt;span&gt;
  alert(span.parentNode);  // ???
  alert(span.firstChild);  // ???

What is the expected behavior?:

  (a) span.parentNode = &lt;div&gt;, span.firstChild = &lt;br&gt;
  (b) span.parentNode = null, span.firstChild = &lt;br&gt;
  (c) span.parentNode = &lt;div&gt;, span.firstChild = null
  (d) span.parentNode = null, span.firstChild = null
  (e) Any value is OK (i.e. the behavior is UNDEFINED)

Behavior of browsers:

  Safari 5.1.7: (b)
  Chrome 20.0: (b)
  Firefox 12.0: (a)
  Opera 11.64: (a)
  IE 9: (d)

We want to accomplish the behavior (a) without any performance regression and without any additional member variable in a Node object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646587</commentid>
    <comment_count>1</comment_count>
      <attachid>146998</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 20:36:35 -0700</bug_when>
    <thetext>Created attachment 146998
Performance tests

This is a performance test that would be most affected by the overhead of the reference count algorithm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646588</commentid>
    <comment_count>2</comment_count>
      <attachid>146999</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 20:39:08 -0700</bug_when>
    <thetext>Created attachment 146999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646620</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 22:05:29 -0700</bug_when>
    <thetext>The idea I am implementing:

(1) No change in ref(), deref() and setParent().

(2) If the ref-count of a root node becomes 0, we call removedLastRef() for the root node.

(3) removedLastRef() calls a slightly modified version of ContainerNode::removeAllChildren().

(4) The modified version of ContainerNode::removeAllChildren() traverses child nodes, recording all the child nodes traversed.

(4-1) If all the child nodes in the DOM tree have 0 ref-count, we call destructors of all the recorded nodes (i.e. all the nodes in the DOM tree). That&apos;s it.

(4-2) If any child node X has 1~ ref-count, we stop the traversal and set a &quot;lifetime-owner-bit&quot; on the node X. No destructor is called in this case. The &quot;lifetime-owner-bit&quot; indicates that the node X keeps the lifetime of the DOM tree which X belongs to.

(5) When the ref-count of the node X becomes 0, we call removedLastRef() for the root node of the node X. Goes to (3).

(6) If the node X is going to be removed from the DOM tree, we call removedLastRef() for the root node of the DOM tree. Goes to (3). This step is needed to delegate the &quot;lifetime-owner-bit&quot; to someone (or to destruct all the nodes if all the nodes in the DOM tree have 0 ref-count).

The &quot;lifetime-owner-bit&quot; can be implemented by using the most significant bit of TreeShared::m_refCount. In terms of implementation, by initially setting &quot;lifetime-owner-bit&quot; on the root node, the implementation of TreeShared gets clearer (because the initial lifetime owner of the DOM tree is the root node).

I guess that this approach would be better in the following points:

- No overhead in ref(), deref() and setParent().

- Overhead happens when there is a DOM tree that has 1~ ref-count on other node than the root node. But this would be practically a rare case.


The patch is coming soon...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646629</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-11 22:40:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (5) When the ref-count of the node X becomes 0, we call removedLastRef() for the root node of the node X. Goes to (3).

This algorithm is O(n^2) when the garbage collector frees a whole document, unless the garbage collector is lucky enough to deref the document node last. That&apos;s a show-stopper.

Also, &quot;when the ref-count of the node X becomes 0&quot; implies a change to deref(), which seems to contradict your stated goals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646651</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 23:07:28 -0700</bug_when>
    <thetext>Thanks ggaren.

(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (5) When the ref-count of the node X becomes 0, we call removedLastRef() for the root node of the node X. Goes to (3).
&gt; 
&gt; This algorithm is O(n^2) when the garbage collector frees a whole document, unless the garbage collector is lucky enough to deref the document node last. That&apos;s a show-stopper.

Accurately, O(n^2) situation can potentially happen, but it would be pretty much artificial situation. The condition in which the worst cases happen is

- not &quot;unless the garbage collector is lucky enough to deref the document node last&quot;

- but &quot;unless the garbage collector is lucky enough to deref nodes in a similar order to the order in which removeAllChildren() delegates the lifetime-owner-bit&quot;.

In addition, what we should concern would be not JavaScript GC but DOM mutations caused inside C++ DOM. When JavaScript GC happened, the overhead of GC itself would be much larger. (e.g. the current JSC&apos;s GC looks up a root node for all the nodes that have strong references.)

For example, the worst situation can happen in the following scenario:

DOM tree: document -- A -- B -- C -- D -- E

(1) Assume that there are strong references to document, C, D and E. Initially, the document has the lifetime-owner-bit.
(2) document = null. removedLastRef() is called on the document.
(3) The traversal happens. The traversal stops at C, and C takes over the lifetime-owner-bit.
(4) Nothing happens until C&apos;s ref-count becomes 0.
(5) If C&apos;s ref-count becomes 0, removedLastRef() is called for the document.
(6) The traversal stops at D, and D takes over the lifetime-owner-bit.
(7) Nothing happens until D&apos;s ref-count becomes 0.
(8) If D&apos;s ref-count becomes 0, removedLastRef() is called for the document.
(9) The traversal stops at E, and E takes over the lifetime-owner-bit.
(10) Nothing happens until E&apos;s ref-count becomes 0.
(11) If E&apos;s ref-count becomes 0, removedLastRef() is called for the document.
(12) Since the traversal completes, all the Nodes are destructed.

As you can see, if the ref-count becomes 0 in the order of E -&gt; D -&gt; C, then the steps (6) -- (11) are not needed. The worst case happens only when the traversal order matches the order in which the ref-count is lost.

&gt; Also, &quot;when the ref-count of the node X becomes 0&quot; implies a change to deref(), which seems to contradict your stated goals.

Sorry, you&apos;re right.

One change is needed in deref():

  before: if (m_refCount &lt;= 0 &amp;&amp; !m_parent)
  after: if (m_refCount == LifetimeOwnerBitMask)  // LifetimeOwnerBitMask = 0x8000000

Also one change is needed in setParent():

  before: m_parent = parent;
  after: m_parent = parent; if (parent) m_refCount &amp;= ~LifetimeOwnerBitMask; else m_refcount |= LifetimeOwnerBitMask.

(I hope I can upload the patch in a day...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646652</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 23:09:39 -0700</bug_when>
    <thetext>&gt; - but &quot;unless the garbage collector is lucky enough to deref nodes in a similar order to the order in which removeAllChildren() delegates the lifetime-owner-bit&quot;.

Correction: &quot;if the garbage collector is unlucky enough to deref nodes in a similar order to the order in which removeAllChildren() delegates the lifetime-owner-bit&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646684</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-11 23:50:26 -0700</bug_when>
    <thetext>&gt; The worst case happens only when the traversal order matches the order in which the ref-count is lost.

I&apos;m not clear on why you think this case is artificial. It&apos;s common for nodes to be allocated in document order, and it&apos;s common for garbage collectors to run finalizers in allocation order. I would expect this case to be common.

Do you have some data that shows this case to be artificial?

&gt; When JavaScript GC happened, the overhead of GC itself would be much larger. (e.g. the current JSC&apos;s GC looks up a root node for all the nodes that have strong references.)

I disagree. GC is O(n), not O(n^2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646691</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-11 23:58:30 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; The worst case happens only when the traversal order matches the order in which the ref-count is lost.
&gt; 
&gt; I&apos;m not clear on why you think this case is artificial. It&apos;s common for nodes to be allocated in document order, and it&apos;s common for garbage collectors to run finalizers in allocation order. I would expect this case to be common.
&gt; 
&gt; Do you have some data that shows this case to be artificial?
&gt; 
&gt; &gt; When JavaScript GC happened, the overhead of GC itself would be much larger. (e.g. the current JSC&apos;s GC looks up a root node for all the nodes that have strong references.)
&gt; 
&gt; I disagree. GC is O(n), not O(n^2).

Ah, got it. You&apos;re right.

Anyway the worst case happens only when the traversal order matches the order in which the ref-count becomes 0. We might be able to prevent the problem by changing the traversal order; e.g. traverse in the reverse document order, or have two traversal pointers to mess up the order etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649195</commentid>
    <comment_count>9</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-14 08:28:14 -0700</bug_when>
    <thetext>Unfortunately I encountered a bug of ContainerNodeAlgorithm, which is blocking the implementation of the new reference-count algorithm I explained above. I am fixing the bug, just a moment please:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654277</commentid>
    <comment_count>10</comment_count>
      <attachid>148737</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-20 23:28:42 -0700</bug_when>
    <thetext>Created attachment 148737
the first WIP patch to observe build bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654288</commentid>
    <comment_count>11</comment_count>
      <attachid>148737</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 23:56:18 -0700</bug_when>
    <thetext>Comment on attachment 148737
the first WIP patch to observe build bots

Attachment 148737 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13026042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655425</commentid>
    <comment_count>12</comment_count>
      <attachid>149019</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-22 07:03:40 -0700</bug_when>
    <thetext>Created attachment 149019
WIP patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655448</commentid>
    <comment_count>13</comment_count>
      <attachid>149019</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-22 07:33:54 -0700</bug_when>
    <thetext>Comment on attachment 149019
WIP patch2

Attachment 149019 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13034409</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655452</commentid>
    <comment_count>14</comment_count>
      <attachid>149019</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-22 07:42:13 -0700</bug_when>
    <thetext>Comment on attachment 149019
WIP patch2

Attachment 149019 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13039358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657073</commentid>
    <comment_count>15</comment_count>
      <attachid>149409</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-25 17:43:36 -0700</bug_when>
    <thetext>Created attachment 149409
WIP patch3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657330</commentid>
    <comment_count>16</comment_count>
      <attachid>149468</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-25 23:47:36 -0700</bug_when>
    <thetext>Created attachment 149468
WIP patch4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657376</commentid>
    <comment_count>17</comment_count>
      <attachid>149468</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-26 00:58:59 -0700</bug_when>
    <thetext>Comment on attachment 149468
WIP patch4

Attachment 149468 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13090426</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657796</commentid>
    <comment_count>18</comment_count>
      <attachid>149468</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-26 11:40:03 -0700</bug_when>
    <thetext>Comment on attachment 149468
WIP patch4

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

&gt; Source/WebCore/platform/TreeShared.h:185
&gt; +    uint32_t m_refCount;

Haven&apos;t had time to digest the whole patch. Just one nit here. Can you avoid all the manual bit-masking by using bitfields here?

unsigned m_isLiftimeOwner : 1;
unsigned m_refCount : 31;

Then you also don&apos;t need to add the refCount method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658556</commentid>
    <comment_count>19</comment_count>
      <attachid>149734</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 05:37:16 -0700</bug_when>
    <thetext>Created attachment 149734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658558</commentid>
    <comment_count>20</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 05:50:03 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; Source/WebCore/platform/TreeShared.h:185
&gt; &gt; +    uint32_t m_refCount;
&gt; 
&gt; Just one nit here. Can you avoid all the manual bit-masking by using bitfields here?

 Done. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658559</commentid>
    <comment_count>21</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 05:56:38 -0700</bug_when>
    <thetext>A design document: https://docs.google.com/a/chromium.org/document/d/1uYHpq7u5Sslj54UgzXjA7pYR53XjidpBcrCa-neOGQs/edit?pli=1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658573</commentid>
    <comment_count>22</comment_count>
      <attachid>149734</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-27 06:48:01 -0700</bug_when>
    <thetext>Comment on attachment 149734
Patch

Attachment 149734 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13101749</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658652</commentid>
    <comment_count>23</comment_count>
      <attachid>149734</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-27 09:18:50 -0700</bug_when>
    <thetext>Comment on attachment 149734
Patch

You haven&apos;t convinced me that O(n^2) is a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659008</commentid>
    <comment_count>24</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 17:28:45 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 149734 [details])
&gt; You haven&apos;t convinced me that O(n^2) is a good idea.

The document (page 19 -- page 22) explains that the O(n^2) case won&apos;t happen except for the very worst case (i.e. the case where the searchNewLifetimeOwner()&apos;s traversal order matches the deref()&apos;s traversal order), and that we would be able to avoid the worst case in common situations by traversing the tree in the following order:

- First, traverse the root node
- For the rest of nodes, traverse in the reverse DFS order

Wouldn&apos;t the explanation be enough? Or you do not want to accept the algorithm that might cause the worst case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659027</commentid>
    <comment_count>25</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 17:57:21 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 149734 [details] [details])
&gt; &gt; You haven&apos;t convinced me that O(n^2) is a good idea.
&gt; 
&gt; The document (page 19 -- page 22) explains that the O(n^2) case won&apos;t happen except for the very worst case (i.e. the case where the searchNewLifetimeOwner()&apos;s traversal order matches the deref()&apos;s traversal order), and that we would be able to avoid the worst case in common situations by traversing the tree in the following order:
&gt; 
&gt; - First, traverse the root node
&gt; - For the rest of nodes, traverse in the reverse DFS order
&gt; 
&gt; Wouldn&apos;t the explanation be enough? Or you do not want to accept the algorithm that might cause the worst case?

This is a big change.  The proof burden to show that this doesn&apos;t break the universe is huge.  That burden is on you.

What I worry about is:

1) That you have not done sufficient performance tests.  I want to know how this affects all known benchmarks that operate on the DOM.  I want to know what this does to page load time.  You&apos;ve shown me some data on Dromaeo but nothing about page load.

2) That there are cases where the DFS code induces O(n^2) behavior.  You could prove this by reporting metrics of the behavior of your code on major websites (gmail, gdocs, bing, facebook, amazon, twitter ... you know the ones).  You have not done this, and that worries me a lot.  I&apos;d be scared to see this change land without that sort of due diligence.

3) That this is completely unnecessary.  You&apos;re solving a corner case that probably nobody will notice but us, and you&apos;re adding a lot of code to support this corner case.  I&apos;m not convinced that any of this is necessary at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659106</commentid>
    <comment_count>26</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 19:30:54 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; 1) That you have not done sufficient performance tests.  I want to know how this affects all known benchmarks that operate on the DOM.  I want to know what this does to page load time.  You&apos;ve shown me some data on Dromaeo but nothing about page load.
&gt; 
&gt; 2) That there are cases where the DFS code induces O(n^2) behavior.  You could prove this by reporting metrics of the behavior of your code on major websites (gmail, gdocs, bing, facebook, amazon, twitter ... you know the ones).  You have not done this, and that worries me a lot.  I&apos;d be scared to see this change land without that sort of due diligence.

OK, let me investigate them.

&gt; 3) That this is completely unnecessary.  You&apos;re solving a corner case that probably nobody will notice but us, and you&apos;re adding a lot of code to support this corner case.  I&apos;m not convinced that any of this is necessary at all.

At least this is mandatory for redesigning V8 GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659107</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 19:33:56 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; 1) That you have not done sufficient performance tests.  I want to know how this affects all known benchmarks that operate on the DOM.  I want to know what this does to page load time.  You&apos;ve shown me some data on Dromaeo but nothing about page load.
&gt; &gt; 
&gt; &gt; 2) That there are cases where the DFS code induces O(n^2) behavior.  You could prove this by reporting metrics of the behavior of your code on major websites (gmail, gdocs, bing, facebook, amazon, twitter ... you know the ones).  You have not done this, and that worries me a lot.  I&apos;d be scared to see this change land without that sort of due diligence.
&gt; 
&gt; OK, let me investigate them.
&gt; 
&gt; &gt; 3) That this is completely unnecessary.  You&apos;re solving a corner case that probably nobody will notice but us, and you&apos;re adding a lot of code to support this corner case.  I&apos;m not convinced that any of this is necessary at all.
&gt; 
&gt; At least this is mandatory for redesigning V8 GC.

JavaScriptCore&apos;s GC approach already demonstrates that this is not mandatory for GC.

Is V8&apos;s GC really that much worse than JSC&apos;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659125</commentid>
    <comment_count>28</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 19:58:34 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; JavaScriptCore&apos;s GC approach already demonstrates that this is not mandatory for GC.
&gt; 
&gt; Is V8&apos;s GC really that much worse than JSC&apos;s?

That&apos;s a pretty long story and I am writing a document about it:) In a nutshell, the essential difference is that V8 GC is generational, and the semantics is mandatory to reclaim DOM objects in the minor GC.

Objective: Reclaim DOM objects in the minor GC. (Currently V8 GC reclaims DOM objects only in the major GC. All DOM objects are promoted to the old space.)

Rough explanation of the difficulty:

- There are two independent object graphs in the world; one is a JavaScript object graph, and the other is a DOM object graph.

- Regarding the JavaScript object graph, the minor GC can just look up a subset of the graph; i.e. the minor GC can just look up JavaScript objects in the new space. The minor GC does not know JavaScript objects in the old space.

- Regarding the DOM object graph, the minor GC can just look up a subset of the graph; i.e. the minor GC can just traverse DOM objects that have wrapper objects in the new space. The minor GC does not know DOM objects that have wrapper objects in the old space nor DOM objects that does not have wrapper objects.

- In summary, the minor GC must work on a subset of the JavaScript object graph and a subset of the DOM object graph. To judge the reachability to each DOM object correctly (conservatively) with the limited knowledge, the semantics &quot;If Node X has a ref-count, all the Nodes in the tree which X belongs to are kept alive&quot; in the DOM side is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659143</commentid>
    <comment_count>29</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-27 21:02:53 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; JavaScriptCore&apos;s GC approach already demonstrates that this is not mandatory for GC.
&gt; &gt; 
&gt; &gt; Is V8&apos;s GC really that much worse than JSC&apos;s?
&gt; 
&gt; That&apos;s a pretty long story and I am writing a document about it:) In a nutshell, the essential difference is that V8 GC is generational, and the semantics is mandatory to reclaim DOM objects in the minor GC.

I think if you&apos;re going to change WebCore just to help V8&apos;s GC, you should justify it for more than just V8.  One good starting point is to share that document when you&apos;re ready.

&gt; 
&gt; Objective: Reclaim DOM objects in the minor GC. (Currently V8 GC reclaims DOM objects only in the major GC. All DOM objects are promoted to the old space.)

Is this objective necessary for performance or correctness, or both?

&gt; 
&gt; Rough explanation of the difficulty:
&gt; 
&gt; - There are two independent object graphs in the world; one is a JavaScript object graph, and the other is a DOM object graph.
&gt; 
&gt; - Regarding the JavaScript object graph, the minor GC can just look up a subset of the graph; i.e. the minor GC can just look up JavaScript objects in the new space. The minor GC does not know JavaScript objects in the old space.
&gt; 
&gt; - Regarding the DOM object graph, the minor GC can just look up a subset of the graph; i.e. the minor GC can just traverse DOM objects that have wrapper objects in the new space. The minor GC does not know DOM objects that have wrapper objects in the old space nor DOM objects that does not have wrapper objects.
&gt; 
&gt; - In summary, the minor GC must work on a subset of the JavaScript object graph and a subset of the DOM object graph. To judge the reachability to each DOM object correctly (conservatively) with the limited knowledge, the semantics &quot;If Node X has a ref-count, all the Nodes in the tree which X belongs to are kept alive&quot; in the DOM side is required.

I&apos;m unconvinced.  I think you can build a GenGC that has cheap interaction with the DOM without having to go to all of this trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659162</commentid>
    <comment_count>30</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-27 21:41:06 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; I think if you&apos;re going to change WebCore just to help V8&apos;s GC, you should justify it for more than just V8. 

The benefit other than V8 is described in the &quot;Motivation&quot; section in the document I uploaded; i.e. improve predictability, fix the FIXME in JSC GC.

&gt; One good starting point is to share that document when you&apos;re ready.

Will write up and share the document in a week or so.

&gt; &gt; Objective: Reclaim DOM objects in the minor GC. (Currently V8 GC reclaims DOM objects only in the major GC. All DOM objects are promoted to the old space.)
&gt; 
&gt; Is this objective necessary for performance or correctness, or both?

Performance only. Currently V8 GC performs much much worse than JSC GC (V8 GC can stop 4 seconds for one document.createElement()), because all DOM objects survive two copying GC cycles, are promoted to the old space, and then reclaimed by the heavy major GC. We want to fix the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659284</commentid>
    <comment_count>31</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 00:12:41 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #29)
&gt; &gt; I think if you&apos;re going to change WebCore just to help V8&apos;s GC, you should justify it for more than just V8. 
&gt; 
&gt; The benefit other than V8 is described in the &quot;Motivation&quot; section in the document I uploaded; i.e. improve predictability, fix the FIXME in JSC GC.

I&apos;m not convinced that either of these benefits is enough to justify an O(n^2) worst-case.

&gt; 
&gt; &gt; One good starting point is to share that document when you&apos;re ready.
&gt; 
&gt; Will write up and share the document in a week or so.

Cool, thanks!

&gt; 
&gt; &gt; &gt; Objective: Reclaim DOM objects in the minor GC. (Currently V8 GC reclaims DOM objects only in the major GC. All DOM objects are promoted to the old space.)
&gt; &gt; 
&gt; &gt; Is this objective necessary for performance or correctness, or both?
&gt; 
&gt; Performance only. Currently V8 GC performs much much worse than JSC GC (V8 GC can stop 4 seconds for one document.createElement()), because all DOM objects survive two copying GC cycles, are promoted to the old space, and then reclaimed by the heavy major GC. We want to fix the behavior.

Seems like a sensible goal.  But if it requires adding O(n^2) worst-case behavior to JSC as well, then I&apos;m not sure that&apos;s so sensible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659308</commentid>
    <comment_count>32</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 00:54:37 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; But if it requires adding O(n^2) worst-case behavior to JSC as well, then I&apos;m not sure that&apos;s so sensible.

- JSC GC and V8 GC can explicitly avoid the worst case, if they want. If GC cares the deref()&apos;s order so that root nodes are deref()ed in the end, the worst case does not happen (rather, only the &quot;best&quot; case happens). deref()&apos;s order of GC is controllable. Unless GC tries to deref nodes in the same order as searchNewLifetimeOwner()&apos;s order, we can avoid the worst case.

- What we need to concern is DOM operations issued by JavaScript. If removeChild(), innerHTML = &quot;&quot;, etc were issued in the same order as searchNewLifetimeOwner()&apos;s order, the worst case happens. DOM operations depend on each Web app, and there is no way to control deref()&apos;s order explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659343</commentid>
    <comment_count>33</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 01:58:19 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; But if it requires adding O(n^2) worst-case behavior to JSC as well, then I&apos;m not sure that&apos;s so sensible.
&gt; 
&gt; - JSC GC and V8 GC can explicitly avoid the worst case, if they want. If GC cares the deref()&apos;s order so that root nodes are deref()ed in the end, the worst case does not happen (rather, only the &quot;best&quot; case happens). deref()&apos;s order of GC is controllable. Unless GC tries to deref nodes in the same order as searchNewLifetimeOwner()&apos;s order, we can avoid the worst case.
&gt; 
&gt; - What we need to concern is DOM operations issued by JavaScript. If removeChild(), innerHTML = &quot;&quot;, etc were issued in the same order as searchNewLifetimeOwner()&apos;s order, the worst case happens. DOM operations depend on each Web app, and there is no way to control deref()&apos;s order explicitly.

It&apos;s this latter point that I&apos;m referring to.  I&apos;m interested in the worst-case in particular.

I&apos;m not sure it makes sense to make WebKit slower to make V8&apos;s GC faster.

Hence the high proof burden for you.  You need to really convince us that this is either not going to make things slower under any reasonable circumstance, or alternatively that the change in semantics is needed to make some website work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659359</commentid>
    <comment_count>34</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-28 02:41:29 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; But if it requires adding O(n^2) worst-case behavior to JSC as well, then I&apos;m not sure that&apos;s so sensible.
&gt; 
&gt; - JSC GC and V8 GC can explicitly avoid the worst case, if they want. If GC cares the deref()&apos;s order so that root nodes are deref()ed in the end, the worst case does not happen (rather, only the &quot;best&quot; case happens). deref()&apos;s order of GC is controllable. Unless GC tries to deref nodes in the same order as searchNewLifetimeOwner()&apos;s order, we can avoid the worst case.

I thought about this more.  Your statement that the deref() order in the GC is controllable is almost false.  To control the deref() order, we&apos;d have to perform all deref()&apos;s all at once, and perform some sorting step to get the desired order.  We don&apos;t want to do any of this, since we want to invoke the deref()&apos;s incrementally so as to reduce pause time and increase minimum mutator utilization.  This implies that the GC&apos;s deref() order is likely to be determined by some complex function of allocation order and the shape of the set of objects that survived not only the current collection, but all collections since system start.  You haven&apos;t proved that this function does not resonate with the worst-case of your algorithm.  Such a proof is hard, since reasoning about it analytically is beyond the state of the art (if we could reason about this function analytically, we could prove accurate bounds on fragmentation in non-copying GC - something we know we cannot do; the best known bounds [see http://comjnl.oxfordjournals.org/content/20/3/242.full.pdf] are horribly pathological).  Hence the closest you&apos;ll get to a proof is to do experiments.

This implies two things.  First, it raises the proof burden for your claim that the GC will *tend not* to hit the pathological case.  Put another way, it makes the current status quo appear much more attractive than your patch - with the status quo, we already know that we won&apos;t hit this pathology.  Second, it contravenes your claim that the GC can actively avoid the pathological case.

In other words, you really need to show evidence that we won&apos;t hit the worst case on real websites.  Small benchmarks like Dromaeo are unconvincing here, since they tend to just repeat the same small sequence of actions many times.  Interesting GC behavior tends to only happen in code that does not repeat the same action, but instead performs some chaotic sequence of seemingly unrelated actions.  Your only chance of studying this is on real websites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659412</commentid>
    <comment_count>35</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-28 04:32:22 -0700</bug_when>
    <thetext>Thanks for the detailed comment!

&gt; In other words, you really need to show evidence that we won&apos;t hit the worst case on real websites. Your only chance of studying this is on real websites.

The point completely makes sense. Counting the number of searchNewLifetimeOwner() that misses deleting objects would give us real data of how the algorithm works in the real world. I&apos;ll investigate it after writing up the document about V8 GC.

&gt; Your statement that the deref() order in the GC is controllable is almost false.  To control the deref() order, we&apos;d have to perform all deref()&apos;s all at once, and perform some sorting step to get the desired order.  We don&apos;t want to do any of this, since we want to invoke the deref()&apos;s incrementally so as to reduce pause time and increase minimum mutator utilization.

I got your point, but I am not so convinced with the point. Let&apos;s consider this way:

Case 1: Assume that the semantics is needed to make the real world work. In this case, my algorithm would make sense. Period.

Case 2: Assume that the semantics is not needed to make the real world work. In this case, considering that the current TreeShared algorithm works predictably only when a root node is an n-ref node, &quot;the semantics is not needed to make the real world work&quot; implies &quot;the real world always keeps a reference to a root node until the whole tree is dereferenced&quot;. Even JSC&apos;s GC takes care of it; i.e. JSC&apos;s GC intentionally keeps a wrapper object of a root node alive in order to keep the whole tree alive (http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/bindings/js/JSNodeCustom.cpp&amp;exact_package=chromium&amp;q=jsnodecustom&amp;type=cs&amp;l=92). In this way, the real world and GC are working (has to work) in a way that a reference of a root node is dereferenced at the very end, since that is the only way to make the behavior predictable. Even in an incremental GC, a root node should be dereferenced in the final incremental phase of the tree. If this observation is true, it would not be difficult to make the GC work so that a root node is dereferenced at the very end; i.e. given that the root node is guaranteed to be in the final incremental phase of the tree, the GC just needs to take care to dereference the root node at the very end in the final incremental phase. No sorting is needed. The GC just needs to skip root nodes at first, and then dereference the skipped root nodes at the very end.

In summary, assuming that &quot;the semantics is not needed to make the real world work&quot;, it implies that we can control the GC so that the root node is dereferenced at the very end. If the root node is dereferenced at the very end, it hits the best case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659620</commentid>
    <comment_count>36</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-06-28 11:00:45 -0700</bug_when>
    <thetext>Accommodating poor design in V8&apos;s garbage collector is a non-goal for the WebKit project. The WebKit project has a garbage collector that works very well with the DOM. To justify a huge and risky change to core WebKit code, you need to explain a benefit to the WebKit project, and explain why the benefit outweighs the cost.

A few further notes, based on the discussion here:

(1) I&apos;ve described an algorithm that isn&apos;t O(n^2). Discussing the nuances of this O(n^2) algorithm is interesting but irrelevant until someone proves that there is no viable non-O(n^2) algorithm.

(2) Even if absolute worst-case behavior is rare, an occasional regression in average-case behavior (for example, causing &quot;only&quot; five or six extra traversals of some or all of the DOM during every document destruction) is a huge regression in core WebKit behavior.

(3) Since this patch retains &quot;guardRef&quot; behavior, it doesn&apos;t fully match the lifetime semantics of the DOM specification. I&apos;m not even sure I&apos;d be willing to add an O(n^2) algorithm to the core DOM just to match a corner case of the specification. I&apos;m certainly not willing to do so without fully matching the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660429</commentid>
    <comment_count>37</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-29 06:36:10 -0700</bug_when>
    <thetext>Thanks ggaren.

(In reply to comment #36)
&gt; Accommodating poor design in V8&apos;s garbage collector is a non-goal for the WebKit project. The WebKit project has a garbage collector that works very well with the DOM. To justify a huge and risky change to core WebKit code, you need to explain a benefit to the WebKit project, and explain why the benefit outweighs the cost.

The benefit is the predictability, as explained in the document. As far as I understand the webkit-dev@ thread, as darin, maciej and rniwa pointed out, it seems that people are thinking that the proposed semantics looks better than the current unpredictable semantics, as long as it does not regress performance at all.

So I guess that the problem of my approach would be that whether it regresses performance or not is still unclear, than that the benefit is unclear. For example, if I could invent an always-O(n) algorithm, then I hope people will accept it.

As pizlo pointed out, I need to investigate real world cases. In parallel, I am seeking for any alternative always-O(n) algorithm.

&gt; (1) I&apos;ve described an algorithm that isn&apos;t O(n^2). Discussing the nuances of this O(n^2) algorithm is interesting but irrelevant until someone proves that there is no viable non-O(n^2) algorithm.

I&apos;m trying to optimize your algorithm, but let me ask a couple of questions.

You pointed out the following three issues in my first implementation:

(1) adds a call to fprintf inside ref() and deref(), probably making them ineligible for inlining

Will fix.

(2) does a test against &quot;!m_parent&quot; in rootDeref, which can be removed

Will fix.

(3) adds 2 data members to every node, increasing malloc cost and memory traffic

Do you have any idea to avoid adding the 2 data members; i.e. a pointer to root (m_root) and a reference count of the whole tree (i.e. m_rootRefCount)? First, it would be possible to remove m_root, but in that case we need to look up the root every time (O(log n) in average) or store m_root in rare data (which requires hashmap look-up). Second, how can we remove m_rootRefCount? It would be possible to store m_rootRefCount in rare data, but in that case, every ref()/deref() has to look up a hashmap to get the rare data.

&gt; (2) Even if absolute worst-case behavior is rare, an occasional regression in average-case behavior (for example, causing &quot;only&quot; five or six extra traversals of some or all of the DOM during every document destruction) is a huge regression in core WebKit behavior.

Makes sense.

&gt; (3) Since this patch retains &quot;guardRef&quot; behavior, it doesn&apos;t fully match the lifetime semantics of the DOM specification. I&apos;m not even sure I&apos;d be willing to add an O(n^2) algorithm to the core DOM just to match a corner case of the specification. I&apos;m certainly not willing to do so without fully matching the specification.

Would you tell me where the spec is? (I want to read it, but couldn&apos;t find it...) Does the spec require that &quot;If a document is referenced by ownerDocument() from any node, then all the nodes under the document must be kept alive&quot;? Anyway I think the ownerDocument() problem is orthogonal with our current problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660493</commentid>
    <comment_count>38</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-06-29 08:06:19 -0700</bug_when>
    <thetext>There are other ways to achieve predictability besides keeping the whole tree alive, and we do implement these in some similar cases. What I mean is that parent pointers could be nulled out on detaching immediately, without waiting for GC. Then GC randomness would not be exposed to client code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660580</commentid>
    <comment_count>39</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-29 09:58:53 -0700</bug_when>
    <thetext>Thanks ap!

(In reply to comment #38)
&gt; There are other ways to achieve predictability besides keeping the whole tree alive, and we do implement these in some similar cases. What I mean is that parent pointers could be nulled out on detaching immediately, without waiting for GC. Then GC randomness would not be exposed to client code.

GC is not the only guy who causes randomness. Please look at this section (https://docs.google.com/a/google.com/document/d/1uYHpq7u5Sslj54UgzXjA7pYR53XjidpBcrCa-neOGQs/edit?pli=1#heading=h.jb5c0dei7hff). The first example is due to GC randomness. The second randomness is due to randomness in a document parser. The third example is due to randomness in editing undo buffer.

&quot;predictability&quot; might not be a good word. Even if behavior were predictable, it would make no sense to programmers if the behavior is far from understandable. &quot;predictability and understandability&quot; would be a requirement. I think all of these details (i.e. the lifetime semantics of DOM nodes) are speced somewhere. (I hope that ggaren would know better.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661436</commentid>
    <comment_count>40</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-02 06:09:32 -0700</bug_when>
    <thetext>pizlo, ggaren: I revised the lifetime owner algorithm.

Document: https://docs.google.com/a/chromium.org/document/d/17ubK4aobm4G3c2FADqEoXAwSWbCIipXwzrGFJY_atoQ/edit

Two important observations explained in the document:

- We&apos;ve believed that the current TreeShared algorithm is always O(N). The observation was wrong. The TreeShared algorithm is O(N) in most cases but O(N^2) in the worst case.

- The revised algorithm is _always_ O(N). In other words, the revised algorithm not only accomplishes the predictable lifetime semantics but also _always_ performs better than the current TreeShared algorithm. I hope:)

Comments are welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665518</commentid>
    <comment_count>41</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-10 00:03:27 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; &gt; &gt; One good starting point is to share that document when you&apos;re ready.
&gt; &gt; 
&gt; &gt; Will write up and share the document in a week or so.
&gt; 
&gt; Cool, thanks!

Wrote up a document: https://docs.google.com/a/google.com/document/d/1Ki8WrGIHipIjzz5rl3SG7SN-ulH9JgbcQAOA4Ja-hXs/edit

The document explains why the new lifetime semantics is needed for reclaiming DOM objects in a generational GC. The algorithm proposed in the document is generally applicable to generational GCs, not limited to V8&apos;s GC.

Let me reiterate the benefits of the new lifetime semantics:

(1) Performance. The current TreeShared algorithm is O(N) in most cases but O(N^2) in the worst case. On the other hand, the lifetime owner algorithm is always O(N). In other words, the lifetime owner algorithm not only accomplishes the new lifetime semantics but also performs better than the current TreeShared algorithm.

(2) Predictability for JavaScript programmers.

(3) More efficient V8&apos;s GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682936</commentid>
    <comment_count>42</comment_count>
      <attachid>155499</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-31 05:09:14 -0700</bug_when>
    <thetext>Created attachment 155499
patch for &apos;rough&apos; review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682944</commentid>
    <comment_count>43</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-31 05:25:14 -0700</bug_when>
    <thetext>ggaren, fpizlo: I uploaded a patch that implements the revised lifetime owner algorithm. Benefits and performance results are described in the ChangeLog. I would be grateful if you could tell me your high-level views on the approach. (You don&apos;t need to look into implementation details:-)

The patch is doing a lot of things at a breath to make the algorithm work correctly. If the approach looks acceptable overall, I&apos;d like to break down the patch and land sub-patches one by one, starting from non-controversial ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683136</commentid>
    <comment_count>44</comment_count>
      <attachid>155499</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-31 08:54:04 -0700</bug_when>
    <thetext>Comment on attachment 155499
patch for &apos;rough&apos; review

Attachment 155499 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13403174</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683735</commentid>
    <comment_count>45</comment_count>
      <attachid>155499</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-07-31 18:39:02 -0700</bug_when>
    <thetext>Comment on attachment 155499
patch for &apos;rough&apos; review

You could land RefPtr elimination part separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685899</commentid>
    <comment_count>46</comment_count>
      <attachid>155499</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-02 15:25:03 -0700</bug_when>
    <thetext>Comment on attachment 155499
patch for &apos;rough&apos; review

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

&gt; Source/WebCore/ChangeLog:68
&gt; +        I confirmed that the performance regression of Dromaeo/dom-modify is
&gt; +        the overhead of checkIfLifetimeOwner(node) in ChildNodeRemovalNotifier::notify().
&gt; +        As far as I experimented, it is difficult to kill the 4.67% overhead.
&gt; +        However, I found that we can dramatically optimize ChildNodeInsertionNotifier and
&gt; +        ChildNodeRemovalNotifier by rewriting them in an iterative manner,
&gt; +        which will completely offset the 4.67% overhead.

Looks like the first step here is to get your optimization for ChildNodeInsertionNotifier and ChildNodeRemovalNotifier reviewed and landed, and then re-baseline these performance measurements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686034</commentid>
    <comment_count>47</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-02 17:38:18 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; Looks like the first step here is to get your optimization for ChildNodeInsertionNotifier and ChildNodeRemovalNotifier reviewed and landed, and then re-baseline these performance measurements.

Thanks ggaren! Dromaeo/dom-modify is going to be optimized by 8.2% in bug 92965. (And I have another idea for further optimization.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706053</commentid>
    <comment_count>48</comment_count>
      <attachid>160895</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-27 21:40:55 -0700</bug_when>
    <thetext>Created attachment 160895
Simplified the algorithm. Fixed crashes. Fixed memory leaks. But the perf regression of Dromaeo/dom-modify is still unacceptable. I&apos;m working on the optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710781</commentid>
    <comment_count>49</comment_count>
      <attachid>161956</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-03 19:02:21 -0700</bug_when>
    <thetext>Created attachment 161956
Fixed perf regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710790</commentid>
    <comment_count>50</comment_count>
      <attachid>161957</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-03 19:17:28 -0700</bug_when>
    <thetext>Created attachment 161957
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710792</commentid>
    <comment_count>51</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-03 19:19:33 -0700</bug_when>
    <thetext>ggaren, pizlo: I&apos;ve updated the patch. Now I think I was able to fix crashes, memory leaks, and perf regression. I had to change the design from the original version because of a bunch of problems:) I documented the final design in this document: https://docs.google.com/a/chromium.org/document/d/1HcaeU-75xukMYSUaskeDoHL-L0FNuCDIukvPmOheY8Q/edit

- I would appreciate your feedback for overall design and implementation.

- If you could review the patch, I&apos;m super happy. But if you don&apos;t want to take a detailed look, I can ask other folks to review the details, after you say the overall approach looks OK.

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712902</commentid>
    <comment_count>52</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-05 22:50:39 -0700</bug_when>
    <thetext>Just FYI, here is a result of real-world evaluation of the new V8&apos;s DOM GC:

https://docs.google.com/a/google.com/document/d/1uNyNSoNedyxsT9d_qqZXMW7ISLpycV7O4PrzSO56yWM/edit#

(If you are busy, you can just take a look at Fig.2 and Table.1.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712951</commentid>
    <comment_count>53</comment_count>
      <attachid>161957</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-06 00:23:56 -0700</bug_when>
    <thetext>Comment on attachment 161957
rebased patch

@Kentaro: Is this ready for a serious review?  If so, I can spend some time looking at it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712957</commentid>
    <comment_count>54</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-06 00:27:03 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; (From update of attachment 161957 [details])
&gt; @Kentaro: Is this ready for a serious review?  If so, I can spend some time looking at it tomorrow.

Thanks abarth! Not yet. I think I need to hear opinions of pizlo or ggaren about the overall approach first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712983</commentid>
    <comment_count>55</comment_count>
      <attachid>162440</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-06 00:48:21 -0700</bug_when>
    <thetext>Created attachment 162440
overall comments are appreciated before serious review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712990</commentid>
    <comment_count>56</comment_count>
      <attachid>162440</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-06 00:55:19 -0700</bug_when>
    <thetext>Comment on attachment 162440
overall comments are appreciated before serious review

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

&gt; Source/WebCore/ChangeLog:65
&gt; +          (Safari/Mac)
&gt; +          Dromaeo/dom-attr        5769 runs/s =&gt; 5656 runs/s   (-1.95%)
&gt; +          Dromaeo/dom-modify      4935 runs/s =&gt; 4770 runs/s   (-3.34%)
&gt; +          Dromaeo/dom-query     948941 runs/s =&gt; 954218 runs/s (+0.55%)
&gt; +          Dromaeo/dom-traverse    3870 runs/s =&gt; 3810 runs/s   (-1.03%)
&gt; +
&gt; +        The -3.34% regression in dom-modify (Safari/Mac) is not acceptable,
&gt; +        but I have already optimized dom-modify by 8.2% in another patch (bug 92965)
&gt; +        to offset the performance regression.

I think we should eliminate this 3.3% regression.  That&apos;s great that you optimized it by 8% in another patch, but that&apos;s not a good reason to regress the performance.

Have you performed the following investigation:

1) What is the statistical significance of the regression?  Have you run it multiple (at least 10) times and computed the standard deviation or even better, confidence intervals?

2) Do you know where the regression is coming from?

3) What is the performance of the rest of Dromaeo, and of Dromaeo as a whole?

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:66
&gt; +    void notify(Node*, bool);

I would strongly prefer an enum instead of a bool.  This bool is hard to follow!  I particularly prefer verbose enums in these cases:

enum InsertionPointDeletionState {
    InsertionPointDeletionHasBegun,
    InsertionPointDeletionHasNotBegun
}

Or similar.

&gt; Source/WebCore/platform/TreeShared.h:198
&gt; +    unsigned m_nonWrapperRefCount : 16; // Reference count by normal RefPtrs in WebKit.
&gt; +    unsigned m_lifetimeOwner : 1; // Whether this Node is a lifetime owner or not.
&gt; +    unsigned m_wrapperRefCount : 15; // Reference count by wrapper objects.

I don&apos;t feel comfortable with such small ref counts.  32768 referees feels small.  Do you have functionality to guard against overflow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713004</commentid>
    <comment_count>57</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-09-06 01:12:14 -0700</bug_when>
    <thetext>A couple of general comments:

1) Can you articulate what the general advantages of this approach are, outside of V8, and other than the semantic changes?  I don&apos;t think you&apos;re going to convince us that this patch is a good idea if it only benefits V8.  You&apos;re also not likely to get far with the semantic argument.  So.  Does this broadly help generational GC, or other GC barriers, for example?  Does it fix a known bug on a known website?  If this change cannot help WebKit, then it&apos;s hard to swallow.

2) You should fix the 3% regression in dom-modify.  Do you have ideas of where it is coming from?

3) Dromaeo is a really bad benchmark, and it&apos;s sad that it&apos;s the best one we have for DOM manipulation.  Can you look at the performance in JSC with this change for programs that create a lot of DOM things?  Octane&apos;s benchmarks that use typed arrays might be interesting.  You should test it.  But even that won&apos;t really answer what will happen on real websites.  So another way of approaching this is: can you construct a pathological, synthetic benchmark that makes your change look as bad as possible for either JSC or V8?  The point is not to use this benchmark as an argument against your patch, but rather, to give all of us a sense of what the worst-case would be.  You could also then produce a similar test that shows a pathological, synthetic speed-up from your change on JSC (if that is possible).  If we know what the worst and best cases are, then that could give us further confidence that your change is safe.  If constructing a worst case benchmark was impossible then that would make us feel quite uneasy about this.  There&apos;s nothing worse than tracking down horrid performance on a complex website, and it would be particularly sad if this change was the reason.  On the other hand, if we knew that even in the worst case this patch regresses things, by, say, 10%, then at least we know exactly what to expect.  Even better if the worst-case regression is in the single digits!

4) You should run the following other benchmarks as a sanity check: SunSpider, Kraken, RIABench (http://www.timo-ernst.net/misc/riabench-start/).  I will list more benchmarks if I think of any.  Although those benchmarks don&apos;t necessarily stress the DOM a lot, the way they are run does rely on the GC doing exactly the right things with the DOM.  For example if in SunSpider the GC didn&apos;t blow away the iframe contents from the previously run benchmark then you&apos;d get disastrous slow-downs.  It&apos;s useful to run these tests to ensure that this does not happen.

Other concerns are listed in my quick review (comment 56).  I&apos;m particularly concerned with the small number of bits given to the reference counts.  If wrap-around can be used to cause premature freeing to happen, and that wrap-around only requires 2^16 objects, then that&apos;s not really a sound design, unless I&apos;m missing something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713005</commentid>
    <comment_count>58</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-06 01:12:48 -0700</bug_when>
    <thetext>Thanks pizlo!

(In reply to comment #56)
&gt; I think we should eliminate this 3.3% regression.  That&apos;s great that you optimized it by 8% in another patch, but that&apos;s not a good reason to regress the performance.

OK, I&apos;ll invent some more optimization. However, it will be landed in a separate patch before landing this patch, because removing the 3.3% regression in this patch is difficult for the reason described below.
 
&gt; Have you performed the following investigation:
&gt; 
&gt; 1) What is the statistical significance of the regression?  Have you run it multiple (at least 10) times and computed the standard deviation or even better, confidence intervals?

The results are the average of 10 runs. Will investigate standard deviation etc.

&gt; 2) Do you know where the regression is coming from?

The 3.3% regression is due to a lot of if(!m_treeScopeDepth) checks in ChildNodeInsertionNotifier::notify() and ChildNodeRemovalNotifier::notify(). The if branches slows down the performance. But it is difficult to remove these if branches because they are critical for the algorithm.

On the other hand, I don&apos;t know the root cause of about 1% regressions in dom-attr and dom-traverse. Will investigate it.

&gt; 3) What is the performance of the rest of Dromaeo, and of Dromaeo as a whole?

No observable regression. Other benchmarks in Dromaeo do not touch DOM.


&gt; &gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:66
&gt; &gt; +    void notify(Node*, bool);
&gt; 
&gt; I would strongly prefer an enum instead of a bool.  This bool is hard to follow!  I particularly prefer verbose enums in these cases:
&gt; 
&gt; enum InsertionPointDeletionState {
&gt;     InsertionPointDeletionHasBegun,
&gt;     InsertionPointDeletionHasNotBegun
&gt; }
&gt; 
&gt; Or similar.

Will fix.

&gt; &gt; Source/WebCore/platform/TreeShared.h:198
&gt; &gt; +    unsigned m_nonWrapperRefCount : 16; // Reference count by normal RefPtrs in WebKit.
&gt; &gt; +    unsigned m_lifetimeOwner : 1; // Whether this Node is a lifetime owner or not.
&gt; &gt; +    unsigned m_wrapperRefCount : 15; // Reference count by wrapper objects.
&gt; 
&gt; I don&apos;t feel comfortable with such small ref counts.  32768 referees feels small.

The rationale for the counts is explained in this section (https://docs.google.com/a/chromium.org/document/d/1HcaeU-75xukMYSUaskeDoHL-L0FNuCDIukvPmOheY8Q/edit#heading=h.cdgghoqthpgu).

&gt; Do you have functionality to guard against overflow?

ASSERT() should be inserted, you&apos;re right. But it is difficult to insert an if(...) check because the if branch regresses performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713016</commentid>
    <comment_count>59</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-06 01:21:58 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/platform/TreeShared.h:198
&gt; &gt; &gt; +    unsigned m_nonWrapperRefCount : 16; // Reference count by normal RefPtrs in WebKit.
&gt; &gt; &gt; +    unsigned m_lifetimeOwner : 1; // Whether this Node is a lifetime owner or not.
&gt; &gt; &gt; +    unsigned m_wrapperRefCount : 15; // Reference count by wrapper objects.
&gt; &gt; 
&gt; &gt; I don&apos;t feel comfortable with such small ref counts.  32768 referees feels small.
&gt; 
&gt; The rationale for the counts is explained in this section (https://docs.google.com/a/chromium.org/document/d/1HcaeU-75xukMYSUaskeDoHL-L0FNuCDIukvPmOheY8Q/edit#heading=h.cdgghoqthpgu).

The doc claims there isn&apos;t a programatic way to spam the RefCount, but why can&apos;t a web page just create 60k TreeWalker objects that hold a reference to the node via TreeWalker::m_current ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713020</commentid>
    <comment_count>60</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-06 01:26:05 -0700</bug_when>
    <thetext>var walkers = [];
for (var i=0; i &lt; 60000; ++i)
    walkers.push(document.createTreeWalker(document.body));

I haven&apos;t looked in the debugger, but isn&apos;t the ref count on document.body now around 60k?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713031</commentid>
    <comment_count>61</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-06 01:52:19 -0700</bug_when>
    <thetext>(In reply to comment #60)
&gt; var walkers = [];
&gt; for (var i=0; i &lt; 60000; ++i)
&gt;     walkers.push(document.createTreeWalker(document.body));
&gt; 
&gt; I haven&apos;t looked in the debugger, but isn&apos;t the ref count on document.body now around 60k?

I confirmed that it created 120k refcounts! So, that&apos;s a problem.

A possible solution would be falling back to a 32-bit refcount allocated in NodeRareData when the 16-bit refcount overflows (, which would be a super rare case). In order to check if the overflow happens or not, one if branch is needed in ref().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713051</commentid>
    <comment_count>62</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-06 02:09:09 -0700</bug_when>
    <thetext>pizlo: Thank you very much for comments.

&gt; 2) You should fix the 3% regression in dom-modify.
&gt; 3) Dromaeo is a really bad benchmark, you should create a worst-case benchmark.
&gt; 5) I&apos;m particularly concerned with the small number of bits given to the reference counts.

As a next step, I will focus on fixing the above three issues.


&gt; 4) You should run the following other benchmarks as a sanity check: SunSpider, Kraken, RIABench

Will do. But I think (I hope) that there is no observable regression because they do not touch DOM.


&gt; 1) Can you articulate what the general advantages of this approach are, outside of V8, and other than the semantic changes?  I don&apos;t think you&apos;re going to convince us that this patch is a good idea if it only benefits V8.  You&apos;re also not likely to get far with the semantic argument.  So.  Does this broadly help generational GC, or other GC barriers, for example?  Does it fix a known bug on a known website?  If this change cannot help WebKit, then it&apos;s hard to swallow.

- A big performance &amp; memory improvement in a generational GC for DOM objects (https://docs.google.com/a/google.com/document/d/1uNyNSoNedyxsT9d_qqZXMW7ISLpycV7O4PrzSO56yWM/edit). The GC algorithm I&apos;ve been proposing is broadly applicable to generational GCs. If JSC adopted a generational GC, JSC will be also benefited.

- There is a known bug about the semantics (http://code.google.com/p/chromium/issues/detail?id=143478&amp;q=label%3AWebKit-ID-88834&amp;colspec=ID%20Pri%20Mstone%20ReleaseBlock%20OS%20Area%20Feature%20Status%20Owner%20Summary)

- That being said, I know that the above two items won&apos;t convince you. If you (and other port contributors) do not wish this change, it might be possible to enable the semantics only in V8 by surrounding #if USE(V8) or moving most of the code to V8 specific directory.


Actually, IMHO, if we could implement the semantics without any perf regression, the semantics is better than the current incomprehensible semantics. So I&apos;m thinking that the biggest problem is how I could fix all the perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713498</commentid>
    <comment_count>63</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-06 11:20:59 -0700</bug_when>
    <thetext>I broadly agree with the direction this review is taking. 

One comment about performance testing: We need some benchmark that shows average case and worse case cost of

    (a) full document tear-down

    (b) small fragment tear-down

The micro-benchmarks you&apos;re measuring cover (b) but not (a).

Also, please report benchmark results for JSC. We can&apos;t use V8 results as a baseline because, as your data shows, the V8 implementation of DOM GC is slow, so it sets a too-low bar for performance.

&gt; - If you (and other port contributors) do not wish this change, it might be possible to enable the semantics only in V8 by surrounding #if USE(V8) or moving most of the code to V8 specific directory.

No. We simply can&apos;t maintain two #ifdef&apos;d implementations of an algorithm that is both complex and central to the engine. That would seriously undermine our hackability, performance, security, and compatibility goals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713508</commentid>
    <comment_count>64</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-06 11:26:25 -0700</bug_when>
    <thetext>&gt; I confirmed that it created 120k refcounts! So, that&apos;s a problem.

Marking r- based on this.

(The other comments here may or may not be reasons for r-, depending on the outcome of some investigations.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727296</commentid>
    <comment_count>65</comment_count>
      <attachid>165523</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-24 22:46:03 -0700</bug_when>
    <thetext>Created attachment 165523
Pathological test case 1

I&apos;ll upload the performance result in a day (with performance results for a bunch of benchmarks in both JSC and V8).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727297</commentid>
    <comment_count>66</comment_count>
      <attachid>165524</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-24 22:48:02 -0700</bug_when>
    <thetext>Created attachment 165524
Pathological test case 2

I&apos;ll upload the performance result in a day (with performance results for a bunch of benchmarks in both JSC and V8).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730277</commentid>
    <comment_count>67</comment_count>
      <attachid>166147</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-27 23:19:53 -0700</bug_when>
    <thetext>Created attachment 166147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730278</commentid>
    <comment_count>68</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-09-27 23:21:27 -0700</bug_when>
    <thetext>fpizlo, ggaren: Uploaded a revised patch. Investigated a bunch of benchmarks. Clarified a couple of items pointed out by reviewers.

Benchmark results: https://docs.google.com/a/chromium.org/spreadsheet/ccc?key=0AlobCOyvTnPKdDJiZXh5X0tWeVZXMnQ0ZF9YUHZGdXc#gid=0

Document for more details: https://docs.google.com/a/chromium.org/document/d/1cGPSSWNENS891GuhvYTU7pKsncWUwztoVhGNe0YVlRk/edit

The summary of the document:

  - For Dromaeo, Octane, Kraken and Sunspider, no performance regression.
  - For a lot of tests of Dromaeo JQuery and Dromaeo Prototype.js, 10 ~ 30% performance improvement in V8.
  - For pathological test cases, ~3.1% performance regression in JSC and ~5.8% performance regression in V8.

The document also explains the following points:

  - How to manage a wrapper reference count and a normal reference count using only one 32 bit integer
  - The real cause of the ~3.3% performance regression we had observed
  - Pathological test cases that will be most affected by this change

===========

If you have more benchmark suggestions, I’m happy to investigate. Also I am seeking ideas for simplifying the implementation of TreeShared.h. The current TreeShared.h is a bit difficult to read, in order to have compilers generate fully optimized assembly (See the “Topic 2” of the document for more details).

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732356</commentid>
    <comment_count>69</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-02 00:09:32 -0700</bug_when>
    <thetext>
Benchmark data looks like this doesn&apos;t hurt most DOM benchmarks. Kudos for that. However...

(In reply to comment #68)
&gt; fpizlo, ggaren: Uploaded a revised patch. Investigated a bunch of benchmarks. Clarified a couple of items pointed out by reviewers.
&gt; 
&gt; Benchmark results: https://docs.google.com/a/chromium.org/spreadsheet/ccc?key=0AlobCOyvTnPKdDJiZXh5X0tWeVZXMnQ0ZF9YUHZGdXc#gid=0
&gt; 

Looks like the benchmark data doesn&apos;t include a page load speed benchmark or results of testing on popular sites, as requested by Filip in comment #25


&gt; Document for more details: https://docs.google.com/a/chromium.org/document/d/1cGPSSWNENS891GuhvYTU7pKsncWUwztoVhGNe0YVlRk/edit

According to this document, this approach can cause memory leaks in some cases. That seems like a very poor characteristic for a reference counting algorithm. Any explanation for why it&apos;s ok to leak sometimes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732371</commentid>
    <comment_count>70</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-02 00:30:26 -0700</bug_when>
    <thetext>Thank you very much maciej.

(In reply to comment #69)
&gt; &gt; Benchmark results: https://docs.google.com/a/chromium.org/spreadsheet/ccc?key=0AlobCOyvTnPKdDJiZXh5X0tWeVZXMnQ0ZF9YUHZGdXc#gid=0
&gt; &gt; 
&gt; 
&gt; Looks like the benchmark data doesn&apos;t include a page load speed benchmark or results of testing on popular sites, as requested by Filip in comment #25

Do you have any idea for testing that in a reliable way?

To obtain reliable results, I guess that we need to test it using some micro benchmarks. In that sense, pathological micro benchmarks for page loading would be helpful. The pathological test case (https://bugs.webkit.org/attachment.cgi?id=165523) would be one good test case. Another test case would be innerHTML=&quot;a_big_DOM_tree&quot;, which is tested in dom-modify.

If you have more benchmark suggestions, I&apos;d be happy to test them.

&gt; &gt; Document for more details: https://docs.google.com/a/chromium.org/document/d/1cGPSSWNENS891GuhvYTU7pKsncWUwztoVhGNe0YVlRk/edit
&gt; 
&gt; According to this document, this approach can cause memory leaks in some cases. That seems like a very poor characteristic for a reference counting algorithm. Any explanation for why it&apos;s ok to leak sometimes?

To be clear: The algorithm leaks memory only in a case where there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot;. I guess that there is no call path that causes such a situation. I believe that at least such a situation won&apos;t happen practically. If it happened (I don&apos;t think it happens), it just leaks memory.

(If there is any algorithm that is guaranteed not to leak memory, that would be definitely better.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732741</commentid>
    <comment_count>71</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-02 09:49:28 -0700</bug_when>
    <thetext>&gt; Do you have any idea for testing that in a reliable way?

We run page load tests (PLT) continuously on trunk.  The easiest way to get those numbers is to land the patch and watch the graphs.  Getting reliable numbers prior to landing is possible as well, but trickier.

Kentaro, if you find me on chat I can explain how to do it.  It requires access to non-public test data, which you should have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732770</commentid>
    <comment_count>72</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-02 10:07:05 -0700</bug_when>
    <thetext>(In reply to comment #70)
&gt; The algorithm leaks memory only in a case where there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot;. I guess that there is no call path that causes such a situation.

I want to understand what this means. Did you try to think of pathological cases that could lead to this situation? Can we just create a test that sets 100,000 properties on a DOM node all pointing to its parent node?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732815</commentid>
    <comment_count>73</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-02 10:51:08 -0700</bug_when>
    <thetext>&gt; The algorithm leaks memory only in a case where there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot;.

Like Darin, I&apos;d like to understand this statement more. However, if the plain meaning here is true, this is obviously a show-stopper, and cause for an r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732860</commentid>
    <comment_count>74</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-02 11:23:58 -0700</bug_when>
    <thetext>(In reply to comment #71)
&gt; &gt; Do you have any idea for testing that in a reliable way?
&gt; 
&gt; We run page load tests (PLT) continuously on trunk.  The easiest way to get those numbers is to land the patch and watch the graphs.  Getting reliable numbers prior to landing is possible as well, but trickier.
&gt; 
&gt; Kentaro, if you find me on chat I can explain how to do it.  It requires access to non-public test data, which you should have.

Given the performance risk of this change, and the specific request from Filip, it seems like testing before landing is the right thing to do.

(In reply to comment #70)
&gt; 
&gt; To be clear: The algorithm leaks memory only in a case where there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot;. I guess that there is no call path that causes such a situation. I believe that at least such a situation won&apos;t happen practically. If it happened (I don&apos;t think it happens), it just leaks memory.

Wouldn&apos;t something like Adam&apos;s test case from comment #60 trigger this leak? Or a node with more than 65535, which is allowed by the DOM, and could happen in case of a table with a huge number of rows?

&gt; (If there is any algorithm that is guaranteed not to leak memory, that would be definitely better.)

The current normal refcounting algorithm doesn&apos;t have this issue. So this seems like a showstopper to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733275</commentid>
    <comment_count>75</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-02 17:59:31 -0700</bug_when>
    <thetext>(In reply to comment #74)
&gt; 
&gt; Wouldn&apos;t something like Adam&apos;s test case from comment #60 trigger this leak? Or a node with more than 65535, which is allowed by the DOM, and could happen in case of a table with a huge number of rows?
&gt; 

I meant to say, node with more than 65535 *child nodes*.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733279</commentid>
    <comment_count>76</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-02 18:09:47 -0700</bug_when>
    <thetext>darin:
&gt; &gt; The algorithm leaks memory only in a case where there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot;. I guess that there is no call path that causes such a situation.
&gt; 
&gt; I want to understand what this means. Did you try to think of pathological cases that could lead to this situation? Can we just create a test that sets 100,000 properties on a DOM node all pointing to its parent node?

maciej:
&gt; Wouldn&apos;t something like Adam&apos;s test case from comment #60 trigger this leak?

These two cases don&apos;t cause the memory leak. First of all, the memory leak does not happen unless there is &quot;refcount synonym&quot;. In other words, the memory leak happens only when we misinterpret the refcount value. Specifically, the memory leak can happen in a case where:

- the refcount is 65538.
- the actual situation is &quot;0 wrapper refcount + 65538 normal refcounts&quot;.
- but we interpret it as &quot;1 wrapper refcount + 2 normal refcounts&quot;.

In the test cases you suggested, the guys who keep 65535 refcounts are wrapper objects. Thus, the test cases do not cause the misinterpretation. The misinterpretation can happen only when there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot; _without_passing_any_wrapper_object_.

maciej:
&gt; Or a node with more than 65535, which is allowed by the DOM, and could happen in case of a table with a huge number of rows?

Given that tree edges are not refcounted, this won&apos;t cause the memory leak.


maciej:
&gt; &gt; (If there is any algorithm that is guaranteed not to leak memory, that would be definitely better.)
&gt; 
&gt; The current normal refcounting algorithm doesn&apos;t have this issue.

But the current normal refcounting algorithm causes the wrong DOM lifetime semantics, which is the problem I want to fix. We want a refcounting algorithm that can count up a wrapper refcount and a normal refcount separately using only one 32-bit integer:)


(In reply to comment #74)
&gt; (In reply to comment #71)
&gt; &gt; &gt; Do you have any idea for testing that in a reliable way?
&gt; &gt; 
&gt; &gt; We run page load tests (PLT) continuously on trunk.  The easiest way to get those numbers is to land the patch and watch the graphs.  Getting reliable numbers prior to landing is possible as well, but trickier.
&gt; &gt; 
&gt; &gt; Kentaro, if you find me on chat I can explain how to do it.  It requires access to non-public test data, which you should have.
&gt; 
&gt; Given the performance risk of this change, and the specific request from Filip, it seems like testing before landing is the right thing to do.

Sure! Let me do the page load tests after we can reach a consensus on the refcounting problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733339</commentid>
    <comment_count>77</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-02 20:53:06 -0700</bug_when>
    <thetext>(In reply to comment #76)
&gt; darin:
&gt; &gt; &gt; The algorithm leaks memory only in a case where there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot;. I guess that there is no call path that causes such a situation.
&gt; &gt; 
&gt; &gt; I want to understand what this means. Did you try to think of pathological cases that could lead to this situation? Can we just create a test that sets 100,000 properties on a DOM node all pointing to its parent node?
&gt; 
&gt; maciej:
&gt; &gt; Wouldn&apos;t something like Adam&apos;s test case from comment #60 trigger this leak?
&gt; 
&gt; These two cases don&apos;t cause the memory leak. First of all, the memory leak does not happen unless there is &quot;refcount synonym&quot;. In other words, the memory leak happens only when we misinterpret the refcount value. Specifically, the memory leak can happen in a case where:
&gt; 
&gt; - the refcount is 65538.
&gt; - the actual situation is &quot;0 wrapper refcount + 65538 normal refcounts&quot;.
&gt; - but we interpret it as &quot;1 wrapper refcount + 2 normal refcounts&quot;.
&gt; 
&gt; In the test cases you suggested, the guys who keep 65535 refcounts are wrapper objects. Thus, the test cases do not cause the misinterpretation. The misinterpretation can happen only when there are 65535 or more (direct or indirect) normal references from &quot;any Node in the tree to which Node X belongs&quot; to &quot;Node X&quot; _without_passing_any_wrapper_object_.

That does not sound right to me. In Adam&apos;s test case, the non-wrapper TreeWalker holds a reference to the Node. TreeWalkers can have their own separate lifetimes and are not part of a DOM tree, so they need to each separately ref their node.

Further, your document says the wrapper refcount is only for separate wrappers in different isolated worlds. That is why you say it is ok for it to only be 15 bits. If any wrapper affected the wrapper refcount instead of the normal refcount, not just wrappers for the same object in different isolated worlds, then you would trivially be able to overflow the 15 bit wrapper refcount. If Adam&apos;s test case used the wrapper refcount instead of the normal refcount, it would itself overflow 15 bits. And I don&apos;t see how it could maintain correctness without using either refcount.

&gt; 
&gt; maciej:
&gt; &gt; Or a node with more than 65535, which is allowed by the DOM, and could happen in case of a table with a huge number of rows?
&gt; 
&gt; Given that tree edges are not refcounted, this won&apos;t cause the memory leak.

What does create non-wrapper references, then, if it&apos;s neither wrappers nor tree edges?


&gt; 
&gt; 
&gt; maciej:
&gt; &gt; &gt; (If there is any algorithm that is guaranteed not to leak memory, that would be definitely better.)
&gt; &gt; 
&gt; &gt; The current normal refcounting algorithm doesn&apos;t have this issue.
&gt; 
&gt; But the current normal refcounting algorithm causes the wrong DOM lifetime semantics, which is the problem I want to fix. We want a refcounting algorithm that can count up a wrapper refcount and a normal refcount separately using only one 32-bit integer:)

While it would be nice to fix that, a memory leak is worse than the problem you are trying to fix.

&gt; &gt; 
&gt; &gt; Given the performance risk of this change, and the specific request from Filip, it seems like testing before landing is the right thing to do.
&gt; 
&gt; Sure! Let me do the page load tests after we can reach a consensus on the refcounting problem.

I don&apos;t think you are going to get consensus that leaking memory is acceptable. Unless it&apos;s provably the case that the leak is impossible. But it doesn&apos;t sound like it to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733395</commentid>
    <comment_count>78</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-02 23:42:29 -0700</bug_when>
    <thetext>othermaciej and I had an extensive discussion of this bug on #webkit.  Here&apos;s an attempt at a summary:

The key thing to understand is that there are four kinds of references to DOM nodes:

1) Edges of the DOM tree itself
2) References from JS wrappers in various isolated worlds
3) References within the DOM tree (i.e., from one node to another in C++)
4) References from outside the DOM tree

The patch can run into trouble in the following cases:

A) There are more than 2^15 references of type (2).  This can occur only when there are that many isolated wolds.  othermaciej and I agree that this is a reasonable API limit, but we should probably enforce that limit.

B) There are more than 2^15 references of type (2) that point to a single node.  If this occurs, we will leak the tree for much the same reason we leak the tree today if a node holds a reference to one of its ancestors.  Specifically, we&apos;ll think that there is a wrapper pointing to the popular node and therefore retain the tree.  However, retaining the tree will cause us to maintaing the 2^15 references to the node.

The patch does not run into trouble if, as discussed above, there are &gt;2^15 references of type (4).  The behavior is different than before the patch, but the difference in behavior is both more correct and does not cause a memory leak.  Specifically, if there are &gt;2^15 references of type (4) to a single node, we&apos;ll retain the tree until there are fewer than 2^15 references to that node.

Given the forgoing, othermaciej&apos;s remaining concerns are in regards to case (B).  Specifically, he&apos;s concerned about whether (B) can occur.  If (B) can occur with realistic content, he would view that as a huge showstopper concern.  In addition, he would view any leak that occurs with this patch but not without as a major concern.  Leaks that occur without the patch but do not occur with the patch are progressions, but he&apos;s troubled by trading one set of leaks for another.

We looked around a bit to see if we could find any examples of case (B) by inspection.  Instead, we found a leak that can occur today due to an obscure violation of the &quot;don&apos;t ref your ancestor&quot; rule.  (I filed that issue as Bug 98234.)

My view differs a bit from othermaciej&apos;s in this regard.  In my view, if the leaks don&apos;t occur in practice but instead only occur in security-exploit-style situations, then we should fix these obscure leaks whether they&apos;re caused by (B) or by violations of &quot;don&apos;t ref your parent.&quot;  However, for both sorts of leaks, it&apos;s likely more important to fix crash bugs that are hit by users in the wild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733451</commentid>
    <comment_count>79</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-03 01:49:41 -0700</bug_when>
    <thetext>(In reply to comment #78)

&gt; 
&gt; We looked around a bit to see if we could find any examples of case (B) by inspection.  Instead, we found a leak that can occur today due to an obscure violation of the &quot;don&apos;t ref your ancestor&quot; rule.  (I filed that issue as Bug 98234.)

I don&apos;t know if that&apos;s totally accurate. I spent maybe 5 minutes looking for examples of case (B) and I think what I found would be likely to turn out to be such an example on closer examination (in addition to having a potential leak with the current code base under different circumstances). I&apos;m not going to do a full audit myself because I believe it&apos;s up to the advocates of the patch to show that it is safe from the identified leak hazard.

&gt; 
&gt; My view differs a bit from othermaciej&apos;s in this regard.  In my view, if the leaks don&apos;t occur in practice but instead only occur in security-exploit-style situations, then we should fix these obscure leaks whether they&apos;re caused by (B) or by violations of &quot;don&apos;t ref your parent.&quot;  However, for both sorts of leaks, it&apos;s likely more important to fix crash bugs that are hit by users in the wild.

We need to consider the change of programming disciplines as well as the replacement of one set of bugs with another.

Is there a rule for correct use of the proposed new refcounting model that is as easy to understand as &quot;don&apos;t ref your ancestors&quot;, or alternately mechanically enforceable at compile time? The best I can think of is &quot;don&apos;t ref any node in a DOM subtree 2^16 or more times from any combination of other nodes in that subtree&quot;, and I would have no idea how to try to follow that rule, or consider it in patch review. Perhaps there is a better rule that is easier to follow consistently than &quot;don&apos;t ref your ancestors&quot; but I do not know what it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733472</commentid>
    <comment_count>80</comment_count>
      <attachid>166147</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-03 02:16:44 -0700</bug_when>
    <thetext>Comment on attachment 166147
Patch

I&apos;d like to thank everyone, especially Maciej, for taking the time to understand this patch and for providing constructive feedback.  I&apos;m marking this patch r- because it looks like we&apos;ll need to iterate on the approach some more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735288</commentid>
    <comment_count>81</comment_count>
      <attachid>167240</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-04 21:08:18 -0700</bug_when>
    <thetext>Created attachment 167240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735291</commentid>
    <comment_count>82</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-04 21:11:57 -0700</bug_when>
    <thetext>Maciej asked me if there was a way to fix this in WebKit, and I came up with this.

I think this is a better solution than rewriting referenced counting in the DOM because this is simple and efficient, and it doesn&apos;t introduce security bugs or leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735297</commentid>
    <comment_count>83</comment_count>
      <attachid>167240</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-04 21:17:38 -0700</bug_when>
    <thetext>Comment on attachment 167240
Patch

Would you add the same logic to the V8 port? (Or please skip the test in Chromium. I&apos;ll add the same logic later.)

I&apos;d like to r+ it if there is no objection. Although this solution is not helpful for reclaiming DOM objects in minor GC cycles, we should anyway fix the current wrong semantics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735303</commentid>
    <comment_count>84</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-04 21:24:11 -0700</bug_when>
    <thetext>(In reply to comment #82)
&gt; Maciej asked me if there was a way to fix this in WebKit, and I came up with this.
&gt; 
&gt; I think this is a better solution than rewriting referenced counting in the DOM because this is simple and efficient, and it doesn&apos;t introduce security bugs or leaks.

Did you performance test to ensure this doesn&apos;t cause a regression, and if so what tests did you run?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735316</commentid>
    <comment_count>85</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-04 21:43:39 -0700</bug_when>
    <thetext>&gt; Did you performance test to ensure this doesn&apos;t cause a regression, and if so what tests did you run?

I was concerned that this edge case wouldn&apos;t show up in normal performance testing, so I ran these special-case tests:

(*) A stress test of removing subtrees from the DOM via .innerHTML:

		for (var i = 0; i &lt; 5000; ++i) {
			p..innerHTML = &quot;&quot;;
			p.appendChild(div);
		}

    =&gt; No regression. (Cost dominated by innerHTML.)

(*) A stress test of removing subtrees from the DOM via DOM APIs:

		for (var i = 0; i &lt; 5000; ++i) {
			p.removeChild(div);
			p.appendChild(div);
		}

    =&gt; No regression. (More efficient than innerHTML. Cost still dominated by DOM tree maintenance.)

(*) A stress test of cycling subtrees through the DOM to make sure they didn&apos;t leak:

                Same as above, but new nodes each time instead of recycled nodes.

    =&gt; No leak.

(*) Kentaro&apos;s pathological test cases, attached to this bug

    =&gt; No regression.

(*) Visited facebook.com, google.com, gmail.com with a breakpoint on the slow path of willCreatePossiblyOrphanedTreeByRemoval()

    =&gt; Called ~200 times (compared to ~400,000 total JS allocations).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735335</commentid>
    <comment_count>86</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-04 22:10:06 -0700</bug_when>
    <thetext>
That testing sounds great. I think it would also be worthwhile to verify that the edge case does not in fact show up in normal perf testing. Does that seem reasonable, or is the risk of regressing something like Dromaeo or a page load speed benchmark too low to worry about it?

(In reply to comment #85)
&gt; &gt; Did you performance test to ensure this doesn&apos;t cause a regression, and if so what tests did you run?
&gt; 
&gt; I was concerned that this edge case wouldn&apos;t show up in normal performance testing, so I ran these special-case tests:
&gt; 
&gt; (*) A stress test of removing subtrees from the DOM via .innerHTML:
&gt; 
&gt;         for (var i = 0; i &lt; 5000; ++i) {
&gt;             p..innerHTML = &quot;&quot;;
&gt;             p.appendChild(div);
&gt;         }
&gt; 
&gt;     =&gt; No regression. (Cost dominated by innerHTML.)
&gt; 
&gt; (*) A stress test of removing subtrees from the DOM via DOM APIs:
&gt; 
&gt;         for (var i = 0; i &lt; 5000; ++i) {
&gt;             p.removeChild(div);
&gt;             p.appendChild(div);
&gt;         }
&gt; 
&gt;     =&gt; No regression. (More efficient than innerHTML. Cost still dominated by DOM tree maintenance.)
&gt; 
&gt; (*) A stress test of cycling subtrees through the DOM to make sure they didn&apos;t leak:
&gt; 
&gt;                 Same as above, but new nodes each time instead of recycled nodes.
&gt; 
&gt;     =&gt; No leak.
&gt; 
&gt; (*) Kentaro&apos;s pathological test cases, attached to this bug
&gt; 
&gt;     =&gt; No regression.
&gt; 
&gt; (*) Visited facebook.com, google.com, gmail.com with a breakpoint on the slow path of willCreatePossiblyOrphanedTreeByRemoval()
&gt; 
&gt;     =&gt; Called ~200 times (compared to ~400,000 total JS allocations).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735370</commentid>
    <comment_count>87</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-04 23:01:55 -0700</bug_when>
    <thetext>&gt; That testing sounds great. I think it would also be worthwhile to verify that the edge case does not in fact show up in normal perf testing. Does that seem reasonable, or is the risk of regressing something like Dromaeo or a page load speed benchmark too low to worry about it?

I ran the Dromaeo DOM core tests:

    NO PATCH: 1496.95runs/s
    PATCH: 1502.92runs/s

I don&apos;t think page load speed is a useful benchmark for this patch because navigation doesn&apos;t trigger this function. (I double-checked this on the URLs I mentioned.) Only direct manipulation via DOM APIs triggers this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735375</commentid>
    <comment_count>88</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-04 23:05:28 -0700</bug_when>
    <thetext>&gt; Would you add the same logic to the V8 port? (Or please skip the test in Chromium. I&apos;ll add the same logic later.)

Honestly, TestExpectations has gotten so complicated that I don&apos;t feel comfortable adding to it.

If you can supply an equivalent toV8 line for the &quot;toJS(...)&quot; line @ JSNodeCustom.h:92, I&apos;d be happy to land it with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735377</commentid>
    <comment_count>89</comment_count>
      <attachid>167240</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 23:11:22 -0700</bug_when>
    <thetext>Comment on attachment 167240
Patch

Attachment 167240 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14171581

New failing tests:
fast/dom/gc-5.html
fast/dom/gc-12.html
fast/dom/gc-dom-tree-lifetime.html
fast/dom/gc-3.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735386</commentid>
    <comment_count>90</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-04 23:19:41 -0700</bug_when>
    <thetext>(In reply to comment #88)
&gt; &gt; Would you add the same logic to the V8 port? (Or please skip the test in Chromium. I&apos;ll add the same logic later.)
&gt; 
&gt; Honestly, TestExpectations has gotten so complicated that I don&apos;t feel comfortable adding to it.
&gt; 
&gt; If you can supply an equivalent toV8 line for the &quot;toJS(...)&quot; line @ JSNodeCustom.h:92, I&apos;d be happy to land it with this patch.

OK, I&apos;ll do it in hours.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735401</commentid>
    <comment_count>91</comment_count>
      <attachid>167240</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2012-10-04 23:37:46 -0700</bug_when>
    <thetext>Comment on attachment 167240
Patch

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

&gt; Source/WebCore/dom/ContainerNode.cpp:39
&gt; +#if USE(JSC)
&gt; +#include &quot;JSNode.h&quot;
&gt; +#endif

Can you please move this outside of the sorted list of #include statements? #if&apos;d includes are generally put in a separate paragraph from the normal #includes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735402</commentid>
    <comment_count>92</comment_count>
      <attachid>167240</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-10-04 23:39:01 -0700</bug_when>
    <thetext>Comment on attachment 167240
Patch

r+ to this patch as is for JSC, pending adding Kentaro&apos;s changes to support V8.
Looking at the test cases, I see test coverage (in gc-12) where a wrapper is created on a node in a disconnected subtree, ensuring that the parent remains alive. I think we discussed at least one more possible route to this problem, where a singleton disconnected node could be given children and became a root. Is this a real problem, is it possible to write a test case, and is it covered by one of these test cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735424</commentid>
    <comment_count>93</comment_count>
      <attachid>167240</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 00:02:33 -0700</bug_when>
    <thetext>Comment on attachment 167240
Patch

Attachment 167240 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14171604

New failing tests:
fast/dom/gc-5.html
fast/dom/gc-12.html
fast/dom/gc-dom-tree-lifetime.html
fast/dom/gc-3.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735435</commentid>
    <comment_count>94</comment_count>
      <attachid>167267</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-05 00:20:50 -0700</bug_when>
    <thetext>Created attachment 167267
With V8 side fix

As V8 does not implement [CustomHeader], we cannot add willCreatePossiblyOrphanedTreeByRemoval() to V8NodeCustom.h. So I added it to V8DOMWrapper.cpp.

I&apos;m investigating performance impacts on Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735458</commentid>
    <comment_count>95</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-05 00:48:07 -0700</bug_when>
    <thetext>(In reply to comment #87)
&gt; I ran the Dromaeo DOM core tests:
&gt; 
&gt;     NO PATCH: 1496.95runs/s
&gt;     PATCH: 1502.92runs/s

Is this a total score of Dromaeo core tests? The total score is strongly affected by dom-query, and thus the score is not so meaningful. Would you check the performance of each Dromaeo DOM tests in Safari again just in case?


I observed 6.5% regression in Dromaeo/dom-modify in Chromium.

[no patch]
dom-modify= 4182.68393722 runs/s
dom-modify= 4258.18237669 runs/s
dom-modify= 4279.1751288 runs/s
dom-modify= 4270.84756712 runs/s
dom-modify= 4285.91877381 runs/s

[with patch]
dom-modify= 3988.47523316 runs/s
dom-modify= 4022.2093293 runs/s
dom-modify= 4024.93821216 runs/s
dom-modify= 3970.77244907 runs/s
dom-modify= 3970.77244907 runs/s

Even though I inlined willCreatePossiblyOrphanedTreeByRemoval(), I couldn&apos;t kill the perf regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735690</commentid>
    <comment_count>96</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-05 09:18:26 -0700</bug_when>
    <thetext>&gt; a singleton disconnected node could be given children and became a root

I&apos;ll add a test case for this to gc-12.html.

I realized after our conversation that this case does not require special treatment in code. It is not possible to modify a singleton node without that node already having a JavaScript reference (i.e., the reference you are using in the modifying expression).

A general way to say this is that the DOM only has API for implicitly creating an unreferenced parent due to removal (.innerHTML, editing, etc.); there&apos;s no API for implicitly creating an unreferenced parent due to insertion, akin to .ancestorHTML. (An older version of this patch included willCreatePossiblyOrphanedTreeByInsertion, to match willCreatePossiblyOrphanedTreeByRemoval. When I tried to write a test for it, I realized there&apos;s no such thing.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735950</commentid>
    <comment_count>97</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-05 14:18:11 -0700</bug_when>
    <thetext>&gt; Can you please move this outside of the sorted list of #include statements?

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736032</commentid>
    <comment_count>98</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-05 15:25:27 -0700</bug_when>
    <thetext>&gt; Is this a total score of Dromaeo core tests?

Yes.

&gt; I observed 6.5% regression in Dromaeo/dom-modify in Chromium.

I re-ran dom-modify @ WebKit r130453, using dromaeo.com and PerformanceTests/Dromaeo/dom-modify.html.

dromaeo.com:

NO PATCH 431.34runs/s ±2.05%
PATCH 440.11runs/s ±2.57%

NOPATCH avg 3842.9124664019946 runs/s ±77
PATCH avg 3974.452005804083 runs/s ±74

Neither result seems to show a statistically significant change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736040</commentid>
    <comment_count>99</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-05 15:33:35 -0700</bug_when>
    <thetext>Kentaro, would you like me to land the V8 code or leave it out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736041</commentid>
    <comment_count>100</comment_count>
      <attachid>167397</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-05 15:35:14 -0700</bug_when>
    <thetext>Created attachment 167397
patch + Gavin&apos;s and Mark&apos;s suggested edits - V8 code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736122</commentid>
    <comment_count>101</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-05 17:34:29 -0700</bug_when>
    <thetext>(In reply to comment #99)
&gt; Kentaro, would you like me to land the V8 code or leave it out?

I&apos;d like to investigate the perf regression observed in the V8 side change. I&apos;ll do it next week. So please land the JSC side patch first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736262</commentid>
    <comment_count>102</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-06 11:27:39 -0700</bug_when>
    <thetext>Committed r130584: &lt;http://trac.webkit.org/changeset/130584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736263</commentid>
    <comment_count>103</comment_count>
      <attachid>167397</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-06 11:34:48 -0700</bug_when>
    <thetext>Comment on attachment 167397
patch + Gavin&apos;s and Mark&apos;s suggested edits - V8 code

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

&gt; Source/WebCore/bindings/js/JSNodeCustom.h:76
&gt; +// the C++ DOM, we ensure that the root of every tree has a JavaScript
&gt; +// wrapper.

I would have moved that orphan word to the previous line.

&gt; Source/WebCore/bindings/js/JSNodeCustom.h:86
&gt; +    if (!root-&gt;isContainerNode())
&gt; +        return;
&gt; +
&gt; +    if (!toContainerNode(root)-&gt;hasChildNodes())
&gt; +        return;

You could combine both of these and just say:

    if (!root-&gt;hasChildNodes())
        return;

I believe you’d generate essentially the identical code by doing that. Is there some advantage to the longer form?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736270</commentid>
    <comment_count>104</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-06 11:48:26 -0700</bug_when>
    <thetext>&gt; I would have moved that orphan word to the previous line.

OK.

&gt; You could combine both of these and just say:
&gt; 
&gt;     if (!root-&gt;hasChildNodes())
&gt;         return;

Aha! I&apos;ll do this -- I didn&apos;t notice that Node had this interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736271</commentid>
    <comment_count>105</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-06 11:50:51 -0700</bug_when>
    <thetext>Committed r130587: &lt;http://trac.webkit.org/changeset/130587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736442</commentid>
    <comment_count>106</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-07 15:57:12 -0700</bug_when>
    <thetext>ASSERT fix.

Committed r130611: &lt;http://trac.webkit.org/changeset/130611&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737274</commentid>
    <comment_count>107</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-08 17:52:22 -0700</bug_when>
    <thetext>Hmmm, I observe 6% perf regression in Dromaeo/dom-modify with the V8 side fix. I&apos;ll land a couple of patches that optimizes DOM mutations to offset the perf regression, before landing the V8 side fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737462</commentid>
    <comment_count>108</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-10-08 23:37:55 -0700</bug_when>
    <thetext>Now the correct DOM lifetime semantics was implemented in JSC. The semantics will be also soon implemented in V8, once I can solve a couple of perf problems. 

On the other hand, the original objective of this bug was to fix V8&apos;s GC so that it can collect DOM objects in minor GC cycles. If you&apos;re interested in the V8&apos;s GC issue, please follow bug 98725. In bug 98725, we are trying to fix V8&apos;s GC by another algorithm that affects V8 and V8 binding only, with little change in WebCore/dom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796662</commentid>
    <comment_count>109</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-22 03:25:43 -0800</bug_when>
    <thetext>Re-opening this bug since it is not yet fixed in V8. Performance regressions have been preventing me from landing the fix to V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457885</commentid>
    <comment_count>110</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-09-08 01:50:03 -0700</bug_when>
    <thetext>This has been fixed in JSC and V8 binding is no longer a thing in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457886</commentid>
    <comment_count>111</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-08 01:51:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/44254672&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>146998</attachid>
            <date>2012-06-11 20:36:35 -0700</date>
            <delta_ts>2012-06-11 20:36:35 -0700</delta_ts>
            <desc>Performance tests</desc>
            <filename>ref_count_benchmark_upload.html</filename>
            <type>text/html</type>
            <size>2099</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KPHNjcmlwdD4KZnVuY3Rpb24gcnVuKHRpdGxl
LCByZXBlYXROdW0sIGZ1bmMsIHJvdW5kcykgewogIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0Iik7CiAgaWYgKCFyZXN1bHQpIHsKICAgIHZhciByZXN1bHQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQocmVzdWx0KTsKICB9CgogIHZhciByb3VuZHMgPSByb3VuZHMgfHwgNTsKICB2YXIgdGltZXMg
PSBbXTsKICBmb3IgKHZhciByID0gMDsgciA8IHJvdW5kczsgcisrKSB7CiAgICB2YXIgc3RhcnQg
PSBEYXRlLm5vdygpOwogICAgZnVuYyhyZXBlYXROdW0pOwogICAgdmFyIHRpbWUgPSBEYXRlLm5v
dygpIC0gc3RhcnQ7CiAgICB0aW1lcy5wdXNoKHRpbWUpOwogICAgcmVzdWx0LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpbWUpKTsKICAgIHJlc3VsdC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKICB9CgogIHRpbWVzLnNvcnQoZnVuY3Rpb24g
KGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKICB2YXIgbWVkaWFuID0gdGltZXNbTWF0aC5mbG9v
cih0aW1lcy5sZW5ndGggLyAyKV07CiAgdmFyIG1pbiA9IHRpbWVzWzBdOwogIHZhciBtYXggPSB0
aW1lc1t0aW1lcy5sZW5ndGggLSAxXTsKICB2YXIgc3VtID0gMDsKICBmb3IgKHZhciBpID0gMDsg
aSA8IHRpbWVzLmxlbmd0aDsgaSsrKSB7CiAgICBzdW0gKz0gdGltZXNbaV07CiAgfQoKICByZXN1
bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUgKyAiIDogbWVhbj0i
ICsgKHN1bSAvIHJvdW5kcykudG9GaXhlZCgyKSArICJtcywgbWluPSIgKyBtaW4gKyAibXMsIG1l
ZGlhbj0iICsgbWVkaWFuICsgIm1zLCBtYXg9IiArIG1heCArICJtcyIpKTsKICByZXN1bHQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7Cn0KCmZ1bmN0aW9uIGdlbmVy
YXRlQmluRE9NVHJlZShkZXB0aCkgewogIGlmIChkZXB0aCA9PSAwKQogICAgcmV0dXJuICIiOwog
IHZhciBsZWZ0SHRtbCA9IGdlbmVyYXRlQmluRE9NVHJlZShkZXB0aCAtIDEpOwogIHZhciByaWdo
dEh0bWwgPSBnZW5lcmF0ZUJpbkRPTVRyZWUoZGVwdGggLSAxKTsKICByZXR1cm4gIjxkaXY+IiAr
IGxlZnRIdG1sICsgcmlnaHRIdG1sICsgIjwvZGl2PiI7Cn0KCi8qCmRvY3VtZW50LmJvZHkuaW5u
ZXJIVE1MID0gZ2VuZXJhdGVCaW5UcmVlSHRtbCg1KTsKY29uc29sZS5sb2coZG9jdW1lbnQuYm9k
eSk7CiovCgp3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkgewogIHZhciByZXBlYXROdW0gPSAx
MDAwOwogIHZhciBnbG9iYWxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGdsb2JhbERpdik7CiAgdmFyIHRyZWUgPSBnZW5lcmF0
ZUJpbkRPTVRyZWUoMTApOwoKICBydW4oImlubmVySFRNTCIsIHJlcGVhdE51bSwgZnVuY3Rpb24o
cmVwZWF0TnVtKSB7CiAgICB2YXIgZGl2ID0gZ2xvYmFsRGl2OwogICAgZm9yICh2YXIgaiA9IDA7
IGogPCByZXBlYXROdW07IGorKykgewogICAgICBkaXYuaW5uZXJIVE1MID0gdHJlZTsKICAgIH0K
ICB9KTsKCiAgdmFyIHRyZWUgPSAiIjsKICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMjQ7IGkrKykK
ICAgIHRyZWUgKz0gIjxkaXY+PC9kaXY+IjsKICBnbG9iYWxEaXYuaW5uZXJIVE1MID0gdHJlZTsK
ICB2YXIgZGl2TGlzdCA9IGdsb2JhbERpdi5xdWVyeVNlbGVjdG9yQWxsKCJkaXYiKTsKCiAgcnVu
KCJhcHBlbmRDaGlsZCIsIHJlcGVhdE51bSwgZnVuY3Rpb24ocmVwZWF0TnVtKSB7CiAgICB2YXIg
ZGl2ID0gZ2xvYmFsRGl2OwogICAgdmFyIGxlbmd0aCA9IGRpdkxpc3QubGVuZ3RoOwogICAgZm9y
ICh2YXIgaiA9IDA7IGogPCByZXBlYXROdW07IGorKykgewogICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgZGl2LmFwcGVuZENoaWxkKGRpdkxpc3RbaV0pOwog
ICAgICB9CiAgICB9CiAgfSk7Cn0KPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146999</attachid>
            <date>2012-06-11 20:39:08 -0700</date>
            <delta_ts>2012-06-20 23:28:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88834-20120612123907.patch</filename>
            <type>text/plain</type>
            <size>15377</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQ1YmVjYmRlNDc0MWRi
MjJjMTYwMDhmNDM2Y2U5MzcxNjc5YjBiOC4uM2ZjMmNlMDZiYTEzODE0YTY0YzkwMjYzYzgwMTJk
ZmRiN2UyNjRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA2LTExICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IElmIE5vZGUg
WCBoYXMgYSByZWYtY291bnQsIGFsbCB0aGUgTm9kZXMgaW4gdGhlIHRyZWUgd2hpY2ggWCBiZWxv
bmdzIHRvIHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIG9uZSBpZGVhLgorCisgICAgICAgIFBlcmZv
cm1hbmNlIHRlc3Q6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTE0
Njk5OAorCisgICAgICAgIFRoaXMgcGF0Y2ggcmVncmVzc2VzIHRoZSBwZXJmb3JtYW5jZSB0ZXN0
IGJ5IDguMyUgZm9yICdpbm5lckhUTUwnIGFuZCBieSAyNS45JSBmb3IgJ2FwcGVuZENoaWxkJy4K
KworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpwYXJlbnROb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6c2V0UGFyZW50T3JIb3N0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpwYXJlbnRP
ckhvc3ROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnBhcmVudE5vZGVHdWFyYW50ZWVk
SG9zdEZyZWUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6Omd1YXJkUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpndWFyZERl
cmVmKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbW92ZWRGcm9t
KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5u
ZXJIVE1MKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OlRyZWVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6flRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNoYXJlZDo6cm9vdCk6CisgICAgICAgIChUcmVlU2hhcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTaGFyZWQ6OnJvb3RSZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6
cm9vdERlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJvb3RSZWZDb3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNoYXJlZDo6ZGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6c2V0UGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnByb3BhZ2F0ZVJvb3RGcm9tUGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnBhcmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjphZG9wdGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmg6Cisg
ICAgICAgIChTVkdFbGVtZW50SW5zdGFuY2UpOgorCiAyMDEyLTA2LTEwICBQYWJsbyBGbG91cmV0
ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBBY2Nlc3MgY29udHJvbCBhbGxvdyBs
aXN0cyBzdGFydGluZyB3aXRoIGEgY29tbWEgYXJlIHBhcnNlZCBpbmNvcnJlY3RseSAoQ09SUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGJlOGM3OGU0ZDVmMTA1NjdkNGU1NTli
YWJmYmZlNjBmOTE2ZmZlM2MuLjkzZjZlOGQ0NmRhZDY1NTZmYjMxODMzYThlYWZkYWI0ZGMzN2Rm
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMjgxLDYgKzI4MSwyNyBAQCBp
bmxpbmUgTm9kZSogQ29udGFpbmVyTm9kZTo6dHJhdmVyc2VOZXh0Tm9kZShjb25zdCBOb2RlKiBz
dGF5V2l0aGluKSBjb25zdAogICAgIHJldHVybiB0cmF2ZXJzZU5leHRTaWJsaW5nKHN0YXlXaXRo
aW4pOwogfQogCitpbmxpbmUgQ29udGFpbmVyTm9kZSogTm9kZTo6cGFyZW50Tm9kZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGdldEZsYWcoSXNTaGFkb3dSb290RmxhZykgPyAwIDogc3RhdGljX2Nh
c3Q8Q29udGFpbmVyTm9kZSo+KHBhcmVudCgpKTsKK30KKworaW5saW5lIHZvaWQgTm9kZTo6c2V0
UGFyZW50T3JIb3N0Tm9kZShDb250YWluZXJOb2RlKiBwYXJlbnQpCit7CisgICAgc2V0UGFyZW50
KHBhcmVudCk7Cit9CisKK2lubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRPckhvc3RO
b2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHBh
cmVudCgpKTsKK30KKworaW5saW5lIENvbnRhaW5lck5vZGUqIE5vZGU6OnBhcmVudE5vZGVHdWFy
YW50ZWVkSG9zdEZyZWUoKSBjb25zdAoreworICAgIEFTU0VSVCghZ2V0RmxhZyhJc1NoYWRvd1Jv
b3RGbGFnKSk7CisgICAgcmV0dXJuIHBhcmVudE9ySG9zdE5vZGUoKTsKK30KKwogdHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPE5vZGU+LCAxMT4gTm9kZVZlY3RvcjsKIAogaW5saW5lIHZvaWQgZ2V0Q2hp
bGROb2RlcyhOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggOGZkOGM5Njc2NDIzMGMyYWE1OTBmZTBmNjJhYzAyYjY2YWU0ZjkyNC4uYTU5ZTQ5NzY2
ZWJjYWUyZjNiOGZjMTg3MWZkZWQ1MjYzNmU5NjNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTIwNiwxMiArMjA2LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9kZWxl
dGlvbkhhc0JlZ3VuKTsKICAgICAgICAgKyttX2d1YXJkUmVmQ291bnQ7CisgICAgICAgIC8vZnBy
aW50ZihzdGRlcnIsICJndWFyZFJlZigpKysgPT4gJWRcbiIsIG1fZ3VhcmRSZWZDb3VudCk7CiAg
ICAgfQogCiAgICAgdm9pZCBndWFyZERlcmVmKCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9k
ZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgLS1tX2d1YXJkUmVmQ291bnQ7CisgICAgICAgIC8v
ZnByaW50ZihzdGRlcnIsICJndWFyZFJlZigpLS0gPT4gJWRcbiIsIG1fZ3VhcmRSZWZDb3VudCk7
CiAgICAgICAgIGlmICghbV9ndWFyZFJlZkNvdW50ICYmICFyZWZDb3VudCgpKSB7CiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAppbmRleCAwMDUyNjRjZWQwNTJhZjY5ZGY1MjhkYjY1YWE4YzYwYzc1ZDcxZjRk
Li45OTM0NDAwNDUzYzM2YmRiMjcxNWI2Yzc5MTBiNDkyMzM1ZWQyYjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCkBAIC0xNTE5LDYgKzE1MTksNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uICpFbGVt
ZW50OjpzdHlsZSgpCiAKIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNT
ZWxlY3Rpb24pCiB7CisgICAgZnByaW50ZihzdGRlcnIsICJFbGVtZW50Ojpmb2N1cygpXG4iKTsK
ICAgICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggM2ZiMmQ5ZDljMGE3MDc5ZGFkN2RhNzE2ZTZiOGZlNTVlMzAzNmYxNi4uN2VmZGY4NjZl
YWFlZjBkNTc2NTkxYzZjZjE1ZmQzZDZiY2JjMTE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjQy
OCw2ICsyNDI4LDggQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTm9kZTo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0CiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IE5v
ZGU6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKIHsKICAgICBB
U1NFUlQoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSB8fCBpc0NvbnRhaW5lck5vZGUoKSk7
CisgICAgLy9mcHJpbnRmKHN0ZGVyciwgIk5vZGU6Omluc2VydGVkSW50bygpXG4iKTsKKyAgICBw
cm9wYWdhdGVSb290RnJvbVBhcmVudCgpOwogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1
bWVudCgpKQogICAgICAgICBzZXRGbGFnKEluRG9jdW1lbnRGbGFnKTsKICAgICByZXR1cm4gSW5z
ZXJ0aW9uRG9uZTsKQEAgLTI0MzYsNiArMjQzOCw4IEBAIE5vZGU6Okluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgTm9kZTo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
CiB2b2lkIE5vZGU6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQog
ewogICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpIHx8IGlzQ29udGFpbmVy
Tm9kZSgpKTsKKyAgICAvL2ZwcmludGYoc3RkZXJyLCAiTm9kZTo6cmVtb3ZlZEZyb20oKVxuIik7
CisgICAgcHJvcGFnYXRlUm9vdEZyb21QYXJlbnQoKTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQt
PmluRG9jdW1lbnQoKSkKICAgICAgICAgY2xlYXJGbGFnKEluRG9jdW1lbnRGbGFnKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCmluZGV4IDUzMDg0ZDcxNDk2NDg1NDM5ODU1N2Q1NWY1NmUxMzJjMjUwNmYzYTIuLjEy
YTBlMTQxYmIzNDA0OWE0OTc3NmE2NGU2YjZkNTlhY2FkOGVjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAt
MTA0LDcgKzEwNCw3IEBAIGVudW0gU3R5bGVDaGFuZ2VUeXBlIHsKICAgICBTeW50aGV0aWNTdHls
ZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQKIH07CiAKLWNsYXNzIE5vZGUgOiBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hh
cmVkPE5vZGUsIENvbnRhaW5lck5vZGU+IHsKK2NsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJn
ZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPE5vZGU+IHsKICAg
ICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKICAg
ICBmcmllbmQgY2xhc3MgVHJlZVNjb3BlQWRvcHRlcjsKQEAgLTYyOSw4ICs2MjksOCBAQCBwdWJs
aWM6CiAgICAgLy8gdG8gZXZlbnQgbGlzdGVuZXJzLCBhbmQgcHJldmVudHMgRE9NQWN0aXZhdGUg
ZXZlbnRzIGZyb20gYmVpbmcgc2VudCBhdCBhbGwuCiAgICAgdmlydHVhbCBib29sIGRpc2FibGVk
KCkgY29uc3Q7CiAKLSAgICB1c2luZyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+Ojpy
ZWY7Ci0gICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6ZGVyZWY7Cisg
ICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlPjo6cmVmOworICAgIHVzaW5nIFRyZWVTaGFyZWQ8Tm9k
ZT46OmRlcmVmOwogCiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0
YSgpOwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KTsKQEAgLTc0MSw3ICs3NDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRIYXNDdXN0b21D
YWxsYmFja3MoKSB7IHNldEZsYWcodHJ1ZSwgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyk7IH0KIAog
cHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2Rl
PjsKKyAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlPjsKIAogICAgIHZvaWQgcmVtb3Zl
ZExhc3RSZWYoKTsKIApAQCAtNzgwLDggKzc4MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlIE5v
ZGU6OnBhcmVudE5vZGUgYXMgdGhlIGNvbnNpc3RlbnQgd2F5IG9mIHF1ZXJ5aW5nIGEgcGFyZW50
IG5vZGUuCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgbWFkZSBwcml2YXRlIHRvIGVuc3VyZSBhIGNv
bXBpbGVyIGVycm9yIG9uIGNhbGwgc2l0ZXMgdGhhdAogICAgIC8vIGRvbid0IGZvbGxvdyB0aGlz
IHJ1bGUuCi0gICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjo6cGFyZW50
OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT46OnNldFBhcmVudDsK
KyAgICB1c2luZyBUcmVlU2hhcmVkPE5vZGU+OjpwYXJlbnQ7CisgICAgdXNpbmcgVHJlZVNoYXJl
ZDxOb2RlPjo6c2V0UGFyZW50OwogCiAgICAgdm9pZCB0cmFja0ZvckRlYnVnZ2luZygpOwogCkBA
IC04MzQsMjcgKzgzNCw2IEBAIGlubGluZSB2b2lkIGFkZFN1YnJlc291cmNlVVJMKExpc3RIYXNo
U2V0PEtVUkw+JiB1cmxzLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgICAgIHVybHMuYWRkKHVybCk7
CiB9CiAKLWlubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZ2V0RmxhZyhJc1NoYWRvd1Jvb3RGbGFnKSA/IDAgOiBwYXJlbnQoKTsKLX0K
LQotaW5saW5lIHZvaWQgTm9kZTo6c2V0UGFyZW50T3JIb3N0Tm9kZShDb250YWluZXJOb2RlKiBw
YXJlbnQpCi17Ci0gICAgc2V0UGFyZW50KHBhcmVudCk7Ci19Ci0KLWlubGluZSBDb250YWluZXJO
b2RlKiBOb2RlOjpwYXJlbnRPckhvc3ROb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gcGFyZW50
KCk7Ci19Ci0KLWlubGluZSBDb250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnROb2RlR3VhcmFudGVl
ZEhvc3RGcmVlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIWdldEZsYWcoSXNTaGFkb3dSb290Rmxh
ZykpOwotICAgIHJldHVybiBwYXJlbnRPckhvc3ROb2RlKCk7Ci19Ci0KIGlubGluZSB2b2lkIE5v
ZGU6OnJlYXR0YWNoKCkKIHsKICAgICBpZiAoYXR0YWNoZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKaW5kZXggM2Q0ZWU4ZDI5NTc2ZDc4ZDRmMGQ2MDQxYzhmYTEyODc2MDlmYmVm
Mi4uYzIyYmE3ODNjNjBlZmFjOTdiYzE4YTk2YjI2NzVhOTI2YjA1Y2VlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTM0Miw2ICszNDIsNyBAQCBTdHJpbmcgSFRNTEVsZW1l
bnQ6Om91dGVySFRNTCgpIGNvbnN0CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChj
b25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIC8vZnByaW50Zihz
dGRlcnIsICJIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKClcbiIpOwogICAgIGlmIChSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJI
VE1MKGh0bWwsIHRoaXMsIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpKQogICAgICAgICByZXBs
YWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQodGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggMmViZGIxZDFjNTk3OGQxZjBj
N2VmMzJmZGNiNGRjMzYwZmZjNTJmNC4uMGNiOGMxMmRhMTIzMmQwZmFlYTUxMTk1OTNiNTMxODUy
MGFjMGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMjUsMzIgKzI1
LDQyIEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAorI2RlZmluZSBQUklOVF9ERUJVRyAwCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2lmbmRlZiBOREVCVUcKLXRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQ
YXJlbnROb2RlVHlwZT4gY2xhc3MgVHJlZVNoYXJlZDsKLXRlbXBsYXRlPHR5cGVuYW1lIE5vZGVU
eXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8Tm9k
ZVR5cGUsIFBhcmVudE5vZGVUeXBlPiopOwordGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGU+IGNs
YXNzIFRyZWVTaGFyZWQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZT4gdm9pZCBhZG9wdGVk
KFRyZWVTaGFyZWQ8Tm9kZVR5cGU+Kik7CiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUgTm9k
ZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkIHsKK3RlbXBs
YXRlPHR5cGVuYW1lIE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShUcmVlU2hhcmVkKTsKIHByb3RlY3RlZDoKICAgICBUcmVlU2hhcmVkKCkKICAg
ICAgICAgOiBtX3BhcmVudCgwKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKKyAgICAgICAgLCBt
X3Jvb3RSZWZDb3VudCgxKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLCBtX2Fkb3B0aW9uSXNS
ZXF1aXJlZCh0cnVlKQogI2VuZGlmCiAgICAgeworICAgICAgICBtX3Jvb3QgPSBzdGF0aWNfY2Fz
dDxOb2RlVHlwZSo+KHRoaXMpOwogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogI2lm
bmRlZiBOREVCVUcKICAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gZmFsc2U7CiAgICAgICAg
IG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7CiAjZW5kaWYKKyNpZiBQUklOVF9E
RUJVRworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwLlRyZWVTaGFyZWQoKSBtX3Jvb3Q9JXBc
biIsIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyksIG1fcm9vdCk7CisjZW5kaWYKICAgICB9
CiAKICAgICB+VHJlZVNoYXJlZCgpCiAgICAgeworI2lmIFBSSU5UX0RFQlVHCisgICAgICAgIGZw
cmludGYoc3RkZXJyLCAiJXAuflRyZWVTaGFyZWQoKSBtX3BhcmVudD0lcCBtX3Jvb3Q9JXBcbiIs
IHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyksIG1fcGFyZW50LCBtX3Jvb3QpOworI2VuZGlm
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9yZWZD
b3VudCk7CiAgICAgICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwpAQCAtNTgsNiArNjgs
MzggQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHVibGljOgorICAgIE5vZGVUeXBlKiByb290KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3Jvb3Q7CisgICAgfQorCisgICAgdm9pZCByb290UmVm
KGludCBjb3VudCkKKyAgICB7CisgICAgICAgIG1fcm9vdFJlZkNvdW50ICs9IGNvdW50OworI2lm
IFBSSU5UX0RFQlVHCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXAubV9yb290UmVmQ291bnQg
Kz0gJWQgPT4gJWRcbiIsIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyksIGNvdW50LCBtX3Jv
b3RSZWZDb3VudCk7CisjZW5kaWYKKyAgICB9CisKKyAgICB2b2lkIHJvb3REZXJlZihpbnQgY291
bnQpCisgICAgeworICAgICAgICBtX3Jvb3RSZWZDb3VudCAtPSBjb3VudDsKKyNpZiBQUklOVF9E
RUJVRworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwLm1fcm9vdFJlZkNvdW50IC09ICVkID0+
ICVkXG4iLCBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLCBjb3VudCwgbV9yb290UmVmQ291
bnQpOworI2VuZGlmCisgICAgICAgIGlmIChtX3Jvb3RSZWZDb3VudCA8PSAwICYmICFtX3BhcmVu
dCkgeworI2lmIFBSSU5UX0RFQlVHCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVwLnJl
bW92ZWRMYXN0UmVmKClcbiIsIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcykpOworI2VuZGlm
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLT5yZW1vdmVkTGFzdFJl
ZigpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCByb290UmVmQ291bnQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fcm9vdFJlZkNvdW50OworICAgIH0KKwogICAgIHZvaWQgcmVmKCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC02NSw2ICsxMDcsMTAg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsK
ICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgICAgICsrbV9yZWZD
b3VudDsKKworICAgICAgICBpZiAoIW1fcm9vdCkKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJy
LCAiRVJST1I6ICVwLnJlZigpIG1fcGFyZW50PSVwIG1fcm9vdD0lcFxuIiwgc3RhdGljX2Nhc3Q8
Tm9kZVR5cGUqPih0aGlzKSwgbV9wYXJlbnQsIG1fcm9vdCk7CisgICAgICAgIG1fcm9vdC0+cm9v
dFJlZigxKTsKICAgICB9CiAKICAgICB2b2lkIGRlcmVmKCkKQEAgLTc0LDEyICsxMjAsMjAgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFT
U0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fYWRv
cHRpb25Jc1JlcXVpcmVkKTsKLSAgICAgICAgaWYgKC0tbV9yZWZDb3VudCA8PSAwICYmICFtX3Bh
cmVudCkgeworICAgICAgICAtLW1fcmVmQ291bnQ7CisKKyAgICAgICAgaWYgKCFtX3Jvb3QpCisg
ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVSUk9SOiAlcC5kZXJlZigpIG1fcGFyZW50PSVw
IG1fcm9vdD0lcFxuIiwgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKSwgbV9wYXJlbnQsIG1f
cm9vdCk7CisgICAgICAgIG1fcm9vdC0+cm9vdERlcmVmKDEpOworCisgICAgICAgIC8qCisgICAg
ICAgIGlmIChtX3JlZkNvdW50IDw9IDAgJiYgIW1fcGFyZW50KSB7CiAjaWZuZGVmIE5ERUJVRwog
ICAgICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwogI2VuZGlmCiAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLT5yZW1vdmVkTGFzdFJlZigp
OwogICAgICAgICB9CisgICAgICAgICovCiAgICAgfQogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSBj
b25zdApAQCAtOTQsMTMgKzE0OCwyOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX3JlZkNv
dW50OwogICAgIH0KIAotICAgIHZvaWQgc2V0UGFyZW50KFBhcmVudE5vZGVUeXBlKiBwYXJlbnQp
CisgICAgdm9pZCBzZXRQYXJlbnQoTm9kZVR5cGUqIHBhcmVudCkKICAgICB7IAogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBtX3BhcmVudCA9IHBhcmVudDsgCisjaWYg
UFJJTlRfREVCVUcKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcC5zZXRQYXJlbnQoKSBtX3Bh
cmVudChiZWZvcmUpPSVwIG1fcGFyZW50KGFmdGVyKT0lcFxuIiwgc3RhdGljX2Nhc3Q8Tm9kZVR5
cGUqPih0aGlzKSwgbV9wYXJlbnQsIHBhcmVudCk7CisjZW5kaWYKKyAgICAgICAgbV9wYXJlbnQg
PSBwYXJlbnQ7CisgICAgfQorCisgICAgdm9pZCBwcm9wYWdhdGVSb290RnJvbVBhcmVudCgpCisg
ICAgeworICAgICAgICBOb2RlVHlwZSogb2xkUm9vdCA9IG1fcm9vdDsKKyAgICAgICAgbV9yb290
ID0gbV9wYXJlbnQgPyBtX3BhcmVudC0+cm9vdCgpIDogc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0
aGlzKTsKKyAgICAgICAgaWYgKG1fcm9vdCAhPSBvbGRSb290KSB7CisgICAgICAgICAgICBtX3Jv
b3QtPnJvb3RSZWYobV9yZWZDb3VudCk7CisgICAgICAgICAgICBvbGRSb290LT5yb290RGVyZWYo
bV9yZWZDb3VudCk7CisgICAgICAgIH0KKyNpZiBQUklOVF9ERUJVRworICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIiVwLnByb3BhZ2F0ZVJvb3RGcm9tUGFyZW50KCkgbV9wYXJlbnQ9JXAgbV9yb290
KGJlZm9yZSk9JXAgbV9yb290KGFmdGVyKT0lcFxuIiwgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0
aGlzKSwgbV9wYXJlbnQsIG9sZFJvb3QsIG1fcm9vdCk7CisjZW5kaWYKICAgICB9CiAKLSAgICBQ
YXJlbnROb2RlVHlwZSogcGFyZW50KCkgY29uc3QKKyAgICBOb2RlVHlwZSogcGFyZW50KCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWRPckdDVGhyZWFkKCkpOwogICAg
ICAgICByZXR1cm4gbV9wYXJlbnQ7CkBAIC0xMTMsMTEgKzE4MywxMyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAjaWZuZGVmIE5ERUJVRwotICAgIGZyaWVuZCB2b2lkIGFkb3B0ZWQ8PihUcmVlU2hh
cmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qKTsKKyAgICBmcmllbmQgdm9pZCBhZG9wdGVk
PD4oVHJlZVNoYXJlZDxOb2RlVHlwZT4qKTsKICNlbmRpZgogCi0gICAgUGFyZW50Tm9kZVR5cGUq
IG1fcGFyZW50OworICAgIE5vZGVUeXBlKiBtX3BhcmVudDsKKyAgICBOb2RlVHlwZSogbV9yb290
OwogICAgIGludCBtX3JlZkNvdW50OworICAgIGludCBtX3Jvb3RSZWZDb3VudDsKIAogI2lmbmRl
ZiBOREVCVUcKICAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVkOwpAQCAtMTI2LDcgKzE5OCw3
IEBAIHByaXZhdGU6CiAKICNpZm5kZWYgTkRFQlVHCiAKLXRlbXBsYXRlPHR5cGVuYW1lIE5vZGVU
eXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gaW5saW5lIHZvaWQgYWRvcHRlZChUcmVlU2hh
cmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qIG9iamVjdCkKK3RlbXBsYXRlPHR5cGVuYW1l
IE5vZGVUeXBlPiBpbmxpbmUgdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8Tm9kZVR5cGU+KiBvYmpl
Y3QpCiB7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCAxYzg5YzdjY2QxZDI4OTQyNDRlZmM2OGYwMDhi
NTNhNzM2ODMyZGI4Li44ODVkN2I4ZWY4ZGIyMDMwZjJkNDliOGU0ZTIwYWNiOTAyOWRkMTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBAIC0zOCw3ICszOCw3IEBA
IGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZUxpc3Q7CiBjbGFzcyBTVkdTdHlsZWRFbGVtZW50Owog
CiAvLyBTVkdFbGVtZW50SW5zdGFuY2UgbWltaWNzIE5vZGUsIGJ1dCB3aXRob3V0IHByb3ZpZGlu
ZyBhbGwgaXRzIGZ1bmN0aW9uYWxpdHkKLWNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZSA6IHB1Ymxp
YyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPiwgcHVi
bGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZSA6IHB1YmxpYyBUcmVl
U2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZT4sIHB1YmxpYyBFdmVudFRhcmdldCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBjcmVhdGUoU1ZHVXNl
RWxlbWVudCogY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQsIFNWR1VzZUVsZW1lbnQqIGRpcmVjdFVz
ZUVsZW1lbnQsIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3JpZ2luYWxFbGVtZW50KQogICAgIHsK
QEAgLTk3LDggKzk3LDggQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRh
dGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCopOwogCi0gICAgdXNpbmcgVHJlZVNo
YXJlZDxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5jZT46OnJlZjsKLSAgICB1
c2luZyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPjo6
ZGVyZWY7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpyZWY7Cisg
ICAgdXNpbmcgVHJlZVNoYXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpkZXJlZjsKIAogICAgIC8v
IEV2ZW50VGFyZ2V0IEFQSQogICAgIERFRklORV9GT1JXQVJESU5HX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihjb3JyZXNwb25kaW5nRWxlbWVudCgpLCBhYm9ydCk7CkBAIC0xNDQsMTAgKzE0NCwx
MCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFNWR1VzZUVsZW1lbnQ7
Ci0gICAgZnJpZW5kIGNsYXNzIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVt
ZW50SW5zdGFuY2U+OworICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0
YW5jZT47CiAKLSAgICB1c2luZyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxl
bWVudEluc3RhbmNlPjo6cGFyZW50OwotICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudElu
c3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+OjpzZXRQYXJlbnQ7CisgICAgdXNpbmcgVHJlZVNo
YXJlZDxTVkdFbGVtZW50SW5zdGFuY2U+OjpwYXJlbnQ7CisgICAgdXNpbmcgVHJlZVNoYXJlZDxT
VkdFbGVtZW50SW5zdGFuY2U+OjpzZXRQYXJlbnQ7CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2Uo
U1ZHVXNlRWxlbWVudCosIFNWR1VzZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IG9y
aWdpbmFsRWxlbWVudCk7CiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148737</attachid>
            <date>2012-06-20 23:28:42 -0700</date>
            <delta_ts>2012-06-22 07:03:33 -0700</delta_ts>
            <desc>the first WIP patch to observe build bots</desc>
            <filename>bug-88834-20120621152841.patch</filename>
            <type>text/plain</type>
            <size>67630</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYxZTQxOWVhZjY4Nzk5
ZTBhNmJkZjAyYzAyM2NlNjMzZWQzNTMxMS4uMGQzZTIyNTU1NTk5Y2E4MDhkMTZiMWViZmY2ZGJj
ODVhYjJlYjg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA2LTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBOb2RlIFggaGFz
IGEgcmVmLWNvdW50LCBhbGwgdGhlIE5vZGVzIGluIHRoZSB0cmVlIHdoaWNoIFggYmVsb25ncyB0
byBzaG91bGQgYmUga2VwdCBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTdGlsbCBXSVAuCisgICAgICAgIEEgcm91Z2ggZXhwbGFuYXRpb24gb2Yg
dGhlIGFsZ29yaXRobTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4
ODM0I2MzCisgICAgICAgIEEgZGV0YWlsZWQgZG9jdW1lbnQgd2lsbCBiZSBjb21pbmcgc29vbi4K
KworICAgICAgICBUZXN0OiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF0dHI6OmNyZWF0ZVRleHRDaGlsZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hp
bGRyZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpnY0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6On5Db250
YWluZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnBhcnNlckFkZENoaWxkKToKKyAgICAgICAgKiBk
b20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAoQ29udGFpbmVyTm9kZSk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxk
Tm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2Nl
bmRhbnRSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3Jp
dGhtcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXIpOgorICAgICAgICAoQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVy
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Z2NDaGlsZHJlbkluQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUNoaWxkcmVuSW5Db250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9k
ZUluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2Vy
dGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlO
b2RlUmVtb3ZlZEZyb21UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3Rp
Zmllcjo6Y2hlY2tJZkxpZmV0aW1lT3duZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2NDaGlsZHJlbk9mRG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpndWFyZERlcmVmKToKKyAg
ICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmZvcmNlUmVt
b3ZlQWxsU2hhZG93Um9vdHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAg
ICAgIChFbGVtZW50U2hhZG93KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkTGFz
dFJlZik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VDaGlsZHJlbldp
dGhGcmFnbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vVHJlZVNoYXJlZC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpUcmVlU2hhcmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6On5UcmVlU2hhcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTaGFyZWQ6OmRlcmVmKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVmQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNo
YXJlZDo6aGFzT25lUmVmKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnNldExpZmV0
aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6dW5zZXRMaWZldGltZU93
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OmlzTGlmZXRpbWVPd25lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpzZXRQYXJlbnQpOgorICAgICAgICAqIHN2Zy9T
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Om1hcEluc3RhbmNlVG9FbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUluc3RhbmNlTWFwcGluZyk6Cisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3Rh
bmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmlzQ29udGFpbmVy
Tm9kZSk6CisgICAgICAgIChTVkdFbGVtZW50SW5zdGFuY2UpOgorCiAyMDEyLTA2LTE5ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsaWduIFJl
bmRlckxheWVyJ3MgZGVzY2VuZGFudCBkZXBlbmRlbnQgZmxhZ3Mgc2VtYW50aWNzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgppbmRleCBiYmY2YTNkZDNkN2NkYTg2YmNkYTgwODAyM2I1YTIwYmM4Y2QzNGU5Li4x
ZWEwNDAyNDdiYzk5NTdjNTZjYjYxMzIxYzVmOGVkMGY3OWZhMTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3Jk
ZXIKQEAgLTI0NzcsNyArMjQ3Nyw2IEBAIF9fWk43V2ViQ29yZTE0U3R5bGVTaGVldExpc3REMUV2
CiBfX1pON1dlYkNvcmU5VHJlZVNjb3BlMjBkZXN0cm95VHJlZVNjb3BlRGF0YUV2CiBfX1pON1dl
YkNvcmUxOERvY3VtZW50T3JkZXJlZE1hcDVjbGVhckV2CiBfX1pON1dlYkNvcmUxM0NvbnRhaW5l
ck5vZGUxN3JlbW92ZUFsbENoaWxkcmVuRXYKLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hpbGRy
ZW5JbkNvbnRhaW5lcklOU180Tm9kZUVOU18xM0NvbnRhaW5lck5vZGVFRUV2UFQwXwogX19aTjdX
ZWJDb3JlMTVIVE1MSHRtbEVsZW1lbnREMEV2CiBfX1pON1dlYkNvcmUxM1N0eWxlZEVsZW1lbnRE
MkV2CiBfX1pON1dlYkNvcmU3RWxlbWVudEQyRXYKQEAgLTI5NDc2LDcgKzI5NDc1LDYgQEAgX19a
TjdXZWJDb3JlMThTVkdFbGVtZW50SW5zdGFuY2VEMEV2CiBfX1pON1dlYkNvcmUxMFNWR0VsZW1l
bnQyMXJlbW92ZUluc3RhbmNlTWFwcGluZ0VQTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFCiBfX1pO
SzNXVEY5SGFzaFRhYmxlSVBON1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUVTM19OU18xN0lk
ZW50aXR5RXh0cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNf
RUVTOV9FNGZpbmRJUzNfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1MzX1M3X0VFRUVO
U18yMkhhc2hUYWJsZUNvbnN0SXRlcmF0b3JJUzNfUzNfUzVfUzdfUzlfUzlfRUVSS1RfCiBfX1pO
M1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRl
bnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19F
RVM5X0U2cmVtb3ZlRVBTM18KLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRh
aW5lcklOU18xOFNWR0VsZW1lbnRJbnN0YW5jZUVTMV9FRXZQVDBfCiBfX1pUaG44X043V2ViQ29y
ZTE0U1ZHTGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043V2ViQ29yZTE4U1ZHUG9seWxpbmVFbGVt
ZW50RDBFdgogX19aVGhuOF9ON1dlYkNvcmUxN1NWR1BvbHlnb25FbGVtZW50RDBFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCmluZGV4IGRlOWU0ZmY0M2Y0OWJkODY0ZmZjOTQ0YjJkYzFiYmQ5OGM4NzE5M2EuLmY5
YmJmNTcwZGM0MTE3ODE3NzZmOTA0YWQ4ZDcyYmI4NWJiOGUzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAK
QEAgLTgyLDYgKzgyLDcgQEAgdm9pZCBBdHRyOjpjcmVhdGVUZXh0Q2hpbGQoKQogICAgICAgICAv
LyBUaGlzIGRvZXMgZXZlcnl0aGluZyBhcHBlbmRDaGlsZCgpIHdvdWxkIGRvIGluIHRoaXMgc2l0
dWF0aW9uIChhc3N1bWluZyBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCB3YXMgc2V0KSwKICAgICAg
ICAgLy8gYnV0IG11Y2ggbW9yZSBlZmZpY2llbnRseS4KICAgICAgICAgdGV4dE5vZGUtPnNldFBh
cmVudE9ySG9zdE5vZGUodGhpcyk7CisgICAgICAgIHRleHROb2RlLT51bnNldExpZmV0aW1lT3du
ZXIoKTsKICAgICAgICAgc2V0Rmlyc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgIHNl
dExhc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCmluZGV4IGMyM2EwYjllOTBkMDBiMmRhNDlkOTZhMzk4NTJiNzdkYzM2NDNiN2Qu
LjNkNzZhMGZhODgyMmYzN2EyMWZjMTIzNzBmZDFhMzI0NmRkNDY1MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTgzLDcgKzgzLDEyIEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoTm9kZSogbm9kZSwgTm9kZVZlY3RvciYg
bm9kZXMsCiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQogewotICAg
IHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXI8Tm9kZSwgQ29udGFpbmVyTm9kZT4odGhpcyk7
CisgICAgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlz
KTsKK30KKworYm9vbCBDb250YWluZXJOb2RlOjpnY0NoaWxkcmVuKCkKK3sKKyAgICByZXR1cm4g
Z2NDaGlsZHJlbkluQ29udGFpbmVyKHRoaXMpOwogfQogCiB2b2lkIENvbnRhaW5lck5vZGU6OnRh
a2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQpAQCAtMTExLDcgKzEx
Niw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJO
b2RlKiBvbGRQYXJlbnQpCiAKIENvbnRhaW5lck5vZGU6On5Db250YWluZXJOb2RlKCkKIHsKLSAg
ICByZW1vdmVBbGxDaGlsZHJlbigpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAifkNvbnRhaW5l
ck5vZGUoKSAlcFxuIiwgdGhpcyk7CiB9CiAKIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVm
b3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25D
b2RlJiBlYywgYm9vbCBzaG91bGRMYXp5QXR0YWNoKQpAQCAtNDAxLDcgKzQwNiw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7CiAKLSAg
ICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgpKTsKKyAg
ICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgpLCBmYWxz
ZSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogCiAgICAgcmV0dXJuIGNo
aWxkOwpAQCAtNDQ3LDcgKzQ1Miw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3Zl
Q2hpbGQoTm9kZSogb2xkQ2hpbGQpCiAgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBvbGRD
aGlsZCk7CiAKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgcHJldiwgbmV4dCwgLTEpOwotICAg
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkob2xkQ2hpbGQpOworICAgIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkob2xkQ2hpbGQsIGZhbHNlKTsKIH0K
IAogLy8gdGhpcyBkaWZmZXJzIGZyb20gb3RoZXIgcmVtb3ZlIGZ1bmN0aW9ucyBiZWNhdXNlIGl0
IGZvcmNpYmx5IHJlbW92ZXMgYWxsIHRoZSBjaGlsZHJlbiwKQEAgLTUwOSw3ICs1MTQsNyBAQCB2
b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICBjaGlsZHJlbkNoYW5nZWQo
ZmFsc2UsIDAsIDAsIC1zdGF0aWNfY2FzdDxpbnQ+KHJlbW92ZWRDaGlsZHJlbkNvdW50KSk7CiAK
ICAgICBmb3IgKGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuQ291bnQ7ICsraSkKLSAgICAgICAg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0u
Z2V0KCkpOworICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KHJl
bW92ZWRDaGlsZHJlbltpXS5nZXQoKSwgZmFsc2UpOwogCiAgICAgYWxsb3dFdmVudERpc3BhdGNo
KCk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwpAQCAtNTc4LDE0ICs1ODMs
MTUgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkKQogCiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogICAgIE5vZGUqIGxhc3Qg
PSBtX2xhc3RDaGlsZDsKKyAgICBOb2RlKiBjaGlsZCA9IG5ld0NoaWxkLmdldCgpOwogICAgIC8v
IEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgdGFrZSBhIFBhc3NSZWZQdHIuCi0gICAgYXBwZW5k
Q2hpbGRUb0NvbnRhaW5lcihuZXdDaGlsZC5nZXQoKSwgdGhpcyk7Ci0gICAgdHJlZVNjb3BlKCkt
PmFkb3B0SWZOZWVkZWQobmV3Q2hpbGQuZ2V0KCkpOworICAgIGFwcGVuZENoaWxkVG9Db250YWlu
ZXIoY2hpbGQsIHRoaXMpOworICAgIHRyZWVTY29wZSgpLT5hZG9wdElmTmVlZGVkKGNoaWxkKTsK
ICAgICAKICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0
cnVlLCBsYXN0LCAwLCAxKTsKLSAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcih0aGlzKS5u
b3RpZnkobmV3Q2hpbGQuZ2V0KCkpOworICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRo
aXMpLm5vdGlmeShjaGlsZCk7CiB9CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6c3VzcGVuZFBvc3RB
dHRhY2hDYWxsYmFja3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggYmU4Yzc4
ZTRkNWYxMDU2N2Q0ZTU1OWJhYmZiZmU2MGY5MTZmZmUzYy4uNjNlNDhlOWRkYmI0YzNiMzYwMDA4
YmUxY2I0ODI4MzA4YzRhZGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC02
NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAvLyBIb3cgZG8gcmVtb3ZlQ2hpbGRyZW4gYW5kIHJl
bW92ZUFsbENoaWxkcmVuIGRpZmZlcj8KICAgICB2b2lkIHJlbW92ZUNoaWxkcmVuKCk7CiAgICAg
dm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOworICAgIGJvb2wgZ2NDaGlsZHJlbigpOwogCiAgICAg
dm9pZCB0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqKTsKIApAQCAtMTA5LDkgKzEx
MCwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xh
c3MgR2VuZXJpY05vZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0Nv
bnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKik7Ci0KICAg
ICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+
CiAgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShH
ZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWlu
ZXIqKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVD
b250YWluZXI+CisgICAgZnJpZW5kIHZvaWQgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5l
cmljTm9kZUNvbnRhaW5lciopOworICAgIGZyaWVuZCBib29sIGdjQ2hpbGRyZW5JbkNvbnRhaW5l
cihDb250YWluZXJOb2RlKik7CiAKICAgICB2b2lkIHNldEZpcnN0Q2hpbGQoTm9kZSogY2hpbGQp
IHsgbV9maXJzdENoaWxkID0gY2hpbGQ7IH0KICAgICB2b2lkIHNldExhc3RDaGlsZChOb2RlKiBj
aGlsZCkgeyBtX2xhc3RDaGlsZCA9IGNoaWxkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCBjODk1OWRmYjgxNjNmNGVlOTViNDVlMDkz
ZjRmN2JjNTFjM2Y1NjNjLi5hNDBkZTdmYzcxODkyOTJjODNlNjIwOTA2MzM3YzRhZjEwZDMwZWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
QEAgLTU5LDYgKzU5LDggQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5
RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSoKICAgICBmb3IgKE5vZGUq
IGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAg
ICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsK
ICAgICB9CiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBub2RlLT55b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQpAQCAtOTUsNiAr
OTcsOCBAQCB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJl
bW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBubwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBu
b2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
CiAgICAgICAgIGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihjaGlsZCk7CiAgICAgfQogCiAg
ICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IGI1ZGZhNGZhNmFiZjQ2N2M0NWM4ZmMyN2ZmNmU5
NmMyMzNlZDg4YTEuLjFhMmJjMDViYWY0ZDM1YTU0YzA1ODk0NmJiMmZlY2NkYjJhYjYwMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yMyw5
ICsyMywxNCBAQAogI2RlZmluZSBDb250YWluZXJOb2RlQWxnb3JpdGhtc19oCiAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIs
MTggKzU3LDIxIEBAIGNsYXNzIENoaWxkTm9kZVJlbW92YWxOb3RpZmllciB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKENvbnRhaW5lck5vZGUqIGluc2Vy
dGlvblBvaW50KQogICAgICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpCisg
ICAgICAgICwgbV9saWZldGltZU93bmVyRm91bmQoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgbm90aWZ5KE5vZGUqKTsKKyAgICB2b2lkIG5vdGlmeShOb2RlKiwgYm9vbCk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250
YWluZXJOb2RlKik7CiAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENv
bnRhaW5lck5vZGUqKTsKICAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5v
ZGUqKTsKICAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSop
OworICAgIHZvaWQgY2hlY2tJZkxpZmV0aW1lT3duZXIoTm9kZSopOwogCiAgICAgQ29udGFpbmVy
Tm9kZSogbV9pbnNlcnRpb25Qb2ludDsKKyAgICBib29sIG1fbGlmZXRpbWVPd25lckZvdW5kOwog
fTsKIAogbmFtZXNwYWNlIFByaXZhdGUgewpAQCAtNzMsMTEgKzgxLDIwOCBAQCBuYW1lc3BhY2Ug
UHJpdmF0ZSB7CiAKIH0KIAotLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgVHJlZVNoYXJlZC1kZXJp
dmVkIGNsYXNzZXMsIHdoaWNoIGhhdmUgYSAnTm9kZScgc3R5bGUgaW50ZXJmYWNlCi0vLyBUaGlz
IGFwcGxpZXMgdG8gJ0NvbnRhaW5lck5vZGUnIGFuZCAnU1ZHRWxlbWVudEluc3RhbmNlJworLy8g
RklYTUU6IFdyYXAgdXAgdHdvIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpcyBieSB0ZW1wbGF0ZS4K
K2lubGluZSBib29sIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcihTVkdFbGVtZW50SW5zdGFuY2UqIGNv
bnRhaW5lcikKK3sKKyAgICAvLyBUaGlzIGFzc2VydGlvbiBpcyBqdXN0IGZvciBwZXJmb3JtYW5j
ZS4gRm9yIHBlcmZvcm1hbmNlIHdlIHNob3VsZCBhdm9pZCBjYWxsaW5nCisgICAgLy8gZ2NDaGls
ZHJlbkluQ29udGFpbmVyKCkgaWYgY29udGFpbmVyLT5yZWZDb3VudCgpID4gMC4KKyAgICBBU1NF
UlQoIWNvbnRhaW5lci0+cmVmQ291bnQoKSk7CisgICAgQVNTRVJUKCFjb250YWluZXItPmlzTGlm
ZXRpbWVPd25lcigpKTsKKworICAgIFZlY3RvcjxTVkdFbGVtZW50SW5zdGFuY2UqPiBnYXJiYWdl
Tm9kZXM7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuSW5Db250YWluZXIoU1ZH
RWxlbWVudEluc3RhbmNlKikgJXAgYmVmb3JlXG4iLCBjb250YWluZXIpOworCisgICAgU1ZHRWxl
bWVudEluc3RhbmNlKiBub2RlID0gY29udGFpbmVyLT5sYXN0Q2hpbGQoKTsKKyAgICB3aGlsZSAo
bm9kZSkgeworICAgICAgICAvLyBBdCB0aGUgcG9pbnQgd2hlcmUgZ2NDaGlsZHJlbkluQ29udGFp
bmVyKCkgaXMgY2FsbGVkLCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUKKyAgICAg
ICAgLy8gRE9NIHRyZWUuCisgICAgICAgIEFTU0VSVCghbm9kZS0+aXNMaWZldGltZU93bmVyKCkp
OworCisgICAgICAgIC8vIElmIHdlIGZpbmQgYSBOb2RlIHRoYXQgaGFzIDF+IHJlZmNvdW50LCB3
ZSBzZXQgdGhlIG5vZGUgYXMgYSBsaWZldGltZSBvd25lciwKKyAgICAgICAgLy8gYW5kIHJldHVy
biB3aXRob3V0IGRlbGV0aW5nIGFueSBOb2RlIGluIHRoZSBET00gdHJlZS4KKyAgICAgICAgaWYg
KG5vZGUtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9k
ZS0+cmVmQ291bnQoKT4wICVwIHJlZkNvdW50PT0lZFxuIiwgbm9kZSwgbm9kZS0+cmVmQ291bnQo
KSk7CisgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4iLCBj
b250YWluZXIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAg
IGdhcmJhZ2VOb2Rlcy5hcHBlbmQobm9kZSk7CisgICAgICAgIGlmIChub2RlLT5sYXN0Q2hpbGQo
KSkgeworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmxhc3RDaGlsZCgpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5wcmV2aW91c1NpYmxp
bmcoKSkgeworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAg
ICAgIEFTU0VSVChub2RlKTsKKyAgICAgICAgICAgIGlmIChub2RlID09IGNvbnRhaW5lcikgewor
ICAgICAgICAgICAgICAgIG5vZGUgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChub2RlKQorICAgICAgICAgICAgbm9kZSA9
IG5vZGUtPnByZXZpb3VzU2libGluZygpOworICAgIH0KKworICAgIC8vIE5vdyBhbGwgTm9kZXMg
aW4gdGhlIERPTSB0cmVlIGhhdmUgMCByZWZjb3VudCwgYW5kIHdlIGNhbiBkZWxldGUgYWxsIHRo
ZSBOb2Rlcy4KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0aW9uIHN0YXJ0ZWRcbiIpOwor
CisgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2FyYmFnZU5vZGVzLnNpemUoKTsKKyAgICAvLyBCZWZv
cmUgc3RhcnRpbmcgZGVsZXRpb24sIHdlIGNsZWFyIGFsbCB0cmVlIHBvaW50ZXJzIHNvIHRoYXQg
Tm9kZSBkZXN0cnVjdG9yCisgICAgLy8gd29uJ3QgY2F1c2UgdW5leHBlY3RlZCBwb2ludGVyIGRl
cmVmZXJlbmNlcyBkZXBlbmRpbmcgb24gdGhlIGRlbGV0aW9uIG9yZGVyLgorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBTVkdFbGVtZW50SW5zdGFu
Y2UqIHRhcmdldCA9IGdhcmJhZ2VOb2Rlc1tpXTsKKyAgICAgICAgdGFyZ2V0LT5zZXRQcmV2aW91
c1NpYmxpbmcoMCk7CisgICAgICAgIHRhcmdldC0+c2V0TmV4dFNpYmxpbmcoMCk7CisgICAgICAg
IHRhcmdldC0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICAgICAgQVNTRVJUKCF0YXJnZXQt
PnJlZkNvdW50KCkpOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+aXNMaWZldGltZU93bmVyKCkp
OworICAgICAgICB0YXJnZXQtPnNldEZpcnN0Q2hpbGQoMCk7CisgICAgICAgIHRhcmdldC0+c2V0
TGFzdENoaWxkKDApOworICAgIH0KKyAgICBjb250YWluZXItPnNldEZpcnN0Q2hpbGQoMCk7Cisg
ICAgY29udGFpbmVyLT5zZXRMYXN0Q2hpbGQoMCk7CisKKyAgICAvLyBOb3cgaXQgaXMgc2FmZSB0
byBkZWxldGUgYWxsIHRoZSBOb2RlcyBpbiBhbnkgb3JkZXIuCisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFy
Z2V0ID0gZ2FyYmFnZU5vZGVzW2ldOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0
ZSAlcCh0YXJnZXQpIGJlZm9yZVxuIiwgdGFyZ2V0KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAg
IHRhcmdldC0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICBkZWxl
dGUgdGFyZ2V0OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcCh0YXJnZXQp
IGFmdGVyXG4iLCB0YXJnZXQpOworICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hp
bGRyZW5JbkNvbnRhaW5lcihTVkdFbGVtZW50SW5zdGFuY2UqKSAlcCBhZnRlclxuIiwgY29udGFp
bmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgZ2NDaGlsZHJlbkluQ29u
dGFpbmVyKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikKK3sKKyAgICAvLyBGSVhNRTogT3B0aW1p
emUgdGhlIGluaXRpYWwgdmVjdG9yIHNpemUuCisgICAgVmVjdG9yPE5vZGUqLCAxMD4gZ2FyYmFn
ZU5vZGVzOworICAgIFZlY3RvcjxFbGVtZW50U2hhZG93KiwgMTA+IGdhcmJhZ2VFbGVtZW50U2hh
ZG93czsKKyAgICBEZXF1ZTxTaGFkb3dSb290KiwgMTA+IHBlbmRpbmdTaGFkb3dSb290czsKKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250YWluZXJOb2Rl
KikgJXAgYmVmb3JlXG4iLCBjb250YWluZXIpOworCisgICAgTm9kZSogc3RhcnROb2RlID0gY29u
dGFpbmVyOworICAgIC8vIFRoZSB3aG9sZSBET00gdHJlZSBpcyB0cmF2ZXJzZWQgaW4gdGhlIG9y
ZGVyOgorICAgIC8vICgxKSBMaWdodCBET00KKyAgICAvLyAoMikgU2hhZG93IERPTSBmb3VuZCBp
biB0aGUgbGlnaHQgRE9NCisgICAgLy8gKDMpIFNoYWRvdyBET00gZm91bmQgaW4gdGhlIHNoYWRv
dyBET00gZm91bmQgaW4gdGhlIGxpZ2h0IERPTQorICAgIC8vICg0KSAuLi4gKHVudGlsIG5vIHNo
YWRvdyBET00gaXMgZm91bmQuKQorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIC8vIFRoaXMg
YXNzZXJ0aW9uIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLiBGb3IgcGVyZm9ybWFuY2Ugd2Ugc2hv
dWxkIGF2b2lkIGNhbGxpbmcKKyAgICAgICAgLy8gZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkgaWYg
Y29udGFpbmVyLT5yZWZDb3VudCgpID4gMC4KKyAgICAgICAgQVNTRVJUKCFzdGFydE5vZGUtPnJl
ZkNvdW50KCkpOworICAgICAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+aXNMaWZldGltZU93bmVyKCkp
OworCisgICAgICAgIE5vZGUqIG5vZGUgPSBzdGFydE5vZGUtPmxhc3RDaGlsZCgpOworICAgICAg
ICB3aGlsZSAobm9kZSkgeworICAgICAgICAgICAgLy8gQXQgdGhlIHBvaW50IHdoZXJlIGdjQ2hp
bGRyZW5JbkNvbnRhaW5lcigpIGlzIGNhbGxlZCwgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIg
aW4gdGhlCisgICAgICAgICAgICAvLyBET00gdHJlZS4KKyAgICAgICAgICAgIEFTU0VSVCghbm9k
ZS0+aXNMaWZldGltZU93bmVyKCkpOworCisgICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgTm9k
ZSB0aGF0IGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0IHRoZSBub2RlIGFzIGEgbGlmZXRpbWUgb3du
ZXIsCisgICAgICAgICAgICAvLyBhbmQgcmV0dXJuIHdpdGhvdXQgZGVsZXRpbmcgYW55IE5vZGUg
aW4gdGhlIERPTSB0cmVlLgorICAgICAgICAgICAgaWYgKG5vZGUtPnJlZkNvdW50KCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vZGUtPnJlZkNvdW50KCk+MCAlcCBy
ZWZDb3VudD09JWRcbiIsIG5vZGUsIG5vZGUtPnJlZkNvdW50KCkpOworICAgICAgICAgICAgICAg
IG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4iLCBjb250YWluZXIpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygp
KSB7CisgICAgICAgICAgICAgICAgZ2FyYmFnZUVsZW1lbnRTaGFkb3dzLmFwcGVuZCh0b0VsZW1l
bnQobm9kZSktPnNoYWRvdygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJv
b3QgPSBub2RlLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoZSBwb2ludCB3aGVy
ZSBnY0NoaWxkcmVuSW5Db250YWluZXIoKSBpcyBjYWxsZWQsIHRoZXJlIGlzIG5vIGxpZmV0aW1l
IG93bmVyIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBET00gdHJlZS4KKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFyb290LT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIHNoYWRvdyByb290IHRoYXQgaGFzIDF+IHJlZmNv
dW50LCB3ZSBzZXQgdGhlIHNoYWRvdyByb290IGFzCisgICAgICAgICAgICAgICAgICAgIC8vIGEg
bGlmZXRpbWUgb3duZXIsIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aG91dCBkZWxldGluZyBh
bnkgTm9kZSBpbgorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgRE9NIHRyZWUuCisgICAgICAg
ICAgICAgICAgICAgIGlmIChyb290LT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInNoYWRvd1Jvb3QtPnJlZkNvdW50KCk+MCAlcCByZWZD
b3VudD09JWRcbiIsIHJvb3QsIHJvb3QtPnJlZkNvdW50KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcm9vdC0+c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuSW5Db250YWluZXIoKSAlcCBhZnRlclxuIiwg
Y29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
InBlbmRpbmdTaGFkb3dSb290cy5hcHBlbmQocm9vdCkgcm9vdD0lcFxuIiwgcm9vdCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSBzaGFkb3cgcm9vdCB0byBiZSB0cmF2ZXJz
ZWQgbGF0ZXIuCisgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdTaGFkb3dSb290cy5hcHBlbmQo
cm9vdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJnYXJiYWdlTm9kZXMuYXBwZW5kKG5vZGUpIG5vZGU9JXBcbiIsIG5v
ZGUpOworICAgICAgICAgICAgZ2FyYmFnZU5vZGVzLmFwcGVuZChub2RlKTsKKworICAgICAgICAg
ICAgaWYgKG5vZGUtPmxhc3RDaGlsZCgpKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUt
Pmxhc3RDaGlsZCgpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgd2hpbGUgKCFub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgeworICAgICAgICAg
ICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKG5vZGUpOworICAgICAgICAgICAgICAgIGlmIChub2RlID09IHN0YXJ0Tm9kZSkgewor
ICAgICAgICAgICAgICAgICAgICBub2RlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUp
CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcGVuZGluZyBzaGFkb3cgcm9vdHMsIGFs
bCBOb2RlIHRyYXZlcnNhbHMgYXJlIGRvbmUuCisgICAgICAgIGlmIChwZW5kaW5nU2hhZG93Um9v
dHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0YXJ0Tm9kZSA9IHBl
bmRpbmdTaGFkb3dSb290cy50YWtlRmlyc3QoKTsKKyAgICB9CisKKyAgICAvLyBOb3cgYWxsIE5v
ZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVmY291bnQsIGFuZCB3ZSBjYW4gZGVsZXRlIGFs
bCB0aGUgTm9kZXMuCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGlvbiBzdGFydGVkXG4i
KTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGdhcmJhZ2VFbGVtZW50U2hhZG93cy5zaXplKCk7
CisgICAgLy8gQmVmb3JlIHN0YXJ0aW5nIGRlbGV0aW9uLCB3ZSBjbGVhciBhbGwgdHJlZSBwb2lu
dGVycyBzbyB0aGF0IE5vZGUgZGVzdHJ1Y3RvcgorICAgIC8vIHdvbid0IGNhdXNlIHVuZXhwZWN0
ZWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgZGVwZW5kaW5nIG9uIHRoZSBkZWxldGlvbiBvcmRlci4K
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgIGdhcmJh
Z2VFbGVtZW50U2hhZG93c1tpXS0+Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290cygpOworCisgICAg
bGVuZ3RoID0gZ2FyYmFnZU5vZGVzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgTm9kZSogdGFyZ2V0ID0gZ2FyYmFnZU5vZGVzW2ld
OworICAgICAgICB0YXJnZXQtPnNldFByZXZpb3VzU2libGluZygwKTsKKyAgICAgICAgdGFyZ2V0
LT5zZXROZXh0U2libGluZygwKTsKKyAgICAgICAgdGFyZ2V0LT5zZXRQYXJlbnRPckhvc3ROb2Rl
KDApOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+cmVmQ291bnQoKSk7CisgICAgICAgIEFTU0VS
VCghdGFyZ2V0LT5pc0xpZmV0aW1lT3duZXIoKSk7CisgICAgICAgIGlmICh0YXJnZXQtPmlzQ29u
dGFpbmVyTm9kZSgpKSB7CisgICAgICAgICAgICBDb250YWluZXJOb2RlKiB0YXJnZXRDb250YWlu
ZXIgPSBzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4odGFyZ2V0KTsKKyAgICAgICAgICAgIHRh
cmdldENvbnRhaW5lci0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICAgICAgICAgIHRhcmdldENvbnRh
aW5lci0+c2V0TGFzdENoaWxkKDApOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRhaW5lci0+
c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICBjb250YWluZXItPnNldExhc3RDaGlsZCgwKTsKKworICAg
IC8vIE5vdyBpdCBpcyBzYWZlIHRvIGRlbGV0ZSBhbGwgdGhlIE5vZGVzIGluIGFueSBvcmRlci4K
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgTm9k
ZSogdGFyZ2V0ID0gZ2FyYmFnZU5vZGVzW2ldOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImRlbGV0ZSAlcCh0YXJnZXQpIGJlZm9yZVxuIiwgdGFyZ2V0KTsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIHRhcmdldC0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAgICAg
ICBkZWxldGUgdGFyZ2V0OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcCh0
YXJnZXQpIGFmdGVyXG4iLCB0YXJnZXQpOworICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImdjQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250YWluZXJOb2RlKikgJXAgYWZ0ZXJcbiIsIGNvbnRh
aW5lcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEZJWE1FOiBSZXBsYWNlIGFsbCByZW1v
dmVDaGlsZHJlbkluQ29udGFpbmVyKClzIHdpdGggZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkuCiB0
ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci1p
bmxpbmUgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFp
bmVyKiBjb250YWluZXIpCitpbmxpbmUgdm9pZCByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKEdl
bmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJyZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAgYmVmb3JlXG4iLCBjb250YWluZXIpOwog
ICAgIC8vIExpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAgICBHZW5lcmljTm9kZSogaGVh
ZCA9IDA7CiAgICAgR2VuZXJpY05vZGUqIHRhaWwgPSAwOwpAQCAtODcsOCArMjkyLDYgQEAgaW5s
aW5lIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5l
ciogY29udGFpbmVyKQogICAgIEdlbmVyaWNOb2RlKiBuOwogICAgIEdlbmVyaWNOb2RlKiBuZXh0
OwogICAgIHdoaWxlICgobiA9IGhlYWQpICE9IDApIHsKLSAgICAgICAgQVNTRVJUKG4tPm1fZGVs
ZXRpb25IYXNCZWd1bik7Ci0KICAgICAgICAgbmV4dCA9IG4tPm5leHRTaWJsaW5nKCk7CiAgICAg
ICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwogCkBAIC05OSw4ICszMDIsMTQgQEAgaW5saW5lIHZv
aWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29u
dGFpbmVyKQogICAgICAgICBpZiAobi0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAgUHJp
dmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZTxHZW5lcmljTm9kZSwgR2VuZXJpY05v
ZGVDb250YWluZXI+KGhlYWQsIHRhaWwsIHN0YXRpY19jYXN0PEdlbmVyaWNOb2RlQ29udGFpbmVy
Kj4obikpOwogCisjaWZuZGVmIE5ERUJVRworICAgICAgICBuLT5tX2RlbGV0aW9uSGFzQmVndW4g
PSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwIGJl
Zm9yZVxuIiwgbik7CiAgICAgICAgIGRlbGV0ZSBuOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImRlbGV0ZSAlcCBhZnRlclxuIiwgbik7CiAgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJy
LCAicmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4iLCBjb250YWluZXIpOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWlu
ZXI+CkBAIC0xMTgsNyArMzI3LDcgQEAgaW5saW5lIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5l
cihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb24KICAgICBjb250
YWluZXItPnNldExhc3RDaGlsZChjaGlsZCk7CiB9CiAKLS8vIEhlbHBlciBtZXRob2RzIGZvciBy
ZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyLCBoaWRkZW4gZnJvbSBXZWJDb3JlIG5hbWVzcGFj
ZQorLy8gSGVscGVyIG1ldGhvZHMgZm9yIHJlbW92ZUNoaWxkcmVuSW5Db250YWluZXIsIGhpZGRl
biBmcm9tIFdlYkNvcmUgbmFtZXNwYWNlCiBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXIsIGJvb2wg
ZGlzcGF0Y2hSZW1vdmFsTm90aWZpY2F0aW9uPgpAQCAtMTM3LDcgKzM0Niw3IEBAIG5hbWVzcGFj
ZSBQcml2YXRlIHsKICAgICAgICAgICAgIGlmIChEb2N1bWVudCogY29udGFpbmVyRG9jdW1lbnQg
PSBjb250YWluZXItPm93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBjb250YWluZXJE
b2N1bWVudC0+YWRvcHRJZk5lZWRlZChub2RlKTsKICAgICAgICAgICAgIGlmIChub2RlLT5pbkRv
Y3VtZW50KCkpCi0gICAgICAgICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKGNvbnRh
aW5lcikubm90aWZ5KG5vZGUpOworICAgICAgICAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3Rp
Zmllcihjb250YWluZXIpLm5vdGlmeShub2RlLCB0cnVlKTsKICAgICAgICAgfQogICAgIH07CiAK
QEAgLTE2NSw5ICszNzQsNiBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAgICAgICBuLT5z
ZXRQYXJlbnRPckhvc3ROb2RlKDApOwogCiAgICAgICAgICAgICBpZiAoIW4tPnJlZkNvdW50KCkp
IHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAgbi0+bV9kZWxldGlvbkhhc0JlZ3Vu
ID0gdHJ1ZTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUg
bGlzdCBvZiBub2RlcyB0byBiZSBkZWxldGVkLgogICAgICAgICAgICAgICAgIC8vIFJldXNlIHRo
ZSBuZXh0U2libGluZyBwb2ludGVyIGZvciB0aGlzIHB1cnBvc2UuCiAgICAgICAgICAgICAgICAg
aWYgKHRhaWwpCkBAIC0xOTIsNyArMzk4LDkgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChOb2RlKiBub2QKIHsK
ICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKICAgICBSZWZQdHI8
Tm9kZT4gcHJvdGVjdChub2RlKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVJ
bnNlcnRlZEludG9Eb2N1bWVudCgpICVwIGluc2VydGlvblBvaW50PSVwXG4iLCBub2RlLCBtX2lu
c2VydGlvblBvaW50KTsKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IHJl
cXVlc3QgPSBub2RlLT5pbnNlcnRlZEludG8obV9pbnNlcnRpb25Qb2ludCk7CisgICAgbm9kZS0+
dW5zZXRMaWZldGltZU93bmVyKCk7CiAKICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkp
CiAgICAgICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCh0b0NvbnRhaW5l
ck5vZGUobm9kZSkpOwpAQCAtMjA2LDcgKzQxNCw5IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJOb2Rl
CiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwogICAgIGZvcmJp
ZEV2ZW50RGlzcGF0Y2goKTsKIAorICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZUlu
c2VydGVkSW50b1RyZWUoKSAlcCBpbnNlcnRpb25Qb2ludD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRp
b25Qb2ludCk7CiAgICAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCByZXF1ZXN0
ID0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpOworICAgIG5vZGUtPnVuc2V0
TGlmZXRpbWVPd25lcigpOwogCiAgICAgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUo
bm9kZSk7CiAgICAgaWYgKHJlcXVlc3QgPT0gTm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbERpZE5v
dGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKQpAQCAtMjM1LDEzICs0NDUsMTcgQEAgaW5saW5lIHZv
aWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeShOb2RlKiBub2RlKQogICAgICAg
ICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQobm9kZSk7CiAgICAgZWxzZSBpZiAobm9k
ZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVl
KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAgZWxzZQorICAgICAgICBub2RlLT51bnNldExp
ZmV0aW1lT3duZXIoKTsKIH0KIAogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNT
RVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJub3RpZnlOb2RlUmVtb3ZhbEZyb21Eb2N1bWVudCgpICVwIGluc2VydGlvblBvaW50PSVw
XG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50KTsKICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2lu
c2VydGlvblBvaW50KTsKKyAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsKIAogICAgIGlm
IChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5RGVzY2VuZGFudFJlbW92
ZWRGcm9tRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKQEAgLTI1MiwxOCArNDY2LDUy
IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92
ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBuCiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50
LT5pbkRvY3VtZW50KCkpOwogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKIAorICAgIC8vIGZw
cmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZVJlbW92YWxGcm9tVHJlZSgpICVwIGluc2VydGlvblBv
aW50PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50KTsKICAgICBub2RlLT5yZW1vdmVkRnJv
bShtX2luc2VydGlvblBvaW50KTsKKyAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsKKwog
ICAgIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUobm9kZSk7CiAKICAgICBhbGxvd0V2
ZW50RGlzcGF0Y2goKTsKIH0KIAotaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVy
Ojpub3RpZnkoTm9kZSogbm9kZSkKK2lubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmll
cjo6bm90aWZ5KE5vZGUqIG5vZGUsIGJvb2wgaW5zZXJ0aW9uUG9pbnREZWxldGlvbkhhc0JlZ3Vu
KQogewogICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIG5vdGlmeU5vZGVSZW1v
dmVkRnJvbURvY3VtZW50KG5vZGUpOwogICAgIGVsc2UgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9k
ZSgpKQogICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShu
b2RlKSk7CisgICAgZWxzZQorICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsKKwor
ICAgIGlmIChtX2xpZmV0aW1lT3duZXJGb3VuZCAmJiAhaW5zZXJ0aW9uUG9pbnREZWxldGlvbkhh
c0JlZ3VuKSB7CisgICAgICAgIC8vIElmIGEgbGlmZXRpbWUgb3duZXIgaXMgZm91bmQgaW4gdGhl
IERPTSB0cmVlIGJlaW5nIHJlbW92ZWQsCisgICAgICAgIC8vIGl0IGluZGljYXRlcyB0aGF0IHRo
ZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcml0aW5hbCBET00gdHJlZS4KKyAgICAg
ICAgLy8gU28gd2UgY2FsbCByZW1vdmVkTGFzdFJlZigpIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50
IHRvIHNldCBhIG5ldworICAgICAgICAvLyBsaWZldGltZSBvd25lciBvZiB0aGUgb3JpZ2luYWwg
RE9NIHRyZWUsIGV4Y2VwdCBmb3IgdGhlIGNhc2UKKyAgICAgICAgLy8gd2hlcmUgdGhlIG9yaWdp
bmFsIHRyZWUgaXMgYmVpbmcgcmVtb3ZlZCBqdXN0IHJpZ2h0IG5vdworICAgICAgICAvLyAoaS5l
LiBleGNlcHQgZm9yIHRoZSBjYXNlIG9mIGluc2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1biA9
PSB0cnVlKS4KKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3Vu
ZD10cnVlICFpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4gJXAgaW5zZXJ0aW9uUG9pbnQ9
JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBtX2luc2VydGlvblBvaW50
LT5yZW1vdmVkTGFzdFJlZigpOworICAgIH0gZWxzZSBpZiAoIW1fbGlmZXRpbWVPd25lckZvdW5k
KSB7CisgICAgICAgIC8vIElmIGEgbGlmZXRpbWUgb3duZXIgaXMgbm90IGZvdW5kIGluIHRoZSBE
T00gdHJlZSBiZWluZyByZW1vdmVkLAorICAgICAgICAvLyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGVy
ZSBpcyBleGFjdGx5IG9uZSBsaWZldGltZSBvd25lciBpbiB0aGUgb3JpZ2luYWwgRE9NCisgICAg
ICAgIC8vIHRyZWUuIFNvIHdlIGp1c3QgY2FsbCByZW1vdmVkTGFzdFJlZigpIGZvciB0aGUgRE9N
IHRyZWUgYmVpbmcgcmVtb3ZlZAorICAgICAgICAvLyB0byBzZXQgYSBuZXcgbGlmZXRpbWUgb3du
ZXIgb2YgdGhlIERPTSB0cmVlIGJlaW5nIHJlbW92ZWQuCisgICAgICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9ZmFsc2UgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIs
IG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQpOworICAgICAgICBub2RlLT5yZW1vdmVkTGFzdFJlZigp
OworICAgIH0KK30KKworaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpjaGVj
a0lmTGlmZXRpbWVPd25lcihOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5pc0xpZmV0aW1l
T3duZXIoKSkgeworICAgICAgICAvLyBPbmUgRE9NIHRyZWUgaXMgZ3VhcmFudGVlZCB0byBoYXZl
IGF0IG1vc3Qgb25lIGxpZmV0aW1lIG93bmVyLAorICAgICAgICAvLyBzbyBtX2xpZmV0aW1lT3du
ZXJGb3VuZCBzaG91bGQgbm90IGJlY29tZSB0cnVlIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBB
U1NFUlQoIW1fbGlmZXRpbWVPd25lckZvdW5kKTsKKyAgICAgICAgbV9saWZldGltZU93bmVyRm91
bmQgPSB0cnVlOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vZGUtPmlzTGlmZXRpbWVP
d25lcigpPT10cnVlICVwXG4iLCBub2RlKTsKKyAgICB9CiB9CiAKIGNsYXNzIENoaWxkRnJhbWVE
aXNjb25uZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYjkzYzZiMGE4NjQ4ZTUz
MGQ3ZTJkZWRhMjVjYWU3ZTE1ODg1ZDc4MC4uNTJhNzg4Y2M4YWQwMDgxMGNmZDNiZmMyMzQ5ODkz
NGExYTU1ZjhlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02NTMsNTkgKzY1Myw4OCBA
QCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBJbnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50
Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9jdW1lbnRDb3VudGVyKTsKIH0KIAotdm9pZCBE
b2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQordm9pZCBEb2N1bWVudDo6Z2NDaGlsZHJlbk9mRG9j
dW1lbnQoKQogewotICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBpZiAobV9n
dWFyZFJlZkNvdW50KSB7Ci0gICAgICAgIC8vIElmIHJlbW92aW5nIGEgY2hpbGQgcmVtb3ZlcyB0
aGUgbGFzdCBzZWxmLW9ubHkgcmVmLCB3ZSBkb24ndAotICAgICAgICAvLyB3YW50IHRoZSBzY29w
ZSB0byBiZSBkZXN0cnVjdGVkIHVudGlsIGFmdGVyCi0gICAgICAgIC8vIHJlbW92ZUFsbENoaWxk
cmVuIHJldHVybnMsIHNvIHdlIGd1YXJkIG91cnNlbHZlcyB3aXRoIGFuCi0gICAgICAgIC8vIGV4
dHJhIHNlbGYtb25seSByZWYuCi0gICAgICAgIGd1YXJkUmVmKCk7Ci0KLSAgICAgICAgLy8gV2Ug
bXVzdCBtYWtlIHN1cmUgbm90IHRvIGJlIHJldGFpbmluZyBhbnkgb2Ygb3VyIGNoaWxkcmVuIHRo
cm91Z2gKLSAgICAgICAgLy8gdGhlc2UgZXh0cmEgcG9pbnRlcnMgb3Igd2Ugd2lsbCBjcmVhdGUg
YSByZWZlcmVuY2UgY3ljbGUuCi0gICAgICAgIG1fZG9jVHlwZSA9IDA7Ci0gICAgICAgIG1fZm9j
dXNlZE5vZGUgPSAwOwotICAgICAgICBtX2hvdmVyTm9kZSA9IDA7Ci0gICAgICAgIG1fYWN0aXZl
Tm9kZSA9IDA7Ci0gICAgICAgIG1fdGl0bGVFbGVtZW50ID0gMDsKLSAgICAgICAgbV9kb2N1bWVu
dEVsZW1lbnQgPSAwOwotICAgICAgICBtX2NvbnRleHRGZWF0dXJlcyA9IENvbnRleHRGZWF0dXJl
czo6ZGVmYXVsdFN3aXRjaCgpOworICAgIC8vIE1ha2Ugc3VyZSBub3QgdG8gYmUgcmVmZXJlbmNp
bmcgYW55IG9mIHRoZSBjaGlsZHJlbiB0aHJvdWdoCisgICAgLy8gdGhlc2UgZXh0cmEgcG9pbnRl
cnMsIG9yIHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlLgorICAgIG1fZG9jVHlwZSA9
IDA7CisgICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgbV9ob3Zlck5vZGUgPSAwOworICAgIG1f
YWN0aXZlTm9kZSA9IDA7CisgICAgbV90aXRsZUVsZW1lbnQgPSAwOworICAgIG1fZG9jdW1lbnRF
bGVtZW50ID0gMDsKKyAgICBtX2NvbnRleHRGZWF0dXJlcyA9IENvbnRleHRGZWF0dXJlczo6ZGVm
YXVsdFN3aXRjaCgpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAgICAgbV9mdWxs
U2NyZWVuRWxlbWVudCA9IDA7Ci0gICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVh
cigpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOworICAgIG1fZnVsbFNjcmVlbkVsZW1l
bnRTdGFjay5jbGVhcigpOwogI2VuZGlmCiAKLSAgICAgICAgZGV0YWNoUGFyc2VyKCk7CisgICAg
Ly8gVGVhciBkb3duIHNjb3BlIGluZm9ybWF0aW9uIHVwZnJvbnQgdG8gYXZvaWQgaGF2aW5nIHN0
YWxlIHJlZmVyZW5jZXMKKyAgICAvLyBpbiB0aGUgaWQgbWFwLiBUaGlzIG11c3QgYmUgZG9uZSBi
ZWZvcmUgZ2NDaGlsZHJlbigpLCBiZWNhdXNlIGdjQ2hpbGRyZW4oKQorICAgIC8vIGNhbiBkZWxl
dGUgTm9kZXMgYW5kIHRoZSBOb2RlIGRlc3RydWN0b3IgY2FuIGxvb2sgdXAgdGhlIGlkIG1hcC4K
KyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkgJXBcbiIsIHRo
aXMpOworICAgIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CiAKLSAgICAgICAgLy8gcmVtb3ZlQWxs
Q2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywKLSAgICAgICAgLy8gc28g
dGVhciBkb3duIHNjb3BlIGluZm9ybWF0aW9uIHVwZnJvbnQgdG8gYXZvaWQgaGF2aW5nIHN0YWxl
IHJlZmVyZW5jZXMgaW4gdGhlIG1hcC4KLSAgICAgICAgZGVzdHJveVRyZWVTY29wZURhdGEoKTsK
LSAgICAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdj
Q2hpbGRyZW4oKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIGJvb2wgY2hpbGRyZW5SZW1vdmVk
ID0gZ2NDaGlsZHJlbigpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbigpICVw
IGNoaWxkcmVuUmVtb3ZlZD0lZCBhZnRlclxuIiwgdGhpcywgY2hpbGRyZW5SZW1vdmVkKTsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKKyNl
bmRpZgorCisgICAgaWYgKGNoaWxkcmVuUmVtb3ZlZCkgeworICAgICAgICBkZXRhY2hQYXJzZXIo
KTsKIAogICAgICAgICBtX21hcmtlcnMtPmRldGFjaCgpOwogCiAgICAgICAgIG1fY3NzQ2FudmFz
RWxlbWVudHMuY2xlYXIoKTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
LSAgICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5nIEFjdGl2ZURPTU9iamVjdC4KKyAgICAg
ICAgLy8gRklYTUU6IENvbnNpZGVyIHVzaW5nIEFjdGl2ZURPTU9iamVjdC4KICAgICAgICAgaWYg
KG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKQogICAgICAgICAgICAgbV9zY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXItPmNsZWFyRG9jdW1lbnRQb2ludGVyKCk7CiAgICAgICAgIG1fc2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNsZWFyKCk7CiAjZW5kaWYKKyAgICAgICAgLy8gTm93
IHdlIGp1c3QgaGF2ZSB0byB3YWl0IGZvciBndWFyZFJlZkNvdW50IHRvIGJlY29tZSAwLgorICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiBjaGlsZHJlblJlbW92ZWQgaXMgZmFsc2Us
IGl0IG1lYW5zIHRoYXQgZ2NDaGlsZHJlbigpIGRpZCBub3RoaW5nLgorICAgICAgICAvLyBBbGwg
dGhlIE5vZGVzIGluIHRoaXMgZG9jdW1lbnQgaXMgc3RpbGwgYWxpdmUuIFdlIG5lZWQgdG8gcmVz
dG9yZSBhbGwgdGhlCisgICAgICAgIC8vIFJlZlB0cnMgdGhhdCB3ZSBjbGVhcmVkIGp1c3QgYmVm
b3JlIGdjQ2hpbGRyZW4oKSwgYW5kIHJlc3RvcmUgdGhlIGlkIG1hcAorICAgICAgICAvLyBpbiB0
aGUgdHJlZSBzY29wZS4KKyAgICB9Cit9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1faW5S
ZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7Ci0jZW5kaWYKK3ZvaWQgRG9jdW1lbnQ6OnJl
bW92ZWRMYXN0UmVmKCkKK3sKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkRvY3VtZW50OjpyZW1v
dmVkTGFzdFJlZigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgQVNTRVJUKCFyZWZDb3VudCgp
KTsKKyAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgaWYgKG1fZ3VhcmRSZWZD
b3VudCkgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fZ3VhcmRSZWZDb3VudD4wICVw
XG4iLCB0aGlzKTsKKworICAgICAgICAvLyBJZiBnY0NoaWxkcmVuKCkgcmVtb3ZlcyB0aGUgbGFz
dCBndWFyZFJlZkNvdW50LCB0aGUgZG9jdW1lbnQgd2lsbCBiZQorICAgICAgICAvLyBkZXN0cnVj
dGVkIGluc2lkZSBnY0NoaWxkcmVuKCkuIFRvIGF2b2lkIHRoZSBzaXR1YXRpb24sIHdlIGd1YXJk
IG91cnNlbHZlcworICAgICAgICAvLyB3aXRoIGFuIGV4dHJhIHNlbGYtb25seSBndWFyZFJlZkNv
dW50LgorICAgICAgICBndWFyZFJlZigpOworCisgICAgICAgIGdjQ2hpbGRyZW5PZkRvY3VtZW50
KCk7CiAKICAgICAgICAgZ3VhcmREZXJlZigpOwotICAgIH0gZWxzZSB7Ci0jaWZuZGVmIE5ERUJV
RyAKLSAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsgCi0jZW5kaWYgCi0gICAgICAg
IGRlbGV0ZSB0aGlzOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkRvY3VtZW50OjpyZW1v
dmVkTGFzdFJlZigpICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fZ3VhcmRSZWZDb3VudD0wICVwXG4iLCB0aGlzKTsK
KworICAgIC8vIFByb2JhYmx5IHRoaXMgZ2NDaGlsZHJlbk9mRG9jdW1lbnQoKSBpcyBub3QgbmVl
ZGVkLiBDaGlsZCBub2RlcyB3b3VsZCBiZQorICAgIC8vIGFscmVhZHkgcmVtb3ZlZCwgYW5kIHRo
dXMgZ2NDaGlsZHJlbk9mRG9jdW1lbnQoKSB3aWxsIGRvIG5vdGhpbmcuCisgICAgZ2NDaGlsZHJl
bk9mRG9jdW1lbnQoKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcChyb290KSBi
ZWZvcmVcbiIsIHRoaXMpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX2RlbGV0aW9uSGFzQmVndW4g
PSB0cnVlOworI2VuZGlmCisgICAgZGVsZXRlIHRoaXM7CisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJkZWxldGUgJXAocm9vdCkgYWZ0ZXJcbiIsIHRoaXMpOworICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiBF
bGVtZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYWI5MjA1YTg5MTUxZTUxZmMwNjk0MjU5NzA0
ZDZjNWQwOGFmZjlhMS4uNjIxYzFhZDg1ODgyNzA2NTY1OTEyNDNhZmZiNGU4OTdiZmMxZmVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIxNCwxMCArMjE0LDkgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIC0tbV9ndWFyZFJlZkNvdW50
OwogICAgICAgICBpZiAoIW1fZ3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkgewotI2lmbmRl
ZiBOREVCVUcKLSAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYK
LSAgICAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJndWFyZERlcmVmKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICAgICAgICAgIHJlbW92ZWRM
YXN0UmVmKCk7CisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImd1YXJkRGVyZWYoKSAl
cCBhZnRlclxuIiwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExNDIsNiArMTE0MSw3
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5vZGU7CiAgICAgZnJpZW5kIGNsYXNzIEln
bm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOwogCisgICAgdm9pZCBnY0NoaWxk
cmVuT2ZEb2N1bWVudCgpOwogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKICAgICAKICAgICB2
b2lkIGRldGFjaFBhcnNlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDlkYTE1NmI0ZjFh
MGE5MGVmMjhlNzI4MmZlZGE2MTYxYTM5ZWZiYjMuLjhkNWFiN2I4NzJkYmYzZWFlY2U2NzAyNjA1
ZWNkMzAxNTgyMTlmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1MjEsNiArMTUyMSw3
IEBAIENTU1N0eWxlRGVjbGFyYXRpb24gKkVsZW1lbnQ6OnN0eWxlKCkKIAogdm9pZCBFbGVtZW50
Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikKIHsKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIkVsZW1lbnQ6OmZvY3VzKCkgJXBcbiIsIHRoaXMpOwogICAgIGlmICghaW5Eb2N1
bWVudCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNw
cAppbmRleCA1YWU3ODljZTUwOWZjZjFiYjY4Mjc5NTc1OTAxNmRjN2Y4NDllYTNmLi40M2Y4ZTQ1
M2EzYzkzNzE4Y2U5NzQ5OTdkMTRjOGU1MzI5NmQzY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRTaGFkb3cuY3BwCkBAIC03Niw2ICs3Niw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hh
ZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAg
ICAgc2hhZG93Um9vdC0+c2V0SG9zdChzaGFkb3dIb3N0KTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1
c2goc2hhZG93Um9vdC5nZXQoKSk7CiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dI
b3N0KTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jv
b3QoKSBzaGFkb3dSb290PSVwIHNoYWRvd0hvc3Q9JXBcbiIsIHNoYWRvd1Jvb3QuZ2V0KCksIHNo
YWRvd0hvc3QpOwogICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5v
dGlmeShzaGFkb3dSb290LmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dIb3N0LT5hdHRhY2hlZCgp
ICYmICFzaGFkb3dSb290LT5hdHRhY2hlZCgpKQpAQCAtODYsNiArODcsOSBAQCB2b2lkIEVsZW1l
bnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxT
aGFkb3dSb290PiBzaAogCiB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3Rz
KCkKIHsKKyAgICBpZiAobV9zaGFkb3dSb290cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIC8vIERvbnQgcHJvdGVjdCB0aGlzIHJlZiBjb3VudC4KICAgICBFbGVtZW50KiBzaGFk
b3dIb3N0ID0gaG9zdCgpOwogCkBAIC0xMDEsMTIgKzEwNSwyNSBAQCB2b2lkIEVsZW1lbnRTaGFk
b3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKICAgICAgICAgb2xkUm9vdC0+c2V0UHJldigwKTsK
ICAgICAgICAgb2xkUm9vdC0+c2V0TmV4dCgwKTsKICAgICAgICAgc2hhZG93SG9zdC0+ZG9jdW1l
bnQoKS0+YWRvcHRJZk5lZWRlZChvbGRSb290LmdldCgpKTsKLSAgICAgICAgQ2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKKyAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygp
IHNoYWRvd1Jvb3Q9JXAgc2hhZG93SG9zdD0lcFxuIiwgb2xkUm9vdC5nZXQoKSwgc2hhZG93SG9z
dCk7CisgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnko
b2xkUm9vdC5nZXQoKSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlv
bihzaGFkb3dIb3N0KTsKIH0KIAorLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBnY0NoaWxkcmVuSW5D
b250YWluZXIoKS4KK3ZvaWQgRWxlbWVudFNoYWRvdzo6Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290
cygpCit7CisgICAgd2hpbGUgKFNoYWRvd1Jvb3QqIHJvb3QgPSBtX3NoYWRvd1Jvb3RzLmhlYWQo
KSkgeworICAgICAgICBtX3NoYWRvd1Jvb3RzLnJlbW92ZUhlYWQoKTsKKyAgICAgICAgcm9vdC0+
c2V0SG9zdCgwKTsKKyAgICAgICAgcm9vdC0+c2V0UHJldigwKTsKKyAgICAgICAgcm9vdC0+c2V0
TmV4dCgwKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50U2hhZG93Ojpmb3Jj
ZVJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkgc2hhZG93Um9vdD0lcFxuIiwgcm9vdCk7CisgICAgfQor
fQorCiB2b2lkIEVsZW1lbnRTaGFkb3c6OmF0dGFjaCgpCiB7CiAgICAgZW5zdXJlRGlzdHJpYnV0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAppbmRleCAxM2RlMWMwMjEwZDU2NzQy
NjgzYzRmZTkzZTI2M2IzMjk3NjdjOTE0Li5hMDFjNDlkMDAzNGZmYWVkMWQzODc3M2ZmNTUzMjdk
YjljMTE4ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKQEAgLTUzLDYgKzUzLDcg
QEAgcHVibGljOgogICAgIFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVtb3ZlQWxsU2hhZG93Um9vdHMoKTsKKyAgICB2b2lkIGZvcmNlUmVtb3ZlQWxs
U2hhZG93Um9vdHMoKTsKICAgICB2b2lkIGFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9z
dCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBh
dHRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBmMzVkYzViOTkwMzhiYTAzNDQ4YmM0NmE4YTgw
MDQ1YmViYzZjYzE2Li5hYmU5OGQ5MDE5MGY1OTkwZDEwM2QzNmIzODhiZWY2ZTljZDgzNDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCkBAIC0zODcsNiArMzg3LDcgQEAgdm9pZCBOb2RlOjp0cmFja0ZvckRl
YnVnZ2luZygpCiAKIE5vZGU6On5Ob2RlKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5O
b2RlKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgSGFzaFNldDxO
b2RlKj46Oml0ZXJhdG9yIGl0ID0gaWdub3JlU2V0LmZpbmQodGhpcyk7CiAgICAgaWYgKGl0ICE9
IGlnbm9yZVNldC5lbmQoKSkKQEAgLTQxOSw2ICs0MjAsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAg
ICAgIGRvYy0+Z3VhcmREZXJlZigpOwogCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVu
dENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIn5Ob2RlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnNl
dERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTI5MTksMTcgKzI5MjEsNjkgQEAgdm9p
ZCBOb2RlOjpyZW1vdmVDYWNoZWRSYWRpb05vZGVMaXN0KFJhZGlvTm9kZUxpc3QqIGxpc3QsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmEKIC8vIGRlbGV0ZSBhIE5vZGUgYXQgZWFjaCBkZXJlZiBjYWxs
IHNpdGUuCiB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgIk5vZGU6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICB1
bnNldExpZmV0aW1lT3duZXIoKTsKKworICAgIC8vIEhlcmUgaXQgaXMgZ3VhcmFudGVlZCB0aGF0
IHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZSBET00gdHJlZS4KKworICAgIGlmIChw
YXJlbnRPckhvc3ROb2RlKCkpIHsKKyAgICAgICAgLy8gQ2FsbCByZW1vdmVkTGFzdFJlZigpIGZv
ciB0aGUgcm9vdCBOb2RlLgorICAgICAgICBOb2RlKiByb290ID0gdGhpczsKKyAgICAgICAgd2hp
bGUgKHJvb3QtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAgICAgIHJvb3QgPSByb290LT5w
YXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6cmVt
b3ZlZExhc3RSZWYoKSBmb3J3YXJkZWQgcm9vdD0lcCBhZnRlclxuIiwgcm9vdCk7CisgICAgICAg
IHJvb3QtPnJlbW92ZWRMYXN0UmVmKCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9k
ZTo6cmVtb3ZlZExhc3RSZWYoKSAlcCBhZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAocmVmQ291bnQoKSkgeworICAgICAgICAvLyBGYXN0IHBhdGguIElm
IHRoZSByb290IE5vZGUgaGFzIDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIHJvb3Qgbm9kZSBhcwor
ICAgICAgICAvLyBhIGxpZmV0aW1lIG93bmVyLgorICAgICAgICBBU1NFUlQoIWlzTGlmZXRpbWVP
d25lcigpKTsKKyAgICAgICAgc2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIk5vZGU6OnJlbW92ZWRMYXN0UmVmKCkgZWFybHktcmV0dXJuICVwIGFmdGVyXG4i
LCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBB
U1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyAgICBtX2luUmVtb3ZlZExhc3RS
ZWZGdW5jdGlvbiA9IHRydWU7CisjZW5kaWYKKwogICAgIC8vIEFuIGV4cGxpY2l0IGNoZWNrIGZv
ciBEb2N1bWVudCBoZXJlIGlzIGJldHRlciB0aGFuIGEgdmlydHVhbCBmdW5jdGlvbiBzaW5jZSBp
dCBpcwogICAgIC8vIGZhc3RlciBmb3Igbm9uLURvY3VtZW50IG5vZGVzLCBhbmQgYmVjYXVzZSB0
aGUgY2FsbCB0byByZW1vdmVkTGFzdFJlZiB0aGF0IGlzIGlubGluZWQKICAgICAvLyBhdCBhbGwg
ZGVyZWYgY2FsbCBzaXRlcyBpcyBzbWFsbGVyIGlmIGl0J3MgYSBub24tdmlydHVhbCBmdW5jdGlv
bi4KICAgICBpZiAoaXNEb2N1bWVudE5vZGUoKSkgewogICAgICAgICBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KHRoaXMpLT5yZW1vdmVkTGFzdFJlZigpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIk5vZGU6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgYm9vbCBjaGlsZHJlblJlbW92ZWQgPSB0cnVlOworICAgIGlm
IChpc0NvbnRhaW5lck5vZGUoKSkgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hp
bGRyZW4oKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgICAgICBjaGlsZHJlblJlbW92ZWQgPSBz
dGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4odGhpcyktPmdjQ2hpbGRyZW4oKTsKKyAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuKCkgJXAgY2hpbGRyZW5SZW1vdmVkPSVkIGFm
dGVyXG4iLCB0aGlzLCBjaGlsZHJlblJlbW92ZWQpOworICAgIH0KKyAgICBpZiAoY2hpbGRyZW5S
ZW1vdmVkKSB7CisgICAgICAgIC8vIEFsbCB0aGUgTm9kZXMgYnV0IHRoZSByb290IE5vZGUgYXJl
IGRlbGV0ZWQgYnkgZ2NDaGlsZHJlbigpLgorICAgICAgICAvLyBOb3cgaXQgaXMgdGltZSB0byBk
ZWxldGUgdGhlIHJvb3QgTm9kZS4KKworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0
ZSAlcChyb290KSBiZWZvcmVcbiIsIHRoaXMpOwogI2lmbmRlZiBOREVCVUcKLSAgICBtX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOworICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwog
I2VuZGlmCi0gICAgZGVsZXRlIHRoaXM7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcChyb290KSBhZnRlclxuIiwgdGhpcyk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgLy8gZ2NDaGlsZHJlbigpIGRpZCBub3RoaW5nLiBBbGwgdGhlIE5v
ZGVzIGluIHRoZSBET00gdHJlZSBhcmUgc3RpbGwgYWxpdmUuCisKKyNpZm5kZWYgTkRFQlVHCisg
ICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAgICB9
CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpyZW1vdmVkTGFzdFJlZigpICVwIGFmdGVy
XG4iLCB0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXgg
MjY1OTEyZDAxODdhNzBlODQxZjU0ZTcwNmM1MDcwNWRjMGY2NzQ4NS4uNzg1ZTM0ZDBjNDU4YTcx
MTBiNDBjNWY0NTdjNGEwNTY3OTZlYjYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zNjAsNiArMzYwLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKTsKICAgICBib29sIGlzQ29u
dGVudFJpY2hseUVkaXRhYmxlKCk7CiAKKyAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CisKICAg
ICB2b2lkIGluc3BlY3QoKTsKIAogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxl
VHlwZSBlZGl0YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0YWJsZSkgY29uc3QKQEAgLTc0MSw4ICs3
NDMsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVk
PE5vZGUsIENvbnRhaW5lck5vZGU+OwogCi0gICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwotCiAg
ICAgLy8gVGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdy
YXRpb24uCiAgICAgLy8gc2V0VHJlZVNjb3BlKCkgcmV0dXJucyBOb2RlUmFyZURhdGEgdG8gc2F2
ZSBleHRyYSBub2RlUmFyZURhdGEoKSBpbnZvY2F0aW9ucyBvbiB0aGUgY2FsbGVyIHNpdGUuCiAg
ICAgTm9kZVJhcmVEYXRhKiBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggZjBiYTc2NmFiZWVhZjc1MjY3NmZhZDUzYmVmOWIzNzdlYmMxYzI2
OC4uMDMxYWE4MzVjYjBkMjg4MTI1YmE0YWIxMzNmOWJiYjYyYjZiYTkxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtMTEyMyw3ICsxMTIzLDEwIEBAIHZvaWQgcmVwbGFjZUNoaWxk
cmVuV2l0aEZyYWdtZW50KENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciwgUGFzc1JlZlB0cjxEb2N1
bWVudEZyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
InJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCgpIGNvbnRhaW5lcj0lcFxuIiwgY29udGFpbmVy
KTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImNvbnRhaW5lck5vZGUtPnJlbW92ZUNoaWxkcmVu
KCkgY29udGFpbmVyTm9kZT0lcFxuIiwgY29udGFpbmVyKTsKICAgICBjb250YWluZXJOb2RlLT5y
ZW1vdmVDaGlsZHJlbigpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiY29udGFpbmVyTm9kZS0+
YXBwZW5kQ2hpbGQoKSBjb250YWluZXJOb2RlPSVwIGZyYWdtZW50PSVwXG4iLCBjb250YWluZXIs
IGZyYWdtZW50LmdldCgpKTsKICAgICBjb250YWluZXJOb2RlLT5hcHBlbmRDaGlsZChmcmFnbWVu
dCwgZWMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hh
cmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggMmViZGIx
ZDFjNTk3OGQxZjBjN2VmMzJmZGNiNGRjMzYwZmZjNTJmNC4uYWY1ZjU4NmZmZjg4MTIyYzY4YmFk
MmY5YThmYjVkNmViYTNmMjczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VHJlZVNoYXJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApA
QCAtMjcsNiArMjcsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBJZiB0aGUgbW9z
dCBzaWduaWZpY2FudCBiaXQgaXMgMSwgdGhlIE5vZGUgaXMgYSBsaWZldGltZSBvd25lci4KKy8v
IE90aGVyd2lzZSwgdGhlIE5vZGUgaXMgbm90IGEgbGlmZXRpbWUgb3duZXIuCisvLyBUaGUgYWxn
b3JpdGhtIGd1YXJhbnRlZXMgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOgorLy8KKy8vICAgICAt
IE91dHNpZGUgb2YgcmVtb3ZlZExhc3RSZWYoKSAoaS5lLiBpbiBub3JtYWwgY2FzZXMpLCB0aGVy
ZSBpcyBleGFjdGx5IG9uZQorLy8gICAgICAgbGlmZXRpbWUgb3duZXIgaW4gb25lIERPTSB0cmVl
LgorLy8gICAgIC0gSW5zaWRlIG9mIHJlbW92ZWRMYXN0UmVmKCksIHRoZXJlIGlzIG5vIGxpZmV0
aW1lIG93bmVyLiByZW1vdmVkTGFzdFJlZigpCisvLyAgICAgICBlbGVjdHMgYSBuZXcgbGlmZXRp
bWUgb3duZXIuCisvLworLy8gU2VlIGEgZG9jdW1lbnQgKGh0dHA6Ly94eHh4KSBmb3IgbW9yZSBk
ZXRhaWxzIGFib3V0IHRoZSByZWZlcmVuY2UgY291bnRpbmcgYWxnb3JpdGhtCisvLyBvZiBUcmVl
U2hhcmVkLgorI2RlZmluZSBMaWZldGltZU93bmVyQml0TWFzayAoMHg4MDAwMDAwMCkKKwogI2lm
bmRlZiBOREVCVUcKIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnRO
b2RlVHlwZT4gY2xhc3MgVHJlZVNoYXJlZDsKIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0
eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8Tm9kZVR5cGUs
IFBhcmVudE5vZGVUeXBlPiopOwpAQCAtMzcsMTIgKzUwLDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gY2xhc3MgVHJlZVNoYXJlZCB7CiBw
cm90ZWN0ZWQ6CiAgICAgVHJlZVNoYXJlZCgpCiAgICAgICAgIDogbV9wYXJlbnQoMCkKLSAgICAg
ICAgLCBtX3JlZkNvdW50KDEpCisgICAgICAgIC8vIEluaXRpYWxseSB0aGUgTm9kZSBpcyBhIGxp
ZmV0aW1lIG93bmVyLCBzaW5jZSB0aGVyZSBpcyBvbmx5IG9uZSBOb2RlCisgICAgICAgIC8vIGlu
IHRoZSBET00gdHJlZS4KKyAgICAgICAgLCBtX3JlZkNvdW50KExpZmV0aW1lT3duZXJCaXRNYXNr
IHwgMSkKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9hZG9wdGlvbklzUmVxdWlyZWQodHJ1
ZSkKICNlbmRpZgogICAgIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJUcmVlU2hhcmVk
KCkgJXBcbiIsIHRoaXMpOwogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICBBU1NFUlQoaXNMaWZldGltZU93bmVyKCkpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9k
ZWxldGlvbkhhc0JlZ3VuID0gZmFsc2U7CiAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0
aW9uID0gZmFsc2U7CkBAIC01MSw4ICs2OCwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB+VHJlZVNo
YXJlZCgpCiAgICAgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5UcmVlU2hhcmVkKCkg
JXBcbiIsIHRoaXMpOwogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBB
U1NFUlQoIW1fcmVmQ291bnQpOworICAgICAgICBBU1NFUlQoIXJlZkNvdW50KCkpOworICAgICAg
ICBBU1NFUlQoIWlzTGlmZXRpbWVPd25lcigpKTsKICAgICAgICAgQVNTRVJUKG1fZGVsZXRpb25I
YXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwogICAgIH0K
QEAgLTcwLDM0ICs4OSw3MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXJlZigpCiAgICAgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQobV9yZWZDb3VudCA+
PSAwKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NF
UlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0
aW9uSXNSZXF1aXJlZCk7Ci0gICAgICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCAmJiAhbV9wYXJl
bnQpIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5j
dGlvbiA9IHRydWU7Ci0jZW5kaWYKKyAgICAgICAgLS1tX3JlZkNvdW50OworICAgICAgICBpZiAo
bV9yZWZDb3VudCA9PSBMaWZldGltZU93bmVyQml0TWFzaykgeworICAgICAgICAgICAgLy8gJ21f
cmVmQ291bnQgPT0gTGlmZXRpbWVPd25lckJpdE1hc2snIG1lYW5zIHRoYXQgdGhlIE5vZGUgaXMK
KyAgICAgICAgICAgIC8vIGEgbGlmZXRpbWUgb3duZXIgYW5kIHRoZSByZWZjb3VudCBvZiB0aGUg
Tm9kZSBiZWNvbWVzIDAuCisgICAgICAgICAgICAvLyBUaGUgbGlmZXRpbWUgb3duZXIgaXMgcmVz
cG9uc2libGUgdG8gY2FsbCByZW1vdmVkTGFzdFJlZigpLgorICAgICAgICAgICAgLy8gSWYgdGhl
IERPTSB0cmVlIGhhcyBhbm90aGVyIE5vZGUgdGhhdCBoYXMgMX4gcmVmY291bnQsCisgICAgICAg
ICAgICAvLyByZW1vdmVkTGFzdFJlZigpIHNldHMgdGhlIE5vZGUgYXMgYSBuZXcgbGlmZXRpbWUg
b3duZXIuCisgICAgICAgICAgICAvLyBPdGhlcndpc2UgKGkuZS4gYWxsIHRoZSBOb2RlcyBpbiB0
aGUgRE9NIHRyZWUgaGF2ZSAwIHJlZmNvdW50KSwKKyAgICAgICAgICAgIC8vIHJlbW92ZWRMYXN0
UmVmKCkgZGVsZXRlcyBhbGwgdGhlIE5vZGVzLgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9k
ZVR5cGUqPih0aGlzKS0+cmVtb3ZlZExhc3RSZWYoKTsKICAgICAgICAgfQorI2lmbmRlZiBOREVC
VUcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgIWlzTGlm
ZXRpbWVPd25lcigpKTsKKyNlbmRpZgorICAgIH0KKworICAgIGludCByZWZDb3VudCgpIGNvbnN0
CisgICAgeworICAgICAgICAvLyBSZW1vdmUgdGhlIGxpZmV0aW1lIG93bmVyIGJpdC4KKyAgICAg
ICAgLy8gZS5nLiAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMTEwMQorICAgICAgICByZXR1cm4gbV9yZWZDb3VudCAmIH5MaWZl
dGltZU93bmVyQml0TWFzazsKICAgICB9CiAKICAgICBib29sIGhhc09uZVJlZigpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VS
VCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gbV9yZWZDb3Vu
dCA9PSAxOworICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAgIH0KIAotICAgIGlu
dCByZWZDb3VudCgpIGNvbnN0CisgICAgdm9pZCBzZXRMaWZldGltZU93bmVyKCkKKyAgICB7Cisg
ICAgICAgIC8vIEEgbGlmZXRpbWUgb3duZXIgbXVzdCBoYXZlIDF+IHJlZmNvdW50LCBzaW5jZSB0
aGUgbGlmZXRpbWUgb3duZXIgaXMgcmVzcG9uc2libGUKKyAgICAgICAgLy8gZm9yIGNhbGxpbmcg
cmVtb3ZlZExhc3RSZWYoKSB3aGVuIHRoZSByZWZjb3VudCBiZWNvbWVzIDAuCisgICAgICAgIEFT
U0VSVChyZWZDb3VudCgpKTsKKyAgICAgICAgLy8gU2V0IHRoZSBsaWZldGltZSBvd25lciBiaXQu
CisgICAgICAgIC8vIGUuZy4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gMTAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEKKyAgICAgICAgLy8gZS5nLiAxMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEw
MQorICAgICAgICBtX3JlZkNvdW50IHw9IExpZmV0aW1lT3duZXJCaXRNYXNrOworICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgInNldExpZmV0aW1lT3duZXIoKSAlcFxuIiwgdGhpcyk7CisgICAg
fQorCisgICAgdm9pZCB1bnNldExpZmV0aW1lT3duZXIoKQorICAgIHsKKyAgICAgICAgLy8gVW5z
ZXQgdGhlIGxpZmV0aW1lIG93bmVyIGJpdC4KKyAgICAgICAgLy8gZS5nLiAxMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMQor
ICAgICAgICAvLyBlLmcuIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxCisgICAgICAgIG1fcmVmQ291bnQgJj0gfkxpZmV0
aW1lT3duZXJCaXRNYXNrOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInVuc2V0TGlmZXRp
bWVPd25lcigpICVwXG4iLCB0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGlzTGlmZXRpbWVPd25l
cigpCiAgICAgewotICAgICAgICByZXR1cm4gbV9yZWZDb3VudDsKKyAgICAgICAgLy8gQ2hlY2sg
aWYgdGhlIGxpZmV0aW1lIG93bmVyIGJpdCBpcyBzZXQuCisgICAgICAgIC8vIGUuZy4gMTAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gdHJ1ZQorICAgICAgICAvLyBlLmcuIDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+IGZhbHNlCisgICAgICAgIHJldHVybiBtX3Jl
ZkNvdW50ICYgTGlmZXRpbWVPd25lckJpdE1hc2s7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQYXJl
bnQoUGFyZW50Tm9kZVR5cGUqIHBhcmVudCkKICAgICB7IAogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgICAgICBtX3BhcmVudCA9IHBhcmVudDsgCisgICAgICAgIG1fcGFyZW50
ID0gcGFyZW50OwogICAgIH0KIAogICAgIFBhcmVudE5vZGVUeXBlKiBwYXJlbnQoKSBjb25zdApA
QCAtMTE3LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFBhcmVudE5vZGVUeXBl
KiBtX3BhcmVudDsKLSAgICBpbnQgbV9yZWZDb3VudDsKKyAgICB1aW50MzJfdCBtX3JlZkNvdW50
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9hZG9wdGlvbklzUmVxdWlyZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggOGVkYmI2NWM2ZWQ2YjVhNjJkYWM1ZDMwOGY3ZjQy
MjRlMmY1NzM1NS4uMWZjMmU0MmFjYTI2MmM2ZDdiMGQ3MDJjMzExOGM5NDk1NDI1ZjEwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNjEsNiArNjEsNyBAQCBQYXNzUmVmUHRyPFNW
R0VsZW1lbnQ+IFNWR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudAogCiBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCgpCiB7CisgICAgLy8gZnByaW50
ZihzdGRlcnIsICJ+U1ZHRWxlbWVudCgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAgICAgaWYgKCFo
YXNSYXJlU1ZHRGF0YSgpKQogICAgICAgICBBU1NFUlQoIVNWR0VsZW1lbnRSYXJlRGF0YTo6cmFy
ZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7CiAgICAgZWxzZSB7CkBAIC04MCw2ICs4MSw3IEBA
IFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKICAgICB9CiAgICAgZG9jdW1lbnQoKS0+YWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVBbGxBbmltYXRpb25FbGVtZW50c0Zyb21UYXJnZXQodGhp
cyk7CiAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVBbGxFbGVt
ZW50UmVmZXJlbmNlc0ZvclRhcmdldCh0aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5T
VkdFbGVtZW50KCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiBib29sIFNWR0VsZW1lbnQ6Ondp
bGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCkBAIC0yMjQsNiArMjI2LDcgQEAgdm9p
ZCBTVkdFbGVtZW50OjptYXBJbnN0YW5jZVRvRWxlbWVudChTVkdFbGVtZW50SW5zdGFuY2UqIGlu
c3RhbmNlKQogICAgIEFTU0VSVCghaW5zdGFuY2VzLmNvbnRhaW5zKGluc3RhbmNlKSk7CiAKICAg
ICBpbnN0YW5jZXMuYWRkKGluc3RhbmNlKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImluc3Rh
bmNlcy5hZGQoaW5zdGFuY2UpICVwIGluc3RhbmNlPSVwXG4iLCB0aGlzLCBpbnN0YW5jZSk7CiB9
CiAgCiB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUluc3RhbmNlTWFwcGluZyhTVkdFbGVtZW50SW5z
dGFuY2UqIGluc3RhbmNlKQpAQCAtMjM1LDYgKzIzOCw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVt
b3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpCiAgICAgQVNT
RVJUKGluc3RhbmNlcy5jb250YWlucyhpbnN0YW5jZSkpOwogCiAgICAgaW5zdGFuY2VzLnJlbW92
ZShpbnN0YW5jZSk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJpbnN0YW5jZXMucmVtb3ZlKGlu
c3RhbmNlKSAlcCBpbnN0YW5jZT0lcFxuIiwgdGhpcywgaW5zdGFuY2UpOwogfQogCiBjb25zdCBI
YXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBTVkdFbGVtZW50OjppbnN0YW5jZXNGb3JFbGVt
ZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5z
dGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKaW5k
ZXggOWZlMmFjYmYwMGE1ZmVjZjVmMzQ1YTc2OWQ1NDFjNzU0NjJmZWExNy4uMGM5OGRlOTI0Zjgx
NjcwNjVmZWFhNzA5OWExMjhkNTUyYjc4YWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnRJbnN0YW5jZS5jcHAKQEAgLTYyLDI0ICs2Miw3NSBAQCBTVkdFbGVtZW50SW5zdGFuY2U6
OlNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiBjb3JyZXNwb25kaW5nVXNlRWxlbWVu
dCwgUwogCiBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2UoKQogewotICAg
IC8vIENhbGwgZGV0YWNoIGJlY2F1c2Ugd2UgbWF5IGJlIGRlbGV0ZWQgZGlyZWN0bHkgaWYgd2Ug
YXJlIGEgY2hpbGQgb2YgYSBkZXRhY2hlZCBpbnN0YW5jZS4KLSAgICBkZXRhY2goKTsKLQorICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGJlZm9yZVxuIiwg
dGhpcyk7CisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CiAjaWZuZGVmIE5ERUJVRwog
ICAgIGluc3RhbmNlQ291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgogCisgICAgaWYgKG1fZWxl
bWVudC0+aW5zdGFuY2VzRm9yRWxlbWVudCgpLmNvbnRhaW5zKHRoaXMpKQorICAgICAgICBtX2Vs
ZW1lbnQtPnJlbW92ZUluc3RhbmNlTWFwcGluZyh0aGlzKTsKKworICAgIG1fc2hhZG93VHJlZUVs
ZW1lbnQgPSAwOworICAgIG1fZGlyZWN0VXNlRWxlbWVudCA9IDA7CisgICAgbV9jb3JyZXNwb25k
aW5nVXNlRWxlbWVudCA9IDA7CiAgICAgbV9lbGVtZW50ID0gMDsKKyAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgIn5TVkdFbGVtZW50SW5zdGFuY2UoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIC8v
IEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1c2Ugd2Ug
ZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KIC8vIGRlbGV0ZSBhbiBTVkdFbGVtZW50
SW5zdGFuY2UgYXQgZWFjaCBkZXJlZiBjYWxsIHNpdGUuCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6cmVtb3ZlZExhc3RSZWYoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVu
dEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgdW5z
ZXRMaWZldGltZU93bmVyKCk7CisKKyAgICAvLyBIZXJlIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0
aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUgRE9NIHRyZWUuCisKKyAgICBpZiAocGFy
ZW50Tm9kZSgpKSB7CisgICAgICAgIC8vIENhbGwgcmVtb3ZlZExhc3RSZWYoKSBmb3IgdGhlIHJv
b3QgTm9kZS4KKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiByb290ID0gdGhpczsKKyAgICAg
ICAgd2hpbGUgKHJvb3QtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIHJvb3QgPSByb290LT5w
YXJlbnROb2RlKCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVudEluc3Rh
bmNlOjpyZW1vdmVkTGFzdFJlZigpIGZvcndhcmRlZCByb290PSVwXG4iLCByb290KTsKKyAgICAg
ICAgcm9vdC0+cmVtb3ZlZExhc3RSZWYoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJT
VkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJlZkNvdW50KCkpIHsKKyAgICAgICAg
Ly8gRmFzdCBwYXRoLiBJZiB0aGUgcm9vdCBOb2RlIGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0IHRo
ZSByb290IG5vZGUgYXMKKyAgICAgICAgLy8gYSBsaWZldGltZSBvd25lci4KKyAgICAgICAgQVNT
RVJUKCFpc0xpZmV0aW1lT3duZXIoKSk7CisgICAgICAgIHNldExpZmV0aW1lT3duZXIoKTsKKyAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0
UmVmKCkgZWFybHktcmV0dXJuICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uKTsKKyAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRydWU7CisjZW5kaWYK
KworICAgIGJvb2wgY2hpbGRyZW5SZW1vdmVkID0gZ2NDaGlsZHJlbkluQ29udGFpbmVyKHRoaXMp
OworICAgIGlmIChjaGlsZHJlblJlbW92ZWQpIHsKKyAgICAgICAgLy8gQWxsIHRoZSBOb2RlcyBi
dXQgdGhlIHJvb3QgTm9kZSBhcmUgZGVsZXRlZCBieSBnY0NoaWxkcmVuKCkuCisgICAgICAgIC8v
IE5vdyBpdCBpcyB0aW1lIHRvIGRlbGV0ZSB0aGUgcm9vdCBOb2RlLgorCisgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiZGVsZXRlICVwKFNWR0VsZW1lbnRJbnN0YW5jZSkgYmVmb3JlXG4iLCB0
aGlzKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyAg
ICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgotICAgIGRlbGV0ZSB0aGlz
OworICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxl
dGUgJXAoU1ZHRWxlbWVudEluc3RhbmNlKSBhZnRlclxuIiwgdGhpcyk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgLy8gZ2NDaGlsZHJlbigpIGRpZCBub3RoaW5nLiBBbGwgdGhlIE5vZGVzIGluIHRo
ZSBET00gdHJlZSBhcmUgc3RpbGwgYWxpdmUuCisKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1f
aW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAgICB9CisgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKCkgJXAg
YWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKCkK
QEAgLTk3LDcgKzE0OCw3IEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpkZXRhY2goKQogICAg
IG1fZGlyZWN0VXNlRWxlbWVudCA9IDA7CiAgICAgbV9jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9
IDA7CiAKLSAgICByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5j
ZSwgU1ZHRWxlbWVudEluc3RhbmNlPih0aGlzKTsKKyAgICByZW1vdmVDaGlsZHJlbkluQ29udGFp
bmVyPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPih0aGlzKTsKIH0KIAog
UGFzc1JlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2VMaXN0PiBTVkdFbGVtZW50SW5zdGFuY2U6OmNo
aWxkTm9kZXMoKQpAQCAtMTE0LDYgKzE2NSw3IEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpz
ZXRTaGFkb3dUcmVlRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogdm9pZCBTVkdFbGVtZW50
SW5zdGFuY2U6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBjaGls
ZCkKIHsKICAgICBhcHBlbmRDaGlsZFRvQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZH
RWxlbWVudEluc3RhbmNlPihjaGlsZC5nZXQoKSwgdGhpcyk7CisgICAgY2hpbGQtPnVuc2V0TGlm
ZXRpbWVPd25lcigpOwogfQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFs
bEluc3RhbmNlc09mRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5oCmluZGV4IDFjODljN2NjZDFkMjg5NDI0NGVmYzY4ZjAwOGI1
M2E3MzY4MzJkYjguLjYxOTliYmI2NjAxNjU5ODg4YzI0MGUwMTY2OGZjYjY0OWZlYWQ2NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKQEAgLTc0LDYgKzc0LDggQEAg
cHVibGljOgogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmlyc3RDaGlsZDsgfQogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogbGFzdENoaWxkKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KIAorICAgIGJvb2wgaXNDb250YWluZXJOb2Rl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQgPyBtX2VsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSA6
IDA7IH0KIAogICAgIGNsYXNzIEludmFsaWRhdGlvbkd1YXJkIHsKQEAgLTE1OCwxMyArMTYwLDEy
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaGFkb3dUcmVlRWxlbWVudChTVkdFbGVtZW50Kik7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250
YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9k
ZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpOwotCisgICAgZnJpZW5k
IHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNO
b2RlQ29udGFpbmVyKik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdl
bmVyaWNOb2RlQ29udGFpbmVyPgotICAgIGZyaWVuZCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5D
b250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7Ci0KKyAgICBmcmllbmQg
dm9pZCBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYg
aGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOwogICAgIHRl
bXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAg
ICBmcmllbmQgdm9pZCBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVy
aWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciog
Y29udGFpbmVyKTsKKyAgICBmcmllbmQgdm9pZCByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKEdl
bmVyaWNOb2RlQ29udGFpbmVyKik7CisgICAgZnJpZW5kIGJvb2wgZ2NDaGlsZHJlbkluQ29udGFp
bmVyKFNWR0VsZW1lbnRJbnN0YW5jZSopOwogCiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29u
c3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NGJhN2I2ZTVjOTAxOTNlYTkx
YjYzODk0NmE5Njk4MjkxOWNkNmJkLi40MWYxMjk0OWUwY2FhZmU1NGU1NjkzMTE5Zjg4NTM3YTM4
NWQ3NzIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDYtMjAgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIE5vZGUgWCBoYXMgYSByZWYtY291
bnQsIGFsbCB0aGUgTm9kZXMgaW4gdGhlIHRyZWUgd2hpY2ggWCBiZWxvbmdzIHRvIHNob3VsZCBi
ZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFN0aWxsIFdJUC4KKyAgICAgICAgQSByb3VnaCBleHBsYW5hdGlvbiBvZiB0aGUgYWxnb3Jp
dGhtOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MzQjYzMKKyAg
ICAgICAgQSBkZXRhaWxlZCBkb2N1bWVudCB3aWxsIGJlIGNvbWluZyBzb29uLgorCisgICAgICAg
ICogZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vZ2MtNS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGlt
ZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0xOSAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgW0Nocm9taXVtXVtNYWNdIExheW91dCBUZXN0IGlldGVzdGNlbnRl
ci9jc3MzL2JvcmRlcnNiYWNrZ3JvdW5kcy9ib3JkZXItcmFkaXVzLWNsaXAtMDAyLmh0bSBpcyBm
YWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0CmluZGV4IDYwZDNhMTcw
ZjI5YjYzMzQ4NzFjODM5NmRlMGFhYmJiNzZiMGMxOTYuLjkyZDQxMjE3ZWYzYWUzOTBmNWFhMjAw
YzJlZTllZmQxNWE2MTI2ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0
CkBAIC00LDUgKzQsNiBAQCBUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNl
cyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYQogCiByZXBsYWNlbWVudCBj
b250ZW50CiBCCitwYXJlbnQgbm9kZSBleGlzdHMKIGNoaWxkIG5vZGUgZXhpc3RzCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQKaW5kZXggMThjODM0ODhiMGNmNmYwNDAxZmYz
Nzk3Y2YxNjYzOWRhNTYzZGE2ZS4uNzM4MDljZGE4NTQzNDg3OWNiOTI2NzZiOTZiNzVkMTlmMDMx
N2IwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQKQEAgLTQsNCArNCw1
IEBAIFRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHRleHQgb24g
bGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhCiAKIHJlcGxhY2VtZW50IGNvbnRlbnQKIEIKK0QK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4M2VlZGUxYjQxM2Q2NDdlZTc4MTZlNjVjYWJmMDA5
NmM3YTg1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20t
dHJlZS1saWZldGltZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMDIgQEAKKz09PSBJbml0aWFs
IHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5w
YXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQu
aWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xv
YmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmly
c3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlu
bmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGds
b2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZp
cnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYy
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYy
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVj
dHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlh
bCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGds
b2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZp
cnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2
LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGls
ZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBn
bG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5m
aXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmpl
Y3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRp
YWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2
LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGls
ZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBn
bG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5m
aXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERp
di5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hp
bGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYy
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2Jq
ZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0
aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERp
di5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hp
bGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYw
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9i
amVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5p
dGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFs
RGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RD
aGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVh
cmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVh
cmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBv
YmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IElu
aXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFs
RGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RD
aGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4g
b2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODAw
M2Q1OTdmZTg2NTc2MmJiNWYwNjk4MThmM2YxMmQ4NjVhMmU0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbApAQCAtMCwwICsx
LDk4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KK3ZhciB0ZXN0Q2FzZXMgPSBbWyJkaXYwIiwgImRpdjEiLCAiZGl2MiJdLAorICAg
ICAgICAgICAgICAgICBbImRpdjAiLCAiZGl2MiIsICJkaXYxIl0sCisgICAgICAgICAgICAgICAg
IFsiZGl2MSIsICJkaXYwIiwgImRpdjIiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYxIiwgImRp
djIiLCAiZGl2MCJdLAorICAgICAgICAgICAgICAgICBbImRpdjIiLCAiZGl2MCIsICJkaXYxIl0s
CisgICAgICAgICAgICAgICAgIFsiZGl2MiIsICJkaXYxIiwgImRpdjAiXV07CisKK3ZhciByb290
RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Citkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHJvb3REaXYpOwordmFyIHRlc3RIdG1sID0gIjxkaXYgaWQ9J2RpdjAtcGFyZW50Jz48
ZGl2IGlkPSdkaXYwJz48ZGl2IGlkPSdkaXYwLWNoaWxkJz48L2Rpdj48L2Rpdj48ZGl2IGlkPSdk
aXYxLXBhcmVudCc+PGRpdiBpZD0nZGl2MSc+PGRpdiBpZD0nZGl2MS1jaGlsZCc+PC9kaXY+PC9k
aXY+PGRpdiBpZD0nZGl2Mi1wYXJlbnQnPjxkaXYgaWQ9J2RpdjInPjxkaXYgaWQ9J2RpdjItY2hp
bGQnPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PiI7CisKK3Rlc3RDYXNlcy5mb3JFYWNo
KGZ1bmN0aW9uICh0ZXN0KSB7CisgICAgdmFyIGRpdlgsIGRpdlksIGRpdlo7CisgICAgZGVidWco
Ij09PSBJbml0aWFsIHN0YXRlID09PSIpOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0
bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRp
dlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZl
KGRpdlgsIHRlc3RbMF0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZZLCB0ZXN0
WzFdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WiwgdGVzdFsyXSk7CisKKyAg
ICBkZWJ1ZygiPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0iKTsKKyAgICByb290RGl2
LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7
CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMl0pOworICAgIHJvb3RE
aXYuaW5uZXJIVE1MID0gIiI7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlgsIHRl
c3RbMF0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZZLCB0ZXN0WzFdKTsKKyAg
ICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WiwgdGVzdFsyXSk7CisKKyAgICBkZWJ1Zygi
PT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0iKTsKKyAgICByb290RGl2
LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7
CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMl0pOworICAgIHJvb3RE
aXYuaW5uZXJIVE1MID0gIiI7CisgICAgZGl2WCA9IG51bGw7CisgICAgZ2MoKTsKKyAgICBjaGVj
a1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRD
aGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwg
PSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7
CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlog
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290RGl2LmlubmVySFRN
TCA9ICIiOworICAgIGRpdlggPSBudWxsOworICAgIGRpdlkgPSBudWxsOworICAgIGdjKCk7Cisg
ICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWco
Ij09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09Iik7
CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJd
KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgcHJldk5vZGVzID0gd2luZG93
LmludGVybmFscy5udW1iZXJPZkxpdmVOb2RlcygpOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0g
IiI7CisgICAgZGl2WCA9IG51bGw7CisgICAgZGl2WSA9IG51bGw7CisgICAgZGl2WiA9IG51bGw7
CisgICAgZ2MoKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICAvLyBJZiBh
bGwgdGhlIE5vZGUgb2JqZWN0cyBpbiB0ZXN0SHRtbCBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0
ZWQsCisgICAgICAgIC8vIGF0IGxlYXN0IDkgPGRpdj5zIG9iamVjdHMgd2lsbCBiZSByZW1vdmVk
LgorICAgICAgICAvLyAoQWN0dWFsbHksIHNpbmNlIHRlc3RIdG1sIHJlbmRlcmluZyByZXF1aXJl
cyBtb3JlIHRoYW4gOSBOb2RlIG9iamVjdHMuKQorICAgICAgICBpZiAod2luZG93LmludGVybmFs
cy5udW1iZXJPZkxpdmVOb2RlcygpIDw9IHByZXZOb2RlcyAtIDkpCisgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkg
ZGVzdHJ1Y3RlZC4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdEZhaWxlZCgiPGRp
dj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBub3QgZGVzdHJ1Y3RlZC4iKTsKKyAgICB9Cit9
KTsKKworZnVuY3Rpb24gY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdiwgbmFtZSkgeworICAg
IGdsb2JhbERpdiA9IGRpdjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5p
ZCcsIG5hbWUpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQnLCBuYW1lICsgIi1wYXJlbnQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ds
b2JhbERpdi5maXJzdENoaWxkLmlkJywgbmFtZSArICItY2hpbGQiKTsKKyAgICBnbG9iYWxEaXYg
PSBudWxsOworICAgIGdjKCk7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149019</attachid>
            <date>2012-06-22 07:03:40 -0700</date>
            <delta_ts>2012-06-25 17:43:29 -0700</delta_ts>
            <desc>WIP patch2</desc>
            <filename>bug-88834-20120622230339.patch</filename>
            <type>text/plain</type>
            <size>74839</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwOTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA1ZjI1ZTkyYTFmN2Q0
ZDM4NzUzZjRhYTYwNjdhMDE1ODM0YTU2My4uYWUwMzY5Yzc3NWRhODdmYTUwZWMzZmE2MDY5YTIz
MzI2NGY4NmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wNi0yMiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgTm9kZSBYIGhh
cyBhIHJlZi1jb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgdHJlZSB3aGljaCBYIGJlbG9uZ3Mg
dG8gc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RpbGwgV0lQLgorICAgICAgICBBIHJvdWdoIGV4cGxhbmF0aW9uIG9m
IHRoZSBhbGdvcml0aG06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODgzNCNjMworICAgICAgICBBIGRldGFpbGVkIGRvY3VtZW50IHdpbGwgYmUgY29taW5nIHNvb24u
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbAorICAg
ICAgICAgICAgICBmYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0bWwK
KyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMtbm9C
YXNlVmFsUmVmLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50
LWluc3RhbmNlcy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZHluYW1p
Y2FsbHktYWRkZWQtZWxlbWVudC1pbnN0YW5jZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlv
bnMvc21pbC1sZWFrLWVsZW1lbnRzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3N2Z2xl
bmd0aC1lbGVtZW50LXJlbW92ZWQtY3Jhc2guc3ZnCisgICAgICAgICAgICAgIENvbmZpcm0gdGhh
dCBhbGwgdGhlIG90aGVyIGV4aXN0aW5nIHRlc3RzIGRvIG5vdCBjcmFzaC4KKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9t
L0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6Y3JlYXRlVGV4dENoaWxkKToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmdjQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6fkNvbnRhaW5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRk
Q2hpbGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250YWlu
ZXJOb2RlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRh
bnRJbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVS
ZW1vdmFsTm90aWZpZXI6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAgIChDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpnY0NoaWxkcmVuSW5Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQ2hp
bGRyZW5JbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlOjphZGRDaGlsZE5v
ZGVzVG9EZWxldGlvblF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlv
bk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9U
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3Rp
ZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlO
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1v
dmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpjaGVja0lmTGlmZXRpbWVPd25lcik6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnY0NoaWxk
cmVuT2ZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2VhcmNoTmV3TGlm
ZXRpbWVPd25lcik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Z3VhcmREZXJlZik6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Zm9jdXMpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRT
aGFkb3c6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
cmVtb3ZlQWxsU2hhZG93Um9vdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93Ojpmb3JjZVJlbW92ZUFsbFNoYWRvd1Jvb3RzKToKKyAgICAgICAg
KiBkb20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoRWxlbWVudFNoYWRvdyk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93
bmVyKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICog
ZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZUNoaWxkcmVuV2l0
aEZyYWdtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OlRyZWVTaGFyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6flRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgorICAgICAgICAoVHJlZVNoYXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmVlU2hhcmVkOjpyZWZDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hh
cmVkOjpoYXNPbmVSZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6c2V0TGlmZXRp
bWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp1bnNldExpZmV0aW1lT3du
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6aXNMaWZldGltZU93bmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnNldFBhcmVudCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6flNWR0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6bWFwSW5zdGFuY2VUb0VsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6c2VhcmNoTmV3TGlmZXRp
bWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50SW5zdGFuY2U6OmlzQ29udGFpbmVyTm9kZSk6CisgICAgICAgIChTVkdFbGVtZW50SW5z
dGFuY2UpOgorCiAyMDEyLTA2LTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgog
CiAgICAgICAgIENsYW5nIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyNTU2YTI5ZDhhYWE3MzVl
ODE1ZGI2MDVlYzFjOGRiODIyYTRhNThiLi5hYTZlNTIyZDA0N2RiMGE0MjYxNWUzN2M0YjY0NDFl
M2IzZmU2Mzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMDYtMjIgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIE5vZGUgWCBoYXMg
YSByZWYtY291bnQsIGFsbCB0aGUgTm9kZXMgaW4gdGhlIHRyZWUgd2hpY2ggWCBiZWxvbmdzIHRv
IHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFN0aWxsIFdJUC4KKyAgICAgICAgQSByb3VnaCBleHBsYW5hdGlvbiBvZiB0
aGUgYWxnb3JpdGhtOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4
MzQjYzMKKyAgICAgICAgQSBkZXRhaWxlZCBkb2N1bWVudCB3aWxsIGJlIGNvbWluZyBzb29uLgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwKKyAgICAg
ICAgICAgICAgZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sCisg
ICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLW5vQmFz
ZVZhbFJlZi5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1p
bnN0YW5jZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNh
bGx5LWFkZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25z
L3NtaWwtbGVhay1lbGVtZW50cy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zdmdsZW5n
dGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLnN2ZworICAgICAgICAgICAgICBDb25maXJtIHRoYXQg
YWxsIHRoZSBvdGhlciBleGlzdGluZyB0ZXN0cyBkbyBub3QgY3Jhc2guCisKKyAgICAgICAgKiB3
aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgorCiAyMDEy
LTA2LTIxICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAK
ICAgICAgICAgW1dLMl0gQWRkIEMgQVBJIHRvIGluc3BlY3QgYSBXZWIgSW50ZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCmluZGV4IDczMzZjOTNmNDVhOWMwZmZhMWIyNzE3ZGMxNWIyMDk4YjQ2MWQ3N2Mu
LmNiMGZlMDE1ZjIyMjQ5OThlMjcwZjE0YWI5MzNmNTg5NmY0NjhlYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC02NDYsNyArNjQ2LDcgQEAgX19aTjdXZWJDb3JlNEtVUkxDMUVQNU5TVVJMCiBf
X1pON1dlYkNvcmU0S1VSTEMxRVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29yZTRLVVJMQzFFUktTMF9S
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTROb2RlMTByZW5kZXJSZWN0RVBiCi1fX1pON1dl
YkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdgorX19aTjdXZWJDb3JlNE5vZGUxNHNlYXJjaE5l
d0xpZmV0aW1lT3duZXJFdgogX19aTjdXZWJDb3JlNE5vZGUxN3N0b3BJZ25vcmluZ0xlYWtzRXYK
IF9fWk43V2ViQ29yZTROb2RlMThzdGFydElnbm9yaW5nTGVha3NFdgogX19aTjdXZWJDb3JlNE5v
ZGUxOXNldE5lZWRzU3R5bGVSZWNhbGNFTlNfMTVTdHlsZUNoYW5nZVR5cGVFCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5v
cmRlcgppbmRleCBiYmY2YTNkZDNkN2NkYTg2YmNkYTgwODAyM2I1YTIwYmM4Y2QzNGU5Li4zNDE4
MTczOWM1MzVkYmU2MjBmMWZkNjM4MmMyMjAyMzIyM2Q1M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIK
QEAgLTI0NzEsMTMgKzI0NzEsMTIgQEAgX19aTkszV1RGOUhhc2hUYWJsZUlQdlMxX05TXzE3SWRl
bnRpdHlFeHRyYWN0b3JJUzFfRUVOU183UHRySGFzaElTMV9FRU5TXzEwSGFzaFQKIF9fWk43V2Vi
Q29yZTExSlNOb2RlT3duZXI4ZmluYWxpemVFTjNKU0M2SGFuZGxlSU5TMV83VW5rbm93bkVFRVB2
CiBfX1pON1dlYkNvcmUxNHVuY2FjaGVXcmFwcGVySU5TXzROb2RlRUVFdlBOU18xNURPTVdyYXBw
ZXJXb3JsZEVQVF9QTlNfMTJKU0RPTVdyYXBwZXJFCiBfX1pON1dlYkNvcmUxNEpTSFRNTERvY3Vt
ZW50RDFFdgotX19aVGhuOF9ON1dlYkNvcmU4RG9jdW1lbnQxNHJlbW92ZWRMYXN0UmVmRXYKLV9f
Wk43V2ViQ29yZThEb2N1bWVudDE0cmVtb3ZlZExhc3RSZWZFdgorX19aVGhuOF9ON1dlYkNvcmU4
RG9jdW1lbnQxNHNlYXJjaE5ld0xpZmV0aW1lT3duZXJFdgorX19aTjdXZWJDb3JlOERvY3VtZW50
MTRzZWFyY2hOZXdMaWZldGltZU93bmVyRXYKIF9fWk43V2ViQ29yZTE0U3R5bGVTaGVldExpc3RE
MUV2CiBfX1pON1dlYkNvcmU5VHJlZVNjb3BlMjBkZXN0cm95VHJlZVNjb3BlRGF0YUV2CiBfX1pO
N1dlYkNvcmUxOERvY3VtZW50T3JkZXJlZE1hcDVjbGVhckV2CiBfX1pON1dlYkNvcmUxM0NvbnRh
aW5lck5vZGUxN3JlbW92ZUFsbENoaWxkcmVuRXYKLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hp
bGRyZW5JbkNvbnRhaW5lcklOU180Tm9kZUVOU18xM0NvbnRhaW5lck5vZGVFRUV2UFQwXwogX19a
TjdXZWJDb3JlMTVIVE1MSHRtbEVsZW1lbnREMEV2CiBfX1pON1dlYkNvcmUxM1N0eWxlZEVsZW1l
bnREMkV2CiBfX1pON1dlYkNvcmU3RWxlbWVudEQyRXYKQEAgLTQxNTEsNyArNDE1MCw3IEBAIF9f
Wk43V2ViQ29yZTROb2RlMTVyZW1vdmVkRnJvbVRyZWVFYgogX19aTjdXZWJDb3JlTDE5bm90aWZ5
Q2hpbGRJbnNlcnRlZEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmU0Tm9kZTE2aW5zZXJ0ZWRJbnRv
VHJlZUViCiBfX1pON1dlYkNvcmVMMjhkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzRVBOU180
Tm9kZUUKLV9fWk43V2ViQ29yZTEwVHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVFRTE0cmVt
b3ZlZExhc3RSZWZFdgorX19aTjdXZWJDb3JlMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9k
ZUVFMTRzZWFyY2hOZXdMaWZldGltZU93bmVyRXYKIF9fWlRobjhfTjdXZWJDb3JlMTZEb2N1bWVu
dEZyYWdtZW50RDBFdgogX19aTjdXZWJDb3JlTDMzY3JlYXRlSFRNTFBhcmFncmFwaEVsZW1lbnRX
cmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfMTFIVE1MRWxlbWVudEVFRQogX19aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVy
SU5TXzIySlNIVE1MUGFyYWdyYXBoRWxlbWVudEVOU18yMEhUTUxQYXJhZ3JhcGhFbGVtZW50RUVF
UE5TXzEySlNET01XcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmpl
Y3RFUFQwXwpAQCAtMjk0NzEsMTIgKzI5NDcwLDExIEBAIF9fWk43V2ViQ29yZTEzU1ZHVXNlRWxl
bWVudDMwZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwRXYKIF9fWk5LN1dlYkNvcmUxMlNW
R1RyYW5zZm9ybTl0cmFuc2xhdGVFdgogX19aTjdXZWJDb3JlMTBGbG9hdFBvaW50MTVuYXJyb3dQ
cmVjaXNpb25FZGQKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtOXNldE1hdHJpeEVkZGRk
ZGQKLV9fWk43V2ViQ29yZTEwVHJlZVNoYXJlZElOU18xOFNWR0VsZW1lbnRJbnN0YW5jZUVFMTRy
ZW1vdmVkTGFzdFJlZkV2CitfX1pON1dlYkNvcmUxMFRyZWVTaGFyZWRJTlNfMThTVkdFbGVtZW50
SW5zdGFuY2VFRTE0c2VhcmNoTmV3TGlmZXRpbWVPd25lckV2CiBfX1pON1dlYkNvcmUxOFNWR0Vs
ZW1lbnRJbnN0YW5jZUQwRXYKIF9fWk43V2ViQ29yZTEwU1ZHRWxlbWVudDIxcmVtb3ZlSW5zdGFu
Y2VNYXBwaW5nRVBOU18xOFNWR0VsZW1lbnRJbnN0YW5jZUUKIF9fWk5LM1dURjlIYXNoVGFibGVJ
UE43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJ
UzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U0ZmluZElTM19O
U18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzNfUzNfUzdfRUVFRU5TXzIySGFzaFRhYmxlQ29u
c3RJdGVyYXRvcklTM19TM19TNV9TN19TOV9TOV9FRVJLVF8KIF9fWk4zV1RGOUhhc2hUYWJsZUlQ
TjdXZWJDb3JlMThTVkdFbGVtZW50SW5zdGFuY2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklT
M19FRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTZyZW1vdmVFUFMz
XwotX19aTjdXZWJDb3JlMjhyZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVySU5TXzE4U1ZHRWxl
bWVudEluc3RhbmNlRVMxX0VFdlBUMF8KIF9fWlRobjhfTjdXZWJDb3JlMTRTVkdMaW5lRWxlbWVu
dEQwRXYKIF9fWlRobjhfTjdXZWJDb3JlMThTVkdQb2x5bGluZUVsZW1lbnREMEV2CiBfX1pUaG44
X043V2ViQ29yZTE3U1ZHUG9seWdvbkVsZW1lbnREMEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggZGU5
ZTRmZjQzZjQ5YmQ4NjRmZmM5NDRiMmRjMWJiZDk4Yzg3MTkzYS4uZjliYmY1NzBkYzQxMTc4MTc3
NmY5MDRhZDhkNzJiYjg1YmI4ZTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtODIsNiArODIsNyBA
QCB2b2lkIEF0dHI6OmNyZWF0ZVRleHRDaGlsZCgpCiAgICAgICAgIC8vIFRoaXMgZG9lcyBldmVy
eXRoaW5nIGFwcGVuZENoaWxkKCkgd291bGQgZG8gaW4gdGhpcyBzaXR1YXRpb24gKGFzc3VtaW5n
IG1faWdub3JlQ2hpbGRyZW5DaGFuZ2VkIHdhcyBzZXQpLAogICAgICAgICAvLyBidXQgbXVjaCBt
b3JlIGVmZmljaWVudGx5LgogICAgICAgICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0
aGlzKTsKKyAgICAgICAgdGV4dE5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigpOwogICAgICAgICBz
ZXRGaXJzdENoaWxkKHRleHROb2RlLmdldCgpKTsKICAgICAgICAgc2V0TGFzdENoaWxkKHRleHRO
b2RlLmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXgg
YzIzYTBiOWU5MGQwMGIyZGE0OWQ5NmEzOTg1MmI3N2RjMzY0M2I3ZC4uM2Q3NmEwZmE4ODIyZjM3
YTIxZmMxMjM3MGZkMWEzMjQ2ZGQ0NjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcApAQCAtODMsNyArODMsMTIgQEAgc3RhdGljIHZvaWQgY29sbGVjdENoaWxkcmVuQW5kUmVt
b3ZlRnJvbU9sZFBhcmVudChOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcywKIAogdm9pZCBD
b250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiB7Ci0gICAgcmVtb3ZlQWxsQ2hpbGRy
ZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlzKTsKKyAgICByZW1vdmVDaGls
ZHJlbkluQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KHRoaXMpOworfQorCitib29sIENv
bnRhaW5lck5vZGU6OmdjQ2hpbGRyZW4oKQoreworICAgIHJldHVybiBnY0NoaWxkcmVuSW5Db250
YWluZXIodGhpcyk7CiB9CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJv
bShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCkBAIC0xMTEsNyArMTE2LDcgQEAgdm9pZCBDb250
YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkK
IAogQ29udGFpbmVyTm9kZTo6fkNvbnRhaW5lck5vZGUoKQogewotICAgIHJlbW92ZUFsbENoaWxk
cmVuKCk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+Q29udGFpbmVyTm9kZSgpICVwXG4iLCB0
aGlzKTsKIH0KIAogYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxO
b2RlPiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIHNo
b3VsZExhenlBdHRhY2gpCkBAIC00MDEsNyArNDA2LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpy
ZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICBjaGls
ZHJlbkNoYW5nZWQoZmFsc2UsIHByZXYsIG5leHQsIC0xKTsKIAotICAgIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQuZ2V0KCkpOworICAgIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQuZ2V0KCksIGZhbHNlKTsKICAgICBkaXNwYXRj
aFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiAKICAgICByZXR1cm4gY2hpbGQ7CkBAIC00NDcsNyAr
NDUyLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlKiBvbGRD
aGlsZCkKICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxkKTsKIAogICAgIGNo
aWxkcmVuQ2hhbmdlZCh0cnVlLCBwcmV2LCBuZXh0LCAtMSk7Ci0gICAgQ2hpbGROb2RlUmVtb3Zh
bE5vdGlmaWVyKHRoaXMpLm5vdGlmeShvbGRDaGlsZCk7CisgICAgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyKHRoaXMpLm5vdGlmeShvbGRDaGlsZCwgZmFsc2UpOwogfQogCiAvLyB0aGlzIGRpZmZl
cnMgZnJvbSBvdGhlciByZW1vdmUgZnVuY3Rpb25zIGJlY2F1c2UgaXQgZm9yY2libHkgcmVtb3Zl
cyBhbGwgdGhlIGNoaWxkcmVuLApAQCAtNTA5LDcgKzUxNCw3IEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6cmVtb3ZlQ2hpbGRyZW4oKQogICAgIGNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgMCwgMCwgLXN0
YXRpY19jYXN0PGludD4ocmVtb3ZlZENoaWxkcmVuQ291bnQpKTsKIAogICAgIGZvciAoaSA9IDA7
IGkgPCByZW1vdmVkQ2hpbGRyZW5Db3VudDsgKytpKQotICAgICAgICBDaGlsZE5vZGVSZW1vdmFs
Tm90aWZpZXIodGhpcykubm90aWZ5KHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKSk7CisgICAgICAg
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkocmVtb3ZlZENoaWxkcmVuW2ld
LmdldCgpLCBmYWxzZSk7CiAKICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKICAgICBkaXNwYXRj
aFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CkBAIC01NzgsMTQgKzU4MywxNSBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAKICAg
ICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CiAgICAgTm9kZSogbGFzdCA9IG1fbGFzdENoaWxkOwor
ICAgIE5vZGUqIGNoaWxkID0gbmV3Q2hpbGQuZ2V0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgbWV0
aG9kIHNob3VsZCB0YWtlIGEgUGFzc1JlZlB0ci4KLSAgICBhcHBlbmRDaGlsZFRvQ29udGFpbmVy
KG5ld0NoaWxkLmdldCgpLCB0aGlzKTsKLSAgICB0cmVlU2NvcGUoKS0+YWRvcHRJZk5lZWRlZChu
ZXdDaGlsZC5nZXQoKSk7CisgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihjaGlsZCwgdGhpcyk7
CisgICAgdHJlZVNjb3BlKCktPmFkb3B0SWZOZWVkZWQoY2hpbGQpOwogICAgIAogICAgIGFsbG93
RXZlbnREaXNwYXRjaCgpOwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIGxhc3QsIDAsIDEp
OwotICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5n
ZXQoKSk7CisgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxk
KTsKIH0KIAogdm9pZCBDb250YWluZXJOb2RlOjpzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCBiZThjNzhlNGQ1ZjEwNTY3ZDRlNTU5
YmFiZmJmZTYwZjkxNmZmZTNjLi42M2U0OGU5ZGRiYjRjM2IzNjAwMDhiZTFjYjQ4MjgzMDhjNGFk
YzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVi
bGljOgogICAgIC8vIEhvdyBkbyByZW1vdmVDaGlsZHJlbiBhbmQgcmVtb3ZlQWxsQ2hpbGRyZW4g
ZGlmZmVyPwogICAgIHZvaWQgcmVtb3ZlQ2hpbGRyZW4oKTsKICAgICB2b2lkIHJlbW92ZUFsbENo
aWxkcmVuKCk7CisgICAgYm9vbCBnY0NoaWxkcmVuKCk7CiAKICAgICB2b2lkIHRha2VBbGxDaGls
ZHJlbkZyb20oQ29udGFpbmVyTm9kZSopOwogCkBAIC0xMDksOSArMTEwLDExIEBAIHByb3RlY3Rl
ZDoKIAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNv
bnRhaW5lcj4KICAgICBmcmllbmQgdm9pZCBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKEdlbmVyaWNO
b2RlKiBjaGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsKLQogICAgIHRlbXBsYXRlPGNsYXNz
IEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KICAgICBmcmllbmQgdm9p
ZCBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVh
ZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOworICAgIHRlbXBs
YXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KKyAgICBm
cmllbmQgdm9pZCByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVy
Kik7CisgICAgZnJpZW5kIGJvb2wgZ2NDaGlsZHJlbkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUq
KTsKIAogICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChOb2RlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQg
PSBjaGlsZDsgfQogICAgIHZvaWQgc2V0TGFzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENo
aWxkID0gY2hpbGQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuY3BwCmluZGV4IGM4OTU5ZGZiODE2M2Y0ZWU5NWI0NWUwOTNmNGY3YmM1MWMzZjU2M2Mu
LmE0MGRlN2ZjNzE4OTI5MmM4M2U2MjA5MDYzMzdjNGFmMTBkMzBlZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAtNTksNiArNTksOCBA
QCB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0
ZWRJbnRvVHJlZShDb250YWluZXJOb2RlKgogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBub3RpZnlOb2Rl
SW5zZXJ0ZWRJbnRvVHJlZSh0b0NvbnRhaW5lck5vZGUoY2hpbGQpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY2hpbGQtPnVuc2V0TGlmZXRpbWVPd25lcigpOwogICAgIH0KIAogICAgIGZv
ciAoU2hhZG93Um9vdCogcm9vdCA9IG5vZGUtPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyBy
b290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCkBAIC05NSw2ICs5Nyw4IEBAIHZvaWQgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENv
bnRhaW5lck5vZGUqIG5vCiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNo
aWxkLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJv
bVRyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNoZWNrSWZMaWZldGltZU93bmVyKGNoaWxkKTsKICAgICB9CiAKICAgICBpZiAoIW5vZGUtPmlz
RWxlbWVudE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmgKaW5kZXggYjVkZmE0ZmE2YWJmNDY3YzQ1YzhmYzI3ZmY2ZTk2YzIzM2VkODhhMS4uMTYy
ZDQwZDAwNWUzODQ1MWNmNjAxMTlhMzg3ZTlkMGUzMGRjNTIwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKQEAgLTIzLDkgKzIzLDE0IEBACiAjZGVm
aW5lIENvbnRhaW5lck5vZGVBbGdvcml0aG1zX2gKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNW
R0VsZW1lbnRJbnN0YW5jZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MiwxOCArNTcsMjEgQEAgY2xh
c3MgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXIoQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAg
ICAgIDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCkKKyAgICAgICAgLCBtX2xpZmV0
aW1lT3duZXJGb3VuZChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBub3RpZnkoTm9k
ZSopOworICAgIHZvaWQgbm90aWZ5KE5vZGUqLCBib29sKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUqKTsKICAg
ICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOwog
ICAgIHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSopOwogICAgIHZvaWQg
bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKik7CisgICAgdm9pZCBjaGVj
a0lmTGlmZXRpbWVPd25lcihOb2RlKik7CiAKICAgICBDb250YWluZXJOb2RlKiBtX2luc2VydGlv
blBvaW50OworICAgIGJvb2wgbV9saWZldGltZU93bmVyRm91bmQ7CiB9OwogCiBuYW1lc3BhY2Ug
UHJpdmF0ZSB7CkBAIC03MywxMSArODEsMjA4IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKIAogfQog
Ci0vLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBUcmVlU2hhcmVkLWRlcml2ZWQgY2xhc3Nlcywgd2hp
Y2ggaGF2ZSBhICdOb2RlJyBzdHlsZSBpbnRlcmZhY2UKLS8vIFRoaXMgYXBwbGllcyB0byAnQ29u
dGFpbmVyTm9kZScgYW5kICdTVkdFbGVtZW50SW5zdGFuY2UnCisvLyBGSVhNRTogV3JhcCB1cCB0
d28gZ2NDaGlsZHJlbkluQ29udGFpbmVyKClzIGJ5IHRlbXBsYXRlLgoraW5saW5lIGJvb2wgZ2ND
aGlsZHJlbkluQ29udGFpbmVyKFNWR0VsZW1lbnRJbnN0YW5jZSogY29udGFpbmVyKQoreworICAg
IC8vIFRoaXMgYXNzZXJ0aW9uIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLiBGb3IgcGVyZm9ybWFu
Y2Ugd2Ugc2hvdWxkIGF2b2lkIGNhbGxpbmcKKyAgICAvLyBnY0NoaWxkcmVuSW5Db250YWluZXIo
KSBpZiBjb250YWluZXItPnJlZkNvdW50KCkgPiAwLgorICAgIEFTU0VSVCghY29udGFpbmVyLT5y
ZWZDb3VudCgpKTsKKyAgICBBU1NFUlQoIWNvbnRhaW5lci0+aXNMaWZldGltZU93bmVyKCkpOwor
CisgICAgVmVjdG9yPFNWR0VsZW1lbnRJbnN0YW5jZSo+IGdhcmJhZ2VOb2RlczsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcihTVkdFbGVtZW50SW5zdGFuY2Uq
KSAlcCBiZWZvcmVcbiIsIGNvbnRhaW5lcik7CisKKyAgICBTVkdFbGVtZW50SW5zdGFuY2UqIG5v
ZGUgPSBjb250YWluZXItPmxhc3RDaGlsZCgpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAg
IC8vIEF0IHRoZSBwb2ludCB3aGVyZSBnY0NoaWxkcmVuSW5Db250YWluZXIoKSBpcyBjYWxsZWQs
IHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZQorICAgICAgICAvLyBET00gdHJlZS4K
KyAgICAgICAgQVNTRVJUKCFub2RlLT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAgLy8g
SWYgd2UgZmluZCBhIE5vZGUgdGhhdCBoYXMgMX4gcmVmY291bnQsIHdlIHNldCB0aGUgbm9kZSBh
cyBhIGxpZmV0aW1lIG93bmVyLAorICAgICAgICAvLyBhbmQgcmV0dXJuIHdpdGhvdXQgZGVsZXRp
bmcgYW55IE5vZGUgaW4gdGhlIERPTSB0cmVlLgorICAgICAgICBpZiAobm9kZS0+cmVmQ291bnQo
KSkgeworICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJub2RlLT5yZWZDb3VudCgpPjAg
JXAgcmVmQ291bnQ9PSVkXG4iLCBub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZ2FyYmFnZU5vZGVzLmFw
cGVuZChub2RlKTsKKyAgICAgICAgaWYgKG5vZGUtPmxhc3RDaGlsZCgpKSB7CisgICAgICAgICAg
ICBub2RlID0gbm9kZS0+bGFzdENoaWxkKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorICAgICAgICB3aGlsZSAoIW5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAg
ICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgQVNTRVJUKG5vZGUp
OworICAgICAgICAgICAgaWYgKG5vZGUgPT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAg
bm9kZSA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgaWYgKG5vZGUpCisgICAgICAgICAgICBub2RlID0gbm9kZS0+cHJldmlvdXNT
aWJsaW5nKCk7CisgICAgfQorCisgICAgLy8gTm93IGFsbCBOb2RlcyBpbiB0aGUgRE9NIHRyZWUg
aGF2ZSAwIHJlZmNvdW50LCBhbmQgd2UgY2FuIGRlbGV0ZSBhbGwgdGhlIE5vZGVzLgorICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiZGVsZXRpb24gc3RhcnRlZFxuIik7CisKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBnYXJiYWdlTm9kZXMuc2l6ZSgpOworICAgIC8vIEJlZm9yZSBzdGFydGluZyBkZWxl
dGlvbiwgd2UgY2xlYXIgYWxsIHRyZWUgcG9pbnRlcnMgc28gdGhhdCBOb2RlIGRlc3RydWN0b3IK
KyAgICAvLyB3b24ndCBjYXVzZSB1bmV4cGVjdGVkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGRlcGVu
ZGluZyBvbiB0aGUgZGVsZXRpb24gb3JkZXIuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0ID0gZ2Fy
YmFnZU5vZGVzW2ldOworICAgICAgICB0YXJnZXQtPnNldFByZXZpb3VzU2libGluZygwKTsKKyAg
ICAgICAgdGFyZ2V0LT5zZXROZXh0U2libGluZygwKTsKKyAgICAgICAgdGFyZ2V0LT5zZXRQYXJl
bnRPckhvc3ROb2RlKDApOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+cmVmQ291bnQoKSk7Cisg
ICAgICAgIEFTU0VSVCghdGFyZ2V0LT5pc0xpZmV0aW1lT3duZXIoKSk7CisgICAgICAgIHRhcmdl
dC0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICAgICAgdGFyZ2V0LT5zZXRMYXN0Q2hpbGQoMCk7Cisg
ICAgfQorICAgIGNvbnRhaW5lci0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICBjb250YWluZXItPnNl
dExhc3RDaGlsZCgwKTsKKworICAgIC8vIE5vdyBpdCBpcyBzYWZlIHRvIGRlbGV0ZSBhbGwgdGhl
IE5vZGVzIGluIGFueSBvcmRlci4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXQgPSBnYXJiYWdlTm9k
ZXNbaV07CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdldCkgYmVm
b3JlXG4iLCB0YXJnZXQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgdGFyZ2V0LT5tX2RlbGV0
aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIGRlbGV0ZSB0YXJnZXQ7CisgICAg
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdldCkgYWZ0ZXJcbiIsIHRhcmdl
dCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29udGFpbmVy
KFNWR0VsZW1lbnRJbnN0YW5jZSopICVwIGFmdGVyXG4iLCBjb250YWluZXIpOworICAgIHJldHVy
biB0cnVlOworfQorCitpbmxpbmUgYm9vbCBnY0NoaWxkcmVuSW5Db250YWluZXIoQ29udGFpbmVy
Tm9kZSogY29udGFpbmVyKQoreworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgaW5pdGlhbCB2
ZWN0b3Igc2l6ZS4KKyAgICBWZWN0b3I8Tm9kZSosIDEwPiBnYXJiYWdlTm9kZXM7CisgICAgVmVj
dG9yPEVsZW1lbnRTaGFkb3cqLCAxMD4gZ2FyYmFnZUVsZW1lbnRTaGFkb3dzOworICAgIERlcXVl
PFNoYWRvd1Jvb3QqLCAxMD4gcGVuZGluZ1NoYWRvd1Jvb3RzOworICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAiZ2NDaGlsZHJlbkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUqKSAlcCBiZWZvcmVcbiIs
IGNvbnRhaW5lcik7CisKKyAgICBOb2RlKiBzdGFydE5vZGUgPSBjb250YWluZXI7CisgICAgLy8g
VGhlIHdob2xlIERPTSB0cmVlIGlzIHRyYXZlcnNlZCBpbiB0aGUgb3JkZXI6CisgICAgLy8gKDEp
IExpZ2h0IERPTQorICAgIC8vICgyKSBTaGFkb3cgRE9NIGZvdW5kIGluIHRoZSBsaWdodCBET00K
KyAgICAvLyAoMykgU2hhZG93IERPTSBmb3VuZCBpbiB0aGUgc2hhZG93IERPTSBmb3VuZCBpbiB0
aGUgbGlnaHQgRE9NCisgICAgLy8gKDQpIC4uLiAodW50aWwgbm8gc2hhZG93IERPTSBpcyBmb3Vu
ZC4pCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgLy8gVGhpcyBhc3NlcnRpb24gaXMganVz
dCBmb3IgcGVyZm9ybWFuY2UuIEZvciBwZXJmb3JtYW5jZSB3ZSBzaG91bGQgYXZvaWQgY2FsbGlu
ZworICAgICAgICAvLyBnY0NoaWxkcmVuSW5Db250YWluZXIoKSBpZiBjb250YWluZXItPnJlZkNv
dW50KCkgPiAwLgorICAgICAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+cmVmQ291bnQoKSk7CisgICAg
ICAgIEFTU0VSVCghc3RhcnROb2RlLT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAgTm9k
ZSogbm9kZSA9IHN0YXJ0Tm9kZS0+bGFzdENoaWxkKCk7CisgICAgICAgIHdoaWxlIChub2RlKSB7
CisgICAgICAgICAgICAvLyBBdCB0aGUgcG9pbnQgd2hlcmUgZ2NDaGlsZHJlbkluQ29udGFpbmVy
KCkgaXMgY2FsbGVkLCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUKKyAgICAgICAg
ICAgIC8vIERPTSB0cmVlLgorICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5pc0xpZmV0aW1lT3du
ZXIoKSk7CisKKyAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBOb2RlIHRoYXQgaGFzIDF+IHJl
ZmNvdW50LCB3ZSBzZXQgdGhlIG5vZGUgYXMgYSBsaWZldGltZSBvd25lciwKKyAgICAgICAgICAg
IC8vIGFuZCByZXR1cm4gd2l0aG91dCBkZWxldGluZyBhbnkgTm9kZSBpbiB0aGUgRE9NIHRyZWUu
CisgICAgICAgICAgICBpZiAobm9kZS0+cmVmQ291bnQoKSkgeworICAgICAgICAgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAibm9kZS0+cmVmQ291bnQoKT4wICVwIHJlZkNvdW50PT0lZFxuIiwg
bm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0TGlmZXRp
bWVPd25lcigpOworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJl
bkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobm9kZS0+aXNF
bGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2RlKS0+c2hhZG93KCkpIHsKKyAgICAgICAgICAg
ICAgICBnYXJiYWdlRWxlbWVudFNoYWRvd3MuYXBwZW5kKHRvRWxlbWVudChub2RlKS0+c2hhZG93
KCkpOworICAgICAgICAgICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IG5vZGUtPnlvdW5n
ZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgLy8gQXQgdGhlIHBvaW50IHdoZXJlIGdjQ2hpbGRyZW5JbkNv
bnRhaW5lcigpIGlzIGNhbGxlZCwgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlCisg
ICAgICAgICAgICAgICAgICAgIC8vIERPTSB0cmVlLgorICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoIXJvb3QtPmlzTGlmZXRpbWVPd25lcigpKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiB3ZSBmaW5kIGEgc2hhZG93IHJvb3QgdGhhdCBoYXMgMX4gcmVmY291bnQsIHdlIHNldCB0aGUg
c2hhZG93IHJvb3QgYXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYSBsaWZldGltZSBvd25lciwg
YW5kIHJldHVybiBpbW1lZGlhdGVseSB3aXRob3V0IGRlbGV0aW5nIGFueSBOb2RlIGluCisgICAg
ICAgICAgICAgICAgICAgIC8vIHRoZSBET00gdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgaWYg
KHJvb3QtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZwcmludGYo
c3RkZXJyLCAic2hhZG93Um9vdC0+cmVmQ291bnQoKT4wICVwIHJlZkNvdW50PT0lZFxuIiwgcm9v
dCwgcm9vdC0+cmVmQ291bnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByb290LT5zZXRM
aWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4iLCBjb250YWluZXIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAicGVuZGluZ1NoYWRvd1Jv
b3RzLmFwcGVuZChyb290KSByb290PSVwXG4iLCByb290KTsKKworICAgICAgICAgICAgICAgICAg
ICAvLyBSZWNvcmQgdGhlIHNoYWRvdyByb290IHRvIGJlIHRyYXZlcnNlZCBsYXRlci4KKyAgICAg
ICAgICAgICAgICAgICAgcGVuZGluZ1NoYWRvd1Jvb3RzLmFwcGVuZChyb290KTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImdhcmJhZ2VOb2Rlcy5hcHBlbmQobm9kZSkgbm9kZT0lcFxuIiwgbm9kZSk7CisgICAgICAgICAg
ICBnYXJiYWdlTm9kZXMuYXBwZW5kKG5vZGUpOworCisgICAgICAgICAgICBpZiAobm9kZS0+bGFz
dENoaWxkKCkpIHsKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+bGFzdENoaWxkKCk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGls
ZSAoIW5vZGUtPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQobm9kZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnROb2RlKSB7CisgICAgICAgICAgICAgICAg
ICAgIG5vZGUgPSAwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9kZSkKKyAgICAgICAgICAgICAg
ICBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBJZiB0aGVyZSBpcyBubyBwZW5kaW5nIHNoYWRvdyByb290cywgYWxsIE5vZGUgdHJhdmVyc2Fs
cyBhcmUgZG9uZS4KKyAgICAgICAgaWYgKHBlbmRpbmdTaGFkb3dSb290cy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RhcnROb2RlID0gcGVuZGluZ1NoYWRvd1Jvb3Rz
LnRha2VGaXJzdCgpOworICAgIH0KKworICAgIC8vIE5vdyBhbGwgTm9kZXMgaW4gdGhlIERPTSB0
cmVlIGhhdmUgMCByZWZjb3VudCwgYW5kIHdlIGNhbiBkZWxldGUgYWxsIHRoZSBOb2Rlcy4KKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0aW9uIHN0YXJ0ZWRcbiIpOworCisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gZ2FyYmFnZUVsZW1lbnRTaGFkb3dzLnNpemUoKTsKKyAgICAvLyBCZWZvcmUg
c3RhcnRpbmcgZGVsZXRpb24sIHdlIGNsZWFyIGFsbCB0cmVlIHBvaW50ZXJzIHNvIHRoYXQgTm9k
ZSBkZXN0cnVjdG9yCisgICAgLy8gd29uJ3QgY2F1c2UgdW5leHBlY3RlZCBwb2ludGVyIGRlcmVm
ZXJlbmNlcyBkZXBlbmRpbmcgb24gdGhlIGRlbGV0aW9uIG9yZGVyLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgZ2FyYmFnZUVsZW1lbnRTaGFkb3dz
W2ldLT5mb3JjZVJlbW92ZUFsbFNoYWRvd1Jvb3RzKCk7CisKKyAgICBsZW5ndGggPSBnYXJiYWdl
Tm9kZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBOb2RlKiB0YXJnZXQgPSBnYXJiYWdlTm9kZXNbaV07CisgICAgICAgIHRhcmdl
dC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOworICAgICAgICB0YXJnZXQtPnNldE5leHRTaWJsaW5n
KDApOworICAgICAgICB0YXJnZXQtPnNldFBhcmVudE9ySG9zdE5vZGUoMCk7CisgICAgICAgIEFT
U0VSVCghdGFyZ2V0LT5yZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCF0YXJnZXQtPmlzTGlm
ZXRpbWVPd25lcigpKTsKKyAgICAgICAgaWYgKHRhcmdldC0+aXNDb250YWluZXJOb2RlKCkpIHsK
KyAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIHRhcmdldENvbnRhaW5lciA9IHN0YXRpY19jYXN0
PENvbnRhaW5lck5vZGUqPih0YXJnZXQpOworICAgICAgICAgICAgdGFyZ2V0Q29udGFpbmVyLT5z
ZXRGaXJzdENoaWxkKDApOworICAgICAgICAgICAgdGFyZ2V0Q29udGFpbmVyLT5zZXRMYXN0Q2hp
bGQoMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY29udGFpbmVyLT5zZXRGaXJzdENoaWxkKDAp
OworICAgIGNvbnRhaW5lci0+c2V0TGFzdENoaWxkKDApOworCisgICAgLy8gTm93IGl0IGlzIHNh
ZmUgdG8gZGVsZXRlIGFsbCB0aGUgTm9kZXMgaW4gYW55IG9yZGVyLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBOb2RlKiB0YXJnZXQgPSBnYXJi
YWdlTm9kZXNbaV07CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdl
dCkgYmVmb3JlXG4iLCB0YXJnZXQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgdGFyZ2V0LT5t
X2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIGRlbGV0ZSB0YXJnZXQ7
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdldCkgYWZ0ZXJcbiIs
IHRhcmdldCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29u
dGFpbmVyKENvbnRhaW5lck5vZGUqKSAlcCBhZnRlclxuIiwgY29udGFpbmVyKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gRklYTUU6IFJlcGxhY2UgYWxsIHJlbW92ZUNoaWxkcmVuSW5Db250
YWluZXIoKXMgd2l0aCBnY0NoaWxkcmVuSW5Db250YWluZXIoKS4KIHRlbXBsYXRlPGNsYXNzIEdl
bmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLWlubGluZSB2b2lkIHJlbW92
ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikK
K2lubGluZSB2b2lkIHJlbW92ZUNoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWlu
ZXIqIGNvbnRhaW5lcikKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInJlbW92ZUNoaWxkcmVu
SW5Db250YWluZXIoKSAlcCBiZWZvcmVcbiIsIGNvbnRhaW5lcik7CiAgICAgLy8gTGlzdCBvZiBu
b2RlcyB0byBiZSBkZWxldGVkLgogICAgIEdlbmVyaWNOb2RlKiBoZWFkID0gMDsKICAgICBHZW5l
cmljTm9kZSogdGFpbCA9IDA7CkBAIC04Nyw4ICsyOTIsNiBAQCBpbmxpbmUgdm9pZCByZW1vdmVB
bGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiAg
ICAgR2VuZXJpY05vZGUqIG47CiAgICAgR2VuZXJpY05vZGUqIG5leHQ7CiAgICAgd2hpbGUgKChu
ID0gaGVhZCkgIT0gMCkgewotICAgICAgICBBU1NFUlQobi0+bV9kZWxldGlvbkhhc0JlZ3VuKTsK
LQogICAgICAgICBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgbi0+c2V0TmV4dFNp
YmxpbmcoMCk7CiAKQEAgLTk5LDggKzMwMiwxNCBAQCBpbmxpbmUgdm9pZCByZW1vdmVBbGxDaGls
ZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiAgICAgICAg
IGlmIChuLT5oYXNDaGlsZE5vZGVzKCkpCiAgICAgICAgICAgICBQcml2YXRlOjphZGRDaGlsZE5v
ZGVzVG9EZWxldGlvblF1ZXVlPEdlbmVyaWNOb2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lcj4oaGVh
ZCwgdGFpbCwgc3RhdGljX2Nhc3Q8R2VuZXJpY05vZGVDb250YWluZXIqPihuKSk7CiAKKyNpZm5k
ZWYgTkRFQlVHCisgICAgICAgIG4tPm1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYK
KyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAgYmVmb3JlXG4iLCBuKTsKICAg
ICAgICAgZGVsZXRlIG47CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwIGFm
dGVyXG4iLCBuKTsKICAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJyZW1vdmVDaGlsZHJl
bkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KQEAgLTExOCw3ICsz
MjcsNyBAQCBpbmxpbmUgdm9pZCBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKEdlbmVyaWNOb2RlKiBj
aGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbgogICAgIGNvbnRhaW5lci0+c2V0TGFzdENo
aWxkKGNoaWxkKTsKIH0KIAotLy8gSGVscGVyIG1ldGhvZHMgZm9yIHJlbW92ZUFsbENoaWxkcmVu
SW5Db250YWluZXIsIGhpZGRlbiBmcm9tIFdlYkNvcmUgbmFtZXNwYWNlCisvLyBIZWxwZXIgbWV0
aG9kcyBmb3IgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lciwgaGlkZGVuIGZyb20gV2ViQ29yZSBu
YW1lc3BhY2UKIG5hbWVzcGFjZSBQcml2YXRlIHsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVy
aWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lciwgYm9vbCBkaXNwYXRjaFJlbW92YWxO
b3RpZmljYXRpb24+CkBAIC0xMzcsNyArMzQ2LDcgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAg
ICAgICAgICAgaWYgKERvY3VtZW50KiBjb250YWluZXJEb2N1bWVudCA9IGNvbnRhaW5lci0+b3du
ZXJEb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5lckRvY3VtZW50LT5hZG9wdElm
TmVlZGVkKG5vZGUpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkKLSAgICAg
ICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoY29udGFpbmVyKS5ub3RpZnkobm9k
ZSk7CisgICAgICAgICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKGNvbnRhaW5lciku
bm90aWZ5KG5vZGUsIHRydWUpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMTY1LDkgKzM3NCw2
IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKICAgICAgICAgICAgIG4tPnNldFBhcmVudE9ySG9zdE5v
ZGUoMCk7CiAKICAgICAgICAgICAgIGlmICghbi0+cmVmQ291bnQoKSkgewotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgICAgICAgICBuLT5tX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlm
CiAgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRvIHRoZSBsaXN0IG9mIG5vZGVzIHRv
IGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICAgICAgLy8gUmV1c2UgdGhlIG5leHRTaWJsaW5nIHBv
aW50ZXIgZm9yIHRoaXMgcHVycG9zZS4KICAgICAgICAgICAgICAgICBpZiAodGFpbCkKQEAgLTE5
Miw3ICszOTgsOSBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90
aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZAogewogICAgIEFTU0VSVChtX2lu
c2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0KG5v
ZGUpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3Vt
ZW50KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQpOwog
ICAgIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgcmVxdWVzdCA9IG5vZGUtPmlu
c2VydGVkSW50byhtX2luc2VydGlvblBvaW50KTsKKyAgICBub2RlLT51bnNldExpZmV0aW1lT3du
ZXIoKTsKIAogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5
RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CkBA
IC0yMDYsNyArNDE0LDkgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6
Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUKICAgICBBU1NFUlQoIW1f
aW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgp
OwogCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSgp
ICVwIGluc2VydGlvblBvaW50PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50KTsKICAgICBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IHJlcXVlc3QgPSBub2RlLT5pbnNlcnRl
ZEludG8obV9pbnNlcnRpb25Qb2ludCk7CisgICAgbm9kZS0+dW5zZXRMaWZldGltZU93bmVyKCk7
CiAKICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShub2RlKTsKICAgICBpZiAo
cmVxdWVzdCA9PSBOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5RGVzY2VuZGFudElu
c2VydGlvbnMpCkBAIC0yMzUsMTMgKzQ0NSwxNyBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNl
cnRlZEludG9Eb2N1bWVudChub2RlKTsKICAgICBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5v
ZGUoKSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2Rl
KG5vZGUpKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigpOwog
fQogCiAKIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVS
ZW1vdmFsRnJvbURvY3VtZW50KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUsIG1faW5z
ZXJ0aW9uUG9pbnQpOwogICAgIG5vZGUtPnJlbW92ZWRGcm9tKG1faW5zZXJ0aW9uUG9pbnQpOwor
ICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUpOwogCiAgICAgaWYgKG5vZGUtPmlzQ29udGFp
bmVyTm9kZSgpKQogICAgICAgICBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudCh0
b0NvbnRhaW5lck5vZGUobm9kZSkpOwpAQCAtMjUyLDE4ICs0NjYsNTIgQEAgaW5saW5lIHZvaWQg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRh
aW5lck5vZGUqIG4KICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7
CiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJu
b3RpZnlOb2RlUmVtb3ZhbEZyb21UcmVlKCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUs
IG1faW5zZXJ0aW9uUG9pbnQpOwogICAgIG5vZGUtPnJlbW92ZWRGcm9tKG1faW5zZXJ0aW9uUG9p
bnQpOworICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUpOworCiAgICAgbm90aWZ5RGVzY2Vu
ZGFudFJlbW92ZWRGcm9tVHJlZShub2RlKTsKIAogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwog
fQogCi1pbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShOb2RlKiBu
b2RlKQoraW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSog
bm9kZSwgYm9vbCBpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4pCiB7CiAgICAgaWYgKG5v
ZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
bm9kZSk7CiAgICAgZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5v
dGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICBlbHNl
CisgICAgICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUpOworCisgICAgaWYgKG1fbGlmZXRp
bWVPd25lckZvdW5kICYmICFpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4pIHsKKyAgICAg
ICAgLy8gSWYgYSBsaWZldGltZSBvd25lciBpcyBmb3VuZCBpbiB0aGUgRE9NIHRyZWUgYmVpbmcg
cmVtb3ZlZCwKKyAgICAgICAgLy8gaXQgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbm8gbGlmZXRp
bWUgb3duZXIgaW4gdGhlIG9yaXRpbmFsIERPTSB0cmVlLgorICAgICAgICAvLyBTbyB3ZSBjYWxs
IHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3IgdGhlIGluc2VydGlvbiBwb2ludCB0byBzZXQg
YSBuZXcKKyAgICAgICAgLy8gbGlmZXRpbWUgb3duZXIgb2YgdGhlIG9yaWdpbmFsIERPTSB0cmVl
LCBleGNlcHQgZm9yIHRoZSBjYXNlCisgICAgICAgIC8vIHdoZXJlIHRoZSBvcmlnaW5hbCB0cmVl
IGlzIGJlaW5nIHJlbW92ZWQganVzdCByaWdodCBub3cKKyAgICAgICAgLy8gKGkuZS4gZXhjZXB0
IGZvciB0aGUgY2FzZSBvZiBpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4gPT0gdHJ1ZSku
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9dHJ1ZSAh
aW5zZXJ0aW9uUG9pbnREZWxldGlvbkhhc0JlZ3VuICVwIGluc2VydGlvblBvaW50PSVwXG4iLCBu
b2RlLCBtX2luc2VydGlvblBvaW50KTsKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludC0+c2VhcmNo
TmV3TGlmZXRpbWVPd25lcigpOworICAgIH0gZWxzZSBpZiAoIW1fbGlmZXRpbWVPd25lckZvdW5k
KSB7CisgICAgICAgIC8vIElmIGEgbGlmZXRpbWUgb3duZXIgaXMgbm90IGZvdW5kIGluIHRoZSBE
T00gdHJlZSBiZWluZyByZW1vdmVkLAorICAgICAgICAvLyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGVy
ZSBpcyBleGFjdGx5IG9uZSBsaWZldGltZSBvd25lciBpbiB0aGUgb3JpZ2luYWwgRE9NCisgICAg
ICAgIC8vIHRyZWUuIFNvIHdlIGp1c3QgY2FsbCBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgZm9y
IHRoZSBET00gdHJlZSBiZWluZyByZW1vdmVkCisgICAgICAgIC8vIHRvIHNldCBhIG5ldyBsaWZl
dGltZSBvd25lciBvZiB0aGUgRE9NIHRyZWUgYmVpbmcgcmVtb3ZlZC4KKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3VuZD1mYWxzZSAlcCBpbnNlcnRpb25Qb2lu
dD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCk7CisgICAgICAgIG5vZGUtPnNlYXJjaE5l
d0xpZmV0aW1lT3duZXIoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcjo6Y2hlY2tJZkxpZmV0aW1lT3duZXIoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
bm9kZS0+aXNMaWZldGltZU93bmVyKCkpIHsKKyAgICAgICAgLy8gT25lIERPTSB0cmVlIGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSBhdCBtb3N0IG9uZSBsaWZldGltZSBvd25lciwKKyAgICAgICAgLy8g
c28gbV9saWZldGltZU93bmVyRm91bmQgc2hvdWxkIG5vdCBiZWNvbWUgdHJ1ZSBtb3JlIHRoYW4g
b25jZS4KKyAgICAgICAgQVNTRVJUKCFtX2xpZmV0aW1lT3duZXJGb3VuZCk7CisgICAgICAgIG1f
bGlmZXRpbWVPd25lckZvdW5kID0gdHJ1ZTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJu
b2RlLT5pc0xpZmV0aW1lT3duZXIoKT09dHJ1ZSAlcFxuIiwgbm9kZSk7CisgICAgfQogfQogCiBj
bGFzcyBDaGlsZEZyYW1lRGlzY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDEzMjY4MGFiMDkxODgxZGNkMGE1NDFiZjUwZWM1MzFmNjQ0Y2MyY2EuLmRhNWFlNTdkZWNkYzcz
YTVkMzJlMzAyNDM4Mzg5NzNkNWIwNTZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
NjUzLDU5ICs2NTMsODggQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgSW5zcGVjdG9yQ291
bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6OkRvY3VtZW50Q291bnRl
cik7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKK3ZvaWQgRG9jdW1lbnQ6
OmdjQ2hpbGRyZW5PZkRvY3VtZW50KCkKIHsKLSAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1
bik7Ci0gICAgaWYgKG1fZ3VhcmRSZWZDb3VudCkgewotICAgICAgICAvLyBJZiByZW1vdmluZyBh
IGNoaWxkIHJlbW92ZXMgdGhlIGxhc3Qgc2VsZi1vbmx5IHJlZiwgd2UgZG9uJ3QKLSAgICAgICAg
Ly8gd2FudCB0aGUgc2NvcGUgdG8gYmUgZGVzdHJ1Y3RlZCB1bnRpbCBhZnRlcgotICAgICAgICAv
LyByZW1vdmVBbGxDaGlsZHJlbiByZXR1cm5zLCBzbyB3ZSBndWFyZCBvdXJzZWx2ZXMgd2l0aCBh
bgotICAgICAgICAvLyBleHRyYSBzZWxmLW9ubHkgcmVmLgotICAgICAgICBndWFyZFJlZigpOwot
Ci0gICAgICAgIC8vIFdlIG11c3QgbWFrZSBzdXJlIG5vdCB0byBiZSByZXRhaW5pbmcgYW55IG9m
IG91ciBjaGlsZHJlbiB0aHJvdWdoCi0gICAgICAgIC8vIHRoZXNlIGV4dHJhIHBvaW50ZXJzIG9y
IHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlLgotICAgICAgICBtX2RvY1R5cGUgPSAw
OwotICAgICAgICBtX2ZvY3VzZWROb2RlID0gMDsKLSAgICAgICAgbV9ob3Zlck5vZGUgPSAwOwot
ICAgICAgICBtX2FjdGl2ZU5vZGUgPSAwOwotICAgICAgICBtX3RpdGxlRWxlbWVudCA9IDA7Ci0g
ICAgICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gMDsKLSAgICAgICAgbV9jb250ZXh0RmVhdHVyZXMg
PSBDb250ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKTsKKyAgICAvLyBNYWtlIHN1cmUgbm90
IHRvIGJlIHJlZmVyZW5jaW5nIGFueSBvZiB0aGUgY2hpbGRyZW4gdGhyb3VnaAorICAgIC8vIHRo
ZXNlIGV4dHJhIHBvaW50ZXJzLCBvciB3ZSB3aWxsIGNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZS4K
KyAgICBtX2RvY1R5cGUgPSAwOworICAgIG1fZm9jdXNlZE5vZGUgPSAwOworICAgIG1faG92ZXJO
b2RlID0gMDsKKyAgICBtX2FjdGl2ZU5vZGUgPSAwOworICAgIG1fdGl0bGVFbGVtZW50ID0gMDsK
KyAgICBtX2RvY3VtZW50RWxlbWVudCA9IDA7CisgICAgbV9jb250ZXh0RmVhdHVyZXMgPSBDb250
ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
Ci0gICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOwotICAgICAgICBtX2Z1bGxTY3JlZW5F
bGVtZW50U3RhY2suY2xlYXIoKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyAgICBt
X2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suY2xlYXIoKTsKICNlbmRpZgogCi0gICAgICAgIGRldGFj
aFBhcnNlcigpOworICAgIC8vIFRlYXIgZG93biBzY29wZSBpbmZvcm1hdGlvbiB1cGZyb250IHRv
IGF2b2lkIGhhdmluZyBzdGFsZSByZWZlcmVuY2VzCisgICAgLy8gaW4gdGhlIGlkIG1hcC4gVGhp
cyBtdXN0IGJlIGRvbmUgYmVmb3JlIGdjQ2hpbGRyZW4oKSwgYmVjYXVzZSBnY0NoaWxkcmVuKCkK
KyAgICAvLyBjYW4gZGVsZXRlIE5vZGVzIGFuZCB0aGUgTm9kZSBkZXN0cnVjdG9yIGNhbiBsb29r
IHVwIHRoZSBpZCBtYXAuCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZXN0cm95VHJlZVNjb3Bl
RGF0YSgpICVwXG4iLCB0aGlzKTsKKyAgICBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCi0gICAg
ICAgIC8vIHJlbW92ZUFsbENoaWxkcmVuKCkgZG9lc24ndCBhbHdheXMgdW5yZWdpc3RlciBJRHMs
Ci0gICAgICAgIC8vIHNvIHRlYXIgZG93biBzY29wZSBpbmZvcm1hdGlvbiB1cGZyb250IHRvIGF2
b2lkIGhhdmluZyBzdGFsZSByZWZlcmVuY2VzIGluIHRoZSBtYXAuCi0gICAgICAgIGRlc3Ryb3lU
cmVlU2NvcGVEYXRhKCk7Ci0gICAgICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CisgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJnY0NoaWxkcmVuKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBib29s
IGNoaWxkcmVuUmVtb3ZlZCA9IGdjQ2hpbGRyZW4oKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImdjQ2hpbGRyZW4oKSAlcCBjaGlsZHJlblJlbW92ZWQ9JWQgYWZ0ZXJcbiIsIHRoaXMsIGNoaWxk
cmVuUmVtb3ZlZCk7CisjaWZuZGVmIE5ERUJVRworICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0
aW9uID0gZmFsc2U7CisjZW5kaWYKKworICAgIGlmIChjaGlsZHJlblJlbW92ZWQpIHsKKyAgICAg
ICAgZGV0YWNoUGFyc2VyKCk7CiAKICAgICAgICAgbV9tYXJrZXJzLT5kZXRhY2goKTsKIAogICAg
ICAgICBtX2Nzc0NhbnZhc0VsZW1lbnRzLmNsZWFyKCk7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUUpCi0gICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBBY3RpdmVE
T01PYmplY3QuCisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB1c2luZyBBY3RpdmVET01PYmpl
Y3QuCiAgICAgICAgIGlmIChtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKICAgICAgICAg
ICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5jbGVhckRvY3VtZW50UG9pbnRlcigp
OwogICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jbGVhcigpOwogI2VuZGlm
CisgICAgICAgIC8vIE5vdyB3ZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgZ3VhcmRSZWZDb3VudCB0
byBiZWNvbWUgMC4KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTogSWYgY2hpbGRyZW5S
ZW1vdmVkIGlzIGZhbHNlLCBpdCBtZWFucyB0aGF0IGdjQ2hpbGRyZW4oKSBkaWQgbm90aGluZy4K
KyAgICAgICAgLy8gQWxsIHRoZSBOb2RlcyBpbiB0aGlzIGRvY3VtZW50IGlzIHN0aWxsIGFsaXZl
LiBXZSBuZWVkIHRvIHJlc3RvcmUgYWxsIHRoZQorICAgICAgICAvLyBSZWZQdHJzIHRoYXQgd2Ug
Y2xlYXJlZCBqdXN0IGJlZm9yZSBnY0NoaWxkcmVuKCksIGFuZCByZXN0b3JlIHRoZSBpZCBtYXAK
KyAgICAgICAgLy8gaW4gdGhlIHRyZWUgc2NvcGUuCisgICAgfQorfQogCi0jaWZuZGVmIE5ERUJV
RwotICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwotI2VuZGlmCit2
b2lkIERvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkKK3sKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIkRvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAgYmVmb3JlXG4i
LCB0aGlzKTsKKyAgICBBU1NFUlQoIXJlZkNvdW50KCkpOworICAgIEFTU0VSVCghbV9kZWxldGlv
bkhhc0JlZ3VuKTsKKyAgICBpZiAobV9ndWFyZFJlZkNvdW50KSB7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAibV9ndWFyZFJlZkNvdW50PjAgJXBcbiIsIHRoaXMpOworCisgICAgICAgIC8v
IElmIGdjQ2hpbGRyZW4oKSByZW1vdmVzIHRoZSBsYXN0IGd1YXJkUmVmQ291bnQsIHRoZSBkb2N1
bWVudCB3aWxsIGJlCisgICAgICAgIC8vIGRlc3RydWN0ZWQgaW5zaWRlIGdjQ2hpbGRyZW4oKS4g
VG8gYXZvaWQgdGhlIHNpdHVhdGlvbiwgd2UgZ3VhcmQgb3Vyc2VsdmVzCisgICAgICAgIC8vIHdp
dGggYW4gZXh0cmEgc2VsZi1vbmx5IGd1YXJkUmVmQ291bnQuCisgICAgICAgIGd1YXJkUmVmKCk7
CisKKyAgICAgICAgZ2NDaGlsZHJlbk9mRG9jdW1lbnQoKTsKIAogICAgICAgICBndWFyZERlcmVm
KCk7Ci0gICAgfSBlbHNlIHsKLSNpZm5kZWYgTkRFQlVHIAotICAgICAgICBtX2RlbGV0aW9uSGFz
QmVndW4gPSB0cnVlOyAKLSNlbmRpZiAKLSAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSAlcCBh
ZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgLy8gZnByaW50Zihz
dGRlcnIsICJtX2d1YXJkUmVmQ291bnQ9MCAlcFxuIiwgdGhpcyk7CisKKyAgICAvLyBQcm9iYWJs
eSB0aGlzIGdjQ2hpbGRyZW5PZkRvY3VtZW50KCkgaXMgbm90IG5lZWRlZC4gQ2hpbGQgbm9kZXMg
d291bGQgYmUKKyAgICAvLyBhbHJlYWR5IHJlbW92ZWQsIGFuZCB0aHVzIGdjQ2hpbGRyZW5PZkRv
Y3VtZW50KCkgd2lsbCBkbyBub3RoaW5nLgorICAgIGdjQ2hpbGRyZW5PZkRvY3VtZW50KCk7Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAocm9vdCkgYmVmb3JlXG4iLCB0aGlzKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgor
ICAgIGRlbGV0ZSB0aGlzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHJvb3Qp
IGFmdGVyXG4iLCB0aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkRvY3VtZW50OjpzZWFy
Y2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiBFbGVtZW50KiBE
b2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggNjg4ODVmYjMzZjQ5NTIxNGMzMWEzNzAzMzhmZWM4MDRiNGIx
MWNhZC4uYmJkM2JlYTcyOGM4MGIzMzFhYTFjMDlhNjczM2ZkMjNhNTA5NTE1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTIxNCwxMCArMjE0LDkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQo
IW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIC0tbV9ndWFyZFJlZkNvdW50OwogICAgICAg
ICBpZiAoIW1fZ3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkgewotI2lmbmRlZiBOREVCVUcK
LSAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJndWFyZERl
cmVmKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICAgICAgICAgIHNlYXJjaE5ld0xpZmV0aW1l
T3duZXIoKTsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ3VhcmREZXJlZigpICVw
IGFmdGVyXG4iLCB0aGlzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE0Miw3ICsxMTQxLDgg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTm9kZTsKICAgICBmcmllbmQgY2xhc3MgSWdu
b3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKLSAgICB2b2lkIHJlbW92ZWRM
YXN0UmVmKCk7CisgICAgdm9pZCBnY0NoaWxkcmVuT2ZEb2N1bWVudCgpOworICAgIHZvaWQgc2Vh
cmNoTmV3TGlmZXRpbWVPd25lcigpOwogICAgIAogICAgIHZvaWQgZGV0YWNoUGFyc2VyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5ZGExNTZiNGYxYTBhOTBlZjI4ZTcyODJmZWRhNjE2
MWEzOWVmYmIzLi44ZDVhYjdiODcyZGJmM2VhZWNlNjcwMjYwNWVjZDMwMTU4MjE5ZjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNTIxLDYgKzE1MjEsNyBAQCBDU1NTdHlsZURlY2xhcmF0
aW9uICpFbGVtZW50OjpzdHlsZSgpCiAKIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3Jl
UHJldmlvdXNTZWxlY3Rpb24pCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50Ojpm
b2N1cygpICVwXG4iLCB0aGlzKTsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggNWFlNzg5Y2U1MDlm
Y2YxYmI2ODI3OTU3NTkwMTZkYzdmODQ5ZWEzZi4uNDNmOGU0NTNhM2M5MzcxOGNlOTc0OTk3ZDE0
YzhlNTMyOTZkM2NkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtNzYs
NiArNzYsNyBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hh
ZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogICAgIHNoYWRvd1Jvb3QtPnNldEhv
c3Qoc2hhZG93SG9zdCk7CiAgICAgbV9zaGFkb3dSb290cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkp
OwogICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CisgICAgLy8gZnByaW50
ZihzdGRlcnIsICJFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KCkgc2hhZG93Um9vdD0lcCBz
aGFkb3dIb3N0PSVwXG4iLCBzaGFkb3dSb290LmdldCgpLCBzaGFkb3dIb3N0KTsKICAgICBDaGls
ZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQo
KSk7CiAKICAgICBpZiAoc2hhZG93SG9zdC0+YXR0YWNoZWQoKSAmJiAhc2hhZG93Um9vdC0+YXR0
YWNoZWQoKSkKQEAgLTg2LDYgKzg3LDkgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dS
b290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKIAogdm9p
ZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiB7CisgICAgaWYgKG1fc2hh
ZG93Um9vdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICAvLyBEb250IHByb3Rl
Y3QgdGhpcyByZWYgY291bnQuCiAgICAgRWxlbWVudCogc2hhZG93SG9zdCA9IGhvc3QoKTsKIApA
QCAtMTAxLDEyICsxMDUsMjUgQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dS
b290cygpCiAgICAgICAgIG9sZFJvb3QtPnNldFByZXYoMCk7CiAgICAgICAgIG9sZFJvb3QtPnNl
dE5leHQoMCk7CiAgICAgICAgIHNoYWRvd0hvc3QtPmRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQo
b2xkUm9vdC5nZXQoKSk7Ci0gICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFkb3dI
b3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
RWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKSBzaGFkb3dSb290PSVwIHNoYWRv
d0hvc3Q9JXBcbiIsIG9sZFJvb3QuZ2V0KCksIHNoYWRvd0hvc3QpOworICAgICAgICBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCksIHRydWUp
OwogICAgIH0KIAogICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CiB9CiAK
Ky8vIEhlbHBlciBmdW5jdGlvbiBmb3IgZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkuCit2b2lkIEVs
ZW1lbnRTaGFkb3c6OmZvcmNlUmVtb3ZlQWxsU2hhZG93Um9vdHMoKQoreworICAgIHdoaWxlIChT
aGFkb3dSb290KiByb290ID0gbV9zaGFkb3dSb290cy5oZWFkKCkpIHsKKyAgICAgICAgbV9zaGFk
b3dSb290cy5yZW1vdmVIZWFkKCk7CisgICAgICAgIHJvb3QtPnNldEhvc3QoMCk7CisgICAgICAg
IHJvb3QtPnNldFByZXYoMCk7CisgICAgICAgIHJvb3QtPnNldE5leHQoMCk7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRvdzo6Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290
cygpIHNoYWRvd1Jvb3Q9JXBcbiIsIHJvb3QpOworICAgIH0KK30KKwogdm9pZCBFbGVtZW50U2hh
ZG93OjphdHRhY2goKQogewogICAgIGVuc3VyZURpc3RyaWJ1dGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50U2hhZG93LmgKaW5kZXggMTNkZTFjMDIxMGQ1Njc0MjY4M2M0ZmU5M2UyNjNiMzI5NzY3
YzkxNC4uYTAxYzQ5ZDAwMzRmZmFlZDFkMzg3NzNmZjU1MzI3ZGI5YzExOGU2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICBTaGFk
b3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29uc3Q7CiAKICAgICB2b2lkIHJlbW92ZUFsbFNo
YWRvd1Jvb3RzKCk7CisgICAgdm9pZCBmb3JjZVJlbW92ZUFsbFNoYWRvd1Jvb3RzKCk7CiAgICAg
dm9pZCBhZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93
Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgYXR0YWNoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggMjRjNjE1ODc3ZjEyMGE2YmI1NjJhNTJkYThjODQ4ZWY1NTdjNTM3OC4uM2RlZTI3
YjgzOTQxMTNiODM5MTExNTE2MGE2MmI5MDZmNTVmZTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAt
Mzg3LDYgKzM4Nyw3IEBAIHZvaWQgTm9kZTo6dHJhY2tGb3JEZWJ1Z2dpbmcoKQogCiBOb2RlOjp+
Tm9kZSgpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+Tm9kZSgpICVwIGJlZm9yZVxuIiwg
dGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAgIEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9
IGlnbm9yZVNldC5maW5kKHRoaXMpOwogICAgIGlmIChpdCAhPSBpZ25vcmVTZXQuZW5kKCkpCkBA
IC00MTksNiArNDIwLDcgQEAgTm9kZTo6fk5vZGUoKQogICAgICAgICBkb2MtPmd1YXJkRGVyZWYo
KTsKIAogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNv
dW50ZXJzOjpOb2RlQ291bnRlcik7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+Tm9kZSgpICVw
IGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCog
ZG9jdW1lbnQpCkBAIC0yNzY4LDIxICsyNzcwLDczIEBAIHZvaWQgTm9kZVJhcmVEYXRhOjpjbGVh
ckNoaWxkTm9kZUxpc3RDYWNoZSgpCiAgICAgICAgIG1fY2hpbGROb2RlTGlzdC0+aW52YWxpZGF0
ZUNhY2hlKCk7CiB9CiAKLS8vIEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExh
c3RSZWYsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KKy8vIEl0
J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgc2VhcmNoTmV3TGlmZXRpbWVPd25lciwgYmVjYXVz
ZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bwogLy8gZGVsZXRlIGEgTm9kZSBh
dCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KLXZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQordm9p
ZCBOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwor
ICAgIHVuc2V0TGlmZXRpbWVPd25lcigpOworCisgICAgLy8gSGVyZSBpdCBpcyBndWFyYW50ZWVk
IHRoYXQgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlIERPTSB0cmVlLgorCisgICAg
aWYgKHBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAgICAvLyBDYWxsIHNlYXJjaE5ld0xpZmV0
aW1lT3duZXIoKSBmb3IgdGhlIHJvb3QgTm9kZS4KKyAgICAgICAgTm9kZSogcm9vdCA9IHRoaXM7
CisgICAgICAgIHdoaWxlIChyb290LT5wYXJlbnRPckhvc3ROb2RlKCkpCisgICAgICAgICAgICBy
b290ID0gcm9vdC0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3J3YXJkZWQgcm9vdD0lcCBhZnRl
clxuIiwgcm9vdCk7CisgICAgICAgIHJvb3QtPnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKTsKKyAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkg
JXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJl
ZkNvdW50KCkpIHsKKyAgICAgICAgLy8gRmFzdCBwYXRoLiBJZiB0aGUgcm9vdCBOb2RlIGhhcyAx
fiByZWZjb3VudCwgd2Ugc2V0IHRoZSByb290IG5vZGUgYXMKKyAgICAgICAgLy8gYSBsaWZldGlt
ZSBvd25lci4KKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0aW1lT3duZXIoKSk7CisgICAgICAgIHNl
dExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpzZWFy
Y2hOZXdMaWZldGltZU93bmVyKCkgZWFybHktcmV0dXJuICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQoIW1faW5S
ZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9
IHRydWU7CisjZW5kaWYKKwogICAgIC8vIEFuIGV4cGxpY2l0IGNoZWNrIGZvciBEb2N1bWVudCBo
ZXJlIGlzIGJldHRlciB0aGFuIGEgdmlydHVhbCBmdW5jdGlvbiBzaW5jZSBpdCBpcwotICAgIC8v
IGZhc3RlciBmb3Igbm9uLURvY3VtZW50IG5vZGVzLCBhbmQgYmVjYXVzZSB0aGUgY2FsbCB0byBy
ZW1vdmVkTGFzdFJlZiB0aGF0IGlzIGlubGluZWQKKyAgICAvLyBmYXN0ZXIgZm9yIG5vbi1Eb2N1
bWVudCBub2RlcywgYW5kIGJlY2F1c2UgdGhlIGNhbGwgdG8gc2VhcmNoTmV3TGlmZXRpbWVPd25l
ciB0aGF0IGlzIGlubGluZWQKICAgICAvLyBhdCBhbGwgZGVyZWYgY2FsbCBzaXRlcyBpcyBzbWFs
bGVyIGlmIGl0J3MgYSBub24tdmlydHVhbCBmdW5jdGlvbi4KICAgICBpZiAoaXNEb2N1bWVudE5v
ZGUoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5yZW1vdmVkTGFz
dFJlZigpOworICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5zZWFyY2hOZXdM
aWZldGltZU93bmVyKCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6c2VhcmNo
TmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVyXG4iLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIGJvb2wgY2hpbGRyZW5SZW1vdmVkID0gdHJ1ZTsKKyAgICBpZiAoaXNDb250
YWluZXJOb2RlKCkpIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuKCkg
JXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICAgICAgY2hpbGRyZW5SZW1vdmVkID0gc3RhdGljX2Nh
c3Q8Q29udGFpbmVyTm9kZSo+KHRoaXMpLT5nY0NoaWxkcmVuKCk7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZ2NDaGlsZHJlbigpICVwIGNoaWxkcmVuUmVtb3ZlZD0lZCBhZnRlclxuIiwg
dGhpcywgY2hpbGRyZW5SZW1vdmVkKTsKKyAgICB9CisgICAgaWYgKGNoaWxkcmVuUmVtb3ZlZCkg
eworICAgICAgICAvLyBBbGwgdGhlIE5vZGVzIGJ1dCB0aGUgcm9vdCBOb2RlIGFyZSBkZWxldGVk
IGJ5IGdjQ2hpbGRyZW4oKS4KKyAgICAgICAgLy8gTm93IGl0IGlzIHRpbWUgdG8gZGVsZXRlIHRo
ZSByb290IE5vZGUuCisKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAocm9v
dCkgYmVmb3JlXG4iLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgbV9kZWxldGlvbkhhc0Jl
Z3VuID0gdHJ1ZTsKKyAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgot
ICAgIGRlbGV0ZSB0aGlzOworICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJkZWxldGUgJXAocm9vdCkgYWZ0ZXJcbiIsIHRoaXMpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIGdjQ2hpbGRyZW4oKSBkaWQgbm90aGluZy4gQWxsIHRoZSBOb2RlcyBpbiB0
aGUgRE9NIHRyZWUgYXJlIHN0aWxsIGFsaXZlLgorCisjaWZuZGVmIE5ERUJVRworICAgICAgICBt
X2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOworI2VuZGlmCisgICAgfQorICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVy
XG4iLCB0aGlzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXgg
ZThmZGUzMDAyMDU5ZmYyNzM1NThhMzdiODZlZGVjOWY3NDFmYTU1Yy4uOWMwZDI1MTFlZmYwOTc2
ZDcwNDQwYWUyOGY0YjM2Y2I2N2ZjMzM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zNjEsNiArMzYxLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKTsKICAgICBib29sIGlzQ29u
dGVudFJpY2hseUVkaXRhYmxlKCk7CiAKKyAgICB2b2lkIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KTsKKwogICAgIHZvaWQgaW5zcGVjdCgpOwogCiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUo
RWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKSBjb25zdApAQCAt
NzMzLDggKzczNSw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRy
ZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKLSAgICB2b2lkIHJlbW92ZWRMYXN0UmVm
KCk7Ci0KICAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVlIHNj
b3BlIG1pZ3JhdGlvbi4KICAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVSYXJlRGF0
YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBjYWxsZXIg
c2l0ZS4KICAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmMGJhNzY2YWJlZWFmNzUyNjc2ZmFkNTNiZWY5YjM3
N2ViYzFjMjY4Li4wMzFhYTgzNWNiMGQyODgxMjViYTRhYjEzM2Y5YmJiNjJiNmJhOTE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMTIzLDcgKzExMjMsMTAgQEAgdm9pZCByZXBs
YWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSogY29udGFpbmVyLCBQYXNzUmVm
UHRyPERvY3VtZW50RnIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIGZwcmludGYo
c3RkZXJyLCAicmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCkgY29udGFpbmVyPSVwXG4iLCBj
b250YWluZXIpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiY29udGFpbmVyTm9kZS0+cmVtb3Zl
Q2hpbGRyZW4oKSBjb250YWluZXJOb2RlPSVwXG4iLCBjb250YWluZXIpOwogICAgIGNvbnRhaW5l
ck5vZGUtPnJlbW92ZUNoaWxkcmVuKCk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJjb250YWlu
ZXJOb2RlLT5hcHBlbmRDaGlsZCgpIGNvbnRhaW5lck5vZGU9JXAgZnJhZ21lbnQ9JXBcbiIsIGNv
bnRhaW5lciwgZnJhZ21lbnQuZ2V0KCkpOwogICAgIGNvbnRhaW5lck5vZGUtPmFwcGVuZENoaWxk
KGZyYWdtZW50LCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RyZWVTaGFyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRl
eCAyZWJkYjFkMWM1OTc4ZDFmMGM3ZWYzMmZkY2I0ZGMzNjBmZmM1MmY0Li43ZmY2MDc3MDc0NTJh
NzVmMDdmYWM4ZmYwN2RjNTA5NjkyYjdjNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UcmVlU2hhcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNo
YXJlZC5oCkBAIC0yNyw2ICsyNywxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIElm
IHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpcyAxLCB0aGUgTm9kZSBpcyBhIGxpZmV0aW1lIG93
bmVyLgorLy8gT3RoZXJ3aXNlLCB0aGUgTm9kZSBpcyBub3QgYSBsaWZldGltZSBvd25lci4KKy8v
IFRoZSBhbGdvcml0aG0gZ3VhcmFudGVlcyB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6CisvLwor
Ly8gICAgIC0gT3V0c2lkZSBvZiBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgKGkuZS4gaW4gbm9y
bWFsIGNhc2VzKSwgdGhlcmUgaXMgZXhhY3RseSBvbmUKKy8vICAgICAgIGxpZmV0aW1lIG93bmVy
IGluIG9uZSBET00gdHJlZS4KKy8vICAgICAtIEluc2lkZSBvZiBzZWFyY2hOZXdMaWZldGltZU93
bmVyKCksIHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyLiBzZWFyY2hOZXdMaWZldGltZU93bmVy
KCkKKy8vICAgICAgIGVsZWN0cyBhIG5ldyBsaWZldGltZSBvd25lci4KKy8vCisvLyBTZWUgYSBk
b2N1bWVudCAoaHR0cDovL3h4eHgpIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHJlZmVyZW5j
ZSBjb3VudGluZyBhbGdvcml0aG0KKy8vIG9mIFRyZWVTaGFyZWQuCisjZGVmaW5lIExpZmV0aW1l
T3duZXJCaXRNYXNrICgweDgwMDAwMDAwKQorCiAjaWZuZGVmIE5ERUJVRwogdGVtcGxhdGU8dHlw
ZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVk
OwogdGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiB2
b2lkIGFkb3B0ZWQoVHJlZVNoYXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7CkBAIC0z
NywxMiArNTAsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVu
dE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkIHsKIHByb3RlY3RlZDoKICAgICBUcmVlU2hhcmVk
KCkKICAgICAgICAgOiBtX3BhcmVudCgwKQotICAgICAgICAsIG1fcmVmQ291bnQoMSkKKyAgICAg
ICAgLy8gSW5pdGlhbGx5IHRoZSBOb2RlIGlzIGEgbGlmZXRpbWUgb3duZXIsIHNpbmNlIHRoZXJl
IGlzIG9ubHkgb25lIE5vZGUKKyAgICAgICAgLy8gaW4gdGhlIERPTSB0cmVlLgorICAgICAgICAs
IG1fcmVmQ291bnQoTGlmZXRpbWVPd25lckJpdE1hc2sgfCAxKQogI2lmbmRlZiBOREVCVUcKICAg
ICAgICAgLCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCh0cnVlKQogI2VuZGlmCiAgICAgeworICAgICAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgIlRyZWVTaGFyZWQoKSAlcFxuIiwgdGhpcyk7CiAgICAgICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0xpZmV0aW1lT3duZXIo
KSk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSBmYWxzZTsK
ICAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKQEAgLTUxLDggKzY4
LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIH5UcmVlU2hhcmVkKCkKICAgICB7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiflRyZWVTaGFyZWQoKSAlcFxuIiwgdGhpcyk7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9yZWZDb3VudCk7CisgICAg
ICAgIEFTU0VSVCghcmVmQ291bnQoKSk7CisgICAgICAgIEFTU0VSVCghaXNMaWZldGltZU93bmVy
KCkpOwogICAgICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJU
KCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgfQpAQCAtNzAsMzQgKzg5LDczIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRlcmVmKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgICAgIEFTU0VSVChtX3JlZkNvdW50ID49IDApOwogICAgICAgICBBU1NFUlQoIW1f
ZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVu
Y3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKLSAgICAgICAg
aWYgKC0tbV9yZWZDb3VudCA8PSAwICYmICFtX3BhcmVudCkgeworICAgICAgICAtLW1fcmVmQ291
bnQ7CisgICAgICAgIGlmIChtX3JlZkNvdW50ID09IExpZmV0aW1lT3duZXJCaXRNYXNrKSB7Cisg
ICAgICAgICAgICAvLyAnbV9yZWZDb3VudCA9PSBMaWZldGltZU93bmVyQml0TWFzaycgbWVhbnMg
dGhhdCB0aGUgTm9kZSBpcworICAgICAgICAgICAgLy8gYSBsaWZldGltZSBvd25lciBhbmQgdGhl
IHJlZmNvdW50IG9mIHRoZSBOb2RlIGJlY29tZXMgMC4KKyAgICAgICAgICAgIC8vIFRoZSBsaWZl
dGltZSBvd25lciBpcyByZXNwb25zaWJsZSB0byBjYWxsIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KS4KKyAgICAgICAgICAgIC8vIElmIHRoZSBET00gdHJlZSBoYXMgYW5vdGhlciBOb2RlIHRoYXQg
aGFzIDF+IHJlZmNvdW50LAorICAgICAgICAgICAgLy8gc2VhcmNoTmV3TGlmZXRpbWVPd25lcigp
IHNldHMgdGhlIE5vZGUgYXMgYSBuZXcgbGlmZXRpbWUgb3duZXIuCisgICAgICAgICAgICAvLyBP
dGhlcndpc2UgKGkuZS4gYWxsIHRoZSBOb2RlcyBpbiB0aGUgRE9NIHRyZWUgaGF2ZSAwIHJlZmNv
dW50KSwKKyAgICAgICAgICAgIC8vIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBkZWxldGVzIGFs
bCB0aGUgTm9kZXMuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLT5z
ZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgICAgIH0KICNpZm5kZWYgTkRFQlVHCi0gICAg
ICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRydWU7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEFTU0VSVChyZWZDb3VudCgpIHx8ICFpc0xpZmV0aW1lT3duZXIoKSk7CiAj
ZW5kaWYKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyktPnJlbW92ZWRM
YXN0UmVmKCk7Ci0gICAgICAgIH0KKyAgICB9CisKKyAgICBpbnQgcmVmQ291bnQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBsaWZldGltZSBvd25lciBiaXQuCisgICAgICAg
IC8vIGUuZy4gMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDExMDEKKyAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgJiB+TGlmZXRp
bWVPd25lckJpdE1hc2s7CiAgICAgfQogCiAgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQo
IW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQg
PT0gMTsKKyAgICAgICAgcmV0dXJuIHJlZkNvdW50KCkgPT0gMTsKICAgICB9CiAKLSAgICBpbnQg
cmVmQ291bnQoKSBjb25zdAorICAgIHZvaWQgc2V0TGlmZXRpbWVPd25lcigpCisgICAgeworICAg
ICAgICAvLyBBIGxpZmV0aW1lIG93bmVyIG11c3QgaGF2ZSAxfiByZWZjb3VudCwgc2luY2UgdGhl
IGxpZmV0aW1lIG93bmVyIGlzIHJlc3BvbnNpYmxlCisgICAgICAgIC8vIGZvciBjYWxsaW5nIHNl
YXJjaE5ld0xpZmV0aW1lT3duZXIoKSB3aGVuIHRoZSByZWZjb3VudCBiZWNvbWVzIDAuCisgICAg
ICAgIEFTU0VSVChyZWZDb3VudCgpKTsKKyAgICAgICAgLy8gU2V0IHRoZSBsaWZldGltZSBvd25l
ciBiaXQuCisgICAgICAgIC8vIGUuZy4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEg
PT4gMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEKKyAgICAgICAgLy8gZS5nLiAxMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMTEwMQorICAgICAgICBtX3JlZkNvdW50IHw9IExpZmV0aW1lT3duZXJCaXRNYXNrOworICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInNldExpZmV0aW1lT3duZXIoKSAlcFxuIiwgdGhpcyk7
CisgICAgfQorCisgICAgdm9pZCB1bnNldExpZmV0aW1lT3duZXIoKQorICAgIHsKKyAgICAgICAg
Ly8gVW5zZXQgdGhlIGxpZmV0aW1lIG93bmVyIGJpdC4KKyAgICAgICAgLy8gZS5nLiAxMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MTEwMQorICAgICAgICAvLyBlLmcuIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxCisgICAgICAgIG1fcmVmQ291bnQgJj0g
fkxpZmV0aW1lT3duZXJCaXRNYXNrOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInVuc2V0
TGlmZXRpbWVPd25lcigpICVwXG4iLCB0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGlzTGlmZXRp
bWVPd25lcigpCiAgICAgewotICAgICAgICByZXR1cm4gbV9yZWZDb3VudDsKKyAgICAgICAgLy8g
Q2hlY2sgaWYgdGhlIGxpZmV0aW1lIG93bmVyIGJpdCBpcyBzZXQuCisgICAgICAgIC8vIGUuZy4g
MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gdHJ1ZQorICAgICAgICAvLyBlLmcu
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+IGZhbHNlCisgICAgICAgIHJldHVy
biBtX3JlZkNvdW50ICYgTGlmZXRpbWVPd25lckJpdE1hc2s7CiAgICAgfQogCiAgICAgdm9pZCBz
ZXRQYXJlbnQoUGFyZW50Tm9kZVR5cGUqIHBhcmVudCkKICAgICB7IAogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgICAgICBtX3BhcmVudCA9IHBhcmVudDsgCisgICAgICAgIG1f
cGFyZW50ID0gcGFyZW50OwogICAgIH0KIAogICAgIFBhcmVudE5vZGVUeXBlKiBwYXJlbnQoKSBj
b25zdApAQCAtMTE3LDcgKzE3NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFBhcmVudE5v
ZGVUeXBlKiBtX3BhcmVudDsKLSAgICBpbnQgbV9yZWZDb3VudDsKKyAgICB1aW50MzJfdCBtX3Jl
ZkNvdW50OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9hZG9wdGlvbklzUmVxdWlyZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggOGVkYmI2NWM2ZWQ2YjVhNjJkYWM1ZDMw
OGY3ZjQyMjRlMmY1NzM1NS4uMWZjMmU0MmFjYTI2MmM2ZDdiMGQ3MDJjMzExOGM5NDk1NDI1ZjEw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNjEsNiArNjEsNyBAQCBQYXNzUmVm
UHRyPFNWR0VsZW1lbnQ+IFNWR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudAogCiBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCgpCiB7CisgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJ+U1ZHRWxlbWVudCgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAgICAg
aWYgKCFoYXNSYXJlU1ZHRGF0YSgpKQogICAgICAgICBBU1NFUlQoIVNWR0VsZW1lbnRSYXJlRGF0
YTo6cmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7CiAgICAgZWxzZSB7CkBAIC04MCw2ICs4
MSw3IEBAIFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKICAgICB9CiAgICAgZG9jdW1lbnQoKS0+
YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVBbGxBbmltYXRpb25FbGVtZW50c0Zyb21UYXJn
ZXQodGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVB
bGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldCh0aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIn5TVkdFbGVtZW50KCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiBib29sIFNWR0VsZW1l
bnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCkBAIC0yMjQsNiArMjI2LDcg
QEAgdm9pZCBTVkdFbGVtZW50OjptYXBJbnN0YW5jZVRvRWxlbWVudChTVkdFbGVtZW50SW5zdGFu
Y2UqIGluc3RhbmNlKQogICAgIEFTU0VSVCghaW5zdGFuY2VzLmNvbnRhaW5zKGluc3RhbmNlKSk7
CiAKICAgICBpbnN0YW5jZXMuYWRkKGluc3RhbmNlKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
Imluc3RhbmNlcy5hZGQoaW5zdGFuY2UpICVwIGluc3RhbmNlPSVwXG4iLCB0aGlzLCBpbnN0YW5j
ZSk7CiB9CiAgCiB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUluc3RhbmNlTWFwcGluZyhTVkdFbGVt
ZW50SW5zdGFuY2UqIGluc3RhbmNlKQpAQCAtMjM1LDYgKzIzOCw3IEBAIHZvaWQgU1ZHRWxlbWVu
dDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpCiAg
ICAgQVNTRVJUKGluc3RhbmNlcy5jb250YWlucyhpbnN0YW5jZSkpOwogCiAgICAgaW5zdGFuY2Vz
LnJlbW92ZShpbnN0YW5jZSk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJpbnN0YW5jZXMucmVt
b3ZlKGluc3RhbmNlKSAlcCBpbnN0YW5jZT0lcFxuIiwgdGhpcywgaW5zdGFuY2UpOwogfQogCiBj
b25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBTVkdFbGVtZW50OjppbnN0YW5jZXNG
b3JFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50SW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5j
cHAKaW5kZXggOWZlMmFjYmYwMGE1ZmVjZjVmMzQ1YTc2OWQ1NDFjNzU0NjJmZWExNy4uMGNkY2Y0
MTZhZmZhYmEzNDczMDk5ZDg0MDE4MzkzMTdkMTllM2ExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKQEAgLTYyLDI0ICs2Miw3NSBAQCBTVkdFbGVtZW50SW5z
dGFuY2U6OlNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiBjb3JyZXNwb25kaW5nVXNl
RWxlbWVudCwgUwogCiBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2UoKQog
ewotICAgIC8vIENhbGwgZGV0YWNoIGJlY2F1c2Ugd2UgbWF5IGJlIGRlbGV0ZWQgZGlyZWN0bHkg
aWYgd2UgYXJlIGEgY2hpbGQgb2YgYSBkZXRhY2hlZCBpbnN0YW5jZS4KLSAgICBkZXRhY2goKTsK
LQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGJlZm9y
ZVxuIiwgdGhpcyk7CisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CiAjaWZuZGVmIE5E
RUJVRwogICAgIGluc3RhbmNlQ291bnRlci5kZWNyZW1lbnQoKTsKICNlbmRpZgogCisgICAgaWYg
KG1fZWxlbWVudC0+aW5zdGFuY2VzRm9yRWxlbWVudCgpLmNvbnRhaW5zKHRoaXMpKQorICAgICAg
ICBtX2VsZW1lbnQtPnJlbW92ZUluc3RhbmNlTWFwcGluZyh0aGlzKTsKKworICAgIG1fc2hhZG93
VHJlZUVsZW1lbnQgPSAwOworICAgIG1fZGlyZWN0VXNlRWxlbWVudCA9IDA7CisgICAgbV9jb3Jy
ZXNwb25kaW5nVXNlRWxlbWVudCA9IDA7CiAgICAgbV9lbGVtZW50ID0gMDsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50SW5zdGFuY2UoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9
CiAKLS8vIEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1
c2Ugd2UgZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KKy8vIEl0J3MgaW1wb3J0YW50
IG5vdCB0byBpbmxpbmUgc2VhcmNoTmV3TGlmZXRpbWVPd25lciwgYmVjYXVzZSB3ZSBkb24ndCB3
YW50IHRvIGlubGluZSB0aGUgY29kZSB0bwogLy8gZGVsZXRlIGFuIFNWR0VsZW1lbnRJbnN0YW5j
ZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KLXZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1v
dmVkTGFzdFJlZigpCit2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6c2VhcmNoTmV3TGlmZXRpbWVP
d25lcigpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnNl
YXJjaE5ld0xpZmV0aW1lT3duZXIoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIHVuc2V0TGlm
ZXRpbWVPd25lcigpOworCisgICAgLy8gSGVyZSBpdCBpcyBndWFyYW50ZWVkIHRoYXQgdGhlcmUg
aXMgbm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlIERPTSB0cmVlLgorCisgICAgaWYgKHBhcmVudE5v
ZGUoKSkgeworICAgICAgICAvLyBDYWxsIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3IgdGhl
IHJvb3QgTm9kZS4KKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiByb290ID0gdGhpczsKKyAg
ICAgICAgd2hpbGUgKHJvb3QtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIHJvb3QgPSByb290
LT5wYXJlbnROb2RlKCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVudElu
c3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgZm9yd2FyZGVkIHJvb3Q9JXBcbiIsIHJv
b3QpOworICAgICAgICByb290LT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVudEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93
bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKHJlZkNvdW50KCkpIHsKKyAgICAgICAgLy8gRmFzdCBwYXRoLiBJZiB0aGUgcm9vdCBOb2Rl
IGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0IHRoZSByb290IG5vZGUgYXMKKyAgICAgICAgLy8gYSBs
aWZldGltZSBvd25lci4KKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0aW1lT3duZXIoKSk7CisgICAg
ICAgIHNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdF
bGVtZW50SW5zdGFuY2U6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBlYXJseS1yZXR1cm4gJXAg
YWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWZuZGVmIE5ERUJV
RworICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOworICAgIG1faW5SZW1v
dmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKKyNlbmRpZgorCisgICAgYm9vbCBjaGlsZHJlblJl
bW92ZWQgPSBnY0NoaWxkcmVuSW5Db250YWluZXIodGhpcyk7CisgICAgaWYgKGNoaWxkcmVuUmVt
b3ZlZCkgeworICAgICAgICAvLyBBbGwgdGhlIE5vZGVzIGJ1dCB0aGUgcm9vdCBOb2RlIGFyZSBk
ZWxldGVkIGJ5IGdjQ2hpbGRyZW4oKS4KKyAgICAgICAgLy8gTm93IGl0IGlzIHRpbWUgdG8gZGVs
ZXRlIHRoZSByb290IE5vZGUuCisKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUg
JXAoU1ZHRWxlbWVudEluc3RhbmNlKSBiZWZvcmVcbiIsIHRoaXMpOwogI2lmbmRlZiBOREVCVUcK
LSAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworICAgICAgICBtX2RlbGV0aW9uSGFzQmVn
dW4gPSB0cnVlOwogI2VuZGlmCi0gICAgZGVsZXRlIHRoaXM7CisgICAgICAgIGRlbGV0ZSB0aGlz
OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcChTVkdFbGVtZW50SW5zdGFu
Y2UpIGFmdGVyXG4iLCB0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBnY0NoaWxkcmVu
KCkgZGlkIG5vdGhpbmcuIEFsbCB0aGUgTm9kZXMgaW4gdGhlIERPTSB0cmVlIGFyZSBzdGlsbCBh
bGl2ZS4KKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rp
b24gPSBmYWxzZTsKKyNlbmRpZgorICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0Vs
ZW1lbnRJbnN0YW5jZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVyXG4iLCB0aGlz
KTsKIH0KIAogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCgpCkBAIC05Nyw3ICsxNDgs
NyBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKCkKICAgICBtX2RpcmVjdFVzZUVs
ZW1lbnQgPSAwOwogICAgIG1fY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgPSAwOwogCi0gICAgcmVt
b3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJ
bnN0YW5jZT4odGhpcyk7CisgICAgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcjxTVkdFbGVtZW50
SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5jZT4odGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8U1ZH
RWxlbWVudEluc3RhbmNlTGlzdD4gU1ZHRWxlbWVudEluc3RhbmNlOjpjaGlsZE5vZGVzKCkKQEAg
LTExNCw2ICsxNjUsNyBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6c2V0U2hhZG93VHJlZUVs
ZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjphcHBl
bmRDaGlsZChQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4gY2hpbGQpCiB7CiAgICAgYXBw
ZW5kQ2hpbGRUb0NvbnRhaW5lcjxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5j
ZT4oY2hpbGQuZ2V0KCksIHRoaXMpOworICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsK
IH0KIAogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVs
ZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5z
dGFuY2UuaAppbmRleCAxYzg5YzdjY2QxZDI4OTQyNDRlZmM2OGYwMDhiNTNhNzM2ODMyZGI4Li42
MjA1ZjhhMjY0ZjllOTNkMmFkYmVlMDdhYjU3ZTVkZmFmMmFjY2ViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICBT
VkdFbGVtZW50SW5zdGFuY2UqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hp
bGQ7IH0KICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdENoaWxkOyB9CiAKKyAgICBib29sIGlzQ29udGFpbmVyTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKwogICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9lbGVtZW50ID8gbV9lbGVtZW50LT5vd25lckRvY3VtZW50KCkgOiAwOyB9CiAKICAgICBj
bGFzcyBJbnZhbGlkYXRpb25HdWFyZCB7CkBAIC0xNTAsNyArMTUyLDcgQEAgcHJpdmF0ZToKICAg
ICB1c2luZyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNl
Pjo6c2V0UGFyZW50OwogCiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKFNWR1VzZUVsZW1lbnQqLCBT
VkdVc2VFbGVtZW50KiwgUGFzc1JlZlB0cjxTVkdFbGVtZW50PiBvcmlnaW5hbEVsZW1lbnQpOwot
ICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKKyAgICB2b2lkIHNlYXJjaE5ld0xpZmV0aW1lT3du
ZXIoKTsKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gc2hhZG93VHJlZUVs
ZW1lbnQoKTsgfQogCkBAIC0xNTgsMTMgKzE2MCwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCopOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2Vu
ZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotICAgIGZyaWVuZCB2b2lkIGFw
cGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRh
aW5lciogY29udGFpbmVyKTsKLQorICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxkVG9Db250YWlu
ZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOwogICAgIHRlbXBs
YXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBm
cmllbmQgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFp
bmVyKiBjb250YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rl
c1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwg
R2VuZXJpY05vZGVDb250YWluZXIqKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwg
Y2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRk
Q2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2Rl
KiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7CisgICAgZnJpZW5kIHZv
aWQgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciopOworICAg
IGZyaWVuZCBib29sIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcihTVkdFbGVtZW50SW5zdGFuY2UqKTsK
IAogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZWQwM2JjYzZiNDA2YmY5YTg2NjliZWI1MjA5
MTZjYmE5OWRmZmYwNi4uYTRiMDA4NTQ3M2JlMWQwZTUxNTlmOTcyNzkwNDc0YmFhN2Y1MGMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjA1LDcgKzIwNSw2IEBAIEVYUE9SVFMKICAgICAg
ICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRl
eHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdU
RkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZA
QFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgog
ICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAgICA/
c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQog
ICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3Jl
QEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
Q0ZMaXRlLmRlZgppbmRleCBlZDZlY2NlODYyMGQ5ZmFkNDNiNmEzNmQxYjQ3NDUzNmNmYjZjODll
Li4wMjNjNGNkNGUwMjQ1MjBlNmVmMjJkNmNhMmRhY2M2N2Q5ZjgyNDczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDJDRkxpdGUuZGVmCkBAIC0xOTgsNyArMTk4LDYgQEAgRVhQT1JUUwogICAgICAg
ICA/cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGVASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRA
V2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4
dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RG
QEBQQVZDb250YWluZXJOb2RlQDJASEhfTkBaCiAgICAgICAgID9yZW1vdmVAU3RyaW5nQFdURkBA
UUFFWElIQFoKLSAgICAgICAgP3JlbW92ZWRMYXN0UmVmQE5vZGVAV2ViQ29yZUBAQUFFWFhaCiAg
ICAgICAgID9yZXZlcnNlRmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSV9XSUBaCiAgICAgICAgID9z
X2Zyb250ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAMEhBCiAg
ICAgICAgID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVA
QFFCRVBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdhZGJjNjQzMjYwY2U4
ZmNlYjg1MjcwZTc2MWZlNTkxZWI3MjE3YmYuLjRmNTY5ZWYyYWMwYTBmNjZlZjFlMWQ1ZTUzMWNm
MmI4Mjc3YmY3YTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0wNi0yMiAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgTm9kZSBYIGhhcyBhIHJl
Zi1jb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgdHJlZSB3aGljaCBYIGJlbG9uZ3MgdG8gc2hv
dWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3RpbGwgV0lQLgorICAgICAgICBBIHJvdWdoIGV4cGxhbmF0aW9uIG9mIHRoZSBh
bGdvcml0aG06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNCNj
MworICAgICAgICBBIGRldGFpbGVkIGRvY3VtZW50IHdpbGwgYmUgY29taW5nIHNvb24uCisKKyAg
ICAgICAgVGVzdDogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbAorICAgICAgICAg
ICAgICBmYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0bWwKKyAgICAg
ICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMtbm9CYXNlVmFs
UmVmLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50LWluc3Rh
bmNlcy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZHluYW1pY2FsbHkt
YWRkZWQtZWxlbWVudC1pbnN0YW5jZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21p
bC1sZWFrLWVsZW1lbnRzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3N2Z2xlbmd0aC1l
bGVtZW50LXJlbW92ZWQtY3Jhc2guc3ZnCisgICAgICAgICAgICAgIENvbmZpcm0gdGhhdCBhbGwg
dGhlIG90aGVyIGV4aXN0aW5nIHRlc3RzIGRvIG5vdCBjcmFzaC4KKworICAgICAgICAqIGZhc3Qv
ZG9tL2djLTMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL2djLTUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbDog
QWRkZWQuCisKIDIwMTItMDYtMjEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgog
CiAgICAgICAgIFtjaHJvbWl1bV0gTGF5b3V0IHRlc3QgZmFpbHVyZXMgYWZ0ZXIgZml4aW5nIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bSBzY2FsZSBmYWN0b3JzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMt
ZXhwZWN0ZWQudHh0CmluZGV4IDYwZDNhMTcwZjI5YjYzMzQ4NzFjODM5NmRlMGFhYmJiNzZiMGMx
OTYuLjkyZDQxMjE3ZWYzYWUzOTBmNWFhMjAwYzJlZTllZmQxNWE2MTI2ZjggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0CkBAIC00LDUgKzQsNiBAQCBUaGUgb3V0cHV0IHNo
b3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2
ZXM6ICJyZXBsYQogCiByZXBsYWNlbWVudCBjb250ZW50CiBCCitwYXJlbnQgbm9kZSBleGlzdHMK
IGNoaWxkIG5vZGUgZXhpc3RzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2dj
LTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQK
aW5kZXggMThjODM0ODhiMGNmNmYwNDAxZmYzNzk3Y2YxNjYzOWRhNTYzZGE2ZS4uNzM4MDljZGE4
NTQzNDg3OWNiOTI2NzZiOTZiNzVkMTlmMDMxN2IwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2Mt
NS1leHBlY3RlZC50eHQKQEAgLTQsNCArNCw1IEBAIFRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBm
b2xsb3dpbmcgcGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhCiAK
IHJlcGxhY2VtZW50IGNvbnRlbnQKIEIKK0QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4M2Vl
ZGUxYjQxM2Q2NDdlZTc4MTZlNjVjYWJmMDA5NmM3YTg1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyMDIgQEAKKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNo
aWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYx
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1j
aGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYy
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0K
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYy
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2
WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1
bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYy
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1j
aGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRp
dlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3Nm
dWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjIt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYy
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09
PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBk
aXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNz
ZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYw
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2
LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJl
bnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGls
ZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9
PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQg
ZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vz
c2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2
LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJl
bnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFT
UyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlz
ICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hp
bGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkg
PT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5k
IGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nl
c3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGls
ZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNo
aWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnRO
b2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMg
ImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZ
ID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnRO
b2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMg
ImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFu
ZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNj
ZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20t
dHJlZS1saWZldGltZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlm
ZXRpbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODAwM2Q1OTdmZTg2NTc2MmJiNWYwNjk4MThmM2YxMmQ4
NjVhMmU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRy
ZWUtbGlmZXRpbWUuaHRtbApAQCAtMCwwICsxLDk4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3ZhciB0ZXN0Q2FzZXMgPSBbWyJk
aXYwIiwgImRpdjEiLCAiZGl2MiJdLAorICAgICAgICAgICAgICAgICBbImRpdjAiLCAiZGl2MiIs
ICJkaXYxIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MSIsICJkaXYwIiwgImRpdjIiXSwKKyAg
ICAgICAgICAgICAgICAgWyJkaXYxIiwgImRpdjIiLCAiZGl2MCJdLAorICAgICAgICAgICAgICAg
ICBbImRpdjIiLCAiZGl2MCIsICJkaXYxIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MiIsICJk
aXYxIiwgImRpdjAiXV07CisKK3ZhciByb290RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3REaXYpOwordmFyIHRlc3RIdG1s
ID0gIjxkaXYgaWQ9J2RpdjAtcGFyZW50Jz48ZGl2IGlkPSdkaXYwJz48ZGl2IGlkPSdkaXYwLWNo
aWxkJz48L2Rpdj48L2Rpdj48ZGl2IGlkPSdkaXYxLXBhcmVudCc+PGRpdiBpZD0nZGl2MSc+PGRp
diBpZD0nZGl2MS1jaGlsZCc+PC9kaXY+PC9kaXY+PGRpdiBpZD0nZGl2Mi1wYXJlbnQnPjxkaXYg
aWQ9J2RpdjInPjxkaXYgaWQ9J2RpdjItY2hpbGQnPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwv
ZGl2PiI7CisKK3Rlc3RDYXNlcy5mb3JFYWNoKGZ1bmN0aW9uICh0ZXN0KSB7CisgICAgdmFyIGRp
dlgsIGRpdlksIGRpdlo7CisgICAgZGVidWcoIj09PSBJbml0aWFsIHN0YXRlID09PSIpOworICAg
IHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7Cisg
ICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlgsIHRlc3RbMF0pOworICAgIGNoZWNrUGFy
ZW50QW5kQ2hpbGRBbGl2ZShkaXZZLCB0ZXN0WzFdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxk
QWxpdmUoZGl2WiwgdGVzdFsyXSk7CisKKyAgICBkZWJ1ZygiPT09IEFmdGVyIGNsZWFyaW5nIGlu
bmVySFRNTCA9PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRp
dlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMl0pOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gIiI7CisgICAgY2hlY2tQ
YXJlbnRBbmRDaGlsZEFsaXZlKGRpdlgsIHRlc3RbMF0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hp
bGRBbGl2ZShkaXZZLCB0ZXN0WzFdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2
WiwgdGVzdFsyXSk7CisKKyAgICBkZWJ1ZygiPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBh
bmQgZGl2WCA9PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRp
dlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMl0pOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gIiI7CisgICAgZGl2WCA9
IG51bGw7CisgICAgZ2MoKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVz
dFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisg
ICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09
Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxsOworICAg
IGRpdlkgPSBudWxsOworICAgIGdjKCk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRp
dlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUws
IGRpdlgsIGRpdlkgYW5kIGRpdlogPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0
SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAg
ZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgcHJldk5vZGVzID0gd2luZG93LmludGVybmFscy5udW1iZXJPZkxpdmVOb2Rlcygp
OworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gIiI7CisgICAgZGl2WCA9IG51bGw7CisgICAgZGl2
WSA9IG51bGw7CisgICAgZGl2WiA9IG51bGw7CisgICAgZ2MoKTsKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgICAgICAvLyBJZiBhbGwgdGhlIE5vZGUgb2JqZWN0cyBpbiB0ZXN0SHRt
bCBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQsCisgICAgICAgIC8vIGF0IGxlYXN0IDkgPGRp
dj5zIG9iamVjdHMgd2lsbCBiZSByZW1vdmVkLgorICAgICAgICAvLyAoQWN0dWFsbHksIHNpbmNl
IHRlc3RIdG1sIHJlbmRlcmluZyByZXF1aXJlcyBtb3JlIHRoYW4gOSBOb2RlIG9iamVjdHMuKQor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscy5udW1iZXJPZkxpdmVOb2RlcygpIDw9IHByZXZO
b2RlcyAtIDkpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgPGRpdj4gb2JqZWN0cyBpbiBh
IERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4iKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBu
b3QgZGVzdHJ1Y3RlZC4iKTsKKyAgICB9Cit9KTsKKworZnVuY3Rpb24gY2hlY2tQYXJlbnRBbmRD
aGlsZEFsaXZlKGRpdiwgbmFtZSkgeworICAgIGdsb2JhbERpdiA9IGRpdjsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5pZCcsIG5hbWUpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQnLCBuYW1lICsgIi1wYXJlbnQiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5maXJzdENoaWxkLmlkJywgbmFtZSAr
ICItY2hpbGQiKTsKKyAgICBnbG9iYWxEaXYgPSBudWxsOworICAgIGdjKCk7Cit9CisKK3ZhciBz
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149409</attachid>
            <date>2012-06-25 17:43:36 -0700</date>
            <delta_ts>2012-06-25 23:47:28 -0700</delta_ts>
            <desc>WIP patch3</desc>
            <filename>bug-88834-20120626094335.patch</filename>
            <type>text/plain</type>
            <size>66680</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA2Y2QyMDE0NTQwNDZk
ZmY3YzdkYWZlMWIzZGJkMzliN2RkNjgyZC4uZWY3Y2Q5ZmFkZTFmNmJkOTI5MjQyZGU1OTJjYzFh
NTk0ZGFjNWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wNi0yNSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgTm9kZSBYIGhh
cyBhIHJlZi1jb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgdHJlZSB3aGljaCBYIGJlbG9uZ3Mg
dG8gc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU3RpbGwgV0lQLgorICAgICAgICBBIHJvdWdoIGV4cGxhbmF0aW9uIG9m
IHRoZSBhbGdvcml0aG06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
ODgzNCNjMworICAgICAgICBBIGRldGFpbGVkIGRvY3VtZW50IHdpbGwgYmUgY29taW5nIHNvb24u
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbAorICAg
ICAgICAgICAgICBmYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0bWwK
KyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMtbm9C
YXNlVmFsUmVmLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50
LWluc3RhbmNlcy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZHluYW1p
Y2FsbHktYWRkZWQtZWxlbWVudC1pbnN0YW5jZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlv
bnMvc21pbC1sZWFrLWVsZW1lbnRzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3N2Z2xl
bmd0aC1lbGVtZW50LXJlbW92ZWQtY3Jhc2guc3ZnCisgICAgICAgICAgICAgIENvbmZpcm0gdGhh
dCBhbGwgdGhlIG90aGVyIGV4aXN0aW5nIHRlc3RzIGRvIG5vdCBjcmFzaC4KKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6CisgICAgICAgICogZG9t
L0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6Y3JlYXRlVGV4dENoaWxkKToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmdjQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6fkNvbnRhaW5lck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRk
Q2hpbGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250YWlu
ZXJOb2RlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRh
bnRJbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmg6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVS
ZW1vdmFsTm90aWZpZXI6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAgIChDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpnY0NoaWxkcmVuSW5Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQ2hp
bGRyZW5JbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlOjphZGRDaGlsZE5v
ZGVzVG9EZWxldGlvblF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlv
bk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9U
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3Rp
ZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlO
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1v
dmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpjaGVja0lmTGlmZXRpbWVPd25lcik6CisgICAgICAg
ICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnY0NoaWxk
cmVuT2ZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2VhcmNoTmV3TGlm
ZXRpbWVPd25lcik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Z3VhcmREZXJlZik6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Zm9jdXMpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50U2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRT
aGFkb3c6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
cmVtb3ZlQWxsU2hhZG93Um9vdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50U2hhZG93Ojpmb3JjZVJlbW92ZUFsbFNoYWRvd1Jvb3RzKToKKyAgICAgICAg
KiBkb20vRWxlbWVudFNoYWRvdy5oOgorICAgICAgICAoRWxlbWVudFNoYWRvdyk6CisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93
bmVyKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICog
ZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZUNoaWxkcmVuV2l0
aEZyYWdtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OlRyZWVTaGFyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6flRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNoYXJlZDo6ZGVyZWYpOgorICAgICAgICAoVHJlZVNoYXJlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUcmVlU2hhcmVkOjpyZWZDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hh
cmVkOjpoYXNPbmVSZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6c2V0TGlmZXRp
bWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp1bnNldExpZmV0aW1lT3du
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6aXNMaWZldGltZU93bmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnNldFBhcmVudCk6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6flNWR0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6bWFwSW5zdGFuY2VUb0VsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6c2VhcmNoTmV3TGlmZXRp
bWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50SW5zdGFuY2U6OmlzQ29udGFpbmVyTm9kZSk6CisgICAgICAgIChTVkdFbGVtZW50SW5z
dGFuY2UpOgorCiAyMDEyLTA2LTI0ICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgY29tcGlsZSBlcnJvciBmaXggb2YgQ2hyb21pdW0gV2lu
IFJlbGVhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzBmZDlkMTA0ZGY4OWQyZTY2ZjU3NjExZmZkYTVkMGY3
YjQ5MmExOC4uZDM5ZGRhMDc4ZWNmOTU0ODAzNThhZjlhZjQyYmRlMGMxYjM1NzY2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTI1ICBLZW50YXJvIEhhcmEgIDxoYXJha2Vu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBOb2RlIFggaGFzIGEgcmVmLWNvdW50LCBhbGwg
dGhlIE5vZGVzIGluIHRoZSB0cmVlIHdoaWNoIFggYmVsb25ncyB0byBzaG91bGQgYmUga2VwdCBh
bGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTeW1i
b2wgY2hhbmdlLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wNi0yNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVGVzdCAvd2Via2l0Mi9XZWJLaXRX
ZWJWaWV3L3Blcm1pc3Npb24tcmVxdWVzdHMgZmFpbHMgZHVlIHRvIGEgcnVudGltZSB3YXJuaW5n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGFiZGRmYjcyMmFkMmMzYzY0NGUyOTcyM2ZhZTllMWNi
MGJlNjEzMTQuLmI0MWRlNjE5ZTRkZjZlNjMwNjllYzNjMTMzYWZiNWY2YjA3NzdmMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCkBAIC02NDYsNyArNjQ2LDYgQEAgX19aTjdXZWJDb3JlNEtVUkxDMUVQ
NU5TVVJMCiBfX1pON1dlYkNvcmU0S1VSTEMxRVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29yZTRLVVJM
QzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTROb2RlMTByZW5kZXJSZWN0RVBi
Ci1fX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJDb3JlNE5vZGUx
N3N0b3BJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2ViQ29yZTROb2RlMThzdGFydElnbm9yaW5nTGVh
a3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOXNldE5lZWRzU3R5bGVSZWNhbGNFTlNfMTVTdHlsZUNo
YW5nZVR5cGVFCkBAIC0xMjY1LDYgKzEyNjQsNyBAQCBfX1pOSzdXZWJDb3JlNE5vZGUxMXRleHRD
b250ZW50RWIKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNjZW5kYW50T2ZFUEtTMF8KIF9fWk5L
N1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJOM1dURjExTGlzdEhhc2hTZXRJTlNf
NEtVUkxFTG0yNTZFTlNfOEtVUkxIYXNoRUVFCiBfX1pOSzdXZWJDb3JlNE5vZGUyMHRyYXZlcnNl
UHJldmlvdXNOb2RlRVBLUzBfCitfX1pON1dlYkNvcmU0Tm9kZTIyc2VhcmNoTmV3TGlmZXRpbWVP
d25lckV2CiBfX1pOSzdXZWJDb3JlNE5vZGUyN3RyYXZlcnNlTmV4dEFuY2VzdG9yU2libGluZ0V2
CiBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5Fdgog
X19aTks3V2ViQ29yZTROb2RlOW5vZGVJbmRleEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRleCBiYmY2
YTNkZDNkN2NkYTg2YmNkYTgwODAyM2I1YTIwYmM4Y2QzNGU5Li4zNjZkNjA3N2Q2MTkxZjBlYjE0
NWJjMDg2MGU2NWU5YzUyNGE1YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTI0NzEsMTMgKzI0
NzEsMTAgQEAgX19aTkszV1RGOUhhc2hUYWJsZUlQdlMxX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJ
UzFfRUVOU183UHRySGFzaElTMV9FRU5TXzEwSGFzaFQKIF9fWk43V2ViQ29yZTExSlNOb2RlT3du
ZXI4ZmluYWxpemVFTjNKU0M2SGFuZGxlSU5TMV83VW5rbm93bkVFRVB2CiBfX1pON1dlYkNvcmUx
NHVuY2FjaGVXcmFwcGVySU5TXzROb2RlRUVFdlBOU18xNURPTVdyYXBwZXJXb3JsZEVQVF9QTlNf
MTJKU0RPTVdyYXBwZXJFCiBfX1pON1dlYkNvcmUxNEpTSFRNTERvY3VtZW50RDFFdgotX19aVGhu
OF9ON1dlYkNvcmU4RG9jdW1lbnQxNHJlbW92ZWRMYXN0UmVmRXYKLV9fWk43V2ViQ29yZThEb2N1
bWVudDE0cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJDb3JlMTRTdHlsZVNoZWV0TGlzdEQxRXYK
IF9fWk43V2ViQ29yZTlUcmVlU2NvcGUyMGRlc3Ryb3lUcmVlU2NvcGVEYXRhRXYKIF9fWk43V2Vi
Q29yZTE4RG9jdW1lbnRPcmRlcmVkTWFwNWNsZWFyRXYKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVy
Tm9kZTE3cmVtb3ZlQWxsQ2hpbGRyZW5FdgotX19aTjdXZWJDb3JlMjhyZW1vdmVBbGxDaGlsZHJl
bkluQ29udGFpbmVySU5TXzROb2RlRU5TXzEzQ29udGFpbmVyTm9kZUVFRXZQVDBfCiBfX1pON1dl
YkNvcmUxNUhUTUxIdG1sRWxlbWVudEQwRXYKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudEQy
RXYKIF9fWk43V2ViQ29yZTdFbGVtZW50RDJFdgpAQCAtNDE1MSw3ICs0MTQ4LDYgQEAgX19aTjdX
ZWJDb3JlNE5vZGUxNXJlbW92ZWRGcm9tVHJlZUViCiBfX1pON1dlYkNvcmVMMTlub3RpZnlDaGls
ZEluc2VydGVkRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTROb2RlMTZpbnNlcnRlZEludG9UcmVl
RWIKIF9fWk43V2ViQ29yZUwyOGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHNFUE5TXzROb2Rl
RQotX19aTjdXZWJDb3JlMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFMTRyZW1vdmVk
TGFzdFJlZkV2CiBfX1pUaG44X043V2ViQ29yZTE2RG9jdW1lbnRGcmFnbWVudEQwRXYKIF9fWk43
V2ViQ29yZUwzM2NyZWF0ZUhUTUxQYXJhZ3JhcGhFbGVtZW50V3JhcHBlckVQTjNKU0M5RXhlY1N0
YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzExSFRNTEVs
ZW1lbnRFRUUKIF9fWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlcklOU18yMkpTSFRNTFBhcmFncmFw
aEVsZW1lbnRFTlNfMjBIVE1MUGFyYWdyYXBoRWxlbWVudEVFRVBOU18xMkpTRE9NV3JhcHBlckVQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBUMF8KQEAgLTI5NDcxLDEy
ICsyOTQ2NywxMCBAQCBfX1pON1dlYkNvcmUxM1NWR1VzZUVsZW1lbnQzMGZpbGxBdHRyaWJ1dGVU
b1Byb3BlcnR5VHlwZU1hcEV2CiBfX1pOSzdXZWJDb3JlMTJTVkdUcmFuc2Zvcm05dHJhbnNsYXRl
RXYKIF9fWk43V2ViQ29yZTEwRmxvYXRQb2ludDE1bmFycm93UHJlY2lzaW9uRWRkCiBfX1pON1dl
YkNvcmUxNUFmZmluZVRyYW5zZm9ybTlzZXRNYXRyaXhFZGRkZGRkCi1fX1pON1dlYkNvcmUxMFRy
ZWVTaGFyZWRJTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFRTE0cmVtb3ZlZExhc3RSZWZFdgogX19a
TjdXZWJDb3JlMThTVkdFbGVtZW50SW5zdGFuY2VEMEV2CiBfX1pON1dlYkNvcmUxMFNWR0VsZW1l
bnQyMXJlbW92ZUluc3RhbmNlTWFwcGluZ0VQTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFCiBfX1pO
SzNXVEY5SGFzaFRhYmxlSVBON1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUVTM19OU18xN0lk
ZW50aXR5RXh0cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNf
RUVTOV9FNGZpbmRJUzNfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1MzX1M3X0VFRUVO
U18yMkhhc2hUYWJsZUNvbnN0SXRlcmF0b3JJUzNfUzNfUzVfUzdfUzlfUzlfRUVSS1RfCiBfX1pO
M1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRl
bnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19F
RVM5X0U2cmVtb3ZlRVBTM18KLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRh
aW5lcklOU18xOFNWR0VsZW1lbnRJbnN0YW5jZUVTMV9FRXZQVDBfCiBfX1pUaG44X043V2ViQ29y
ZTE0U1ZHTGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043V2ViQ29yZTE4U1ZHUG9seWxpbmVFbGVt
ZW50RDBFdgogX19aVGhuOF9ON1dlYkNvcmUxN1NWR1BvbHlnb25FbGVtZW50RDBFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuY3BwCmluZGV4IGRlOWU0ZmY0M2Y0OWJkODY0ZmZjOTQ0YjJkYzFiYmQ5OGM4NzE5M2EuLmY5
YmJmNTcwZGM0MTE3ODE3NzZmOTA0YWQ4ZDcyYmI4NWJiOGUzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAK
QEAgLTgyLDYgKzgyLDcgQEAgdm9pZCBBdHRyOjpjcmVhdGVUZXh0Q2hpbGQoKQogICAgICAgICAv
LyBUaGlzIGRvZXMgZXZlcnl0aGluZyBhcHBlbmRDaGlsZCgpIHdvdWxkIGRvIGluIHRoaXMgc2l0
dWF0aW9uIChhc3N1bWluZyBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCB3YXMgc2V0KSwKICAgICAg
ICAgLy8gYnV0IG11Y2ggbW9yZSBlZmZpY2llbnRseS4KICAgICAgICAgdGV4dE5vZGUtPnNldFBh
cmVudE9ySG9zdE5vZGUodGhpcyk7CisgICAgICAgIHRleHROb2RlLT51bnNldExpZmV0aW1lT3du
ZXIoKTsKICAgICAgICAgc2V0Rmlyc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgIHNl
dExhc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCmluZGV4IGMyM2EwYjllOTBkMDBiMmRhNDlkOTZhMzk4NTJiNzdkYzM2NDNiN2Qu
LjNkNzZhMGZhODgyMmYzN2EyMWZjMTIzNzBmZDFhMzI0NmRkNDY1MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTgzLDcgKzgzLDEyIEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3RDaGlsZHJlbkFuZFJlbW92ZUZyb21PbGRQYXJlbnQoTm9kZSogbm9kZSwgTm9kZVZlY3RvciYg
bm9kZXMsCiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQogewotICAg
IHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXI8Tm9kZSwgQ29udGFpbmVyTm9kZT4odGhpcyk7
CisgICAgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlz
KTsKK30KKworYm9vbCBDb250YWluZXJOb2RlOjpnY0NoaWxkcmVuKCkKK3sKKyAgICByZXR1cm4g
Z2NDaGlsZHJlbkluQ29udGFpbmVyKHRoaXMpOwogfQogCiB2b2lkIENvbnRhaW5lck5vZGU6OnRh
a2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQpAQCAtMTExLDcgKzEx
Niw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJO
b2RlKiBvbGRQYXJlbnQpCiAKIENvbnRhaW5lck5vZGU6On5Db250YWluZXJOb2RlKCkKIHsKLSAg
ICByZW1vdmVBbGxDaGlsZHJlbigpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAifkNvbnRhaW5l
ck5vZGUoKSAlcFxuIiwgdGhpcyk7CiB9CiAKIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVm
b3JlKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25D
b2RlJiBlYywgYm9vbCBzaG91bGRMYXp5QXR0YWNoKQpAQCAtNDAxLDcgKzQwNiw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7CiAKLSAg
ICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgpKTsKKyAg
ICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgpLCBmYWxz
ZSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogCiAgICAgcmV0dXJuIGNo
aWxkOwpAQCAtNDQ3LDcgKzQ1Miw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3Zl
Q2hpbGQoTm9kZSogb2xkQ2hpbGQpCiAgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBvbGRD
aGlsZCk7CiAKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgcHJldiwgbmV4dCwgLTEpOwotICAg
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkob2xkQ2hpbGQpOworICAgIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkob2xkQ2hpbGQsIGZhbHNlKTsKIH0K
IAogLy8gdGhpcyBkaWZmZXJzIGZyb20gb3RoZXIgcmVtb3ZlIGZ1bmN0aW9ucyBiZWNhdXNlIGl0
IGZvcmNpYmx5IHJlbW92ZXMgYWxsIHRoZSBjaGlsZHJlbiwKQEAgLTUwOSw3ICs1MTQsNyBAQCB2
b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICBjaGlsZHJlbkNoYW5nZWQo
ZmFsc2UsIDAsIDAsIC1zdGF0aWNfY2FzdDxpbnQ+KHJlbW92ZWRDaGlsZHJlbkNvdW50KSk7CiAK
ICAgICBmb3IgKGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuQ291bnQ7ICsraSkKLSAgICAgICAg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0u
Z2V0KCkpOworICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KHJl
bW92ZWRDaGlsZHJlbltpXS5nZXQoKSwgZmFsc2UpOwogCiAgICAgYWxsb3dFdmVudERpc3BhdGNo
KCk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwpAQCAtNTc4LDE0ICs1ODMs
MTUgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+
IG5ld0NoaWxkKQogCiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogICAgIE5vZGUqIGxhc3Qg
PSBtX2xhc3RDaGlsZDsKKyAgICBOb2RlKiBjaGlsZCA9IG5ld0NoaWxkLmdldCgpOwogICAgIC8v
IEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgdGFrZSBhIFBhc3NSZWZQdHIuCi0gICAgYXBwZW5k
Q2hpbGRUb0NvbnRhaW5lcihuZXdDaGlsZC5nZXQoKSwgdGhpcyk7Ci0gICAgdHJlZVNjb3BlKCkt
PmFkb3B0SWZOZWVkZWQobmV3Q2hpbGQuZ2V0KCkpOworICAgIGFwcGVuZENoaWxkVG9Db250YWlu
ZXIoY2hpbGQsIHRoaXMpOworICAgIHRyZWVTY29wZSgpLT5hZG9wdElmTmVlZGVkKGNoaWxkKTsK
ICAgICAKICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0
cnVlLCBsYXN0LCAwLCAxKTsKLSAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcih0aGlzKS5u
b3RpZnkobmV3Q2hpbGQuZ2V0KCkpOworICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRo
aXMpLm5vdGlmeShjaGlsZCk7CiB9CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6c3VzcGVuZFBvc3RB
dHRhY2hDYWxsYmFja3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggNWY1NWM3
YmViNDhkMDQyMjJhNTYwNzFhNWRhOTA3N2IyMjE5ZjI1ZS4uYjQ0N2VlYTZlYzMzMjkzMTUwNDhi
MWIxZjcyZTUwMGFhOWNiNThkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC02
NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAvLyBIb3cgZG8gcmVtb3ZlQ2hpbGRyZW4gYW5kIHJl
bW92ZUFsbENoaWxkcmVuIGRpZmZlcj8KICAgICB2b2lkIHJlbW92ZUNoaWxkcmVuKCk7CiAgICAg
dm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOworICAgIGJvb2wgZ2NDaGlsZHJlbigpOwogCiAgICAg
dm9pZCB0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqKTsKIApAQCAtMTE3LDkgKzEx
OCwxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xh
c3MgR2VuZXJpY05vZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0Nv
bnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKik7Ci0KICAg
ICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+
CiAgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShH
ZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWlu
ZXIqKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVD
b250YWluZXI+CisgICAgZnJpZW5kIHZvaWQgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5l
cmljTm9kZUNvbnRhaW5lciopOworICAgIGZyaWVuZCBib29sIGdjQ2hpbGRyZW5JbkNvbnRhaW5l
cihDb250YWluZXJOb2RlKik7CiAKICAgICB2b2lkIHNldEZpcnN0Q2hpbGQoTm9kZSogY2hpbGQp
IHsgbV9maXJzdENoaWxkID0gY2hpbGQ7IH0KICAgICB2b2lkIHNldExhc3RDaGlsZChOb2RlKiBj
aGlsZCkgeyBtX2xhc3RDaGlsZCA9IGNoaWxkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCBjODk1OWRmYjgxNjNmNGVlOTViNDVlMDkz
ZjRmN2JjNTFjM2Y1NjNjLi5hNDBkZTdmYzcxODkyOTJjODNlNjIwOTA2MzM3YzRhZjEwZDMwZWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
QEAgLTU5LDYgKzU5LDggQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5
RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSoKICAgICBmb3IgKE5vZGUq
IGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAg
ICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsK
ICAgICB9CiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBub2RlLT55b3VuZ2VzdFNoYWRv
d1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQpAQCAtOTUsNiAr
OTcsOCBAQCB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJl
bW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBubwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBu
b2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7
CiAgICAgICAgIGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBub3Rp
ZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihjaGlsZCk7CiAgICAgfQogCiAg
ICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IGI1ZGZhNGZhNmFiZjQ2N2M0NWM4ZmMyN2ZmNmU5
NmMyMzNlZDg4YTEuLjdjYWQwZDFiODU0MDIzNWQ5NTkwMTliZGE0MThkYmU4NjE5MTUxYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yMyw5
ICsyMywxNCBAQAogI2RlZmluZSBDb250YWluZXJOb2RlQWxnb3JpdGhtc19oCiAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKKyNpbmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290
LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIs
MTggKzU3LDIxIEBAIGNsYXNzIENoaWxkTm9kZVJlbW92YWxOb3RpZmllciB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKENvbnRhaW5lck5vZGUqIGluc2Vy
dGlvblBvaW50KQogICAgICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpCisg
ICAgICAgICwgbV9saWZldGltZU93bmVyRm91bmQoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAg
IHZvaWQgbm90aWZ5KE5vZGUqKTsKKyAgICB2b2lkIG5vdGlmeShOb2RlKiwgYm9vbCk7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250
YWluZXJOb2RlKik7CiAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENv
bnRhaW5lck5vZGUqKTsKICAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5v
ZGUqKTsKICAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSop
OworICAgIHZvaWQgY2hlY2tJZkxpZmV0aW1lT3duZXIoTm9kZSopOwogCiAgICAgQ29udGFpbmVy
Tm9kZSogbV9pbnNlcnRpb25Qb2ludDsKKyAgICBib29sIG1fbGlmZXRpbWVPd25lckZvdW5kOwog
fTsKIAogbmFtZXNwYWNlIFByaXZhdGUgewpAQCAtNzMsMTEgKzgxLDIzOCBAQCBuYW1lc3BhY2Ug
UHJpdmF0ZSB7CiAKIH0KIAotLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgVHJlZVNoYXJlZC1kZXJp
dmVkIGNsYXNzZXMsIHdoaWNoIGhhdmUgYSAnTm9kZScgc3R5bGUgaW50ZXJmYWNlCi0vLyBUaGlz
IGFwcGxpZXMgdG8gJ0NvbnRhaW5lck5vZGUnIGFuZCAnU1ZHRWxlbWVudEluc3RhbmNlJworLy8g
RklYTUU6IFdyYXAgdXAgdHdvIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpcyBieSB0ZW1wbGF0ZS4K
K2lubGluZSBib29sIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcihTVkdFbGVtZW50SW5zdGFuY2UqIGNv
bnRhaW5lcikKK3sKKyAgICAvLyBUaGlzIGFzc2VydGlvbiBpcyBqdXN0IGZvciBwZXJmb3JtYW5j
ZS4gRm9yIHBlcmZvcm1hbmNlIHdlIHNob3VsZCBhdm9pZCBjYWxsaW5nCisgICAgLy8gZ2NDaGls
ZHJlbkluQ29udGFpbmVyKCkgaWYgY29udGFpbmVyLT5yZWZDb3VudCgpID4gMC4KKyAgICBBU1NF
UlQoIWNvbnRhaW5lci0+cmVmQ291bnQoKSk7CisgICAgQVNTRVJUKCFjb250YWluZXItPmlzTGlm
ZXRpbWVPd25lcigpKTsKKworICAgIFZlY3RvcjxTVkdFbGVtZW50SW5zdGFuY2UqPiBnYXJiYWdl
Tm9kZXM7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuSW5Db250YWluZXIoU1ZH
RWxlbWVudEluc3RhbmNlKikgJXAgYmVmb3JlXG4iLCBjb250YWluZXIpOworCisgICAgLy8gRE9N
IE5vZGVzIGFyZSB0cmF2ZXJzZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlci4gVGhlIHRyYXZlcnNh
bCBvcmRlciBkb2VzIG5vdCBtYXR0ZXIKKyAgICAvLyBmb3IgY29ycmVjdG5lc3MsIGJ1dCBjcml0
aWNhbCBmb3IgcGVyZm9ybWFuY2U6CisgICAgLy8gKDEpIFRoZSByb290IG5vZGUKKyAgICAvLyAo
MikgUmV2ZXJzZSBERlMgb3JkZXIgZm9yIHRoZSByZXN0IG9mIE5vZGVzCisgICAgU1ZHRWxlbWVu
dEluc3RhbmNlKiBub2RlID0gY29udGFpbmVyLT5sYXN0Q2hpbGQoKTsKKyAgICB3aGlsZSAobm9k
ZSkgeworICAgICAgICAvLyBBdCB0aGUgcG9pbnQgd2hlcmUgZ2NDaGlsZHJlbkluQ29udGFpbmVy
KCkgaXMgY2FsbGVkLCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUKKyAgICAgICAg
Ly8gRE9NIHRyZWUuCisgICAgICAgIEFTU0VSVCghbm9kZS0+aXNMaWZldGltZU93bmVyKCkpOwor
CisgICAgICAgIGdhcmJhZ2VOb2Rlcy5hcHBlbmQobm9kZSk7CisgICAgICAgIGlmIChub2RlLT5s
YXN0Q2hpbGQoKSkgeworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmxhc3RDaGlsZCgpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5wcmV2
aW91c1NpYmxpbmcoKSkgeworICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIE5vZGUgdGhhdCBo
YXMgMX4gcmVmY291bnQsIHdlIHNldCB0aGUgbm9kZSBhcyBhIGxpZmV0aW1lIG93bmVyLAorICAg
ICAgICAgICAgLy8gYW5kIHJldHVybiB3aXRob3V0IGRlbGV0aW5nIGFueSBOb2RlIGluIHRoZSBE
T00gdHJlZS4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJub2RlLT5yZWZDb3VudCgpPjAgJXAgcmVmQ291bnQ9
PSVkXG4iLCBub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5z
ZXRMaWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJn
Y0NoaWxkcmVuSW5Db250YWluZXIoKSAlcCBhZnRlclxuIiwgY29udGFpbmVyKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICBBU1NFUlQobm9kZSk7CisgICAgICAg
ICAgICBpZiAobm9kZSA9PSBjb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICBub2RlID0gMDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBpZiAobm9kZSkgeworICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIE5vZGUgdGhhdCBoYXMg
MX4gcmVmY291bnQsIHdlIHNldCB0aGUgbm9kZSBhcyBhIGxpZmV0aW1lIG93bmVyLAorICAgICAg
ICAgICAgLy8gYW5kIHJldHVybiB3aXRob3V0IGRlbGV0aW5nIGFueSBOb2RlIGluIHRoZSBET00g
dHJlZS4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZWZDb3VudCgpKSB7CisgICAgICAgICAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJub2RlLT5yZWZDb3VudCgpPjAgJXAgcmVmQ291bnQ9PSVk
XG4iLCBub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRM
aWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0No
aWxkcmVuSW5Db250YWluZXIoKSAlcCBhZnRlclxuIiwgY29udGFpbmVyKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5vZGUgPSBu
b2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIE5vdyBh
bGwgTm9kZXMgaW4gdGhlIERPTSB0cmVlIGhhdmUgMCByZWZjb3VudCwgYW5kIHdlIGNhbiBkZWxl
dGUgYWxsIHRoZSBOb2Rlcy4KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0aW9uIHN0YXJ0
ZWRcbiIpOworCisgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2FyYmFnZU5vZGVzLnNpemUoKTsKKyAg
ICAvLyBCZWZvcmUgc3RhcnRpbmcgZGVsZXRpb24sIHdlIGNsZWFyIGFsbCB0cmVlIHBvaW50ZXJz
IHNvIHRoYXQgTm9kZSBkZXN0cnVjdG9yCisgICAgLy8gd29uJ3QgY2F1c2UgdW5leHBlY3RlZCBw
b2ludGVyIGRlcmVmZXJlbmNlcyBkZXBlbmRpbmcgb24gdGhlIGRlbGV0aW9uIG9yZGVyLgorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBTVkdFbGVt
ZW50SW5zdGFuY2UqIHRhcmdldCA9IGdhcmJhZ2VOb2Rlc1tpXTsKKyAgICAgICAgdGFyZ2V0LT5z
ZXRQcmV2aW91c1NpYmxpbmcoMCk7CisgICAgICAgIHRhcmdldC0+c2V0TmV4dFNpYmxpbmcoMCk7
CisgICAgICAgIHRhcmdldC0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICAgICAgQVNTRVJU
KCF0YXJnZXQtPnJlZkNvdW50KCkpOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+aXNMaWZldGlt
ZU93bmVyKCkpOworICAgICAgICB0YXJnZXQtPnNldEZpcnN0Q2hpbGQoMCk7CisgICAgICAgIHRh
cmdldC0+c2V0TGFzdENoaWxkKDApOworICAgIH0KKyAgICBjb250YWluZXItPnNldEZpcnN0Q2hp
bGQoMCk7CisgICAgY29udGFpbmVyLT5zZXRMYXN0Q2hpbGQoMCk7CisKKyAgICAvLyBOb3cgaXQg
aXMgc2FmZSB0byBkZWxldGUgYWxsIHRoZSBOb2RlcyBpbiBhbnkgb3JkZXIuCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFNWR0VsZW1lbnRJbnN0
YW5jZSogdGFyZ2V0ID0gZ2FyYmFnZU5vZGVzW2ldOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImRlbGV0ZSAlcCh0YXJnZXQpIGJlZm9yZVxuIiwgdGFyZ2V0KTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIHRhcmdldC0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAg
ICAgICBkZWxldGUgdGFyZ2V0OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAl
cCh0YXJnZXQpIGFmdGVyXG4iLCB0YXJnZXQpOworICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcihTVkdFbGVtZW50SW5zdGFuY2UqKSAlcCBhZnRlclxu
IiwgY29udGFpbmVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGJvb2wgZ2NDaGls
ZHJlbkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUqIGNvbnRhaW5lcikKK3sKKyAgICAvLyBGSVhN
RTogT3B0aW1pemUgdGhlIGluaXRpYWwgdmVjdG9yIHNpemUuCisgICAgVmVjdG9yPE5vZGUqLCAx
MD4gZ2FyYmFnZU5vZGVzOworICAgIFZlY3RvcjxFbGVtZW50U2hhZG93KiwgMTA+IGdhcmJhZ2VF
bGVtZW50U2hhZG93czsKKyAgICBEZXF1ZTxTaGFkb3dSb290KiwgMTA+IHBlbmRpbmdTaGFkb3dS
b290czsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250
YWluZXJOb2RlKikgJXAgYmVmb3JlXG4iLCBjb250YWluZXIpOworCisgICAgTm9kZSogc3RhcnRO
b2RlID0gY29udGFpbmVyOworICAgIC8vIFRoZSB3aG9sZSBET00gdHJlZSBpcyB0cmF2ZXJzZWQg
aW4gdGhlIG9yZGVyOgorICAgIC8vICgxKSBMaWdodCBET00KKyAgICAvLyAoMikgU2hhZG93IERP
TSBmb3VuZCBpbiB0aGUgbGlnaHQgRE9NCisgICAgLy8gKDMpIFNoYWRvdyBET00gZm91bmQgaW4g
dGhlIHNoYWRvdyBET00gZm91bmQgaW4gdGhlIGxpZ2h0IERPTQorICAgIC8vICg0KSAuLi4gKHVu
dGlsIG5vIHNoYWRvdyBET00gaXMgZm91bmQuKQorICAgIC8vCisgICAgLy8gSW4gZWFjaCB0cmF2
ZXJzYWwsIERPTSBOb2RlcyBhcmUgdHJhdmVyc2VkIGluIHRoZSBmb2xsb3dpbmcgb3JkZXIuCisg
ICAgLy8gVGhlIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0ZXIgZm9yIGNvcnJlY3RuZXNz
LCBidXQgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlOgorICAgIC8vICgxKSBUaGUgcm9vdCBub2Rl
CisgICAgLy8gKDIpIFJldmVyc2UgREZTIG9yZGVyIGZvciB0aGUgcmVzdCBvZiBOb2RlcworICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgIC8vIFRoaXMgYXNzZXJ0aW9uIGlzIGp1c3QgZm9yIHBl
cmZvcm1hbmNlLiBGb3IgcGVyZm9ybWFuY2Ugd2Ugc2hvdWxkIGF2b2lkIGNhbGxpbmcKKyAgICAg
ICAgLy8gZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkgaWYgY29udGFpbmVyLT5yZWZDb3VudCgpID4g
MC4KKyAgICAgICAgQVNTRVJUKCFzdGFydE5vZGUtPnJlZkNvdW50KCkpOworICAgICAgICBBU1NF
UlQoIXN0YXJ0Tm9kZS0+aXNMaWZldGltZU93bmVyKCkpOworCisgICAgICAgIE5vZGUqIG5vZGUg
PSBzdGFydE5vZGUtPmxhc3RDaGlsZCgpOworICAgICAgICB3aGlsZSAobm9kZSkgeworICAgICAg
ICAgICAgLy8gQXQgdGhlIHBvaW50IHdoZXJlIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpIGlzIGNh
bGxlZCwgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlCisgICAgICAgICAgICAvLyBE
T00gdHJlZS4KKyAgICAgICAgICAgIEFTU0VSVCghbm9kZS0+aXNMaWZldGltZU93bmVyKCkpOwor
CisgICAgICAgICAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmIHRvRWxlbWVudChub2Rl
KS0+c2hhZG93KCkpIHsKKyAgICAgICAgICAgICAgICBnYXJiYWdlRWxlbWVudFNoYWRvd3MuYXBw
ZW5kKHRvRWxlbWVudChub2RlKS0+c2hhZG93KCkpOworICAgICAgICAgICAgICAgIGZvciAoU2hh
ZG93Um9vdCogcm9vdCA9IG5vZGUtPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0g
cm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQXQgdGhl
IHBvaW50IHdoZXJlIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpIGlzIGNhbGxlZCwgdGhlcmUgaXMg
bm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIERPTSB0cmVl
LgorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXJvb3QtPmlzTGlmZXRpbWVPd25lcigpKTsK
KworICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgc2hhZG93IHJvb3QgdGhhdCBo
YXMgMX4gcmVmY291bnQsIHdlIHNldCB0aGUgc2hhZG93IHJvb3QgYXMKKyAgICAgICAgICAgICAg
ICAgICAgLy8gYSBsaWZldGltZSBvd25lciwgYW5kIHJldHVybiBpbW1lZGlhdGVseSB3aXRob3V0
IGRlbGV0aW5nIGFueSBOb2RlIGluCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBET00gdHJl
ZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJvb3QtPnJlZkNvdW50KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAic2hhZG93Um9vdC0+cmVmQ291bnQo
KT4wICVwIHJlZkNvdW50PT0lZFxuIiwgcm9vdCwgcm9vdC0+cmVmQ291bnQoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICByb290LT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVw
IGFmdGVyXG4iLCBjb250YWluZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAicGVuZGluZ1NoYWRvd1Jvb3RzLmFwcGVuZChyb290KSByb290PSVwXG4iLCBy
b290KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgdGhlIHNoYWRvdyByb290IHRv
IGJlIHRyYXZlcnNlZCBsYXRlci4KKyAgICAgICAgICAgICAgICAgICAgcGVuZGluZ1NoYWRvd1Jv
b3RzLmFwcGVuZChyb290KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdhcmJhZ2VOb2Rlcy5hcHBlbmQobm9kZSkgbm9k
ZT0lcFxuIiwgbm9kZSk7CisgICAgICAgICAgICBnYXJiYWdlTm9kZXMuYXBwZW5kKG5vZGUpOwor
CisgICAgICAgICAgICBpZiAobm9kZS0+bGFzdENoaWxkKCkpIHsKKyAgICAgICAgICAgICAgICBu
b2RlID0gbm9kZS0+bGFzdENoaWxkKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSAoIW5vZGUtPnByZXZpb3VzU2libGluZygpKSB7
CisgICAgICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIE5vZGUgdGhhdCBoYXMgMX4gcmVmY291
bnQsIHdlIHNldCB0aGUgbm9kZSBhcyBhIGxpZmV0aW1lIG93bmVyLAorICAgICAgICAgICAgICAg
IC8vIGFuZCByZXR1cm4gd2l0aG91dCBkZWxldGluZyBhbnkgTm9kZSBpbiB0aGUgRE9NIHRyZWUu
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJub2RlLT5yZWZDb3VudCgpPjAgJXAgcmVmQ291bnQ9
PSVkXG4iLCBub2RlLCBub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4iLCBjb250YWluZXIpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQobm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRO
b2RlKSB7CisgICAgICAgICAgICAgICAgICAgIG5vZGUgPSAwOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobm9kZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBOb2RlIHRoYXQgaGFz
IDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIG5vZGUgYXMgYSBsaWZldGltZSBvd25lciwKKyAgICAg
ICAgICAgICAgICAvLyBhbmQgcmV0dXJuIHdpdGhvdXQgZGVsZXRpbmcgYW55IE5vZGUgaW4gdGhl
IERPTSB0cmVlLgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5yZWZDb3VudCgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+cmVmQ291bnQoKT4wICVw
IHJlZkNvdW50PT0lZFxuIiwgbm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuSW5Db250YWluZXIoKSAlcCBhZnRlclxuIiwgY29u
dGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHBl
bmRpbmcgc2hhZG93IHJvb3RzLCBhbGwgTm9kZSB0cmF2ZXJzYWxzIGFyZSBkb25lLgorICAgICAg
ICBpZiAocGVuZGluZ1NoYWRvd1Jvb3RzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBzdGFydE5vZGUgPSBwZW5kaW5nU2hhZG93Um9vdHMudGFrZUZpcnN0KCk7CisgICAg
fQorCisgICAgLy8gTm93IGFsbCBOb2RlcyBpbiB0aGUgRE9NIHRyZWUgaGF2ZSAwIHJlZmNvdW50
LCBhbmQgd2UgY2FuIGRlbGV0ZSBhbGwgdGhlIE5vZGVzLgorICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiZGVsZXRpb24gc3RhcnRlZFxuIik7CisKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBnYXJiYWdl
RWxlbWVudFNoYWRvd3Muc2l6ZSgpOworICAgIC8vIEJlZm9yZSBzdGFydGluZyBkZWxldGlvbiwg
d2UgY2xlYXIgYWxsIHRyZWUgcG9pbnRlcnMgc28gdGhhdCBOb2RlIGRlc3RydWN0b3IKKyAgICAv
LyB3b24ndCBjYXVzZSB1bmV4cGVjdGVkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGRlcGVuZGluZyBv
biB0aGUgZGVsZXRpb24gb3JkZXIuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKQorICAgICAgICBnYXJiYWdlRWxlbWVudFNoYWRvd3NbaV0tPmZvcmNlUmVtb3ZlQWxs
U2hhZG93Um9vdHMoKTsKKworICAgIGxlbmd0aCA9IGdhcmJhZ2VOb2Rlcy5zaXplKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIE5vZGUqIHRh
cmdldCA9IGdhcmJhZ2VOb2Rlc1tpXTsKKyAgICAgICAgdGFyZ2V0LT5zZXRQcmV2aW91c1NpYmxp
bmcoMCk7CisgICAgICAgIHRhcmdldC0+c2V0TmV4dFNpYmxpbmcoMCk7CisgICAgICAgIHRhcmdl
dC0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKKyAgICAgICAgQVNTRVJUKCF0YXJnZXQtPnJlZkNv
dW50KCkpOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+aXNMaWZldGltZU93bmVyKCkpOworICAg
ICAgICBpZiAodGFyZ2V0LT5pc0NvbnRhaW5lck5vZGUoKSkgeworICAgICAgICAgICAgQ29udGFp
bmVyTm9kZSogdGFyZ2V0Q29udGFpbmVyID0gc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHRh
cmdldCk7CisgICAgICAgICAgICB0YXJnZXRDb250YWluZXItPnNldEZpcnN0Q2hpbGQoMCk7Cisg
ICAgICAgICAgICB0YXJnZXRDb250YWluZXItPnNldExhc3RDaGlsZCgwKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBjb250YWluZXItPnNldEZpcnN0Q2hpbGQoMCk7CisgICAgY29udGFpbmVyLT5z
ZXRMYXN0Q2hpbGQoMCk7CisKKyAgICAvLyBOb3cgaXQgaXMgc2FmZSB0byBkZWxldGUgYWxsIHRo
ZSBOb2RlcyBpbiBhbnkgb3JkZXIuCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7CisgICAgICAgIE5vZGUqIHRhcmdldCA9IGdhcmJhZ2VOb2Rlc1tpXTsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAodGFyZ2V0KSBiZWZvcmVcbiIsIHRhcmdl
dCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICB0YXJnZXQtPm1fZGVsZXRpb25IYXNCZWd1biA9
IHRydWU7CisjZW5kaWYKKyAgICAgICAgZGVsZXRlIHRhcmdldDsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJkZWxldGUgJXAodGFyZ2V0KSBhZnRlclxuIiwgdGFyZ2V0KTsKKyAgICB9Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuSW5Db250YWluZXIoQ29udGFpbmVyTm9k
ZSopICVwIGFmdGVyXG4iLCBjb250YWluZXIpOworICAgIHJldHVybiB0cnVlOworfQorCisvLyBG
SVhNRTogUmVwbGFjZSBhbGwgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcigpcyB3aXRoIGdjQ2hp
bGRyZW5JbkNvbnRhaW5lcigpLgogdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdl
bmVyaWNOb2RlQ29udGFpbmVyPgotaW5saW5lIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRh
aW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKQoraW5saW5lIHZvaWQgcmVtb3Zl
Q2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKQogewor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAicmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGJl
Zm9yZVxuIiwgY29udGFpbmVyKTsKICAgICAvLyBMaXN0IG9mIG5vZGVzIHRvIGJlIGRlbGV0ZWQu
CiAgICAgR2VuZXJpY05vZGUqIGhlYWQgPSAwOwogICAgIEdlbmVyaWNOb2RlKiB0YWlsID0gMDsK
QEAgLTg3LDggKzMyMiw2IEBAIGlubGluZSB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWlu
ZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKICAgICBHZW5lcmljTm9kZSogbjsK
ICAgICBHZW5lcmljTm9kZSogbmV4dDsKICAgICB3aGlsZSAoKG4gPSBoZWFkKSAhPSAwKSB7Ci0g
ICAgICAgIEFTU0VSVChuLT5tX2RlbGV0aW9uSGFzQmVndW4pOwotCiAgICAgICAgIG5leHQgPSBu
LT5uZXh0U2libGluZygpOwogICAgICAgICBuLT5zZXROZXh0U2libGluZygwKTsKIApAQCAtOTks
OCArMzMyLDE0IEBAIGlubGluZSB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2Vu
ZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKICAgICAgICAgaWYgKG4tPmhhc0NoaWxkTm9k
ZXMoKSkKICAgICAgICAgICAgIFByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWU8
R2VuZXJpY05vZGUsIEdlbmVyaWNOb2RlQ29udGFpbmVyPihoZWFkLCB0YWlsLCBzdGF0aWNfY2Fz
dDxHZW5lcmljTm9kZUNvbnRhaW5lcio+KG4pKTsKIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
bi0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgImRlbGV0ZSAlcCBiZWZvcmVcbiIsIG4pOwogICAgICAgICBkZWxldGUgbjsKKyAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAgYWZ0ZXJcbiIsIG4pOwogICAgIH0K
KyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInJlbW92ZUNoaWxkcmVuSW5Db250YWluZXIoKSAlcCBh
ZnRlclxuIiwgY29udGFpbmVyKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNs
YXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgpAQCAtMTE4LDcgKzM1Nyw3IEBAIGlubGluZSB2b2lk
IGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNv
bnRhaW5lciogY29uCiAgICAgY29udGFpbmVyLT5zZXRMYXN0Q2hpbGQoY2hpbGQpOwogfQogCi0v
LyBIZWxwZXIgbWV0aG9kcyBmb3IgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lciwgaGlkZGVu
IGZyb20gV2ViQ29yZSBuYW1lc3BhY2UKKy8vIEhlbHBlciBtZXRob2RzIGZvciByZW1vdmVDaGls
ZHJlbkluQ29udGFpbmVyLCBoaWRkZW4gZnJvbSBXZWJDb3JlIG5hbWVzcGFjZQogbmFtZXNwYWNl
IFByaXZhdGUgewogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVy
aWNOb2RlQ29udGFpbmVyLCBib29sIGRpc3BhdGNoUmVtb3ZhbE5vdGlmaWNhdGlvbj4KQEAgLTEz
Nyw3ICszNzYsNyBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAgICAgICBpZiAoRG9jdW1l
bnQqIGNvbnRhaW5lckRvY3VtZW50ID0gY29udGFpbmVyLT5vd25lckRvY3VtZW50KCkpCiAgICAg
ICAgICAgICAgICAgY29udGFpbmVyRG9jdW1lbnQtPmFkb3B0SWZOZWVkZWQobm9kZSk7CiAgICAg
ICAgICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIENoaWxkTm9k
ZVJlbW92YWxOb3RpZmllcihjb250YWluZXIpLm5vdGlmeShub2RlKTsKKyAgICAgICAgICAgICAg
ICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoY29udGFpbmVyKS5ub3RpZnkobm9kZSwgdHJ1ZSk7
CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xNjUsOSArNDA0LDYgQEAgbmFtZXNwYWNlIFByaXZh
dGUgewogICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JIb3N0Tm9kZSgwKTsKIAogICAgICAgICAg
ICAgaWYgKCFuLT5yZWZDb3VudCgpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgICAg
IG4tPm1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICAv
LyBBZGQgdGhlIG5vZGUgdG8gdGhlIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAgICAg
ICAgICAgICAgICAvLyBSZXVzZSB0aGUgbmV4dFNpYmxpbmcgcG9pbnRlciBmb3IgdGhpcyBwdXJw
b3NlLgogICAgICAgICAgICAgICAgIGlmICh0YWlsKQpAQCAtMTkyLDcgKzQyOCw5IEBAIGlubGlu
ZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRv
RG9jdW1lbnQoTm9kZSogbm9kCiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9j
dW1lbnQoKSk7CiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3Qobm9kZSk7CisgICAgLy8gZnByaW50
ZihzdGRlcnIsICJub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKSAlcCBpbnNlcnRpb25Q
b2ludD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCk7CiAgICAgTm9kZTo6SW5zZXJ0aW9u
Tm90aWZpY2F0aW9uUmVxdWVzdCByZXF1ZXN0ID0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0
aW9uUG9pbnQpOworICAgIG5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigpOwogCiAgICAgaWYgKG5v
ZGUtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJ
bnRvRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKQEAgLTIwNiw3ICs0NDQsOSBAQCBp
bmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVk
SW50b1RyZWUoQ29udGFpbmVyTm9kZQogICAgIEFTU0VSVCghbV9pbnNlcnRpb25Qb2ludC0+aW5E
b2N1bWVudCgpKTsKICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CiAKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIm5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKCkgJXAgaW5zZXJ0aW9uUG9pbnQ9
JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQpOwogICAgIE5vZGU6Okluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgcmVxdWVzdCA9IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlvblBv
aW50KTsKKyAgICBub2RlLT51bnNldExpZmV0aW1lT3duZXIoKTsKIAogICAgIG5vdGlmeURlc2Nl
bmRhbnRJbnNlcnRlZEludG9UcmVlKG5vZGUpOwogICAgIGlmIChyZXF1ZXN0ID09IE5vZGU6Oklu
c2VydGlvblNob3VsZENhbGxEaWROb3RpZnlEZXNjZW5kYW50SW5zZXJ0aW9ucykKQEAgLTIzNSwx
MyArNDc1LDE3IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3Rp
ZnkoTm9kZSogbm9kZSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KG5v
ZGUpOwogICAgIGVsc2UgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICBub3Rp
ZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAgIGVsc2UK
KyAgICAgICAgbm9kZS0+dW5zZXRMaWZldGltZU93bmVyKCk7CiB9CiAKIAogaW5saW5lIHZvaWQg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVChtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkp
OworICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZVJlbW92YWxGcm9tRG9jdW1lbnQo
KSAlcCBpbnNlcnRpb25Qb2ludD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCk7CiAgICAg
bm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRpb25Qb2ludCk7CisgICAgY2hlY2tJZkxpZmV0aW1l
T3duZXIobm9kZSk7CiAKICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAg
IG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2Rl
KSk7CkBAIC0yNTIsMTggKzQ5Niw1MiBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSogbgogICAgIEFT
U0VSVCghbV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKICAgICBmb3JiaWRFdmVudERp
c3BhdGNoKCk7CiAKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVSZW1vdmFsRnJv
bVRyZWUoKSAlcCBpbnNlcnRpb25Qb2ludD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCk7
CiAgICAgbm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRpb25Qb2ludCk7CisgICAgY2hlY2tJZkxp
ZmV0aW1lT3duZXIobm9kZSk7CisKICAgICBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVl
KG5vZGUpOwogCiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CiB9CiAKLWlubGluZSB2b2lkIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCitpbmxpbmUgdm9pZCBD
aGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShOb2RlKiBub2RlLCBib29sIGluc2VydGlv
blBvaW50RGVsZXRpb25IYXNCZWd1bikKIHsKICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpKQog
ICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChub2RlKTsKICAgICBlbHNlIGlm
IChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9t
VHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAgIGVsc2UKKyAgICAgICAgY2hlY2tJZkxp
ZmV0aW1lT3duZXIobm9kZSk7CisKKyAgICBpZiAobV9saWZldGltZU93bmVyRm91bmQgJiYgIWlu
c2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1bikgeworICAgICAgICAvLyBJZiBhIGxpZmV0aW1l
IG93bmVyIGlzIGZvdW5kIGluIHRoZSBET00gdHJlZSBiZWluZyByZW1vdmVkLAorICAgICAgICAv
LyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUgb3Jp
dGluYWwgRE9NIHRyZWUuCisgICAgICAgIC8vIFNvIHdlIGNhbGwgc2VhcmNoTmV3TGlmZXRpbWVP
d25lcigpIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50IHRvIHNldCBhIG5ldworICAgICAgICAvLyBs
aWZldGltZSBvd25lciBvZiB0aGUgb3JpZ2luYWwgRE9NIHRyZWUsIGV4Y2VwdCBmb3IgdGhlIGNh
c2UKKyAgICAgICAgLy8gd2hlcmUgdGhlIG9yaWdpbmFsIHRyZWUgaXMgYmVpbmcgcmVtb3ZlZCBq
dXN0IHJpZ2h0IG5vdworICAgICAgICAvLyAoaS5lLiBleGNlcHQgZm9yIHRoZSBjYXNlIG9mIGlu
c2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1biA9PSB0cnVlKS4KKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3VuZD10cnVlICFpbnNlcnRpb25Qb2ludERlbGV0
aW9uSGFzQmVndW4gJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9p
bnQpOworICAgICAgICBtX2luc2VydGlvblBvaW50LT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7
CisgICAgfSBlbHNlIGlmICghbV9saWZldGltZU93bmVyRm91bmQpIHsKKyAgICAgICAgLy8gSWYg
YSBsaWZldGltZSBvd25lciBpcyBub3QgZm91bmQgaW4gdGhlIERPTSB0cmVlIGJlaW5nIHJlbW92
ZWQsCisgICAgICAgIC8vIGl0IGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGV4YWN0bHkgb25lIGxp
ZmV0aW1lIG93bmVyIGluIHRoZSBvcmlnaW5hbCBET00KKyAgICAgICAgLy8gdHJlZS4gU28gd2Ug
anVzdCBjYWxsIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3IgdGhlIERPTSB0cmVlIGJlaW5n
IHJlbW92ZWQKKyAgICAgICAgLy8gdG8gc2V0IGEgbmV3IGxpZmV0aW1lIG93bmVyIG9mIHRoZSBE
T00gdHJlZSBiZWluZyByZW1vdmVkLgorICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fbGlm
ZXRpbWVPd25lckZvdW5kPWZhbHNlICVwIGluc2VydGlvblBvaW50PSVwXG4iLCBub2RlLCBtX2lu
c2VydGlvblBvaW50KTsKKyAgICAgICAgbm9kZS0+c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpOwor
ICAgIH0KK30KKworaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpjaGVja0lm
TGlmZXRpbWVPd25lcihOb2RlKiBub2RlKQoreworICAgIGlmIChub2RlLT5pc0xpZmV0aW1lT3du
ZXIoKSkgeworICAgICAgICAvLyBPbmUgRE9NIHRyZWUgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0
IG1vc3Qgb25lIGxpZmV0aW1lIG93bmVyLAorICAgICAgICAvLyBzbyBtX2xpZmV0aW1lT3duZXJG
b3VuZCBzaG91bGQgbm90IGJlY29tZSB0cnVlIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBBU1NF
UlQoIW1fbGlmZXRpbWVPd25lckZvdW5kKTsKKyAgICAgICAgbV9saWZldGltZU93bmVyRm91bmQg
PSB0cnVlOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vZGUtPmlzTGlmZXRpbWVPd25l
cigpPT10cnVlICVwXG4iLCBub2RlKTsKKyAgICB9CiB9CiAKIGNsYXNzIENoaWxkRnJhbWVEaXNj
b25uZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMTMyNjgwYWIwOTE4ODFkY2Qw
YTU0MWJmNTBlYzUzMWY2NDRjYzJjYS4uZGE1YWU1N2RlY2RjNzNhNWQzMmUzMDI0MzgzODk3M2Q1
YjA1NmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC02NTMsNTkgKzY1Myw4OCBAQCBE
b2N1bWVudDo6fkRvY3VtZW50KCkKICAgICBJbnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291
bnRlcihJbnNwZWN0b3JDb3VudGVyczo6RG9jdW1lbnRDb3VudGVyKTsKIH0KIAotdm9pZCBEb2N1
bWVudDo6cmVtb3ZlZExhc3RSZWYoKQordm9pZCBEb2N1bWVudDo6Z2NDaGlsZHJlbk9mRG9jdW1l
bnQoKQogewotICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBpZiAobV9ndWFy
ZFJlZkNvdW50KSB7Ci0gICAgICAgIC8vIElmIHJlbW92aW5nIGEgY2hpbGQgcmVtb3ZlcyB0aGUg
bGFzdCBzZWxmLW9ubHkgcmVmLCB3ZSBkb24ndAotICAgICAgICAvLyB3YW50IHRoZSBzY29wZSB0
byBiZSBkZXN0cnVjdGVkIHVudGlsIGFmdGVyCi0gICAgICAgIC8vIHJlbW92ZUFsbENoaWxkcmVu
IHJldHVybnMsIHNvIHdlIGd1YXJkIG91cnNlbHZlcyB3aXRoIGFuCi0gICAgICAgIC8vIGV4dHJh
IHNlbGYtb25seSByZWYuCi0gICAgICAgIGd1YXJkUmVmKCk7Ci0KLSAgICAgICAgLy8gV2UgbXVz
dCBtYWtlIHN1cmUgbm90IHRvIGJlIHJldGFpbmluZyBhbnkgb2Ygb3VyIGNoaWxkcmVuIHRocm91
Z2gKLSAgICAgICAgLy8gdGhlc2UgZXh0cmEgcG9pbnRlcnMgb3Igd2Ugd2lsbCBjcmVhdGUgYSBy
ZWZlcmVuY2UgY3ljbGUuCi0gICAgICAgIG1fZG9jVHlwZSA9IDA7Ci0gICAgICAgIG1fZm9jdXNl
ZE5vZGUgPSAwOwotICAgICAgICBtX2hvdmVyTm9kZSA9IDA7Ci0gICAgICAgIG1fYWN0aXZlTm9k
ZSA9IDA7Ci0gICAgICAgIG1fdGl0bGVFbGVtZW50ID0gMDsKLSAgICAgICAgbV9kb2N1bWVudEVs
ZW1lbnQgPSAwOwotICAgICAgICBtX2NvbnRleHRGZWF0dXJlcyA9IENvbnRleHRGZWF0dXJlczo6
ZGVmYXVsdFN3aXRjaCgpOworICAgIC8vIE1ha2Ugc3VyZSBub3QgdG8gYmUgcmVmZXJlbmNpbmcg
YW55IG9mIHRoZSBjaGlsZHJlbiB0aHJvdWdoCisgICAgLy8gdGhlc2UgZXh0cmEgcG9pbnRlcnMs
IG9yIHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlLgorICAgIG1fZG9jVHlwZSA9IDA7
CisgICAgbV9mb2N1c2VkTm9kZSA9IDA7CisgICAgbV9ob3Zlck5vZGUgPSAwOworICAgIG1fYWN0
aXZlTm9kZSA9IDA7CisgICAgbV90aXRsZUVsZW1lbnQgPSAwOworICAgIG1fZG9jdW1lbnRFbGVt
ZW50ID0gMDsKKyAgICBtX2NvbnRleHRGZWF0dXJlcyA9IENvbnRleHRGZWF0dXJlczo6ZGVmYXVs
dFN3aXRjaCgpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICAgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudCA9IDA7Ci0gICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRTdGFjay5jbGVhcigp
OworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnRT
dGFjay5jbGVhcigpOwogI2VuZGlmCiAKLSAgICAgICAgZGV0YWNoUGFyc2VyKCk7CisgICAgLy8g
VGVhciBkb3duIHNjb3BlIGluZm9ybWF0aW9uIHVwZnJvbnQgdG8gYXZvaWQgaGF2aW5nIHN0YWxl
IHJlZmVyZW5jZXMKKyAgICAvLyBpbiB0aGUgaWQgbWFwLiBUaGlzIG11c3QgYmUgZG9uZSBiZWZv
cmUgZ2NDaGlsZHJlbigpLCBiZWNhdXNlIGdjQ2hpbGRyZW4oKQorICAgIC8vIGNhbiBkZWxldGUg
Tm9kZXMgYW5kIHRoZSBOb2RlIGRlc3RydWN0b3IgY2FuIGxvb2sgdXAgdGhlIGlkIG1hcC4KKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkgJXBcbiIsIHRoaXMp
OworICAgIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CiAKLSAgICAgICAgLy8gcmVtb3ZlQWxsQ2hp
bGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywKLSAgICAgICAgLy8gc28gdGVh
ciBkb3duIHNjb3BlIGluZm9ybWF0aW9uIHVwZnJvbnQgdG8gYXZvaWQgaGF2aW5nIHN0YWxlIHJl
ZmVyZW5jZXMgaW4gdGhlIG1hcC4KLSAgICAgICAgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKLSAg
ICAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hp
bGRyZW4oKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIGJvb2wgY2hpbGRyZW5SZW1vdmVkID0g
Z2NDaGlsZHJlbigpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbigpICVwIGNo
aWxkcmVuUmVtb3ZlZD0lZCBhZnRlclxuIiwgdGhpcywgY2hpbGRyZW5SZW1vdmVkKTsKKyNpZm5k
ZWYgTkRFQlVHCisgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKKyNlbmRp
ZgorCisgICAgaWYgKGNoaWxkcmVuUmVtb3ZlZCkgeworICAgICAgICBkZXRhY2hQYXJzZXIoKTsK
IAogICAgICAgICBtX21hcmtlcnMtPmRldGFjaCgpOwogCiAgICAgICAgIG1fY3NzQ2FudmFzRWxl
bWVudHMuY2xlYXIoKTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKLSAg
ICAgICAgLy8gRklYTUU6IGNvbnNpZGVyIHVzaW5nIEFjdGl2ZURPTU9iamVjdC4KKyAgICAgICAg
Ly8gRklYTUU6IENvbnNpZGVyIHVzaW5nIEFjdGl2ZURPTU9iamVjdC4KICAgICAgICAgaWYgKG1f
c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKQogICAgICAgICAgICAgbV9zY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXItPmNsZWFyRG9jdW1lbnRQb2ludGVyKCk7CiAgICAgICAgIG1fc2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyLmNsZWFyKCk7CiAjZW5kaWYKKyAgICAgICAgLy8gTm93IHdl
IGp1c3QgaGF2ZSB0byB3YWl0IGZvciBndWFyZFJlZkNvdW50IHRvIGJlY29tZSAwLgorICAgIH0g
ZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBJZiBjaGlsZHJlblJlbW92ZWQgaXMgZmFsc2UsIGl0
IG1lYW5zIHRoYXQgZ2NDaGlsZHJlbigpIGRpZCBub3RoaW5nLgorICAgICAgICAvLyBBbGwgdGhl
IE5vZGVzIGluIHRoaXMgZG9jdW1lbnQgaXMgc3RpbGwgYWxpdmUuIFdlIG5lZWQgdG8gcmVzdG9y
ZSBhbGwgdGhlCisgICAgICAgIC8vIFJlZlB0cnMgdGhhdCB3ZSBjbGVhcmVkIGp1c3QgYmVmb3Jl
IGdjQ2hpbGRyZW4oKSwgYW5kIHJlc3RvcmUgdGhlIGlkIG1hcAorICAgICAgICAvLyBpbiB0aGUg
dHJlZSBzY29wZS4KKyAgICB9Cit9CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgIG1faW5SZW1v
dmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7Ci0jZW5kaWYKK3ZvaWQgRG9jdW1lbnQ6OnNlYXJj
aE5ld0xpZmV0aW1lT3duZXIoKQoreworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6
OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIEFTU0VS
VCghcmVmQ291bnQoKSk7CisgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOworICAgIGlm
IChtX2d1YXJkUmVmQ291bnQpIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJtX2d1YXJk
UmVmQ291bnQ+MCAlcFxuIiwgdGhpcyk7CisKKyAgICAgICAgLy8gSWYgZ2NDaGlsZHJlbigpIHJl
bW92ZXMgdGhlIGxhc3QgZ3VhcmRSZWZDb3VudCwgdGhlIGRvY3VtZW50IHdpbGwgYmUKKyAgICAg
ICAgLy8gZGVzdHJ1Y3RlZCBpbnNpZGUgZ2NDaGlsZHJlbigpLiBUbyBhdm9pZCB0aGUgc2l0dWF0
aW9uLCB3ZSBndWFyZCBvdXJzZWx2ZXMKKyAgICAgICAgLy8gd2l0aCBhbiBleHRyYSBzZWxmLW9u
bHkgZ3VhcmRSZWZDb3VudC4KKyAgICAgICAgZ3VhcmRSZWYoKTsKKworICAgICAgICBnY0NoaWxk
cmVuT2ZEb2N1bWVudCgpOwogCiAgICAgICAgIGd1YXJkRGVyZWYoKTsKLSAgICB9IGVsc2Ugewot
I2lmbmRlZiBOREVCVUcgCi0gICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7IAotI2Vu
ZGlmIAotICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJE
b2N1bWVudDo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fZ3VhcmRSZWZD
b3VudD0wICVwXG4iLCB0aGlzKTsKKworICAgIC8vIFByb2JhYmx5IHRoaXMgZ2NDaGlsZHJlbk9m
RG9jdW1lbnQoKSBpcyBub3QgbmVlZGVkLiBDaGlsZCBub2RlcyB3b3VsZCBiZQorICAgIC8vIGFs
cmVhZHkgcmVtb3ZlZCwgYW5kIHRodXMgZ2NDaGlsZHJlbk9mRG9jdW1lbnQoKSB3aWxsIGRvIG5v
dGhpbmcuCisgICAgZ2NDaGlsZHJlbk9mRG9jdW1lbnQoKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImRlbGV0ZSAlcChyb290KSBiZWZvcmVcbiIsIHRoaXMpOworI2lmbmRlZiBOREVCVUcKKyAg
ICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgZGVsZXRlIHRoaXM7Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAocm9vdCkgYWZ0ZXJcbiIsIHRoaXMpOwor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50
QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRl
eCA2ODg4NWZiMzNmNDk1MjE0YzMxYTM3MDMzOGZlYzgwNGI0YjExY2FkLi5iYmQzYmVhNzI4Yzgw
YjMzMWFhMWMwOWE2NzMzZmQyM2E1MDk1MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjE0
LDEwICsyMTQsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3Vu
KTsKICAgICAgICAgLS1tX2d1YXJkUmVmQ291bnQ7CiAgICAgICAgIGlmICghbV9ndWFyZFJlZkNv
dW50ICYmICFyZWZDb3VudCgpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgbV9kZWxl
dGlvbkhhc0JlZ3VuID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICAgICAgZGVsZXRlIHRoaXM7Cisg
ICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImd1YXJkRGVyZWYoKSAlcCBiZWZvcmVcbiIs
IHRoaXMpOworICAgICAgICAgICAgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpOworICAgICAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJndWFyZERlcmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC0xMTQyLDcgKzExNDEsOCBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRl
Q291bnRJbmNyZW1lbnRlcjsKIAotICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKKyAgICB2b2lk
IGdjQ2hpbGRyZW5PZkRvY3VtZW50KCk7CisgICAgdm9pZCBzZWFyY2hOZXdMaWZldGltZU93bmVy
KCk7CiAgICAgCiAgICAgdm9pZCBkZXRhY2hQYXJzZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDlkYTE1NmI0ZjFhMGE5MGVmMjhlNzI4MmZlZGE2MTYxYTM5ZWZiYjMuLjhkNWFiN2I4
NzJkYmYzZWFlY2U2NzAyNjA1ZWNkMzAxNTgyMTlmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTE1MjEsNiArMTUyMSw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24gKkVsZW1lbnQ6OnN0eWxl
KCkKIAogdm9pZCBFbGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikK
IHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1lbnQ6OmZvY3VzKCkgJXBcbiIsIHRoaXMp
OwogICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmNwcAppbmRleCAxZjY1MGY3NzIyYjI4MzMzNDRhYWM5ZDY4NTY4MzAw
NDRmOTZlOGFjLi40N2M0ZWU4ZTMxY2M3ODI3ZmZjNDM5YmRhMjJiZTI2NThmYmRkNDU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC03Nyw2ICs3Nyw3IEBAIHZvaWQgRWxl
bWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRy
PFNoYWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKHNoYWRv
d0hvc3QtPnRyZWVTY29wZSgpKTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5n
ZXQoKSk7CiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoKSBzaGFkb3dSb290
PSVwIHNoYWRvd0hvc3Q9JXBcbiIsIHNoYWRvd1Jvb3QuZ2V0KCksIHNoYWRvd0hvc3QpOwogICAg
IENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290
LmdldCgpKTsKIAogICAgIGlmIChzaGFkb3dIb3N0LT5hdHRhY2hlZCgpICYmICFzaGFkb3dSb290
LT5hdHRhY2hlZCgpKQpAQCAtODcsNiArODgsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNo
YWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAog
CiB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKIHsKKyAgICBpZiAo
bV9zaGFkb3dSb290cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIERvbnQg
cHJvdGVjdCB0aGlzIHJlZiBjb3VudC4KICAgICBFbGVtZW50KiBzaGFkb3dIb3N0ID0gaG9zdCgp
OwogCkBAIC0xMDIsMTIgKzEwNiwyNSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNo
YWRvd1Jvb3RzKCkKICAgICAgICAgb2xkUm9vdC0+c2V0UHJldigwKTsKICAgICAgICAgb2xkUm9v
dC0+c2V0TmV4dCgwKTsKICAgICAgICAgc2hhZG93SG9zdC0+ZG9jdW1lbnQoKS0+YWRvcHRJZk5l
ZWRlZChvbGRSb290LmdldCgpKTsKLSAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHNo
YWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRl
cnIsICJFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpIHNoYWRvd1Jvb3Q9JXAg
c2hhZG93SG9zdD0lcFxuIiwgb2xkUm9vdC5nZXQoKSwgc2hhZG93SG9zdCk7CisgICAgICAgIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSwg
dHJ1ZSk7CiAgICAgfQogCiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsK
IH0KIAorLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBnY0NoaWxkcmVuSW5Db250YWluZXIoKS4KK3Zv
aWQgRWxlbWVudFNoYWRvdzo6Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290cygpCit7CisgICAgd2hp
bGUgKFNoYWRvd1Jvb3QqIHJvb3QgPSBtX3NoYWRvd1Jvb3RzLmhlYWQoKSkgeworICAgICAgICBt
X3NoYWRvd1Jvb3RzLnJlbW92ZUhlYWQoKTsKKyAgICAgICAgcm9vdC0+c2V0SG9zdCgwKTsKKyAg
ICAgICAgcm9vdC0+c2V0UHJldigwKTsKKyAgICAgICAgcm9vdC0+c2V0TmV4dCgwKTsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50U2hhZG93Ojpmb3JjZVJlbW92ZUFsbFNoYWRv
d1Jvb3RzKCkgc2hhZG93Um9vdD0lcFxuIiwgcm9vdCk7CisgICAgfQorfQorCiB2b2lkIEVsZW1l
bnRTaGFkb3c6OmF0dGFjaCgpCiB7CiAgICAgZW5zdXJlRGlzdHJpYnV0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuaAppbmRleCAxM2RlMWMwMjEwZDU2NzQyNjgzYzRmZTkzZTI2M2Iz
Mjk3NjdjOTE0Li5hMDFjNDlkMDAzNGZmYWVkMWQzODc3M2ZmNTUzMjdkYjljMTE4ZTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAg
IFNoYWRvd1Jvb3QqIG9sZGVzdFNoYWRvd1Jvb3QoKSBjb25zdDsKIAogICAgIHZvaWQgcmVtb3Zl
QWxsU2hhZG93Um9vdHMoKTsKKyAgICB2b2lkIGZvcmNlUmVtb3ZlQWxsU2hhZG93Um9vdHMoKTsK
ICAgICB2b2lkIGFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxT
aGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBhdHRhY2goKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAppbmRleCA3NDQ2Y2ZhMDQwMTEzMmQ5NmM0ZTc1NjYzMWQ0M2U1YTg0YmU2ZWZlLi44
M2I0YmMxOTE5ZTBjZTdmMWM2NDQzNjUzZjI1NmI2YmNkY2ZkNmU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0zODcsNiArMzg3LDcgQEAgdm9pZCBOb2RlOjp0cmFja0ZvckRlYnVnZ2luZygpCiAKIE5v
ZGU6On5Ob2RlKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5Ob2RlKCkgJXAgYmVmb3Jl
XG4iLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgSGFzaFNldDxOb2RlKj46Oml0ZXJhdG9y
IGl0ID0gaWdub3JlU2V0LmZpbmQodGhpcyk7CiAgICAgaWYgKGl0ICE9IGlnbm9yZVNldC5lbmQo
KSkKQEAgLTQxOSw2ICs0MjAsNyBAQCBOb2RlOjp+Tm9kZSgpCiAgICAgICAgIGRvYy0+Z3VhcmRE
ZXJlZigpOwogCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVj
dG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5Ob2Rl
KCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTI3NjgsMjEgKzI3NzAsNzMgQEAgdm9pZCBOb2RlUmFyZURhdGE6
OmNsZWFyQ2hpbGROb2RlTGlzdENhY2hlKCkKICAgICAgICAgbV9jaGlsZE5vZGVMaXN0LT5pbnZh
bGlkYXRlQ2FjaGUoKTsKIH0KIAotLy8gSXQncyBpbXBvcnRhbnQgbm90IHRvIGlubGluZSByZW1v
dmVkTGFzdFJlZiwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bwor
Ly8gSXQncyBpbXBvcnRhbnQgbm90IHRvIGlubGluZSBzZWFyY2hOZXdMaWZldGltZU93bmVyLCBi
ZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gaW5saW5lIHRoZSBjb2RlIHRvCiAvLyBkZWxldGUgYSBO
b2RlIGF0IGVhY2ggZGVyZWYgY2FsbCBzaXRlLgotdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigp
Cit2b2lkIE5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKQogeworICAgIC8vIGZwcmludGYo
c3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGJlZm9yZVxuIiwgdGhp
cyk7CisgICAgdW5zZXRMaWZldGltZU93bmVyKCk7CisKKyAgICAvLyBIZXJlIGl0IGlzIGd1YXJh
bnRlZWQgdGhhdCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUgRE9NIHRyZWUuCisK
KyAgICBpZiAocGFyZW50T3JIb3N0Tm9kZSgpKSB7CisgICAgICAgIC8vIENhbGwgc2VhcmNoTmV3
TGlmZXRpbWVPd25lcigpIGZvciB0aGUgcm9vdCBOb2RlLgorICAgICAgICBOb2RlKiByb290ID0g
dGhpczsKKyAgICAgICAgd2hpbGUgKHJvb3QtPnBhcmVudE9ySG9zdE5vZGUoKSkKKyAgICAgICAg
ICAgIHJvb3QgPSByb290LT5wYXJlbnRPckhvc3ROb2RlKCk7CisgICAgICAgIC8vIGZwcmludGYo
c3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIGZvcndhcmRlZCByb290PSVw
IGFmdGVyXG4iLCByb290KTsKKyAgICAgICAgcm9vdC0+c2VhcmNoTmV3TGlmZXRpbWVPd25lcigp
OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3du
ZXIoKSAlcCBhZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAocmVmQ291bnQoKSkgeworICAgICAgICAvLyBGYXN0IHBhdGguIElmIHRoZSByb290IE5vZGUg
aGFzIDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIHJvb3Qgbm9kZSBhcworICAgICAgICAvLyBhIGxp
ZmV0aW1lIG93bmVyLgorICAgICAgICBBU1NFUlQoIWlzTGlmZXRpbWVPd25lcigpKTsKKyAgICAg
ICAgc2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6
OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBlYXJseS1yZXR1cm4gJXAgYWZ0ZXJcbiIsIHRoaXMp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVCgh
bV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOworICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0
aW9uID0gdHJ1ZTsKKyNlbmRpZgorCiAgICAgLy8gQW4gZXhwbGljaXQgY2hlY2sgZm9yIERvY3Vt
ZW50IGhlcmUgaXMgYmV0dGVyIHRoYW4gYSB2aXJ0dWFsIGZ1bmN0aW9uIHNpbmNlIGl0IGlzCi0g
ICAgLy8gZmFzdGVyIGZvciBub24tRG9jdW1lbnQgbm9kZXMsIGFuZCBiZWNhdXNlIHRoZSBjYWxs
IHRvIHJlbW92ZWRMYXN0UmVmIHRoYXQgaXMgaW5saW5lZAorICAgIC8vIGZhc3RlciBmb3Igbm9u
LURvY3VtZW50IG5vZGVzLCBhbmQgYmVjYXVzZSB0aGUgY2FsbCB0byBzZWFyY2hOZXdMaWZldGlt
ZU93bmVyIHRoYXQgaXMgaW5saW5lZAogICAgIC8vIGF0IGFsbCBkZXJlZiBjYWxsIHNpdGVzIGlz
IHNtYWxsZXIgaWYgaXQncyBhIG5vbi12aXJ0dWFsIGZ1bmN0aW9uLgogICAgIGlmIChpc0RvY3Vt
ZW50Tm9kZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPnJlbW92
ZWRMYXN0UmVmKCk7CisgICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPnNlYXJj
aE5ld0xpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpz
ZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorCisgICAgYm9vbCBjaGlsZHJlblJlbW92ZWQgPSB0cnVlOworICAgIGlmIChp
c0NvbnRhaW5lck5vZGUoKSkgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRy
ZW4oKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgICAgICBjaGlsZHJlblJlbW92ZWQgPSBzdGF0
aWNfY2FzdDxDb250YWluZXJOb2RlKj4odGhpcyktPmdjQ2hpbGRyZW4oKTsKKyAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuKCkgJXAgY2hpbGRyZW5SZW1vdmVkPSVkIGFmdGVy
XG4iLCB0aGlzLCBjaGlsZHJlblJlbW92ZWQpOworICAgIH0KKyAgICBpZiAoY2hpbGRyZW5SZW1v
dmVkKSB7CisgICAgICAgIC8vIEFsbCB0aGUgTm9kZXMgYnV0IHRoZSByb290IE5vZGUgYXJlIGRl
bGV0ZWQgYnkgZ2NDaGlsZHJlbigpLgorICAgICAgICAvLyBOb3cgaXQgaXMgdGltZSB0byBkZWxl
dGUgdGhlIHJvb3QgTm9kZS4KKworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAl
cChyb290KSBiZWZvcmVcbiIsIHRoaXMpOwogI2lmbmRlZiBOREVCVUcKLSAgICBtX2RlbGV0aW9u
SGFzQmVndW4gPSB0cnVlOworICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2Vu
ZGlmCi0gICAgZGVsZXRlIHRoaXM7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcChyb290KSBhZnRlclxuIiwgdGhpcyk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgLy8gZ2NDaGlsZHJlbigpIGRpZCBub3RoaW5nLiBBbGwgdGhlIE5vZGVz
IGluIHRoZSBET00gdHJlZSBhcmUgc3RpbGwgYWxpdmUuCisKKyNpZm5kZWYgTkRFQlVHCisgICAg
ICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7CisjZW5kaWYKKyAgICB9Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAg
YWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBjOWMy
Njc0ZDI3YzVjYzFlMzA0OGYwZjUzMDM3N2VjMzYxZDY5MWJhLi5hMDMzYzAzNDExZjQ0MDQwOTll
MTQ0MmNjMmVkY2ZhNTgyNTU1ZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM2Miw2ICszNjIsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpOwogICAgIGJvb2wgaXNDb250ZW50
UmljaGx5RWRpdGFibGUoKTsKIAorICAgIHZvaWQgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpOwor
CiAgICAgdm9pZCBpbnNwZWN0KCk7CiAKICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0
YWJsZVR5cGUgZWRpdGFibGVUeXBlID0gQ29udGVudElzRWRpdGFibGUpIGNvbnN0CkBAIC03MzYs
OCArNzM4LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNo
YXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKIAotICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsK
LQogICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUg
bWlncmF0aW9uLgogICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRv
IHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRl
LgogICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCmluZGV4IGYwYmE3NjZhYmVlYWY3NTI2NzZmYWQ1M2JlZjliMzc3ZWJj
MWMyNjguLjAzMWFhODM1Y2IwZDI4ODEyNWJhNGFiMTMzZjliYmI2MmI2YmE5MTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTExMjMsNyArMTEyMywxMCBAQCB2b2lkIHJlcGxhY2VD
aGlsZHJlbldpdGhGcmFnbWVudChDb250YWluZXJOb2RlKiBjb250YWluZXIsIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJyZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoKSBjb250YWluZXI9JXBcbiIsIGNvbnRh
aW5lcik7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJjb250YWluZXJOb2RlLT5yZW1vdmVDaGls
ZHJlbigpIGNvbnRhaW5lck5vZGU9JXBcbiIsIGNvbnRhaW5lcik7CiAgICAgY29udGFpbmVyTm9k
ZS0+cmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImNvbnRhaW5lck5v
ZGUtPmFwcGVuZENoaWxkKCkgY29udGFpbmVyTm9kZT0lcCBmcmFnbWVudD0lcFxuIiwgY29udGFp
bmVyLCBmcmFnbWVudC5nZXQoKSk7CiAgICAgY29udGFpbmVyTm9kZS0+YXBwZW5kQ2hpbGQoZnJh
Z21lbnQsIGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJl
ZVNoYXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IDZj
NDE1NGVkZTdhYzk3MjgyYjU0NzY5NTgzOTMzYmY0NjYzZjE0ODIuLjYxM2Y5NTQ1MTBiYjM0MDI2
ODQ1NmJlMjZmZGM5MDYyZDkxNmI0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVk
LmgKQEAgLTI3LDYgKzI3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gSWYgdGhl
IG1vc3Qgc2lnbmlmaWNhbnQgYml0IGlzIDEsIHRoZSBOb2RlIGlzIGEgbGlmZXRpbWUgb3duZXIu
CisvLyBPdGhlcndpc2UsIHRoZSBOb2RlIGlzIG5vdCBhIGxpZmV0aW1lIG93bmVyLgorLy8gVGhl
IGFsZ29yaXRobSBndWFyYW50ZWVzIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czoKKy8vCisvLyAg
ICAgLSBPdXRzaWRlIG9mIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSAoaS5lLiBpbiBub3JtYWwg
Y2FzZXMpLCB0aGVyZSBpcyBleGFjdGx5IG9uZQorLy8gICAgICAgbGlmZXRpbWUgb3duZXIgaW4g
b25lIERPTSB0cmVlLgorLy8gICAgIC0gSW5zaWRlIG9mIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSwgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIuIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKQor
Ly8gICAgICAgZWxlY3RzIGEgbmV3IGxpZmV0aW1lIG93bmVyLgorLy8KKy8vIFNlZSBhIGRvY3Vt
ZW50IChodHRwOi8veHh4eCkgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgcmVmZXJlbmNlIGNv
dW50aW5nIGFsZ29yaXRobQorLy8gb2YgVHJlZVNoYXJlZC4KKyNkZWZpbmUgTGlmZXRpbWVPd25l
ckJpdE1hc2sgKDB4ODAwMDAwMDApCisKICNpZm5kZWYgTkRFQlVHCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQ7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IHZvaWQg
YWRvcHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qKTsKQEAgLTM3LDEy
ICs1MCwxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9k
ZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQgewogcHJvdGVjdGVkOgogICAgIFRyZWVTaGFyZWQoKQog
ICAgICAgICA6IG1fcGFyZW50KDApCi0gICAgICAgICwgbV9yZWZDb3VudCgxKQorICAgICAgICAv
LyBJbml0aWFsbHkgdGhlIE5vZGUgaXMgYSBsaWZldGltZSBvd25lciwgc2luY2UgdGhlcmUgaXMg
b25seSBvbmUgTm9kZQorICAgICAgICAvLyBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICwgbV9y
ZWZDb3VudChMaWZldGltZU93bmVyQml0TWFzayB8IDEpCiAjaWZuZGVmIE5ERUJVRwogICAgICAg
ICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVkKHRydWUpCiAjZW5kaWYKICAgICB7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiVHJlZVNoYXJlZCgpICVwXG4iLCB0aGlzKTsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzTGlmZXRpbWVPd25lcigpKTsK
ICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IGZhbHNlOwogICAg
ICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwpAQCAtNTEsOCArNjgsMTAg
QEAgcHJvdGVjdGVkOgogCiAgICAgflRyZWVTaGFyZWQoKQogICAgIHsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJ+VHJlZVNoYXJlZCgpICVwXG4iLCB0aGlzKTsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3JlZkNvdW50KTsKKyAgICAgICAg
QVNTRVJUKCFyZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0aW1lT3duZXIoKSk7
CiAgICAgICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQoIW1f
YWRvcHRpb25Jc1JlcXVpcmVkKTsKICAgICB9CkBAIC03MCwzNCArODksNzMgQEAgcHVibGljOgog
ICAgIHZvaWQgZGVyZWYoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICAgICAgQVNTRVJUKG1fcmVmQ291bnQgPj0gMCk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxl
dGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlv
bik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwotICAgICAgICBpZiAo
LS1tX3JlZkNvdW50IDw9IDAgJiYgIW1fcGFyZW50KSB7CisgICAgICAgIC0tbV9yZWZDb3VudDsK
KyAgICAgICAgaWYgKG1fcmVmQ291bnQgPT0gTGlmZXRpbWVPd25lckJpdE1hc2spIHsKKyAgICAg
ICAgICAgIC8vICdtX3JlZkNvdW50ID09IExpZmV0aW1lT3duZXJCaXRNYXNrJyBtZWFucyB0aGF0
IHRoZSBOb2RlIGlzCisgICAgICAgICAgICAvLyBhIGxpZmV0aW1lIG93bmVyIGFuZCB0aGUgcmVm
Y291bnQgb2YgdGhlIE5vZGUgYmVjb21lcyAwLgorICAgICAgICAgICAgLy8gVGhlIGxpZmV0aW1l
IG93bmVyIGlzIHJlc3BvbnNpYmxlIHRvIGNhbGwgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpLgor
ICAgICAgICAgICAgLy8gSWYgdGhlIERPTSB0cmVlIGhhcyBhbm90aGVyIE5vZGUgdGhhdCBoYXMg
MX4gcmVmY291bnQsCisgICAgICAgICAgICAvLyBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgc2V0
cyB0aGUgTm9kZSBhcyBhIG5ldyBsaWZldGltZSBvd25lci4KKyAgICAgICAgICAgIC8vIE90aGVy
d2lzZSAoaS5lLiBhbGwgdGhlIE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVmY291bnQp
LAorICAgICAgICAgICAgLy8gc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIGRlbGV0ZXMgYWxsIHRo
ZSBOb2Rlcy4KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyktPnNlYXJj
aE5ld0xpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgfQogI2lmbmRlZiBOREVCVUcKLSAgICAgICAg
ICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgIWlzTGlmZXRpbWVPd25lcigpKTsKICNlbmRp
ZgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+cmVtb3ZlZExhc3RS
ZWYoKTsKLSAgICAgICAgfQorICAgIH0KKworICAgIGludCByZWZDb3VudCgpIGNvbnN0CisgICAg
eworICAgICAgICAvLyBSZW1vdmUgdGhlIGxpZmV0aW1lIG93bmVyIGJpdC4KKyAgICAgICAgLy8g
ZS5nLiAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMTEwMQorICAgICAgICByZXR1cm4gbV9yZWZDb3VudCAmIH5MaWZldGltZU93
bmVyQml0TWFzazsKICAgICB9CiAKICAgICBib29sIGhhc09uZVJlZigpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9p
blJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gbV9yZWZDb3VudCA9PSAx
OworICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAgIH0KIAotICAgIGludCByZWZD
b3VudCgpIGNvbnN0CisgICAgdm9pZCBzZXRMaWZldGltZU93bmVyKCkKKyAgICB7CisgICAgICAg
IC8vIEEgbGlmZXRpbWUgb3duZXIgbXVzdCBoYXZlIDF+IHJlZmNvdW50LCBzaW5jZSB0aGUgbGlm
ZXRpbWUgb3duZXIgaXMgcmVzcG9uc2libGUKKyAgICAgICAgLy8gZm9yIGNhbGxpbmcgc2VhcmNo
TmV3TGlmZXRpbWVPd25lcigpIHdoZW4gdGhlIHJlZmNvdW50IGJlY29tZXMgMC4KKyAgICAgICAg
QVNTRVJUKHJlZkNvdW50KCkpOworICAgICAgICAvLyBTZXQgdGhlIGxpZmV0aW1lIG93bmVyIGJp
dC4KKyAgICAgICAgLy8gZS5nLiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAx
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMQorICAgICAgICAvLyBlLmcuIDEwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+IDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAx
MTAxCisgICAgICAgIG1fcmVmQ291bnQgfD0gTGlmZXRpbWVPd25lckJpdE1hc2s7CisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAic2V0TGlmZXRpbWVPd25lcigpICVwXG4iLCB0aGlzKTsKKyAg
ICB9CisKKyAgICB2b2lkIHVuc2V0TGlmZXRpbWVPd25lcigpCisgICAgeworICAgICAgICAvLyBV
bnNldCB0aGUgbGlmZXRpbWUgb3duZXIgYml0LgorICAgICAgICAvLyBlLmcuIDEwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAx
CisgICAgICAgIC8vIGUuZy4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEKKyAgICAgICAgbV9yZWZDb3VudCAmPSB+TGlm
ZXRpbWVPd25lckJpdE1hc2s7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAidW5zZXRMaWZl
dGltZU93bmVyKCkgJXBcbiIsIHRoaXMpOworICAgIH0KKworICAgIGJvb2wgaXNMaWZldGltZU93
bmVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50OworICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgbGlmZXRpbWUgb3duZXIgYml0IGlzIHNldC4KKyAgICAgICAgLy8gZS5nLiAxMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiB0cnVlCisgICAgICAgIC8vIGUuZy4gMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gZmFsc2UKKyAgICAgICAgcmV0dXJuIG1f
cmVmQ291bnQgJiBMaWZldGltZU93bmVyQml0TWFzazsKICAgICB9CiAKICAgICB2b2lkIHNldFBh
cmVudChQYXJlbnROb2RlVHlwZSogcGFyZW50KQogICAgIHsgCiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgICAgIG1fcGFyZW50ID0gcGFyZW50OyAKKyAgICAgICAgbV9wYXJl
bnQgPSBwYXJlbnQ7CiAgICAgfQogCiAgICAgUGFyZW50Tm9kZVR5cGUqIHBhcmVudCgpIGNvbnN0
CkBAIC0xMjMsNyArMTgxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUGFyZW50Tm9kZVR5
cGUqIG1fcGFyZW50OwotICAgIGludCBtX3JlZkNvdW50OworICAgIHVpbnQzMl90IG1fcmVmQ291
bnQ7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA4ZWRiYjY1YzZlZDZiNWE2MmRhYzVkMzA4Zjdm
NDIyNGUyZjU3MzU1Li4xZmMyZTQyYWNhMjYyYzZkN2IwZDcwMmMzMTE4Yzk0OTU0MjVmMTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC02MSw2ICs2MSw3IEBAIFBhc3NSZWZQdHI8
U1ZHRWxlbWVudD4gU1ZHRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50CiAKIFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKIHsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50KCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICAgICBpZiAo
IWhhc1JhcmVTVkdEYXRhKCkpCiAgICAgICAgIEFTU0VSVCghU1ZHRWxlbWVudFJhcmVEYXRhOjpy
YXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBlbHNlIHsKQEAgLTgwLDYgKzgxLDcg
QEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogICAgIH0KICAgICBkb2N1bWVudCgpLT5hY2Nl
c3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEFuaW1hdGlvbkVsZW1lbnRzRnJvbVRhcmdldCh0
aGlzKTsKICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEVs
ZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KHRoaXMpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
flNWR0VsZW1lbnQoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudDo6
d2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKQEAgLTIyNCw2ICsyMjYsNyBAQCB2
b2lkIFNWR0VsZW1lbnQ6Om1hcEluc3RhbmNlVG9FbGVtZW50KFNWR0VsZW1lbnRJbnN0YW5jZSog
aW5zdGFuY2UpCiAgICAgQVNTRVJUKCFpbnN0YW5jZXMuY29udGFpbnMoaW5zdGFuY2UpKTsKIAog
ICAgIGluc3RhbmNlcy5hZGQoaW5zdGFuY2UpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaW5z
dGFuY2VzLmFkZChpbnN0YW5jZSkgJXAgaW5zdGFuY2U9JXBcbiIsIHRoaXMsIGluc3RhbmNlKTsK
IH0KICAKIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJ
bnN0YW5jZSogaW5zdGFuY2UpCkBAIC0yMzUsNiArMjM4LDcgQEAgdm9pZCBTVkdFbGVtZW50Ojpy
ZW1vdmVJbnN0YW5jZU1hcHBpbmcoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkKICAgICBB
U1NFUlQoaW5zdGFuY2VzLmNvbnRhaW5zKGluc3RhbmNlKSk7CiAKICAgICBpbnN0YW5jZXMucmVt
b3ZlKGluc3RhbmNlKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImluc3RhbmNlcy5yZW1vdmUo
aW5zdGFuY2UpICVwIGluc3RhbmNlPSVwXG4iLCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKIGNvbnN0
IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4mIFNWR0VsZW1lbnQ6Omluc3RhbmNlc0ZvckVs
ZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcApp
bmRleCA5ZmUyYWNiZjAwYTVmZWNmNWYzNDVhNzY5ZDU0MWM3NTQ2MmZlYTE3Li4wY2RjZjQxNmFm
ZmFiYTM0NzMwOTlkODQwMTgzOTMxN2QxOWUzYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudEluc3RhbmNlLmNwcApAQCAtNjIsMjQgKzYyLDc1IEBAIFNWR0VsZW1lbnRJbnN0YW5j
ZTo6U1ZHRWxlbWVudEluc3RhbmNlKFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVt
ZW50LCBTCiAKIFNWR0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSgpCiB7Ci0g
ICAgLy8gQ2FsbCBkZXRhY2ggYmVjYXVzZSB3ZSBtYXkgYmUgZGVsZXRlZCBkaXJlY3RseSBpZiB3
ZSBhcmUgYSBjaGlsZCBvZiBhIGRldGFjaGVkIGluc3RhbmNlLgotICAgIGRldGFjaCgpOwotCisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJ+U1ZHRWxlbWVudEluc3RhbmNlKCkgJXAgYmVmb3JlXG4i
LCB0aGlzKTsKKyAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICNpZm5kZWYgTkRFQlVH
CiAgICAgaW5zdGFuY2VDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAKKyAgICBpZiAobV9l
bGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCkuY29udGFpbnModGhpcykpCisgICAgICAgIG1f
ZWxlbWVudC0+cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKHRoaXMpOworCisgICAgbV9zaGFkb3dUcmVl
RWxlbWVudCA9IDA7CisgICAgbV9kaXJlY3RVc2VFbGVtZW50ID0gMDsKKyAgICBtX2NvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50ID0gMDsKICAgICBtX2VsZW1lbnQgPSAwOworICAgIC8vIGZwcmludGYo
c3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAot
Ly8gSXQncyBpbXBvcnRhbnQgbm90IHRvIGlubGluZSByZW1vdmVkTGFzdFJlZiwgYmVjYXVzZSB3
ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bworLy8gSXQncyBpbXBvcnRhbnQgbm90
IHRvIGlubGluZSBzZWFyY2hOZXdMaWZldGltZU93bmVyLCBiZWNhdXNlIHdlIGRvbid0IHdhbnQg
dG8gaW5saW5lIHRoZSBjb2RlIHRvCiAvLyBkZWxldGUgYW4gU1ZHRWxlbWVudEluc3RhbmNlIGF0
IGVhY2ggZGVyZWYgY2FsbCBzaXRlLgotdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRM
YXN0UmVmKCkKK3ZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVy
KCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6c2VhcmNo
TmV3TGlmZXRpbWVPd25lcigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgdW5zZXRMaWZldGlt
ZU93bmVyKCk7CisKKyAgICAvLyBIZXJlIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGVyZSBpcyBu
byBsaWZldGltZSBvd25lciBpbiB0aGUgRE9NIHRyZWUuCisKKyAgICBpZiAocGFyZW50Tm9kZSgp
KSB7CisgICAgICAgIC8vIENhbGwgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIGZvciB0aGUgcm9v
dCBOb2RlLgorICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIHJvb3QgPSB0aGlzOworICAgICAg
ICB3aGlsZSAocm9vdC0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgcm9vdCA9IHJvb3QtPnBh
cmVudE5vZGUoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFu
Y2U6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3J3YXJkZWQgcm9vdD0lcFxuIiwgcm9vdCk7
CisgICAgICAgIHJvb3QtPnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSAlcCBhZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
cmVmQ291bnQoKSkgeworICAgICAgICAvLyBGYXN0IHBhdGguIElmIHRoZSByb290IE5vZGUgaGFz
IDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIHJvb3Qgbm9kZSBhcworICAgICAgICAvLyBhIGxpZmV0
aW1lIG93bmVyLgorICAgICAgICBBU1NFUlQoIWlzTGlmZXRpbWVPd25lcigpKTsKKyAgICAgICAg
c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1l
bnRJbnN0YW5jZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIGVhcmx5LXJldHVybiAlcCBhZnRl
clxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZm5kZWYgTkRFQlVHCisg
ICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CisgICAgbV9pblJlbW92ZWRM
YXN0UmVmRnVuY3Rpb24gPSB0cnVlOworI2VuZGlmCisKKyAgICBib29sIGNoaWxkcmVuUmVtb3Zl
ZCA9IGdjQ2hpbGRyZW5JbkNvbnRhaW5lcih0aGlzKTsKKyAgICBpZiAoY2hpbGRyZW5SZW1vdmVk
KSB7CisgICAgICAgIC8vIEFsbCB0aGUgTm9kZXMgYnV0IHRoZSByb290IE5vZGUgYXJlIGRlbGV0
ZWQgYnkgZ2NDaGlsZHJlbigpLgorICAgICAgICAvLyBOb3cgaXQgaXMgdGltZSB0byBkZWxldGUg
dGhlIHJvb3QgTm9kZS4KKworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcChT
VkdFbGVtZW50SW5zdGFuY2UpIGJlZm9yZVxuIiwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwotICAg
IG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9
IHRydWU7CiAjZW5kaWYKLSAgICBkZWxldGUgdGhpczsKKyAgICAgICAgZGVsZXRlIHRoaXM7Cisg
ICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKFNWR0VsZW1lbnRJbnN0YW5jZSkg
YWZ0ZXJcbiIsIHRoaXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGdjQ2hpbGRyZW4oKSBk
aWQgbm90aGluZy4gQWxsIHRoZSBOb2RlcyBpbiB0aGUgRE9NIHRyZWUgYXJlIHN0aWxsIGFsaXZl
LgorCisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9
IGZhbHNlOworI2VuZGlmCisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVu
dEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwog
fQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKCkKQEAgLTk3LDcgKzE0OCw3IEBA
IHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpkZXRhY2goKQogICAgIG1fZGlyZWN0VXNlRWxlbWVu
dCA9IDA7CiAgICAgbV9jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9IDA7CiAKLSAgICByZW1vdmVB
bGxDaGlsZHJlbkluQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3Rh
bmNlPih0aGlzKTsKKyAgICByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0
YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPih0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdFbGVt
ZW50SW5zdGFuY2VMaXN0PiBTVkdFbGVtZW50SW5zdGFuY2U6OmNoaWxkTm9kZXMoKQpAQCAtMTE0
LDYgKzE2NSw3IEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpzZXRTaGFkb3dUcmVlRWxlbWVu
dChTVkdFbGVtZW50KiBlbGVtZW50KQogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmFwcGVuZENo
aWxkKFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBjaGlsZCkKIHsKICAgICBhcHBlbmRD
aGlsZFRvQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPihj
aGlsZC5nZXQoKSwgdGhpcyk7CisgICAgY2hpbGQtPnVuc2V0TGlmZXRpbWVPd25lcigpOwogfQog
CiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVu
dChTVkdFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5j
ZS5oCmluZGV4IDFjODljN2NjZDFkMjg5NDI0NGVmYzY4ZjAwOGI1M2E3MzY4MzJkYjguLjYyMDVm
OGEyNjRmOWU5M2QyYWRiZWUwN2FiNTdlNWRmYWYyYWNjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudEluc3RhbmNlLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIFNWR0Vs
ZW1lbnRJbnN0YW5jZSogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsg
fQogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0Q2hpbGQ7IH0KIAorICAgIGJvb2wgaXNDb250YWluZXJOb2RlKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQorCiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnQgPyBtX2VsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSA6IDA7IH0KIAogICAgIGNsYXNz
IEludmFsaWRhdGlvbkd1YXJkIHsKQEAgLTE1MCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHVz
aW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+Ojpz
ZXRQYXJlbnQ7CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVudCosIFNWR1Vz
ZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudCk7Ci0gICAg
dm9pZCByZW1vdmVkTGFzdFJlZigpOworICAgIHZvaWQgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigp
OwogCiAgICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKSB7IHJldHVybiBzaGFkb3dUcmVlRWxlbWVu
dCgpOyB9CiAKQEAgLTE1OCwxMyArMTYwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTaGFk
b3dUcmVlRWxlbWVudChTVkdFbGVtZW50Kik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmlj
Tm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQgYXBwZW5k
Q2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVy
KiBjb250YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihH
ZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKik7CiAgICAgdGVtcGxhdGU8
Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotICAgIGZyaWVu
ZCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIq
IGNvbnRhaW5lcik7Ci0KKyAgICBmcmllbmQgdm9pZCBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9E
ZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5l
cmljTm9kZUNvbnRhaW5lciopOwogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFz
cyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBmcmllbmQgdm9pZCBQcml2YXRlOjphZGRDaGls
ZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0
YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKTsKKyAgICBmcmllbmQgdm9pZCBy
ZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKik7CisgICAgZnJp
ZW5kIGJvb2wgZ2NDaGlsZHJlbkluQ29udGFpbmVyKFNWR0VsZW1lbnRJbnN0YW5jZSopOwogCiAg
ICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyIGIvU291cmNlL1dl
YktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5kZXggMjFjYTJmZjZjZTNhYmJlN2NlNzE0NjE0NTNk
YzYzNWUyOWUzNmVmMC4uNjZhZGJkNmIzMGY3MmVmYmMwMTUxMTcxMWI5Y2Y4NTdiZTkxYjk2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKKysrIGIvU291cmNl
L1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKQEAgLTk2Myw2ICs5NjMsNyBAQCBfX1pOM1dURjlS
ZXRhaW5QdHJJMTJOU1VSTFJlcXVlc3RFQzJFUFMxXwogX19aTjdXZWJDb3JlMTVSZXNvdXJjZVJl
cXVlc3RhU0VSS1MwXwogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlYVNFUktTMF8K
IF9fWk43V2ViQ29yZTRLVVJMYVNFUktTMF8KK19fWk43V2ViQ29yZTROb2RlMTRzZWFyY2hOZXdM
aWZldGltZU93bmVyRXYKIF9fWk4zV1RGMjJIYXNoVGFibGVDb25zdEl0ZXJhdG9ySU5TXzEyQXRv
bWljU3RyaW5nRVN0NHBhaXJJUzFfTlNfNlN0cmluZ0VFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJ
UzRfRUVOU18xNUNhc2VGb2xkaW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRy
YWl0c0lTMV9FRU5TOV9JUzNfRUVFRVNBX0UxNnNraXBFbXB0eUJ1Y2tldHNFdgogX19aTjNXVEY2
VmVjdG9ySU5TXzZTdHJpbmdFTG0wRUVhU0VSS1MyXwogX19aTlN0Nl9fY29weUlMYjBFU3QyNnJh
bmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRTRjb3B5SVBLTjNXVEY2U3RyaW5nRVBTNF9FRVQwX1Rf
UzlfUzhfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZWQwM2JjYzZiNDA2YmY5YTg2NjliZWI1
MjA5MTZjYmE5OWRmZmYwNi4uYTE3NWFiMjNiNGUxMTdhMzBhYTc1OTZjZDI2OTBiMDNlYzc2NjYy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjA1LDcgKzIwNSw2IEBAIEVYUE9SVFMKICAg
ICAgICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3Ro
QFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBA
QFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BX
VEZAQFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhY
WgogICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAg
ICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBI
QQogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJD
b3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKQEAgLTI2Miw2ICsyNjEsNyBA
QCBFWFBPUlRTCiAgICAgICAgID93ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50QERv
Y3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKICAgICAgICAgP3dlYmtpdERpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAy
QEBaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBa
CisgICAgICAgID9zZWFyY2hOZXdMaWZldGltZU93bmVyQE5vZGVAV2ViQ29yZUBAUUFFWFhaCiAg
ICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVAQFFB
RVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNv
cmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdlYkNv
cmVAQFNBWF9OQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBlZDZlY2Nl
ODYyMGQ5ZmFkNDNiNmEzNmQxYjQ3NDUzNmNmYjZjODllLi4yNDZkNGNmMzM3OWJhM2IyMTkyMmRi
ZmY1YjQwYThhYjYwOWYyZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCkBA
IC0xOTgsMTIgKzE5OCwxMiBAQCBFWFBPUlRTCiAgICAgICAgID9wbGFjZWhvbGRlclNob3VsZEJl
VmlzaWJsZUBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAg
ICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkNvbnRhaW5lck5vZGVAMkBI
SF9OQFoKICAgICAgICAgP3JlbW92ZUBTdHJpbmdAV1RGQEBRQUVYSUhAWgotICAgICAgICA/cmVt
b3ZlZExhc3RSZWZATm9kZUBXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0
cmluZ0ltcGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NfZnJvbnRlbmRDb3VudGVyQEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkBXZWJDb3JlQEAwSEEKICAgICAgICAgP3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEAyQFhaCiAgICAgICAgID9zY3JpcHROYW1lVG9Db2RlQFdlYkNvcmVAQFlBP0FXNFVT
Y3JpcHRDb2RlQEBBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRvUmVj
dEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoKKyAg
ICAgICAgP3NlYXJjaE5ld0xpZmV0aW1lT3duZXJATm9kZUBXZWJDb3JlQEBRQUVYWFoKICAgICAg
ICAgP3NldEN1cnNpdmVGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNT
dHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAgICAgICA/c2V0RGV2aWNlU2NhbGVGYWN0
b3JAUGFnZUBXZWJDb3JlQEBRQUVYTUBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29y
ZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA0
NDcwZGVmYjhiMzQwMjIyYTkwMjhhYmY4OGE3N2MwZTcxODQ5ZjVhLi44ZjYyMjBiZDM3YzQ0MGRl
MzVkYjJkMDYxNDBkNjEzNzUwYWU2YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTEz
Myw3ICsxMzMsNyBAQCBfWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMThkaWRD
YW5jZWxGcmFtZUltcGxFUE5TXzE5SW5zdHJ1bWVudGluZ0FnZQogX1pON1dlYkNvcmUxNFNjcm9s
bGFibGVBcmVhMjhzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RTsK
IF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsKIF9a
TjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKLV9aTjdXZWJD
b3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXY7CitfWk43V2ViQ29yZTROb2RlMTRzZWFyY2hOZXdM
aWZldGltZU93bmVyRXY7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGlu
Z3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29k
ZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJB
dG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMDY5ZDBiMTAzODQ2ZGU0NDNmYTNh
ZTUyZTkxYzRkOGIzYWUzYjZjLi45ODU4MTNiYWI1NDFlNGM5NmI2NTM0ZmIwYzUwMjlhYTFkZmEz
NjJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDYtMjUgIEtlbnRhcm8gSGFyYSAgPGhh
cmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIE5vZGUgWCBoYXMgYSByZWYtY291bnQs
IGFsbCB0aGUgTm9kZXMgaW4gdGhlIHRyZWUgd2hpY2ggWCBiZWxvbmdzIHRvIHNob3VsZCBiZSBr
ZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFN0aWxsIFdJUC4KKyAgICAgICAgQSByb3VnaCBleHBsYW5hdGlvbiBvZiB0aGUgYWxnb3JpdGht
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MzQjYzMKKyAgICAg
ICAgQSBkZXRhaWxlZCBkb2N1bWVudCB3aWxsIGJlIGNvbWluZyBzb29uLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwKKyAgICAgICAgICAgICAgZmFz
dC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sCisgICAgICAgICAgICAg
IGFuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLW5vQmFzZVZhbFJlZi5zdmcK
KyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMuc3Zn
CisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNhbGx5LWFkZGVkLWVs
ZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwtbGVhay1l
bGVtZW50cy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zdmdsZW5ndGgtZWxlbWVudC1y
ZW1vdmVkLWNyYXNoLnN2ZworICAgICAgICAgICAgICBDb25maXJtIHRoYXQgYWxsIHRoZSBvdGhl
ciBleGlzdGluZyB0ZXN0cyBkbyBub3QgY3Jhc2guCisKKyAgICAgICAgKiBmYXN0L2RvbS9nYy0z
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWw6IEFkZGVkLgor
CiAyMDEyLTA2LTI0ICBLcmlzdMOzZiBLb3N6dHnDsyAgPGtrcmlzdG9mQGluZi51LXN6ZWdlZC5o
dT4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIG5ldyBmYWlsaW5n
IHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dAppbmRleCA2MGQzYTE3
MGYyOWI2MzM0ODcxYzgzOTZkZTBhYWJiYjc2YjBjMTk2Li45MmQ0MTIxN2VmM2FlMzkwZjVhYTIw
MGMyZWU5ZWZkMTVhNjEyNmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0z
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4
dApAQCAtNCw1ICs0LDYgQEAgVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVj
ZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGEKIAogcmVwbGFjZW1lbnQg
Y29udGVudAogQgorcGFyZW50IG5vZGUgZXhpc3RzCiBjaGlsZCBub2RlIGV4aXN0cwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CmluZGV4IDE4YzgzNDg4YjBjZjZmMDQwMWZm
Mzc5N2NmMTY2MzlkYTU2M2RhNmUuLjczODA5Y2RhODU0MzQ4NzljYjkyNjc2Yjk2Yjc1ZDE5ZjAz
MTdiMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CkBAIC00LDQgKzQs
NSBAQCBUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9u
IGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYQogCiByZXBsYWNlbWVudCBjb250ZW50CiBCCitE
CiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3Mzk1YWUwNDVkZTcy
YTgyMThmZjczYTcxYzQwZmE1ZDBjZTczODQ1Li40ZTIyNjcyNDJhZTBiYmVlYzA4NTIxYzljYTI3
YzI3MGQzNWVlNzk5IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDYtMjUgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIElmIE5vZGUgWCBoYXMgYSByZWYtY291bnQsIGFsbCB0aGUgTm9kZXMg
aW4gdGhlIHRyZWUgd2hpY2ggWCBiZWxvbmdzIHRvIHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN5bWJvbCBjaGFuZ2Uu
CisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA2
LTIyICBKb3NodWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KIAogICAgICAg
ICBbQmxhY2tCZXJyeV0gU2FuaXRpemUgR0xTTCBjb2RlIHVzaW5nIEFOR0xFLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149468</attachid>
            <date>2012-06-25 23:47:36 -0700</date>
            <delta_ts>2012-06-27 05:37:08 -0700</delta_ts>
            <desc>WIP patch4</desc>
            <filename>bug-88834-20120626154736.patch</filename>
            <type>text/plain</type>
            <size>67580</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA2Y2QyMDE0NTQwNDZk
ZmY3YzdkYWZlMWIzZGJkMzliN2RkNjgyZC4uMzNkNjljN2E4ODViY2U5ZjkyOWExMDIwZmI4YzM4
NzhjNTdkYjI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxMi0wNi0yNSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgTm9kZSBYIGhh
cyBhIHJlZmVyZW5jZSBjb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3Vs
ZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEN1cnJlbnRseSB0aGUgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBET00gbm9kZXMgaXMg
dW5wcmVkaWN0YWJsZSBmcm9tIHRoZSBwZXJzcGVjdGl2ZQorICAgICAgICBvZiBwcm9ncmFtbWVy
cy4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworICAgICAg
ICAgIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgICBwLmlubmVySFRNTCA9JzxkaXY+PHNwYW4g
aWQ9InNwYW4iPjxicj48L3NwYW4+PC9kaXY+JzsKKyAgICAgICAgICBzcGFuID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwYW4iKTsKKyAgICAgICAgICBwLmlubmVySFRNTCA9ICIiOworICAg
ICAgICAgIGFsZXJ0KHNwYW4pOyAgLy8gPHNwYW4+CisgICAgICAgICAgYWxlcnQoc3Bhbi5wYXJl
bnROb2RlKTsgIC8vID8/PworICAgICAgICAgIGFsZXJ0KHNwYW4uZmlyc3RDaGlsZCk7ICAvLyA/
Pz8KKworICAgICAgICBUaGUgY3VycmVudCBXZWJLaXQgcmV0dXJucyBudWxsIGZvciBzcGFuLnBh
cmVudE5vZGUgKGkuZS4gPGRpdj4gaXMgYWxyZWFkeSByZWNsYWltZWQpCisgICAgICAgIGFuZCA8
YnI+IGZvciBzcGFuLmZpcnN0Q2hpbGQuCisKKyAgICAgICAgV2Ugd2FudCB0byBjaGFuZ2UgdGhl
IGJlaGF2aW9yIHNvIHRoYXQgc3Bhbi5wYXJlbnROb2RlIHJldHVybnMgPGRpdj4gYW5kCisgICAg
ICAgIHNwYW4uZmlyc3RDaGlsZCByZXR1cm5zIDxicj4uIEFjY3VyYXRlbHkgc3BlYWtpbmcsIHdl
IHdhbnQgdG8gZ3VhcmFudGVlIHRoZSBmb2xsb3dpbmdzOgorCisgICAgICAgICAgLSBBIG5vZGUg
WCBpcyBub3QgcmVjbGFpbWVkLCBpZiB0aGUgbm9kZSBYIGlzIHJlYWNoYWJsZSBmcm9tIGEgbm9k
ZSBZIHRoYXQgaGFzCisgICAgICAgICAgICBtb3JlIHRoYW4gMSByZWZlcmVuY2UgY291bnQuCisg
ICAgICAgICAgLSBBIG5vZGUgWCBpcyByZWNsYWltZWQsIG90aGVyd2lzZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFjY29tcGxpc2hlcyB0aGUgbGlmZXRpbWUgbWFuYWdlbWVudCBieSAiYSBsaWZl
dGltZSBvd25lciBhbGdvcml0aG0iLgorICAgICAgICBObyBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
LiBObyBhZGRpdGlvbmFsIGJ5dGUgdG8gZWFjaCBOb2RlIG9iamVjdC4KKworICAgICAgICBBIGRl
c2lnbiBkb2N1bWVudDogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZG9j
dW1lbnQvZC8xdVlIcHE3dTVTc2xqNTRVZ3pYakE3cFlSNTNYamlkcEJjckNhLW5lT0dRcy9lZGl0
P3BsaT0xCisKKyAgICAgICAgQSB3ZWJraXQtZGV2QCB0aHJlYWQ6IGh0dHA6Ly9tYXJrbWFpbC5v
cmcvdGhyZWFkL2txdm90ajVpaDRmNG13NG0KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9nYy1k
b20tdHJlZS1saWZldGltZS5odG1sCisgICAgICAgICAgICAgIGZhc3QvZG9tL2lubGluZS1ldmVu
dC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbAorICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwt
bGVhay1lbGVtZW50LWluc3RhbmNlcy1ub0Jhc2VWYWxSZWYuc3ZnCisgICAgICAgICAgICAgIGFu
aW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBh
bmltYXRpb25zL3NtaWwtbGVhay1keW5hbWljYWxseS1hZGRlZC1lbGVtZW50LWluc3RhbmNlcy5z
dmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudHMuc3ZnCisgICAg
ICAgICAgICAgIGFuaW1hdGlvbnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcK
KyAgICAgICAgICAgICAgQ29uZmlybSB0aGF0IGFsbCB0aGUgb3RoZXIgZXhpc3RpbmcgdGVzdHMg
ZG8gbm90IGNyYXNoLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2Vi
Q29yZS5vcmRlcjoKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dHRyOjpjcmVhdGVUZXh0Q2hpbGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Z2NDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjp+Q29udGFpbmVyTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuaDoKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3Zl
ZEZyb21UcmVlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6Q2hpbGROb2RlUmVtb3Zh
bE5vdGlmaWVyKToKKyAgICAgICAgKENoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmdjQ2hpbGRyZW5JbkNvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpyZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZElu
dG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRG
cm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5v
dGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNr
SWZMaWZldGltZU93bmVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmdjQ2hpbGRyZW5PZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpndWFyZERlcmVmKToKKyAgICAg
ICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmZvcmNlUmVtb3Zl
QWxsU2hhZG93Um9vdHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAg
IChFbGVtZW50U2hhZG93KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVNoYXJlZDo6VHJlZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp+VHJl
ZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6CisgICAgICAg
IChUcmVlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlZkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6Omhhc09uZVJlZik6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2hhcmVkOjpzZXRMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTaGFyZWQ6OnVuc2V0TGlmZXRpbWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hh
cmVkOjppc0xpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6c2V0
UGFyZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjptYXBJbnN0YW5jZVRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVJbnN0YW5jZU1hcHBpbmcpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudElu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJ
bnN0YW5jZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6aXNDb250YWluZXJOb2Rl
KToKKyAgICAgICAgKFNWR0VsZW1lbnRJbnN0YW5jZSk6CisKIDIwMTItMDYtMjQgIEZ1bWl0b3No
aSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjb21waWxl
IGVycm9yIGZpeCBvZiBDaHJvbWl1bSBXaW4gUmVsZWFzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjMGZkOWQx
MDRkZjg5ZDJlNjZmNTc2MTFmZmRhNWQwZjdiNDkyYTE4Li45Y2JhYzllYWUyNzEwNTYxNjM0ZTY2
ZDRiYjc1NDcwYTIzNTMxOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYt
MjUgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIE5v
ZGUgWCBoYXMgYSByZWZlcmVuY2UgY291bnQsIGFsbCB0aGUgTm9kZXMgaW4gdGhlIHNhbWUgdHJl
ZSBzaG91bGQgYmUga2VwdCBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTeW1ib2wgY2hhbmdlcy4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRl
ZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6CisKIDIwMTItMDYtMjUgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFRl
c3QgL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9wZXJtaXNzaW9uLXJlcXVlc3RzIGZhaWxzIGR1ZSB0
byBhIHJ1bnRpbWUgd2FybmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBhYmRkZmI3MjJhZDJj
M2M2NDRlMjk3MjNmYWU5ZTFjYjBiZTYxMzE0Li5iNDFkZTYxOWU0ZGY2ZTYzMDY5ZWMzYzEzM2Fm
YjVmNmIwNzc3ZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtNjQ2LDcgKzY0Niw2IEBAIF9f
Wk43V2ViQ29yZTRLVVJMQzFFUDVOU1VSTAogX19aTjdXZWJDb3JlNEtVUkxDMUVQSzdfX0NGVVJM
CiBfX1pON1dlYkNvcmU0S1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU0
Tm9kZTEwcmVuZGVyUmVjdEVQYgotX19aTjdXZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXYK
IF9fWk43V2ViQ29yZTROb2RlMTdzdG9wSWdub3JpbmdMZWFrc0V2CiBfX1pON1dlYkNvcmU0Tm9k
ZTE4c3RhcnRJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2ViQ29yZTROb2RlMTlzZXROZWVkc1N0eWxl
UmVjYWxjRU5TXzE1U3R5bGVDaGFuZ2VUeXBlRQpAQCAtMTI2NSw2ICsxMjY0LDcgQEAgX19aTks3
V2ViQ29yZTROb2RlMTF0ZXh0Q29udGVudEViCiBfX1pOSzdXZWJDb3JlNE5vZGUxNGlzRGVzY2Vu
ZGFudE9mRVBLUzBfCiBfX1pOSzdXZWJDb3JlNE5vZGUxOGdldFN1YnJlc291cmNlVVJMc0VSTjNX
VEYxMUxpc3RIYXNoU2V0SU5TXzRLVVJMRUxtMjU2RU5TXzhLVVJMSGFzaEVFRQogX19aTks3V2Vi
Q29yZTROb2RlMjB0cmF2ZXJzZVByZXZpb3VzTm9kZUVQS1MwXworX19aTjdXZWJDb3JlNE5vZGUy
MnNlYXJjaE5ld0xpZmV0aW1lT3duZXJFdgogX19aTks3V2ViQ29yZTROb2RlMjd0cmF2ZXJzZU5l
eHRBbmNlc3RvclNpYmxpbmdFdgogX19aTks3V2ViQ29yZTROb2RlMzFudW1iZXJPZlNjb3BlZEhU
TUxTdHlsZUNoaWxkcmVuRXYKIF9fWk5LN1dlYkNvcmU0Tm9kZTlub2RlSW5kZXhFdgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUub3JkZXIKaW5kZXggYmJmNmEzZGQzZDdjZGE4NmJjZGE4MDgwMjNiNWEyMGJjOGNkMzRlOS4u
MzY2ZDYwNzdkNjE5MWYwZWIxNDViYzA4NjBlNjVlOWM1MjRhNWE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9y
ZGVyCkBAIC0yNDcxLDEzICsyNDcxLDEwIEBAIF9fWk5LM1dURjlIYXNoVGFibGVJUHZTMV9OU18x
N0lkZW50aXR5RXh0cmFjdG9ySVMxX0VFTlNfN1B0ckhhc2hJUzFfRUVOU18xMEhhc2hUCiBfX1pO
N1dlYkNvcmUxMUpTTm9kZU93bmVyOGZpbmFsaXplRU4zSlNDNkhhbmRsZUlOUzFfN1Vua25vd25F
RUVQdgogX19aTjdXZWJDb3JlMTR1bmNhY2hlV3JhcHBlcklOU180Tm9kZUVFRXZQTlNfMTVET01X
cmFwcGVyV29ybGRFUFRfUE5TXzEySlNET01XcmFwcGVyRQogX19aTjdXZWJDb3JlMTRKU0hUTUxE
b2N1bWVudEQxRXYKLV9fWlRobjhfTjdXZWJDb3JlOERvY3VtZW50MTRyZW1vdmVkTGFzdFJlZkV2
Ci1fX1pON1dlYkNvcmU4RG9jdW1lbnQxNHJlbW92ZWRMYXN0UmVmRXYKIF9fWk43V2ViQ29yZTE0
U3R5bGVTaGVldExpc3REMUV2CiBfX1pON1dlYkNvcmU5VHJlZVNjb3BlMjBkZXN0cm95VHJlZVNj
b3BlRGF0YUV2CiBfX1pON1dlYkNvcmUxOERvY3VtZW50T3JkZXJlZE1hcDVjbGVhckV2CiBfX1pO
N1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxN3JlbW92ZUFsbENoaWxkcmVuRXYKLV9fWk43V2ViQ29y
ZTI4cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcklOU180Tm9kZUVOU18xM0NvbnRhaW5lck5v
ZGVFRUV2UFQwXwogX19aTjdXZWJDb3JlMTVIVE1MSHRtbEVsZW1lbnREMEV2CiBfX1pON1dlYkNv
cmUxM1N0eWxlZEVsZW1lbnREMkV2CiBfX1pON1dlYkNvcmU3RWxlbWVudEQyRXYKQEAgLTQxNTEs
NyArNDE0OCw2IEBAIF9fWk43V2ViQ29yZTROb2RlMTVyZW1vdmVkRnJvbVRyZWVFYgogX19aTjdX
ZWJDb3JlTDE5bm90aWZ5Q2hpbGRJbnNlcnRlZEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmU0Tm9k
ZTE2aW5zZXJ0ZWRJbnRvVHJlZUViCiBfX1pON1dlYkNvcmVMMjhkaXNwYXRjaENoaWxkSW5zZXJ0
aW9uRXZlbnRzRVBOU180Tm9kZUUKLV9fWk43V2ViQ29yZTEwVHJlZVNoYXJlZElOU18xM0NvbnRh
aW5lck5vZGVFRTE0cmVtb3ZlZExhc3RSZWZFdgogX19aVGhuOF9ON1dlYkNvcmUxNkRvY3VtZW50
RnJhZ21lbnREMEV2CiBfX1pON1dlYkNvcmVMMzNjcmVhdGVIVE1MUGFyYWdyYXBoRWxlbWVudFdy
YXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVOM1dURjEwUGFz
c1JlZlB0cklOU18xMUhUTUxFbGVtZW50RUVFCiBfX1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJJ
TlNfMjJKU0hUTUxQYXJhZ3JhcGhFbGVtZW50RU5TXzIwSFRNTFBhcmFncmFwaEVsZW1lbnRFRUVQ
TlNfMTJKU0RPTVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVj
dEVQVDBfCkBAIC0yOTQ3MSwxMiArMjk0NjcsMTAgQEAgX19aTjdXZWJDb3JlMTNTVkdVc2VFbGVt
ZW50MzBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXBFdgogX19aTks3V2ViQ29yZTEyU1ZH
VHJhbnNmb3JtOXRyYW5zbGF0ZUV2CiBfX1pON1dlYkNvcmUxMEZsb2F0UG9pbnQxNW5hcnJvd1By
ZWNpc2lvbkVkZAogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFuc2Zvcm05c2V0TWF0cml4RWRkZGRk
ZAotX19aTjdXZWJDb3JlMTBUcmVlU2hhcmVkSU5TXzE4U1ZHRWxlbWVudEluc3RhbmNlRUUxNHJl
bW92ZWRMYXN0UmVmRXYKIF9fWk43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRDBFdgogX19a
TjdXZWJDb3JlMTBTVkdFbGVtZW50MjFyZW1vdmVJbnN0YW5jZU1hcHBpbmdFUE5TXzE4U1ZHRWxl
bWVudEluc3RhbmNlRQogX19aTkszV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlMThTVkdFbGVtZW50
SW5zdGFuY2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19FRU5TXzdQdHJIYXNoSVMzX0VF
TlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTRmaW5kSVMzX05TXzIySWRlbnRpdHlIYXNoVHJhbnNs
YXRvcklTM19TM19TN19FRUVFTlNfMjJIYXNoVGFibGVDb25zdEl0ZXJhdG9ySVMzX1MzX1M1X1M3
X1M5X1M5X0VFUktUXwogX19aTjNXVEY5SGFzaFRhYmxlSVBON1dlYkNvcmUxOFNWR0VsZW1lbnRJ
bnN0YW5jZUVTM19OU18xN0lkZW50aXR5RXh0cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzNfRUVO
U18xMEhhc2hUcmFpdHNJUzNfRUVTOV9FNnJlbW92ZUVQUzNfCi1fX1pON1dlYkNvcmUyOHJlbW92
ZUFsbENoaWxkcmVuSW5Db250YWluZXJJTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFUzFfRUV2UFQw
XwogX19aVGhuOF9ON1dlYkNvcmUxNFNWR0xpbmVFbGVtZW50RDBFdgogX19aVGhuOF9ON1dlYkNv
cmUxOFNWR1BvbHlsaW5lRWxlbWVudEQwRXYKIF9fWlRobjhfTjdXZWJDb3JlMTdTVkdQb2x5Z29u
RWxlbWVudEQwRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCBkZTllNGZmNDNmNDliZDg2NGZmYzk0NGIy
ZGMxYmJkOThjODcxOTNhLi5mOWJiZjU3MGRjNDExNzgxNzc2ZjkwNGFkOGQ3MmJiODViYjhlM2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0F0dHIuY3BwCkBAIC04Miw2ICs4Miw3IEBAIHZvaWQgQXR0cjo6Y3JlYXRlVGV4
dENoaWxkKCkKICAgICAgICAgLy8gVGhpcyBkb2VzIGV2ZXJ5dGhpbmcgYXBwZW5kQ2hpbGQoKSB3
b3VsZCBkbyBpbiB0aGlzIHNpdHVhdGlvbiAoYXNzdW1pbmcgbV9pZ25vcmVDaGlsZHJlbkNoYW5n
ZWQgd2FzIHNldCksCiAgICAgICAgIC8vIGJ1dCBtdWNoIG1vcmUgZWZmaWNpZW50bHkuCiAgICAg
ICAgIHRleHROb2RlLT5zZXRQYXJlbnRPckhvc3ROb2RlKHRoaXMpOworICAgICAgICB0ZXh0Tm9k
ZS0+dW5zZXRMaWZldGltZU93bmVyKCk7CiAgICAgICAgIHNldEZpcnN0Q2hpbGQodGV4dE5vZGUu
Z2V0KCkpOwogICAgICAgICBzZXRMYXN0Q2hpbGQodGV4dE5vZGUuZ2V0KCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBjMjNhMGI5ZTkwZDAwYjJkYTQ5ZDk2
YTM5ODUyYjc3ZGMzNjQzYjdkLi4zZDc2YTBmYTg4MjJmMzdhMjFmYzEyMzcwZmQxYTMyNDZkZDQ2
NTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC04Myw3ICs4MywxMiBA
QCBzdGF0aWMgdm9pZCBjb2xsZWN0Q2hpbGRyZW5BbmRSZW1vdmVGcm9tT2xkUGFyZW50KE5vZGUq
IG5vZGUsIE5vZGVWZWN0b3ImIG5vZGVzLAogCiB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUFs
bENoaWxkcmVuKCkKIHsKLSAgICByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyPE5vZGUsIENv
bnRhaW5lck5vZGU+KHRoaXMpOworICAgIHJlbW92ZUNoaWxkcmVuSW5Db250YWluZXI8Tm9kZSwg
Q29udGFpbmVyTm9kZT4odGhpcyk7Cit9CisKK2Jvb2wgQ29udGFpbmVyTm9kZTo6Z2NDaGlsZHJl
bigpCit7CisgICAgcmV0dXJuIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcih0aGlzKTsKIH0KIAogdm9p
ZCBDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9sZFBh
cmVudCkKQEAgLTExMSw3ICsxMTYsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnRha2VBbGxDaGls
ZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQogCiBDb250YWluZXJOb2RlOjp+Q29u
dGFpbmVyTm9kZSgpCiB7Ci0gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIn5Db250YWluZXJOb2RlKCkgJXBcbiIsIHRoaXMpOwogfQogCiBib29sIENvbnRh
aW5lck5vZGU6Omluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBOb2RlKiBy
ZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMsIGJvb2wgc2hvdWxkTGF6eUF0dGFjaCkKQEAgLTQw
MSw3ICs0MDYsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENo
aWxkLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIGNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgcHJl
diwgbmV4dCwgLTEpOwogCi0gICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlm
eShjaGlsZC5nZXQoKSk7CisgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlm
eShjaGlsZC5nZXQoKSwgZmFsc2UpOwogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQo
KTsKIAogICAgIHJldHVybiBjaGlsZDsKQEAgLTQ0Nyw3ICs0NTIsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkKQogICAgIHJlbW92ZUJldHdl
ZW4ocHJldiwgbmV4dCwgb2xkQ2hpbGQpOwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIHBy
ZXYsIG5leHQsIC0xKTsKLSAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5
KG9sZENoaWxkKTsKKyAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KG9s
ZENoaWxkLCBmYWxzZSk7CiB9CiAKIC8vIHRoaXMgZGlmZmVycyBmcm9tIG90aGVyIHJlbW92ZSBm
dW5jdGlvbnMgYmVjYXVzZSBpdCBmb3JjaWJseSByZW1vdmVzIGFsbCB0aGUgY2hpbGRyZW4sCkBA
IC01MDksNyArNTE0LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAg
ICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCAwLCAwLCAtc3RhdGljX2Nhc3Q8aW50PihyZW1vdmVk
Q2hpbGRyZW5Db3VudCkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHJlbW92ZWRDaGlsZHJlbkNv
dW50OyArK2kpCi0gICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnko
cmVtb3ZlZENoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0uZ2V0KCksIGZhbHNlKTsKIAogICAg
IGFsbG93RXZlbnREaXNwYXRjaCgpOwogICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQo
KTsKQEAgLTU3OCwxNCArNTgzLDE1IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hp
bGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCkKIAogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2go
KTsKICAgICBOb2RlKiBsYXN0ID0gbV9sYXN0Q2hpbGQ7CisgICAgTm9kZSogY2hpbGQgPSBuZXdD
aGlsZC5nZXQoKTsKICAgICAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIHRha2UgYSBQYXNz
UmVmUHRyLgotICAgIGFwcGVuZENoaWxkVG9Db250YWluZXIobmV3Q2hpbGQuZ2V0KCksIHRoaXMp
OwotICAgIHRyZWVTY29wZSgpLT5hZG9wdElmTmVlZGVkKG5ld0NoaWxkLmdldCgpKTsKKyAgICBh
cHBlbmRDaGlsZFRvQ29udGFpbmVyKGNoaWxkLCB0aGlzKTsKKyAgICB0cmVlU2NvcGUoKS0+YWRv
cHRJZk5lZWRlZChjaGlsZCk7CiAgICAgCiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CiAKICAg
ICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgbGFzdCwgMCwgMSk7Ci0gICAgQ2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXIodGhpcykubm90aWZ5KG5ld0NoaWxkLmdldCgpKTsKKyAgICBDaGlsZE5vZGVJ
bnNlcnRpb25Ob3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQpOwogfQogCiB2b2lkIENvbnRhaW5l
ck5vZGU6OnN1c3BlbmRQb3N0QXR0YWNoQ2FsbGJhY2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCmluZGV4IDVmNTVjN2JlYjQ4ZDA0MjIyYTU2MDcxYTVkYTkwNzdiMjIxOWYyNWUuLmI0
NDdlZWE2ZWMzMzI5MzE1MDQ4YjFiMWY3MmU1MDBhYTljYjU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaApAQCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gSG93IGRvIHJl
bW92ZUNoaWxkcmVuIGFuZCByZW1vdmVBbGxDaGlsZHJlbiBkaWZmZXI/CiAgICAgdm9pZCByZW1v
dmVDaGlsZHJlbigpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICBib29sIGdj
Q2hpbGRyZW4oKTsKIAogICAgIHZvaWQgdGFrZUFsbENoaWxkcmVuRnJvbShDb250YWluZXJOb2Rl
Kik7CiAKQEAgLTExNyw5ICsxMTgsMTEgQEAgcHJvdGVjdGVkOgogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgogICAgIGZyaWVuZCB2
b2lkIGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9k
ZUNvbnRhaW5lciopOwotCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdl
bmVyaWNOb2RlQ29udGFpbmVyPgogICAgIGZyaWVuZCB2b2lkIFByaXZhdGU6OmFkZENoaWxkTm9k
ZXNUb0RlbGV0aW9uUXVldWUoR2VuZXJpY05vZGUqJiBoZWFkLCBHZW5lcmljTm9kZSomIHRhaWws
IEdlbmVyaWNOb2RlQ29udGFpbmVyKik7CisgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUs
IGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgorICAgIGZyaWVuZCB2b2lkIHJlbW92ZUNoaWxk
cmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqKTsKKyAgICBmcmllbmQgYm9vbCBn
Y0NoaWxkcmVuSW5Db250YWluZXIoQ29udGFpbmVyTm9kZSopOwogCiAgICAgdm9pZCBzZXRGaXJz
dENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fZmlyc3RDaGlsZCA9IGNoaWxkOyB9CiAgICAgdm9pZCBz
ZXRMYXN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKaW5kZXggYzg5NTlk
ZmI4MTYzZjRlZTk1YjQ1ZTA5M2Y0ZjdiYzUxYzNmNTYzYy4uYTQwZGU3ZmM3MTg5MjkyYzgzZTYy
MDkwNjMzN2M0YWYxMGQzMGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZUFsZ29yaXRobXMuY3BwCkBAIC01OSw2ICs1OSw4IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5v
ZGUqCiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc0NvbnRh
aW5lck5vZGUoKSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHRvQ29u
dGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjaGlsZC0+dW5z
ZXRMaWZldGltZU93bmVyKCk7CiAgICAgfQogCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0g
bm9kZS0+eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRv
d1Jvb3QoKSkKQEAgLTk1LDYgKzk3LDggQEAgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6
Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSogbm8KICAgICBm
b3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzQ29udGFpbmVyTm9kZSgp
KQogICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSh0b0NvbnRhaW5lck5vZGUo
Y2hpbGQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2hlY2tJZkxpZmV0aW1lT3duZXIo
Y2hpbGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAppbmRleCBiNWRmYTRmYTZh
YmY0NjdjNDVjOGZjMjdmZjZlOTZjMjMzZWQ4OGExLi43Y2FkMGQxYjg1NDAyMzVkOTU5MDE5YmRh
NDE4ZGJlODYxOTE1MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaApAQCAtMjMsOSArMjMsMTQgQEAKICNkZWZpbmUgQ29udGFpbmVyTm9kZUFsZ29y
aXRobXNfaAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50U2hhZG93
LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCisj
aW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTUyLDE4ICs1NywyMSBAQCBjbGFzcyBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihD
b250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgOiBtX2luc2VydGlvblBvaW50
KGluc2VydGlvblBvaW50KQorICAgICAgICAsIG1fbGlmZXRpbWVPd25lckZvdW5kKGZhbHNlKQog
ICAgIHsKICAgICB9CiAKLSAgICB2b2lkIG5vdGlmeShOb2RlKik7CisgICAgdm9pZCBub3RpZnko
Tm9kZSosIGJvb2wpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92
ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSopOwogICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFu
dFJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKik7CiAgICAgdm9pZCBub3RpZnlOb2RlUmVt
b3ZlZEZyb21Eb2N1bWVudChOb2RlKik7CiAgICAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21U
cmVlKENvbnRhaW5lck5vZGUqKTsKKyAgICB2b2lkIGNoZWNrSWZMaWZldGltZU93bmVyKE5vZGUq
KTsKIAogICAgIENvbnRhaW5lck5vZGUqIG1faW5zZXJ0aW9uUG9pbnQ7CisgICAgYm9vbCBtX2xp
ZmV0aW1lT3duZXJGb3VuZDsKIH07CiAKIG5hbWVzcGFjZSBQcml2YXRlIHsKQEAgLTczLDExICs4
MSwyMzggQEAgbmFtZXNwYWNlIFByaXZhdGUgewogCiB9CiAKLS8vIEhlbHBlciBmdW5jdGlvbnMg
Zm9yIFRyZWVTaGFyZWQtZGVyaXZlZCBjbGFzc2VzLCB3aGljaCBoYXZlIGEgJ05vZGUnIHN0eWxl
IGludGVyZmFjZQotLy8gVGhpcyBhcHBsaWVzIHRvICdDb250YWluZXJOb2RlJyBhbmQgJ1NWR0Vs
ZW1lbnRJbnN0YW5jZScKKy8vIEZJWE1FOiBXcmFwIHVwIHR3byBnY0NoaWxkcmVuSW5Db250YWlu
ZXIoKXMgYnkgdGVtcGxhdGUuCitpbmxpbmUgYm9vbCBnY0NoaWxkcmVuSW5Db250YWluZXIoU1ZH
RWxlbWVudEluc3RhbmNlKiBjb250YWluZXIpCit7CisgICAgLy8gVGhpcyBhc3NlcnRpb24gaXMg
anVzdCBmb3IgcGVyZm9ybWFuY2UuIEZvciBwZXJmb3JtYW5jZSB3ZSBzaG91bGQgYXZvaWQgY2Fs
bGluZworICAgIC8vIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpIGlmIGNvbnRhaW5lci0+cmVmQ291
bnQoKSA+IDAuCisgICAgQVNTRVJUKCFjb250YWluZXItPnJlZkNvdW50KCkpOworICAgIEFTU0VS
VCghY29udGFpbmVyLT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICBWZWN0b3I8U1ZHRWxlbWVu
dEluc3RhbmNlKj4gZ2FyYmFnZU5vZGVzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGls
ZHJlbkluQ29udGFpbmVyKFNWR0VsZW1lbnRJbnN0YW5jZSopICVwIGJlZm9yZVxuIiwgY29udGFp
bmVyKTsKKworICAgIC8vIERPTSBOb2RlcyBhcmUgdHJhdmVyc2VkIGluIHRoZSBmb2xsb3dpbmcg
b3JkZXIuIFRoZSB0cmF2ZXJzYWwgb3JkZXIgZG9lcyBub3QgbWF0dGVyCisgICAgLy8gZm9yIGNv
cnJlY3RuZXNzLCBidXQgY3JpdGljYWwgZm9yIHBlcmZvcm1hbmNlOgorICAgIC8vICgxKSBUaGUg
cm9vdCBub2RlCisgICAgLy8gKDIpIFJldmVyc2UgREZTIG9yZGVyIGZvciB0aGUgcmVzdCBvZiBO
b2RlcworICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogbm9kZSA9IGNvbnRhaW5lci0+bGFzdENoaWxk
KCk7CisgICAgd2hpbGUgKG5vZGUpIHsKKyAgICAgICAgLy8gQXQgdGhlIHBvaW50IHdoZXJlIGdj
Q2hpbGRyZW5JbkNvbnRhaW5lcigpIGlzIGNhbGxlZCwgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3du
ZXIgaW4gdGhlCisgICAgICAgIC8vIERPTSB0cmVlLgorICAgICAgICBBU1NFUlQoIW5vZGUtPmlz
TGlmZXRpbWVPd25lcigpKTsKKworICAgICAgICBnYXJiYWdlTm9kZXMuYXBwZW5kKG5vZGUpOwor
ICAgICAgICBpZiAobm9kZS0+bGFzdENoaWxkKCkpIHsKKyAgICAgICAgICAgIG5vZGUgPSBub2Rl
LT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IHdoaWxlICghbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdl
IGZpbmQgYSBOb2RlIHRoYXQgaGFzIDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIG5vZGUgYXMgYSBs
aWZldGltZSBvd25lciwKKyAgICAgICAgICAgIC8vIGFuZCByZXR1cm4gd2l0aG91dCBkZWxldGlu
ZyBhbnkgTm9kZSBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVmQ291
bnQoKSkgeworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+cmVmQ291
bnQoKT4wICVwIHJlZkNvdW50PT0lZFxuIiwgbm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNv
bnRhaW5lcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICAgICAgQVNT
RVJUKG5vZGUpOworICAgICAgICAgICAgaWYgKG5vZGUgPT0gY29udGFpbmVyKSB7CisgICAgICAg
ICAgICAgICAgbm9kZSA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGZp
bmQgYSBOb2RlIHRoYXQgaGFzIDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIG5vZGUgYXMgYSBsaWZl
dGltZSBvd25lciwKKyAgICAgICAgICAgIC8vIGFuZCByZXR1cm4gd2l0aG91dCBkZWxldGluZyBh
bnkgTm9kZSBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVmQ291bnQo
KSkgeworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+cmVmQ291bnQo
KT4wICVwIHJlZkNvdW50PT0lZFxuIiwgbm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAg
ICAgICAgICAgbm9kZS0+c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRh
aW5lcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBOb3cgYWxsIE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVmY291
bnQsIGFuZCB3ZSBjYW4gZGVsZXRlIGFsbCB0aGUgTm9kZXMuCisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJkZWxldGlvbiBzdGFydGVkXG4iKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGdhcmJh
Z2VOb2Rlcy5zaXplKCk7CisgICAgLy8gQmVmb3JlIHN0YXJ0aW5nIGRlbGV0aW9uLCB3ZSBjbGVh
ciBhbGwgdHJlZSBwb2ludGVycyBzbyB0aGF0IE5vZGUgZGVzdHJ1Y3RvcgorICAgIC8vIHdvbid0
IGNhdXNlIHVuZXhwZWN0ZWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgZGVwZW5kaW5nIG9uIHRoZSBk
ZWxldGlvbiBvcmRlci4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXQgPSBnYXJiYWdlTm9kZXNbaV07
CisgICAgICAgIHRhcmdldC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOworICAgICAgICB0YXJnZXQt
PnNldE5leHRTaWJsaW5nKDApOworICAgICAgICB0YXJnZXQtPnNldFBhcmVudE9ySG9zdE5vZGUo
MCk7CisgICAgICAgIEFTU0VSVCghdGFyZ2V0LT5yZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJU
KCF0YXJnZXQtPmlzTGlmZXRpbWVPd25lcigpKTsKKyAgICAgICAgdGFyZ2V0LT5zZXRGaXJzdENo
aWxkKDApOworICAgICAgICB0YXJnZXQtPnNldExhc3RDaGlsZCgwKTsKKyAgICB9CisgICAgY29u
dGFpbmVyLT5zZXRGaXJzdENoaWxkKDApOworICAgIGNvbnRhaW5lci0+c2V0TGFzdENoaWxkKDAp
OworCisgICAgLy8gTm93IGl0IGlzIHNhZmUgdG8gZGVsZXRlIGFsbCB0aGUgTm9kZXMgaW4gYW55
IG9yZGVyLgorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAg
ICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldCA9IGdhcmJhZ2VOb2Rlc1tpXTsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAodGFyZ2V0KSBiZWZvcmVcbiIsIHRhcmdl
dCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICB0YXJnZXQtPm1fZGVsZXRpb25IYXNCZWd1biA9
IHRydWU7CisjZW5kaWYKKyAgICAgICAgZGVsZXRlIHRhcmdldDsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJkZWxldGUgJXAodGFyZ2V0KSBhZnRlclxuIiwgdGFyZ2V0KTsKKyAgICB9Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuSW5Db250YWluZXIoU1ZHRWxlbWVudElu
c3RhbmNlKikgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2lubGluZSBib29sIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250YWluZXJOb2RlKiBjb250YWlu
ZXIpCit7CisgICAgLy8gRklYTUU6IE9wdGltaXplIHRoZSBpbml0aWFsIHZlY3RvciBzaXplLgor
ICAgIFZlY3RvcjxOb2RlKiwgMTA+IGdhcmJhZ2VOb2RlczsKKyAgICBWZWN0b3I8RWxlbWVudFNo
YWRvdyosIDEwPiBnYXJiYWdlRWxlbWVudFNoYWRvd3M7CisgICAgRGVxdWU8U2hhZG93Um9vdCos
IDEwPiBwZW5kaW5nU2hhZG93Um9vdHM7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxk
cmVuSW5Db250YWluZXIoQ29udGFpbmVyTm9kZSopICVwIGJlZm9yZVxuIiwgY29udGFpbmVyKTsK
KworICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IGNvbnRhaW5lcjsKKyAgICAvLyBUaGUgd2hvbGUgRE9N
IHRyZWUgaXMgdHJhdmVyc2VkIGluIHRoZSBvcmRlcjoKKyAgICAvLyAoMSkgTGlnaHQgRE9NCisg
ICAgLy8gKDIpIFNoYWRvdyBET00gZm91bmQgaW4gdGhlIGxpZ2h0IERPTQorICAgIC8vICgzKSBT
aGFkb3cgRE9NIGZvdW5kIGluIHRoZSBzaGFkb3cgRE9NIGZvdW5kIGluIHRoZSBsaWdodCBET00K
KyAgICAvLyAoNCkgLi4uICh1bnRpbCBubyBzaGFkb3cgRE9NIGlzIGZvdW5kLikKKyAgICAvLwor
ICAgIC8vIEluIGVhY2ggdHJhdmVyc2FsLCBET00gTm9kZXMgYXJlIHRyYXZlcnNlZCBpbiB0aGUg
Zm9sbG93aW5nIG9yZGVyLgorICAgIC8vIFRoZSB0cmF2ZXJzYWwgb3JkZXIgZG9lcyBub3QgbWF0
dGVyIGZvciBjb3JyZWN0bmVzcywgYnV0IGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZToKKyAgICAv
LyAoMSkgVGhlIHJvb3Qgbm9kZQorICAgIC8vICgyKSBSZXZlcnNlIERGUyBvcmRlciBmb3IgdGhl
IHJlc3Qgb2YgTm9kZXMKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAvLyBUaGlzIGFzc2Vy
dGlvbiBpcyBqdXN0IGZvciBwZXJmb3JtYW5jZS4gRm9yIHBlcmZvcm1hbmNlIHdlIHNob3VsZCBh
dm9pZCBjYWxsaW5nCisgICAgICAgIC8vIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpIGlmIGNvbnRh
aW5lci0+cmVmQ291bnQoKSA+IDAuCisgICAgICAgIEFTU0VSVCghc3RhcnROb2RlLT5yZWZDb3Vu
dCgpKTsKKyAgICAgICAgQVNTRVJUKCFzdGFydE5vZGUtPmlzTGlmZXRpbWVPd25lcigpKTsKKwor
ICAgICAgICBOb2RlKiBub2RlID0gc3RhcnROb2RlLT5sYXN0Q2hpbGQoKTsKKyAgICAgICAgd2hp
bGUgKG5vZGUpIHsKKyAgICAgICAgICAgIC8vIEF0IHRoZSBwb2ludCB3aGVyZSBnY0NoaWxkcmVu
SW5Db250YWluZXIoKSBpcyBjYWxsZWQsIHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRo
ZQorICAgICAgICAgICAgLy8gRE9NIHRyZWUuCisgICAgICAgICAgICBBU1NFUlQoIW5vZGUtPmlz
TGlmZXRpbWVPd25lcigpKTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUo
KSAmJiB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKSB7CisgICAgICAgICAgICAgICAgZ2FyYmFn
ZUVsZW1lbnRTaGFkb3dzLmFwcGVuZCh0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBub2RlLT55b3VuZ2VzdFNoYWRvd1Jv
b3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIC8vIEF0IHRoZSBwb2ludCB3aGVyZSBnY0NoaWxkcmVuSW5Db250YWluZXIoKSBp
cyBjYWxsZWQsIHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZQorICAgICAgICAgICAg
ICAgICAgICAvLyBET00gdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFyb290LT5p
c0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBh
IHNoYWRvdyByb290IHRoYXQgaGFzIDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIHNoYWRvdyByb290
IGFzCisgICAgICAgICAgICAgICAgICAgIC8vIGEgbGlmZXRpbWUgb3duZXIsIGFuZCByZXR1cm4g
aW1tZWRpYXRlbHkgd2l0aG91dCBkZWxldGluZyBhbnkgTm9kZSBpbgorICAgICAgICAgICAgICAg
ICAgICAvLyB0aGUgRE9NIHRyZWUuCisgICAgICAgICAgICAgICAgICAgIGlmIChyb290LT5yZWZD
b3VudCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInNo
YWRvd1Jvb3QtPnJlZkNvdW50KCk+MCAlcCByZWZDb3VudD09JWRcbiIsIHJvb3QsIHJvb3QtPnJl
ZkNvdW50KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcm9vdC0+c2V0TGlmZXRpbWVPd25l
cigpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxk
cmVuSW5Db250YWluZXIoKSAlcCBhZnRlclxuIiwgY29udGFpbmVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInBlbmRpbmdTaGFkb3dSb290cy5hcHBlbmQo
cm9vdCkgcm9vdD0lcFxuIiwgcm9vdCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVjb3Jk
IHRoZSBzaGFkb3cgcm9vdCB0byBiZSB0cmF2ZXJzZWQgbGF0ZXIuCisgICAgICAgICAgICAgICAg
ICAgIHBlbmRpbmdTaGFkb3dSb290cy5hcHBlbmQocm9vdCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJnYXJiYWdlTm9k
ZXMuYXBwZW5kKG5vZGUpIG5vZGU9JXBcbiIsIG5vZGUpOworICAgICAgICAgICAgZ2FyYmFnZU5v
ZGVzLmFwcGVuZChub2RlKTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmxhc3RDaGlsZCgpKSB7
CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmxhc3RDaGlsZCgpOworICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKCFub2RlLT5w
cmV2aW91c1NpYmxpbmcoKSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBOb2Rl
IHRoYXQgaGFzIDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIG5vZGUgYXMgYSBsaWZldGltZSBvd25l
ciwKKyAgICAgICAgICAgICAgICAvLyBhbmQgcmV0dXJuIHdpdGhvdXQgZGVsZXRpbmcgYW55IE5v
ZGUgaW4gdGhlIERPTSB0cmVlLgorICAgICAgICAgICAgICAgIGlmIChub2RlLT5yZWZDb3VudCgp
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+cmVmQ291
bnQoKT4wICVwIHJlZkNvdW50PT0lZFxuIiwgbm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuSW5Db250YWluZXIoKSAlcCBhZnRl
clxuIiwgY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRPckhv
c3ROb2RlKCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUpOworICAgICAgICAgICAgICAg
IGlmIChub2RlID09IHN0YXJ0Tm9kZSkgeworICAgICAgICAgICAgICAgICAgICBub2RlID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBm
aW5kIGEgTm9kZSB0aGF0IGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0IHRoZSBub2RlIGFzIGEgbGlm
ZXRpbWUgb3duZXIsCisgICAgICAgICAgICAgICAgLy8gYW5kIHJldHVybiB3aXRob3V0IGRlbGV0
aW5nIGFueSBOb2RlIGluIHRoZSBET00gdHJlZS4KKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+
cmVmQ291bnQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5v
ZGUtPnJlZkNvdW50KCk+MCAlcCByZWZDb3VudD09JWRcbiIsIG5vZGUsIG5vZGUtPnJlZkNvdW50
KCkpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAg
ICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29udGFpbmVy
KCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBub2RlID0gbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAv
LyBJZiB0aGVyZSBpcyBubyBwZW5kaW5nIHNoYWRvdyByb290cywgYWxsIE5vZGUgdHJhdmVyc2Fs
cyBhcmUgZG9uZS4KKyAgICAgICAgaWYgKHBlbmRpbmdTaGFkb3dSb290cy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RhcnROb2RlID0gcGVuZGluZ1NoYWRvd1Jvb3Rz
LnRha2VGaXJzdCgpOworICAgIH0KKworICAgIC8vIE5vdyBhbGwgTm9kZXMgaW4gdGhlIERPTSB0
cmVlIGhhdmUgMCByZWZjb3VudCwgYW5kIHdlIGNhbiBkZWxldGUgYWxsIHRoZSBOb2Rlcy4KKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0aW9uIHN0YXJ0ZWRcbiIpOworCisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gZ2FyYmFnZUVsZW1lbnRTaGFkb3dzLnNpemUoKTsKKyAgICAvLyBCZWZvcmUg
c3RhcnRpbmcgZGVsZXRpb24sIHdlIGNsZWFyIGFsbCB0cmVlIHBvaW50ZXJzIHNvIHRoYXQgTm9k
ZSBkZXN0cnVjdG9yCisgICAgLy8gd29uJ3QgY2F1c2UgdW5leHBlY3RlZCBwb2ludGVyIGRlcmVm
ZXJlbmNlcyBkZXBlbmRpbmcgb24gdGhlIGRlbGV0aW9uIG9yZGVyLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgZ2FyYmFnZUVsZW1lbnRTaGFkb3dz
W2ldLT5mb3JjZVJlbW92ZUFsbFNoYWRvd1Jvb3RzKCk7CisKKyAgICBsZW5ndGggPSBnYXJiYWdl
Tm9kZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBOb2RlKiB0YXJnZXQgPSBnYXJiYWdlTm9kZXNbaV07CisgICAgICAgIHRhcmdl
dC0+c2V0UHJldmlvdXNTaWJsaW5nKDApOworICAgICAgICB0YXJnZXQtPnNldE5leHRTaWJsaW5n
KDApOworICAgICAgICB0YXJnZXQtPnNldFBhcmVudE9ySG9zdE5vZGUoMCk7CisgICAgICAgIEFT
U0VSVCghdGFyZ2V0LT5yZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCF0YXJnZXQtPmlzTGlm
ZXRpbWVPd25lcigpKTsKKyAgICAgICAgaWYgKHRhcmdldC0+aXNDb250YWluZXJOb2RlKCkpIHsK
KyAgICAgICAgICAgIENvbnRhaW5lck5vZGUqIHRhcmdldENvbnRhaW5lciA9IHN0YXRpY19jYXN0
PENvbnRhaW5lck5vZGUqPih0YXJnZXQpOworICAgICAgICAgICAgdGFyZ2V0Q29udGFpbmVyLT5z
ZXRGaXJzdENoaWxkKDApOworICAgICAgICAgICAgdGFyZ2V0Q29udGFpbmVyLT5zZXRMYXN0Q2hp
bGQoMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY29udGFpbmVyLT5zZXRGaXJzdENoaWxkKDAp
OworICAgIGNvbnRhaW5lci0+c2V0TGFzdENoaWxkKDApOworCisgICAgLy8gTm93IGl0IGlzIHNh
ZmUgdG8gZGVsZXRlIGFsbCB0aGUgTm9kZXMgaW4gYW55IG9yZGVyLgorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBOb2RlKiB0YXJnZXQgPSBnYXJi
YWdlTm9kZXNbaV07CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdl
dCkgYmVmb3JlXG4iLCB0YXJnZXQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgdGFyZ2V0LT5t
X2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIGRlbGV0ZSB0YXJnZXQ7
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdldCkgYWZ0ZXJcbiIs
IHRhcmdldCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29u
dGFpbmVyKENvbnRhaW5lck5vZGUqKSAlcCBhZnRlclxuIiwgY29udGFpbmVyKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworLy8gRklYTUU6IFJlcGxhY2UgYWxsIHJlbW92ZUNoaWxkcmVuSW5Db250
YWluZXIoKXMgd2l0aCBnY0NoaWxkcmVuSW5Db250YWluZXIoKS4KIHRlbXBsYXRlPGNsYXNzIEdl
bmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLWlubGluZSB2b2lkIHJlbW92
ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikK
K2lubGluZSB2b2lkIHJlbW92ZUNoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWlu
ZXIqIGNvbnRhaW5lcikKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInJlbW92ZUNoaWxkcmVu
SW5Db250YWluZXIoKSAlcCBiZWZvcmVcbiIsIGNvbnRhaW5lcik7CiAgICAgLy8gTGlzdCBvZiBu
b2RlcyB0byBiZSBkZWxldGVkLgogICAgIEdlbmVyaWNOb2RlKiBoZWFkID0gMDsKICAgICBHZW5l
cmljTm9kZSogdGFpbCA9IDA7CkBAIC04Nyw4ICszMjIsNiBAQCBpbmxpbmUgdm9pZCByZW1vdmVB
bGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiAg
ICAgR2VuZXJpY05vZGUqIG47CiAgICAgR2VuZXJpY05vZGUqIG5leHQ7CiAgICAgd2hpbGUgKChu
ID0gaGVhZCkgIT0gMCkgewotICAgICAgICBBU1NFUlQobi0+bV9kZWxldGlvbkhhc0JlZ3VuKTsK
LQogICAgICAgICBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgbi0+c2V0TmV4dFNp
YmxpbmcoMCk7CiAKQEAgLTk5LDggKzMzMiwxNCBAQCBpbmxpbmUgdm9pZCByZW1vdmVBbGxDaGls
ZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiAgICAgICAg
IGlmIChuLT5oYXNDaGlsZE5vZGVzKCkpCiAgICAgICAgICAgICBQcml2YXRlOjphZGRDaGlsZE5v
ZGVzVG9EZWxldGlvblF1ZXVlPEdlbmVyaWNOb2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lcj4oaGVh
ZCwgdGFpbCwgc3RhdGljX2Nhc3Q8R2VuZXJpY05vZGVDb250YWluZXIqPihuKSk7CiAKKyNpZm5k
ZWYgTkRFQlVHCisgICAgICAgIG4tPm1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYK
KyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAgYmVmb3JlXG4iLCBuKTsKICAg
ICAgICAgZGVsZXRlIG47CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwIGFm
dGVyXG4iLCBuKTsKICAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJyZW1vdmVDaGlsZHJl
bkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KQEAgLTExOCw3ICsz
NTcsNyBAQCBpbmxpbmUgdm9pZCBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKEdlbmVyaWNOb2RlKiBj
aGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbgogICAgIGNvbnRhaW5lci0+c2V0TGFzdENo
aWxkKGNoaWxkKTsKIH0KIAotLy8gSGVscGVyIG1ldGhvZHMgZm9yIHJlbW92ZUFsbENoaWxkcmVu
SW5Db250YWluZXIsIGhpZGRlbiBmcm9tIFdlYkNvcmUgbmFtZXNwYWNlCisvLyBIZWxwZXIgbWV0
aG9kcyBmb3IgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lciwgaGlkZGVuIGZyb20gV2ViQ29yZSBu
YW1lc3BhY2UKIG5hbWVzcGFjZSBQcml2YXRlIHsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVy
aWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lciwgYm9vbCBkaXNwYXRjaFJlbW92YWxO
b3RpZmljYXRpb24+CkBAIC0xMzcsNyArMzc2LDcgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAg
ICAgICAgICAgaWYgKERvY3VtZW50KiBjb250YWluZXJEb2N1bWVudCA9IGNvbnRhaW5lci0+b3du
ZXJEb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5lckRvY3VtZW50LT5hZG9wdElm
TmVlZGVkKG5vZGUpOwogICAgICAgICAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkKLSAgICAg
ICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoY29udGFpbmVyKS5ub3RpZnkobm9k
ZSk7CisgICAgICAgICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKGNvbnRhaW5lciku
bm90aWZ5KG5vZGUsIHRydWUpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMTY1LDkgKzQwNCw2
IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKICAgICAgICAgICAgIG4tPnNldFBhcmVudE9ySG9zdE5v
ZGUoMCk7CiAKICAgICAgICAgICAgIGlmICghbi0+cmVmQ291bnQoKSkgewotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgICAgICAgICBuLT5tX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlm
CiAgICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRvIHRoZSBsaXN0IG9mIG5vZGVzIHRv
IGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICAgICAgLy8gUmV1c2UgdGhlIG5leHRTaWJsaW5nIHBv
aW50ZXIgZm9yIHRoaXMgcHVycG9zZS4KICAgICAgICAgICAgICAgICBpZiAodGFpbCkKQEAgLTE5
Miw3ICs0MjgsOSBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90
aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZAogewogICAgIEFTU0VSVChtX2lu
c2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0KG5v
ZGUpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3Vt
ZW50KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQpOwog
ICAgIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgcmVxdWVzdCA9IG5vZGUtPmlu
c2VydGVkSW50byhtX2luc2VydGlvblBvaW50KTsKKyAgICBub2RlLT51bnNldExpZmV0aW1lT3du
ZXIoKTsKIAogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5
RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CkBA
IC0yMDYsNyArNDQ0LDkgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6
Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUKICAgICBBU1NFUlQoIW1f
aW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgp
OwogCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSgp
ICVwIGluc2VydGlvblBvaW50PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50KTsKICAgICBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IHJlcXVlc3QgPSBub2RlLT5pbnNlcnRl
ZEludG8obV9pbnNlcnRpb25Qb2ludCk7CisgICAgbm9kZS0+dW5zZXRMaWZldGltZU93bmVyKCk7
CiAKICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShub2RlKTsKICAgICBpZiAo
cmVxdWVzdCA9PSBOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5RGVzY2VuZGFudElu
c2VydGlvbnMpCkBAIC0yMzUsMTMgKzQ3NSwxNyBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNl
cnRlZEludG9Eb2N1bWVudChub2RlKTsKICAgICBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5v
ZGUoKSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2Rl
KG5vZGUpKTsKKyAgICBlbHNlCisgICAgICAgIG5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigpOwog
fQogCiAKIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVS
ZW1vdmFsRnJvbURvY3VtZW50KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUsIG1faW5z
ZXJ0aW9uUG9pbnQpOwogICAgIG5vZGUtPnJlbW92ZWRGcm9tKG1faW5zZXJ0aW9uUG9pbnQpOwor
ICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUpOwogCiAgICAgaWYgKG5vZGUtPmlzQ29udGFp
bmVyTm9kZSgpKQogICAgICAgICBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudCh0
b0NvbnRhaW5lck5vZGUobm9kZSkpOwpAQCAtMjUyLDE4ICs0OTYsNTIgQEAgaW5saW5lIHZvaWQg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRh
aW5lck5vZGUqIG4KICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7
CiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJu
b3RpZnlOb2RlUmVtb3ZhbEZyb21UcmVlKCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUs
IG1faW5zZXJ0aW9uUG9pbnQpOwogICAgIG5vZGUtPnJlbW92ZWRGcm9tKG1faW5zZXJ0aW9uUG9p
bnQpOworICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUpOworCiAgICAgbm90aWZ5RGVzY2Vu
ZGFudFJlbW92ZWRGcm9tVHJlZShub2RlKTsKIAogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwog
fQogCi1pbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShOb2RlKiBu
b2RlKQoraW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSog
bm9kZSwgYm9vbCBpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4pCiB7CiAgICAgaWYgKG5v
ZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
bm9kZSk7CiAgICAgZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5v
dGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICBlbHNl
CisgICAgICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUpOworCisgICAgaWYgKG1fbGlmZXRp
bWVPd25lckZvdW5kICYmICFpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4pIHsKKyAgICAg
ICAgLy8gSWYgYSBsaWZldGltZSBvd25lciBpcyBmb3VuZCBpbiB0aGUgRE9NIHRyZWUgYmVpbmcg
cmVtb3ZlZCwKKyAgICAgICAgLy8gaXQgaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbm8gbGlmZXRp
bWUgb3duZXIgaW4gdGhlIG9yaXRpbmFsIERPTSB0cmVlLgorICAgICAgICAvLyBTbyB3ZSBjYWxs
IHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3IgdGhlIGluc2VydGlvbiBwb2ludCB0byBzZXQg
YSBuZXcKKyAgICAgICAgLy8gbGlmZXRpbWUgb3duZXIgb2YgdGhlIG9yaWdpbmFsIERPTSB0cmVl
LCBleGNlcHQgZm9yIHRoZSBjYXNlCisgICAgICAgIC8vIHdoZXJlIHRoZSBvcmlnaW5hbCB0cmVl
IGlzIGJlaW5nIHJlbW92ZWQganVzdCByaWdodCBub3cKKyAgICAgICAgLy8gKGkuZS4gZXhjZXB0
IGZvciB0aGUgY2FzZSBvZiBpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4gPT0gdHJ1ZSku
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9dHJ1ZSAh
aW5zZXJ0aW9uUG9pbnREZWxldGlvbkhhc0JlZ3VuICVwIGluc2VydGlvblBvaW50PSVwXG4iLCBu
b2RlLCBtX2luc2VydGlvblBvaW50KTsKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludC0+c2VhcmNo
TmV3TGlmZXRpbWVPd25lcigpOworICAgIH0gZWxzZSBpZiAoIW1fbGlmZXRpbWVPd25lckZvdW5k
KSB7CisgICAgICAgIC8vIElmIGEgbGlmZXRpbWUgb3duZXIgaXMgbm90IGZvdW5kIGluIHRoZSBE
T00gdHJlZSBiZWluZyByZW1vdmVkLAorICAgICAgICAvLyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGVy
ZSBpcyBleGFjdGx5IG9uZSBsaWZldGltZSBvd25lciBpbiB0aGUgb3JpZ2luYWwgRE9NCisgICAg
ICAgIC8vIHRyZWUuIFNvIHdlIGp1c3QgY2FsbCBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgZm9y
IHRoZSBET00gdHJlZSBiZWluZyByZW1vdmVkCisgICAgICAgIC8vIHRvIHNldCBhIG5ldyBsaWZl
dGltZSBvd25lciBvZiB0aGUgRE9NIHRyZWUgYmVpbmcgcmVtb3ZlZC4KKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3VuZD1mYWxzZSAlcCBpbnNlcnRpb25Qb2lu
dD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCk7CisgICAgICAgIG5vZGUtPnNlYXJjaE5l
d0xpZmV0aW1lT3duZXIoKTsKKyAgICB9Cit9CisKK2lubGluZSB2b2lkIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcjo6Y2hlY2tJZkxpZmV0aW1lT3duZXIoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
bm9kZS0+aXNMaWZldGltZU93bmVyKCkpIHsKKyAgICAgICAgLy8gT25lIERPTSB0cmVlIGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSBhdCBtb3N0IG9uZSBsaWZldGltZSBvd25lciwKKyAgICAgICAgLy8g
c28gbV9saWZldGltZU93bmVyRm91bmQgc2hvdWxkIG5vdCBiZWNvbWUgdHJ1ZSBtb3JlIHRoYW4g
b25jZS4KKyAgICAgICAgQVNTRVJUKCFtX2xpZmV0aW1lT3duZXJGb3VuZCk7CisgICAgICAgIG1f
bGlmZXRpbWVPd25lckZvdW5kID0gdHJ1ZTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJu
b2RlLT5pc0xpZmV0aW1lT3duZXIoKT09dHJ1ZSAlcFxuIiwgbm9kZSk7CisgICAgfQogfQogCiBj
bGFzcyBDaGlsZEZyYW1lRGlzY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDEzMjY4MGFiMDkxODgxZGNkMGE1NDFiZjUwZWM1MzFmNjQ0Y2MyY2EuLmRhNWFlNTdkZWNkYzcz
YTVkMzJlMzAyNDM4Mzg5NzNkNWIwNTZjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
NjUzLDU5ICs2NTMsODggQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAgSW5zcGVjdG9yQ291
bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6OkRvY3VtZW50Q291bnRl
cik7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKK3ZvaWQgRG9jdW1lbnQ6
OmdjQ2hpbGRyZW5PZkRvY3VtZW50KCkKIHsKLSAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1
bik7Ci0gICAgaWYgKG1fZ3VhcmRSZWZDb3VudCkgewotICAgICAgICAvLyBJZiByZW1vdmluZyBh
IGNoaWxkIHJlbW92ZXMgdGhlIGxhc3Qgc2VsZi1vbmx5IHJlZiwgd2UgZG9uJ3QKLSAgICAgICAg
Ly8gd2FudCB0aGUgc2NvcGUgdG8gYmUgZGVzdHJ1Y3RlZCB1bnRpbCBhZnRlcgotICAgICAgICAv
LyByZW1vdmVBbGxDaGlsZHJlbiByZXR1cm5zLCBzbyB3ZSBndWFyZCBvdXJzZWx2ZXMgd2l0aCBh
bgotICAgICAgICAvLyBleHRyYSBzZWxmLW9ubHkgcmVmLgotICAgICAgICBndWFyZFJlZigpOwot
Ci0gICAgICAgIC8vIFdlIG11c3QgbWFrZSBzdXJlIG5vdCB0byBiZSByZXRhaW5pbmcgYW55IG9m
IG91ciBjaGlsZHJlbiB0aHJvdWdoCi0gICAgICAgIC8vIHRoZXNlIGV4dHJhIHBvaW50ZXJzIG9y
IHdlIHdpbGwgY3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlLgotICAgICAgICBtX2RvY1R5cGUgPSAw
OwotICAgICAgICBtX2ZvY3VzZWROb2RlID0gMDsKLSAgICAgICAgbV9ob3Zlck5vZGUgPSAwOwot
ICAgICAgICBtX2FjdGl2ZU5vZGUgPSAwOwotICAgICAgICBtX3RpdGxlRWxlbWVudCA9IDA7Ci0g
ICAgICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gMDsKLSAgICAgICAgbV9jb250ZXh0RmVhdHVyZXMg
PSBDb250ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKTsKKyAgICAvLyBNYWtlIHN1cmUgbm90
IHRvIGJlIHJlZmVyZW5jaW5nIGFueSBvZiB0aGUgY2hpbGRyZW4gdGhyb3VnaAorICAgIC8vIHRo
ZXNlIGV4dHJhIHBvaW50ZXJzLCBvciB3ZSB3aWxsIGNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZS4K
KyAgICBtX2RvY1R5cGUgPSAwOworICAgIG1fZm9jdXNlZE5vZGUgPSAwOworICAgIG1faG92ZXJO
b2RlID0gMDsKKyAgICBtX2FjdGl2ZU5vZGUgPSAwOworICAgIG1fdGl0bGVFbGVtZW50ID0gMDsK
KyAgICBtX2RvY3VtZW50RWxlbWVudCA9IDA7CisgICAgbV9jb250ZXh0RmVhdHVyZXMgPSBDb250
ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
Ci0gICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOwotICAgICAgICBtX2Z1bGxTY3JlZW5F
bGVtZW50U3RhY2suY2xlYXIoKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyAgICBt
X2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suY2xlYXIoKTsKICNlbmRpZgogCi0gICAgICAgIGRldGFj
aFBhcnNlcigpOworICAgIC8vIFRlYXIgZG93biBzY29wZSBpbmZvcm1hdGlvbiB1cGZyb250IHRv
IGF2b2lkIGhhdmluZyBzdGFsZSByZWZlcmVuY2VzCisgICAgLy8gaW4gdGhlIGlkIG1hcC4gVGhp
cyBtdXN0IGJlIGRvbmUgYmVmb3JlIGdjQ2hpbGRyZW4oKSwgYmVjYXVzZSBnY0NoaWxkcmVuKCkK
KyAgICAvLyBjYW4gZGVsZXRlIE5vZGVzIGFuZCB0aGUgTm9kZSBkZXN0cnVjdG9yIGNhbiBsb29r
IHVwIHRoZSBpZCBtYXAuCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZXN0cm95VHJlZVNjb3Bl
RGF0YSgpICVwXG4iLCB0aGlzKTsKKyAgICBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwogCi0gICAg
ICAgIC8vIHJlbW92ZUFsbENoaWxkcmVuKCkgZG9lc24ndCBhbHdheXMgdW5yZWdpc3RlciBJRHMs
Ci0gICAgICAgIC8vIHNvIHRlYXIgZG93biBzY29wZSBpbmZvcm1hdGlvbiB1cGZyb250IHRvIGF2
b2lkIGhhdmluZyBzdGFsZSByZWZlcmVuY2VzIGluIHRoZSBtYXAuCi0gICAgICAgIGRlc3Ryb3lU
cmVlU2NvcGVEYXRhKCk7Ci0gICAgICAgIHJlbW92ZUFsbENoaWxkcmVuKCk7CisgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJnY0NoaWxkcmVuKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBib29s
IGNoaWxkcmVuUmVtb3ZlZCA9IGdjQ2hpbGRyZW4oKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImdjQ2hpbGRyZW4oKSAlcCBjaGlsZHJlblJlbW92ZWQ9JWQgYWZ0ZXJcbiIsIHRoaXMsIGNoaWxk
cmVuUmVtb3ZlZCk7CisjaWZuZGVmIE5ERUJVRworICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0
aW9uID0gZmFsc2U7CisjZW5kaWYKKworICAgIGlmIChjaGlsZHJlblJlbW92ZWQpIHsKKyAgICAg
ICAgZGV0YWNoUGFyc2VyKCk7CiAKICAgICAgICAgbV9tYXJrZXJzLT5kZXRhY2goKTsKIAogICAg
ICAgICBtX2Nzc0NhbnZhc0VsZW1lbnRzLmNsZWFyKCk7CiAKICNpZiBFTkFCTEUoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUUpCi0gICAgICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBBY3RpdmVE
T01PYmplY3QuCisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciB1c2luZyBBY3RpdmVET01PYmpl
Y3QuCiAgICAgICAgIGlmIChtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKICAgICAgICAg
ICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5jbGVhckRvY3VtZW50UG9pbnRlcigp
OwogICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jbGVhcigpOwogI2VuZGlm
CisgICAgICAgIC8vIE5vdyB3ZSBqdXN0IGhhdmUgdG8gd2FpdCBmb3IgZ3VhcmRSZWZDb3VudCB0
byBiZWNvbWUgMC4KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTogSWYgY2hpbGRyZW5S
ZW1vdmVkIGlzIGZhbHNlLCBpdCBtZWFucyB0aGF0IGdjQ2hpbGRyZW4oKSBkaWQgbm90aGluZy4K
KyAgICAgICAgLy8gQWxsIHRoZSBOb2RlcyBpbiB0aGlzIGRvY3VtZW50IGlzIHN0aWxsIGFsaXZl
LiBXZSBuZWVkIHRvIHJlc3RvcmUgYWxsIHRoZQorICAgICAgICAvLyBSZWZQdHJzIHRoYXQgd2Ug
Y2xlYXJlZCBqdXN0IGJlZm9yZSBnY0NoaWxkcmVuKCksIGFuZCByZXN0b3JlIHRoZSBpZCBtYXAK
KyAgICAgICAgLy8gaW4gdGhlIHRyZWUgc2NvcGUuCisgICAgfQorfQogCi0jaWZuZGVmIE5ERUJV
RwotICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwotI2VuZGlmCit2
b2lkIERvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkKK3sKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIkRvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAgYmVmb3JlXG4i
LCB0aGlzKTsKKyAgICBBU1NFUlQoIXJlZkNvdW50KCkpOworICAgIEFTU0VSVCghbV9kZWxldGlv
bkhhc0JlZ3VuKTsKKyAgICBpZiAobV9ndWFyZFJlZkNvdW50KSB7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAibV9ndWFyZFJlZkNvdW50PjAgJXBcbiIsIHRoaXMpOworCisgICAgICAgIC8v
IElmIGdjQ2hpbGRyZW4oKSByZW1vdmVzIHRoZSBsYXN0IGd1YXJkUmVmQ291bnQsIHRoZSBkb2N1
bWVudCB3aWxsIGJlCisgICAgICAgIC8vIGRlc3RydWN0ZWQgaW5zaWRlIGdjQ2hpbGRyZW4oKS4g
VG8gYXZvaWQgdGhlIHNpdHVhdGlvbiwgd2UgZ3VhcmQgb3Vyc2VsdmVzCisgICAgICAgIC8vIHdp
dGggYW4gZXh0cmEgc2VsZi1vbmx5IGd1YXJkUmVmQ291bnQuCisgICAgICAgIGd1YXJkUmVmKCk7
CisKKyAgICAgICAgZ2NDaGlsZHJlbk9mRG9jdW1lbnQoKTsKIAogICAgICAgICBndWFyZERlcmVm
KCk7Ci0gICAgfSBlbHNlIHsKLSNpZm5kZWYgTkRFQlVHIAotICAgICAgICBtX2RlbGV0aW9uSGFz
QmVndW4gPSB0cnVlOyAKLSNlbmRpZiAKLSAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSAlcCBh
ZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKICAgICB9CisgICAgLy8gZnByaW50Zihz
dGRlcnIsICJtX2d1YXJkUmVmQ291bnQ9MCAlcFxuIiwgdGhpcyk7CisKKyAgICAvLyBQcm9iYWJs
eSB0aGlzIGdjQ2hpbGRyZW5PZkRvY3VtZW50KCkgaXMgbm90IG5lZWRlZC4gQ2hpbGQgbm9kZXMg
d291bGQgYmUKKyAgICAvLyBhbHJlYWR5IHJlbW92ZWQsIGFuZCB0aHVzIGdjQ2hpbGRyZW5PZkRv
Y3VtZW50KCkgd2lsbCBkbyBub3RoaW5nLgorICAgIGdjQ2hpbGRyZW5PZkRvY3VtZW50KCk7Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAocm9vdCkgYmVmb3JlXG4iLCB0aGlzKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgor
ICAgIGRlbGV0ZSB0aGlzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHJvb3Qp
IGFmdGVyXG4iLCB0aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkRvY3VtZW50OjpzZWFy
Y2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiBFbGVtZW50KiBE
b2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggNjg4ODVmYjMzZjQ5NTIxNGMzMWEzNzAzMzhmZWM4MDRiNGIx
MWNhZC4uYmJkM2JlYTcyOGM4MGIzMzFhYTFjMDlhNjczM2ZkMjNhNTA5NTE1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTIxNCwxMCArMjE0LDkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQo
IW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIC0tbV9ndWFyZFJlZkNvdW50OwogICAgICAg
ICBpZiAoIW1fZ3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkgewotI2lmbmRlZiBOREVCVUcK
LSAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJndWFyZERl
cmVmKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICAgICAgICAgIHNlYXJjaE5ld0xpZmV0aW1l
T3duZXIoKTsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ3VhcmREZXJlZigpICVw
IGFmdGVyXG4iLCB0aGlzKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE0Miw3ICsxMTQxLDgg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTm9kZTsKICAgICBmcmllbmQgY2xhc3MgSWdu
b3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKLSAgICB2b2lkIHJlbW92ZWRM
YXN0UmVmKCk7CisgICAgdm9pZCBnY0NoaWxkcmVuT2ZEb2N1bWVudCgpOworICAgIHZvaWQgc2Vh
cmNoTmV3TGlmZXRpbWVPd25lcigpOwogICAgIAogICAgIHZvaWQgZGV0YWNoUGFyc2VyKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5ZGExNTZiNGYxYTBhOTBlZjI4ZTcyODJmZWRhNjE2
MWEzOWVmYmIzLi44ZDVhYjdiODcyZGJmM2VhZWNlNjcwMjYwNWVjZDMwMTU4MjE5ZjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNTIxLDYgKzE1MjEsNyBAQCBDU1NTdHlsZURlY2xhcmF0
aW9uICpFbGVtZW50OjpzdHlsZSgpCiAKIHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3Jl
UHJldmlvdXNTZWxlY3Rpb24pCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50Ojpm
b2N1cygpICVwXG4iLCB0aGlzKTsKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKaW5kZXggMWY2NTBmNzcyMmIy
ODMzMzQ0YWFjOWQ2ODU2ODMwMDQ0Zjk2ZThhYy4uNDdjNGVlOGUzMWNjNzgyN2ZmYzQzOWJkYTIy
YmUyNjU4ZmJkZDQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtNzcs
NiArNzcsNyBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hh
ZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogICAgIHNoYWRvd1Jvb3QtPnNldFBh
cmVudFRyZWVTY29wZShzaGFkb3dIb3N0LT50cmVlU2NvcGUoKSk7CiAgICAgbV9zaGFkb3dSb290
cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkpOwogICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oc2hh
ZG93SG9zdCk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50U2hhZG93OjphZGRTaGFk
b3dSb290KCkgc2hhZG93Um9vdD0lcCBzaGFkb3dIb3N0PSVwXG4iLCBzaGFkb3dSb290LmdldCgp
LCBzaGFkb3dIb3N0KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dIb3N0
KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CiAKICAgICBpZiAoc2hhZG93SG9zdC0+YXR0YWNo
ZWQoKSAmJiAhc2hhZG93Um9vdC0+YXR0YWNoZWQoKSkKQEAgLTg3LDYgKzg4LDkgQEAgdm9pZCBF
bGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQ
dHI8U2hhZG93Um9vdD4gc2gKIAogdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dS
b290cygpCiB7CisgICAgaWYgKG1fc2hhZG93Um9vdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKICAgICAvLyBEb250IHByb3RlY3QgdGhpcyByZWYgY291bnQuCiAgICAgRWxlbWVudCog
c2hhZG93SG9zdCA9IGhvc3QoKTsKIApAQCAtMTAyLDEyICsxMDYsMjUgQEAgdm9pZCBFbGVtZW50
U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgIG9sZFJvb3QtPnNldFByZXYo
MCk7CiAgICAgICAgIG9sZFJvb3QtPnNldE5leHQoMCk7CiAgICAgICAgIHNoYWRvd0hvc3QtPmRv
Y3VtZW50KCktPmFkb3B0SWZOZWVkZWQob2xkUm9vdC5nZXQoKSk7Ci0gICAgICAgIENoaWxkTm9k
ZVJlbW92YWxOb3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CisgICAg
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9v
dHMoKSBzaGFkb3dSb290PSVwIHNoYWRvd0hvc3Q9JXBcbiIsIG9sZFJvb3QuZ2V0KCksIHNoYWRv
d0hvc3QpOworICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90
aWZ5KG9sZFJvb3QuZ2V0KCksIHRydWUpOwogICAgIH0KIAogICAgIGludmFsaWRhdGVEaXN0cmli
dXRpb24oc2hhZG93SG9zdCk7CiB9CiAKKy8vIEhlbHBlciBmdW5jdGlvbiBmb3IgZ2NDaGlsZHJl
bkluQ29udGFpbmVyKCkuCit2b2lkIEVsZW1lbnRTaGFkb3c6OmZvcmNlUmVtb3ZlQWxsU2hhZG93
Um9vdHMoKQoreworICAgIHdoaWxlIChTaGFkb3dSb290KiByb290ID0gbV9zaGFkb3dSb290cy5o
ZWFkKCkpIHsKKyAgICAgICAgbV9zaGFkb3dSb290cy5yZW1vdmVIZWFkKCk7CisgICAgICAgIHJv
b3QtPnNldEhvc3QoMCk7CisgICAgICAgIHJvb3QtPnNldFByZXYoMCk7CisgICAgICAgIHJvb3Qt
PnNldE5leHQoMCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRvdzo6
Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290cygpIHNoYWRvd1Jvb3Q9JXBcbiIsIHJvb3QpOworICAg
IH0KK30KKwogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQogewogICAgIGVuc3VyZURpc3Ry
aWJ1dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKaW5kZXggMTNkZTFjMDIxMGQ1
Njc0MjY4M2M0ZmU5M2UyNjNiMzI5NzY3YzkxNC4uYTAxYzQ5ZDAwMzRmZmFlZDFkMzg3NzNmZjU1
MzI3ZGI5YzExOGU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC01Myw2ICs1
Myw3IEBAIHB1YmxpYzoKICAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29uc3Q7
CiAKICAgICB2b2lkIHJlbW92ZUFsbFNoYWRvd1Jvb3RzKCk7CisgICAgdm9pZCBmb3JjZVJlbW92
ZUFsbFNoYWRvd1Jvb3RzKCk7CiAgICAgdm9pZCBhZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRv
d0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZv
aWQgYXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzQ0NmNmYTA0MDExMzJkOTZjNGU3NTY2
MzFkNDNlNWE4NGJlNmVmZS4uODNiNGJjMTkxOWUwY2U3ZjFjNjQ0MzY1M2YyNTZiNmJjZGNmZDZl
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzg3LDYgKzM4Nyw3IEBAIHZvaWQgTm9kZTo6dHJhY2tG
b3JEZWJ1Z2dpbmcoKQogCiBOb2RlOjp+Tm9kZSgpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJ+Tm9kZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAgIEhhc2hT
ZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IGlnbm9yZVNldC5maW5kKHRoaXMpOwogICAgIGlmIChp
dCAhPSBpZ25vcmVTZXQuZW5kKCkpCkBAIC00MTksNiArNDIwLDcgQEAgTm9kZTo6fk5vZGUoKQog
ICAgICAgICBkb2MtPmd1YXJkRGVyZWYoKTsKIAogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNy
ZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CisgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJ+Tm9kZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogdm9pZCBOb2Rl
OjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yNzY4LDIxICsyNzcwLDczIEBA
IHZvaWQgTm9kZVJhcmVEYXRhOjpjbGVhckNoaWxkTm9kZUxpc3RDYWNoZSgpCiAgICAgICAgIG1f
Y2hpbGROb2RlTGlzdC0+aW52YWxpZGF0ZUNhY2hlKCk7CiB9CiAKLS8vIEl0J3MgaW1wb3J0YW50
IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBp
bmxpbmUgdGhlIGNvZGUgdG8KKy8vIEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgc2VhcmNo
TmV3TGlmZXRpbWVPd25lciwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29k
ZSB0bwogLy8gZGVsZXRlIGEgTm9kZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KLXZvaWQgTm9k
ZTo6cmVtb3ZlZExhc3RSZWYoKQordm9pZCBOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkK
IHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIHVuc2V0TGlmZXRpbWVPd25lcigpOworCisgICAg
Ly8gSGVyZSBpdCBpcyBndWFyYW50ZWVkIHRoYXQgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIg
aW4gdGhlIERPTSB0cmVlLgorCisgICAgaWYgKHBhcmVudE9ySG9zdE5vZGUoKSkgeworICAgICAg
ICAvLyBDYWxsIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3IgdGhlIHJvb3QgTm9kZS4KKyAg
ICAgICAgTm9kZSogcm9vdCA9IHRoaXM7CisgICAgICAgIHdoaWxlIChyb290LT5wYXJlbnRPckhv
c3ROb2RlKCkpCisgICAgICAgICAgICByb290ID0gcm9vdC0+cGFyZW50T3JIb3N0Tm9kZSgpOwor
ICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSBmb3J3YXJkZWQgcm9vdD0lcCBhZnRlclxuIiwgcm9vdCk7CisgICAgICAgIHJvb3QtPnNlYXJj
aE5ld0xpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpz
ZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKHJlZkNvdW50KCkpIHsKKyAgICAgICAgLy8gRmFzdCBwYXRo
LiBJZiB0aGUgcm9vdCBOb2RlIGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0IHRoZSByb290IG5vZGUg
YXMKKyAgICAgICAgLy8gYSBsaWZldGltZSBvd25lci4KKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0
aW1lT3duZXIoKSk7CisgICAgICAgIHNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgZWFybHktcmV0dXJu
ICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmbmRlZiBO
REVCVUcKKyAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKKyAgICBtX2lu
UmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRydWU7CisjZW5kaWYKKwogICAgIC8vIEFuIGV4cGxp
Y2l0IGNoZWNrIGZvciBEb2N1bWVudCBoZXJlIGlzIGJldHRlciB0aGFuIGEgdmlydHVhbCBmdW5j
dGlvbiBzaW5jZSBpdCBpcwotICAgIC8vIGZhc3RlciBmb3Igbm9uLURvY3VtZW50IG5vZGVzLCBh
bmQgYmVjYXVzZSB0aGUgY2FsbCB0byByZW1vdmVkTGFzdFJlZiB0aGF0IGlzIGlubGluZWQKKyAg
ICAvLyBmYXN0ZXIgZm9yIG5vbi1Eb2N1bWVudCBub2RlcywgYW5kIGJlY2F1c2UgdGhlIGNhbGwg
dG8gc2VhcmNoTmV3TGlmZXRpbWVPd25lciB0aGF0IGlzIGlubGluZWQKICAgICAvLyBhdCBhbGwg
ZGVyZWYgY2FsbCBzaXRlcyBpcyBzbWFsbGVyIGlmIGl0J3MgYSBub24tdmlydHVhbCBmdW5jdGlv
bi4KICAgICBpZiAoaXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KHRoaXMpLT5yZW1vdmVkTGFzdFJlZigpOworICAgICAgICBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KHRoaXMpLT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVyXG4iLCB0
aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGJvb2wgY2hpbGRyZW5SZW1vdmVk
ID0gdHJ1ZTsKKyAgICBpZiAoaXNDb250YWluZXJOb2RlKCkpIHsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJnY0NoaWxkcmVuKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICAgICAgY2hp
bGRyZW5SZW1vdmVkID0gc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHRoaXMpLT5nY0NoaWxk
cmVuKCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbigpICVwIGNoaWxk
cmVuUmVtb3ZlZD0lZCBhZnRlclxuIiwgdGhpcywgY2hpbGRyZW5SZW1vdmVkKTsKKyAgICB9Cisg
ICAgaWYgKGNoaWxkcmVuUmVtb3ZlZCkgeworICAgICAgICAvLyBBbGwgdGhlIE5vZGVzIGJ1dCB0
aGUgcm9vdCBOb2RlIGFyZSBkZWxldGVkIGJ5IGdjQ2hpbGRyZW4oKS4KKyAgICAgICAgLy8gTm93
IGl0IGlzIHRpbWUgdG8gZGVsZXRlIHRoZSByb290IE5vZGUuCisKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJkZWxldGUgJXAocm9vdCkgYmVmb3JlXG4iLCB0aGlzKTsKICNpZm5kZWYgTkRF
QlVHCi0gICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyAgICAgICAgbV9kZWxldGlvbkhh
c0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgotICAgIGRlbGV0ZSB0aGlzOworICAgICAgICBkZWxldGUg
dGhpczsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAocm9vdCkgYWZ0ZXJc
biIsIHRoaXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGdjQ2hpbGRyZW4oKSBkaWQgbm90
aGluZy4gQWxsIHRoZSBOb2RlcyBpbiB0aGUgRE9NIHRyZWUgYXJlIHN0aWxsIGFsaXZlLgorCisj
aWZuZGVmIE5ERUJVRworICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNl
OworI2VuZGlmCisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3
TGlmZXRpbWVPd25lcigpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogdm9pZCBOb2RlOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggYzljMjY3NGQyN2M1Y2MxZTMwNDhmMGY1MzAzNzdlYzM2MWQ2OTFiYS4u
YTAzM2MwMzQxMWY0NDA0MDk5ZTE0NDJjYzJlZGNmYTU4MjU1NWQyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC0zNjIsNiArMzYyLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKTsK
ICAgICBib29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxlKCk7CiAKKyAgICB2b2lkIHNlYXJjaE5l
d0xpZmV0aW1lT3duZXIoKTsKKwogICAgIHZvaWQgaW5zcGVjdCgpOwogCiAgICAgYm9vbCByZW5k
ZXJlcklzRWRpdGFibGUoRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSA9IENvbnRlbnRJc0VkaXRh
YmxlKSBjb25zdApAQCAtNzM2LDggKzczOCw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKLSAgICB2b2lk
IHJlbW92ZWRMYXN0UmVmKCk7Ci0KICAgICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNl
ZCBmb3IgYSB0cmVlIHNjb3BlIG1pZ3JhdGlvbi4KICAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1
cm5zIE5vZGVSYXJlRGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25z
IG9uIHRoZSBjYWxsZXIgc2l0ZS4KICAgICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVl
U2NvcGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBmMGJhNzY2YWJlZWFmNzUy
Njc2ZmFkNTNiZWY5YjM3N2ViYzFjMjY4Li4wMzFhYTgzNWNiMGQyODgxMjViYTRhYjEzM2Y5YmJi
NjJiNmJhOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMTIzLDcgKzExMjMs
MTAgQEAgdm9pZCByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSogY29u
dGFpbmVyLCBQYXNzUmVmUHRyPERvY3VtZW50RnIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAicmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCkgY29u
dGFpbmVyPSVwXG4iLCBjb250YWluZXIpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiY29udGFp
bmVyTm9kZS0+cmVtb3ZlQ2hpbGRyZW4oKSBjb250YWluZXJOb2RlPSVwXG4iLCBjb250YWluZXIp
OwogICAgIGNvbnRhaW5lck5vZGUtPnJlbW92ZUNoaWxkcmVuKCk7CisgICAgLy8gZnByaW50Zihz
dGRlcnIsICJjb250YWluZXJOb2RlLT5hcHBlbmRDaGlsZCgpIGNvbnRhaW5lck5vZGU9JXAgZnJh
Z21lbnQ9JXBcbiIsIGNvbnRhaW5lciwgZnJhZ21lbnQuZ2V0KCkpOwogICAgIGNvbnRhaW5lck5v
ZGUtPmFwcGVuZENoaWxkKGZyYWdtZW50LCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Ry
ZWVTaGFyZWQuaAppbmRleCA2YzQxNTRlZGU3YWM5NzI4MmI1NDc2OTU4MzkzM2JmNDY2M2YxNDgy
Li5hOWMyZDZmM2Q5M2Y4YWJhMDRiODM2OTIyNmFlNzNhMzdjZGZhYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVHJlZVNoYXJlZC5oCkBAIC0yNyw2ICsyNywyMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKKy8vIElmIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpcyAxLCB0aGUgTm9kZSBp
cyBhIGxpZmV0aW1lIG93bmVyLgorLy8gT3RoZXJ3aXNlLCB0aGUgTm9kZSBpcyBub3QgYSBsaWZl
dGltZSBvd25lci4KKy8vIFRoZSBhbGdvcml0aG0gZ3VhcmFudGVlcyB0aGUgZm9sbG93aW5nIGlu
dmFyaWFudHM6CisvLworLy8gICAgIC0gT3V0c2lkZSBvZiBzZWFyY2hOZXdMaWZldGltZU93bmVy
KCkgKGkuZS4gaW4gbm9ybWFsIGNhc2VzKSwgdGhlcmUgaXMgZXhhY3RseSBvbmUKKy8vICAgICAg
IGxpZmV0aW1lIG93bmVyIGluIG9uZSBET00gdHJlZS4KKy8vICAgICAtIEluc2lkZSBvZiBzZWFy
Y2hOZXdMaWZldGltZU93bmVyKCksIHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyLiBzZWFyY2hO
ZXdMaWZldGltZU93bmVyKCkKKy8vICAgICAgIGVsZWN0cyBhIG5ldyBsaWZldGltZSBvd25lci4K
Ky8vCisvLyBTZWUgYSBkb2N1bWVudCAoaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9jaHJvbWl1
bS5vcmcvZG9jdW1lbnQvZC8xdVlIcHE3dTVTc2xqNTRVZ3pYakE3cFlSNTNYamlkcEJjckNhLW5l
T0dRcy9lZGl0P3BsaT0xKQorLy8gZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgcmVmZXJlbmNl
IGNvdW50aW5nIGFsZ29yaXRobQorLy8gb2YgVHJlZVNoYXJlZC4KKyNkZWZpbmUgTGlmZXRpbWVP
d25lckJpdE1hc2sgKDB4ODAwMDAwMDApCisKICNpZm5kZWYgTkRFQlVHCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQ7
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IHZv
aWQgYWRvcHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qKTsKQEAgLTM3
LDEyICs1MSwxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50
Tm9kZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQgewogcHJvdGVjdGVkOgogICAgIFRyZWVTaGFyZWQo
KQogICAgICAgICA6IG1fcGFyZW50KDApCi0gICAgICAgICwgbV9yZWZDb3VudCgxKQorICAgICAg
ICAvLyBJbml0aWFsbHkgdGhlIE5vZGUgaXMgYSBsaWZldGltZSBvd25lciwgc2luY2UgdGhlcmUg
aXMgb25seSBvbmUgTm9kZQorICAgICAgICAvLyBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICwg
bV9yZWZDb3VudChMaWZldGltZU93bmVyQml0TWFzayB8IDEpCiAjaWZuZGVmIE5ERUJVRwogICAg
ICAgICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVkKHRydWUpCiAjZW5kaWYKICAgICB7CisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiVHJlZVNoYXJlZCgpICVwXG4iLCB0aGlzKTsKICAgICAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzTGlmZXRpbWVPd25lcigp
KTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IGZhbHNlOwog
ICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwpAQCAtNTEsOCArNjks
MTAgQEAgcHJvdGVjdGVkOgogCiAgICAgflRyZWVTaGFyZWQoKQogICAgIHsKKyAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJ+VHJlZVNoYXJlZCgpICVwXG4iLCB0aGlzKTsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3JlZkNvdW50KTsKKyAgICAg
ICAgQVNTRVJUKCFyZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0aW1lT3duZXIo
KSk7CiAgICAgICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQo
IW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKICAgICB9CkBAIC03MCwzNCArOTAsNzMgQEAgcHVibGlj
OgogICAgIHZvaWQgZGVyZWYoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICAgICAgQVNTRVJUKG1fcmVmQ291bnQgPj0gMCk7CiAgICAgICAgIEFTU0VSVCghbV9k
ZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5j
dGlvbik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwotICAgICAgICBp
ZiAoLS1tX3JlZkNvdW50IDw9IDAgJiYgIW1fcGFyZW50KSB7CisgICAgICAgIC0tbV9yZWZDb3Vu
dDsKKyAgICAgICAgaWYgKG1fcmVmQ291bnQgPT0gTGlmZXRpbWVPd25lckJpdE1hc2spIHsKKyAg
ICAgICAgICAgIC8vICdtX3JlZkNvdW50ID09IExpZmV0aW1lT3duZXJCaXRNYXNrJyBtZWFucyB0
aGF0IHRoZSBOb2RlIGlzCisgICAgICAgICAgICAvLyBhIGxpZmV0aW1lIG93bmVyIGFuZCB0aGUg
cmVmY291bnQgb2YgdGhlIE5vZGUgYmVjb21lcyAwLgorICAgICAgICAgICAgLy8gVGhlIGxpZmV0
aW1lIG93bmVyIGlzIHJlc3BvbnNpYmxlIHRvIGNhbGwgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigp
LgorICAgICAgICAgICAgLy8gSWYgdGhlIERPTSB0cmVlIGhhcyBhbm90aGVyIE5vZGUgdGhhdCBo
YXMgMX4gcmVmY291bnQsCisgICAgICAgICAgICAvLyBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkg
c2V0cyB0aGUgTm9kZSBhcyBhIG5ldyBsaWZldGltZSBvd25lci4KKyAgICAgICAgICAgIC8vIE90
aGVyd2lzZSAoaS5lLiBhbGwgdGhlIE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVmY291
bnQpLAorICAgICAgICAgICAgLy8gc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIGRlbGV0ZXMgYWxs
IHRoZSBOb2Rlcy4KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyktPnNl
YXJjaE5ld0xpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgfQogI2lmbmRlZiBOREVCVUcKLSAgICAg
ICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgIWlzTGlmZXRpbWVPd25lcigpKTsKICNl
bmRpZgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+cmVtb3ZlZExh
c3RSZWYoKTsKLSAgICAgICAgfQorICAgIH0KKworICAgIGludCByZWZDb3VudCgpIGNvbnN0Cisg
ICAgeworICAgICAgICAvLyBSZW1vdmUgdGhlIGxpZmV0aW1lIG93bmVyIGJpdC4KKyAgICAgICAg
Ly8gZS5nLiAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMTEwMQorICAgICAgICByZXR1cm4gbV9yZWZDb3VudCAmIH5MaWZldGlt
ZU93bmVyQml0TWFzazsKICAgICB9CiAKICAgICBib29sIGhhc09uZVJlZigpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCgh
bV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gbV9yZWZDb3VudCA9
PSAxOworICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAgIH0KIAotICAgIGludCBy
ZWZDb3VudCgpIGNvbnN0CisgICAgdm9pZCBzZXRMaWZldGltZU93bmVyKCkKKyAgICB7CisgICAg
ICAgIC8vIEEgbGlmZXRpbWUgb3duZXIgbXVzdCBoYXZlIDF+IHJlZmNvdW50LCBzaW5jZSB0aGUg
bGlmZXRpbWUgb3duZXIgaXMgcmVzcG9uc2libGUKKyAgICAgICAgLy8gZm9yIGNhbGxpbmcgc2Vh
cmNoTmV3TGlmZXRpbWVPd25lcigpIHdoZW4gdGhlIHJlZmNvdW50IGJlY29tZXMgMC4KKyAgICAg
ICAgQVNTRVJUKHJlZkNvdW50KCkpOworICAgICAgICAvLyBTZXQgdGhlIGxpZmV0aW1lIG93bmVy
IGJpdC4KKyAgICAgICAgLy8gZS5nLiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9
PiAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMQorICAgICAgICAvLyBlLmcuIDEwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+IDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAxMTAxCisgICAgICAgIG1fcmVmQ291bnQgfD0gTGlmZXRpbWVPd25lckJpdE1hc2s7CisgICAg
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAic2V0TGlmZXRpbWVPd25lcigpICVwXG4iLCB0aGlzKTsK
KyAgICB9CisKKyAgICB2b2lkIHVuc2V0TGlmZXRpbWVPd25lcigpCisgICAgeworICAgICAgICAv
LyBVbnNldCB0aGUgbGlmZXRpbWUgb3duZXIgYml0LgorICAgICAgICAvLyBlLmcuIDEwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAx
MTAxCisgICAgICAgIC8vIGUuZy4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4g
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEKKyAgICAgICAgbV9yZWZDb3VudCAmPSB+
TGlmZXRpbWVPd25lckJpdE1hc2s7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAidW5zZXRM
aWZldGltZU93bmVyKCkgJXBcbiIsIHRoaXMpOworICAgIH0KKworICAgIGJvb2wgaXNMaWZldGlt
ZU93bmVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50OworICAgICAgICAvLyBD
aGVjayBpZiB0aGUgbGlmZXRpbWUgb3duZXIgYml0IGlzIHNldC4KKyAgICAgICAgLy8gZS5nLiAx
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiB0cnVlCisgICAgICAgIC8vIGUuZy4g
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gZmFsc2UKKyAgICAgICAgcmV0dXJu
IG1fcmVmQ291bnQgJiBMaWZldGltZU93bmVyQml0TWFzazsKICAgICB9CiAKICAgICB2b2lkIHNl
dFBhcmVudChQYXJlbnROb2RlVHlwZSogcGFyZW50KQogICAgIHsgCiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgICAgIG1fcGFyZW50ID0gcGFyZW50OyAKKyAgICAgICAgbV9w
YXJlbnQgPSBwYXJlbnQ7CiAgICAgfQogCiAgICAgUGFyZW50Tm9kZVR5cGUqIHBhcmVudCgpIGNv
bnN0CkBAIC0xMjMsNyArMTgyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUGFyZW50Tm9k
ZVR5cGUqIG1fcGFyZW50OwotICAgIGludCBtX3JlZkNvdW50OworICAgIHVpbnQzMl90IG1fcmVm
Q291bnQ7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA4ZWRiYjY1YzZlZDZiNWE2MmRhYzVkMzA4
ZjdmNDIyNGUyZjU3MzU1Li4xZmMyZTQyYWNhMjYyYzZkN2IwZDcwMmMzMTE4Yzk0OTU0MjVmMTBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC02MSw2ICs2MSw3IEBAIFBhc3NSZWZQ
dHI8U1ZHRWxlbWVudD4gU1ZHRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50CiAKIFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKIHsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50KCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICAgICBp
ZiAoIWhhc1JhcmVTVkdEYXRhKCkpCiAgICAgICAgIEFTU0VSVCghU1ZHRWxlbWVudFJhcmVEYXRh
OjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBlbHNlIHsKQEAgLTgwLDYgKzgx
LDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogICAgIH0KICAgICBkb2N1bWVudCgpLT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEFuaW1hdGlvbkVsZW1lbnRzRnJvbVRhcmdl
dCh0aGlzKTsKICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFs
bEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KHRoaXMpOworICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiflNWR0VsZW1lbnQoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVu
dDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKQEAgLTIyNCw2ICsyMjYsNyBA
QCB2b2lkIFNWR0VsZW1lbnQ6Om1hcEluc3RhbmNlVG9FbGVtZW50KFNWR0VsZW1lbnRJbnN0YW5j
ZSogaW5zdGFuY2UpCiAgICAgQVNTRVJUKCFpbnN0YW5jZXMuY29udGFpbnMoaW5zdGFuY2UpKTsK
IAogICAgIGluc3RhbmNlcy5hZGQoaW5zdGFuY2UpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
aW5zdGFuY2VzLmFkZChpbnN0YW5jZSkgJXAgaW5zdGFuY2U9JXBcbiIsIHRoaXMsIGluc3RhbmNl
KTsKIH0KICAKIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1l
bnRJbnN0YW5jZSogaW5zdGFuY2UpCkBAIC0yMzUsNiArMjM4LDcgQEAgdm9pZCBTVkdFbGVtZW50
OjpyZW1vdmVJbnN0YW5jZU1hcHBpbmcoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkKICAg
ICBBU1NFUlQoaW5zdGFuY2VzLmNvbnRhaW5zKGluc3RhbmNlKSk7CiAKICAgICBpbnN0YW5jZXMu
cmVtb3ZlKGluc3RhbmNlKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImluc3RhbmNlcy5yZW1v
dmUoaW5zdGFuY2UpICVwIGluc3RhbmNlPSVwXG4iLCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKIGNv
bnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4mIFNWR0VsZW1lbnQ6Omluc3RhbmNlc0Zv
ckVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnRJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNw
cAppbmRleCA5ZmUyYWNiZjAwYTVmZWNmNWYzNDVhNzY5ZDU0MWM3NTQ2MmZlYTE3Li4wY2RjZjQx
NmFmZmFiYTM0NzMwOTlkODQwMTgzOTMxN2QxOWUzYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudEluc3RhbmNlLmNwcApAQCAtNjIsMjQgKzYyLDc1IEBAIFNWR0VsZW1lbnRJbnN0
YW5jZTo6U1ZHRWxlbWVudEluc3RhbmNlKFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VF
bGVtZW50LCBTCiAKIFNWR0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSgpCiB7
Ci0gICAgLy8gQ2FsbCBkZXRhY2ggYmVjYXVzZSB3ZSBtYXkgYmUgZGVsZXRlZCBkaXJlY3RseSBp
ZiB3ZSBhcmUgYSBjaGlsZCBvZiBhIGRldGFjaGVkIGluc3RhbmNlLgotICAgIGRldGFjaCgpOwot
CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+U1ZHRWxlbWVudEluc3RhbmNlKCkgJXAgYmVmb3Jl
XG4iLCB0aGlzKTsKKyAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgaW5zdGFuY2VDb3VudGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAKKyAgICBpZiAo
bV9lbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCkuY29udGFpbnModGhpcykpCisgICAgICAg
IG1fZWxlbWVudC0+cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKHRoaXMpOworCisgICAgbV9zaGFkb3dU
cmVlRWxlbWVudCA9IDA7CisgICAgbV9kaXJlY3RVc2VFbGVtZW50ID0gMDsKKyAgICBtX2NvcnJl
c3BvbmRpbmdVc2VFbGVtZW50ID0gMDsKICAgICBtX2VsZW1lbnQgPSAwOworICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0K
IAotLy8gSXQncyBpbXBvcnRhbnQgbm90IHRvIGlubGluZSByZW1vdmVkTGFzdFJlZiwgYmVjYXVz
ZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bworLy8gSXQncyBpbXBvcnRhbnQg
bm90IHRvIGlubGluZSBzZWFyY2hOZXdMaWZldGltZU93bmVyLCBiZWNhdXNlIHdlIGRvbid0IHdh
bnQgdG8gaW5saW5lIHRoZSBjb2RlIHRvCiAvLyBkZWxldGUgYW4gU1ZHRWxlbWVudEluc3RhbmNl
IGF0IGVhY2ggZGVyZWYgY2FsbCBzaXRlLgotdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92
ZWRMYXN0UmVmKCkKK3ZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93
bmVyKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6c2Vh
cmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgdW5zZXRMaWZl
dGltZU93bmVyKCk7CisKKyAgICAvLyBIZXJlIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCB0aGVyZSBp
cyBubyBsaWZldGltZSBvd25lciBpbiB0aGUgRE9NIHRyZWUuCisKKyAgICBpZiAocGFyZW50Tm9k
ZSgpKSB7CisgICAgICAgIC8vIENhbGwgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIGZvciB0aGUg
cm9vdCBOb2RlLgorICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIHJvb3QgPSB0aGlzOworICAg
ICAgICB3aGlsZSAocm9vdC0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgcm9vdCA9IHJvb3Qt
PnBhcmVudE5vZGUoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5z
dGFuY2U6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3J3YXJkZWQgcm9vdD0lcFxuIiwgcm9v
dCk7CisgICAgICAgIHJvb3QtPnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnNlYXJjaE5ld0xpZmV0aW1lT3du
ZXIoKSAlcCBhZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAocmVmQ291bnQoKSkgeworICAgICAgICAvLyBGYXN0IHBhdGguIElmIHRoZSByb290IE5vZGUg
aGFzIDF+IHJlZmNvdW50LCB3ZSBzZXQgdGhlIHJvb3Qgbm9kZSBhcworICAgICAgICAvLyBhIGxp
ZmV0aW1lIG93bmVyLgorICAgICAgICBBU1NFUlQoIWlzTGlmZXRpbWVPd25lcigpKTsKKyAgICAg
ICAgc2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0Vs
ZW1lbnRJbnN0YW5jZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIGVhcmx5LXJldHVybiAlcCBh
ZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZm5kZWYgTkRFQlVH
CisgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CisgICAgbV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOworI2VuZGlmCisKKyAgICBib29sIGNoaWxkcmVuUmVt
b3ZlZCA9IGdjQ2hpbGRyZW5JbkNvbnRhaW5lcih0aGlzKTsKKyAgICBpZiAoY2hpbGRyZW5SZW1v
dmVkKSB7CisgICAgICAgIC8vIEFsbCB0aGUgTm9kZXMgYnV0IHRoZSByb290IE5vZGUgYXJlIGRl
bGV0ZWQgYnkgZ2NDaGlsZHJlbigpLgorICAgICAgICAvLyBOb3cgaXQgaXMgdGltZSB0byBkZWxl
dGUgdGhlIHJvb3QgTm9kZS4KKworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAl
cChTVkdFbGVtZW50SW5zdGFuY2UpIGJlZm9yZVxuIiwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwot
ICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1
biA9IHRydWU7CiAjZW5kaWYKLSAgICBkZWxldGUgdGhpczsKKyAgICAgICAgZGVsZXRlIHRoaXM7
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKFNWR0VsZW1lbnRJbnN0YW5j
ZSkgYWZ0ZXJcbiIsIHRoaXMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGdjQ2hpbGRyZW4o
KSBkaWQgbm90aGluZy4gQWxsIHRoZSBOb2RlcyBpbiB0aGUgRE9NIHRyZWUgYXJlIHN0aWxsIGFs
aXZlLgorCisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlv
biA9IGZhbHNlOworI2VuZGlmCisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxl
bWVudEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMp
OwogfQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKCkKQEAgLTk3LDcgKzE0OCw3
IEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpkZXRhY2goKQogICAgIG1fZGlyZWN0VXNlRWxl
bWVudCA9IDA7CiAgICAgbV9jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9IDA7CiAKLSAgICByZW1v
dmVBbGxDaGlsZHJlbkluQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudElu
c3RhbmNlPih0aGlzKTsKKyAgICByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyPFNWR0VsZW1lbnRJ
bnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPih0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxTVkdF
bGVtZW50SW5zdGFuY2VMaXN0PiBTVkdFbGVtZW50SW5zdGFuY2U6OmNoaWxkTm9kZXMoKQpAQCAt
MTE0LDYgKzE2NSw3IEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpzZXRTaGFkb3dUcmVlRWxl
bWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmFwcGVu
ZENoaWxkKFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlPiBjaGlsZCkKIHsKICAgICBhcHBl
bmRDaGlsZFRvQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNl
PihjaGlsZC5nZXQoKSwgdGhpcyk7CisgICAgY2hpbGQtPnVuc2V0TGlmZXRpbWVPd25lcigpOwog
fQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxl
bWVudChTVkdFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZS5oCmluZGV4IDFjODljN2NjZDFkMjg5NDI0NGVmYzY4ZjAwOGI1M2E3MzY4MzJkYjguLjYy
MDVmOGEyNjRmOWU5M2QyYWRiZWUwN2FiNTdlNWRmYWYyYWNjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIFNW
R0VsZW1lbnRJbnN0YW5jZSogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGls
ZDsgfQogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0Q2hpbGQ7IH0KIAorICAgIGJvb2wgaXNDb250YWluZXJOb2RlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorCiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnQgPyBtX2VsZW1lbnQtPm93bmVyRG9jdW1lbnQoKSA6IDA7IH0KIAogICAgIGNs
YXNzIEludmFsaWRhdGlvbkd1YXJkIHsKQEAgLTE1MCw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAg
IHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+
OjpzZXRQYXJlbnQ7CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVudCosIFNW
R1VzZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudCk7Ci0g
ICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOworICAgIHZvaWQgc2VhcmNoTmV3TGlmZXRpbWVPd25l
cigpOwogCiAgICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKSB7IHJldHVybiBzaGFkb3dUcmVlRWxl
bWVudCgpOyB9CiAKQEAgLTE1OCwxMyArMTYwLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRT
aGFkb3dUcmVlRWxlbWVudChTVkdFbGVtZW50Kik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5l
cmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQgYXBw
ZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFp
bmVyKiBjb250YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5l
cihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKik7CiAgICAgdGVtcGxh
dGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotICAgIGZy
aWVuZCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWlu
ZXIqIGNvbnRhaW5lcik7Ci0KKyAgICBmcmllbmQgdm9pZCBQcml2YXRlOjphZGRDaGlsZE5vZGVz
VG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBH
ZW5lcmljTm9kZUNvbnRhaW5lciopOwogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBj
bGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBmcmllbmQgdm9pZCBQcml2YXRlOjphZGRD
aGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVhZCwgR2VuZXJpY05vZGUq
JiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKTsKKyAgICBmcmllbmQgdm9p
ZCByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKik7CisgICAg
ZnJpZW5kIGJvb2wgZ2NDaGlsZHJlbkluQ29udGFpbmVyKFNWR0VsZW1lbnRJbnN0YW5jZSopOwog
CiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyIGIvU291cmNl
L1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5kZXggMjFjYTJmZjZjZTNhYmJlN2NlNzE0NjE0
NTNkYzYzNWUyOWUzNmVmMC4uNjZhZGJkNmIzMGY3MmVmYmMwMTUxMTcxMWI5Y2Y4NTdiZTkxYjk2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKKysrIGIvU291
cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKQEAgLTk2Myw2ICs5NjMsNyBAQCBfX1pOM1dU
RjlSZXRhaW5QdHJJMTJOU1VSTFJlcXVlc3RFQzJFUFMxXwogX19aTjdXZWJDb3JlMTVSZXNvdXJj
ZVJlcXVlc3RhU0VSS1MwXwogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNlYVNFUktT
MF8KIF9fWk43V2ViQ29yZTRLVVJMYVNFUktTMF8KK19fWk43V2ViQ29yZTROb2RlMTRzZWFyY2hO
ZXdMaWZldGltZU93bmVyRXYKIF9fWk4zV1RGMjJIYXNoVGFibGVDb25zdEl0ZXJhdG9ySU5TXzEy
QXRvbWljU3RyaW5nRVN0NHBhaXJJUzFfTlNfNlN0cmluZ0VFTlNfMThQYWlyRmlyc3RFeHRyYWN0
b3JJUzRfRUVOU18xNUNhc2VGb2xkaW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFz
aFRyYWl0c0lTMV9FRU5TOV9JUzNfRUVFRVNBX0UxNnNraXBFbXB0eUJ1Y2tldHNFdgogX19aTjNX
VEY2VmVjdG9ySU5TXzZTdHJpbmdFTG0wRUVhU0VSS1MyXwogX19aTlN0Nl9fY29weUlMYjBFU3Qy
NnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRTRjb3B5SVBLTjNXVEY2U3RyaW5nRVBTNF9FRVQw
X1RfUzlfUzhfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZWQwM2JjYzZiNDA2YmY5YTg2Njli
ZWI1MjA5MTZjYmE5OWRmZmYwNi4uYTE3NWFiMjNiNGUxMTdhMzBhYTc1OTZjZDI2OTBiMDNlYzc2
NjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjA1LDcgKzIwNSw2IEBAIEVYUE9SVFMK
ICAgICAgICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVu
Z3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29y
ZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmlu
Z0BXVEZAQFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFB
RVhYWgogICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAg
ICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVA
QDBIQQogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBX
ZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKQEAgLTI2Miw2ICsyNjEs
NyBAQCBFWFBPUlRTCiAgICAgICAgID93ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
QERvY3VtZW50QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQFoKICAgICAgICAgP3dlYmtpdERp
ZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVu
dEAyQEBaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9O
SEBaCisgICAgICAgID9zZWFyY2hOZXdMaWZldGltZU93bmVyQE5vZGVAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID9zdXNwZW5kQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdlYkNvcmVA
QFFBRVhYWgogICAgICAgICA/cmVzdW1lQW5pbWF0aW9uc0BBbmltYXRpb25Db250cm9sbGVyQFdl
YkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0QWxsb3dzUm91bmRpbmdIYWNrc0BUZXh0UnVuQFdl
YkNvcmVAQFNBWF9OQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgppbmRleCBlZDZl
Y2NlODYyMGQ5ZmFkNDNiNmEzNmQxYjQ3NDUzNmNmYjZjODllLi4yNDZkNGNmMzM3OWJhM2IyMTky
MmRiZmY1YjQwYThhYjYwOWYyZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2Vi
S2l0MkNGTGl0ZS5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVm
CkBAIC0xOTgsMTIgKzE5OCwxMiBAQCBFWFBPUlRTCiAgICAgICAgID9wbGFjZWhvbGRlclNob3Vs
ZEJlVmlzaWJsZUBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAg
ICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBA
U0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkNvbnRhaW5lck5vZGVA
MkBISF9OQFoKICAgICAgICAgP3JlbW92ZUBTdHJpbmdAV1RGQEBRQUVYSUhAWgotICAgICAgICA/
cmVtb3ZlZExhc3RSZWZATm9kZUBXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JldmVyc2VGaW5k
QFN0cmluZ0ltcGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NfZnJvbnRlbmRDb3VudGVyQElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkBXZWJDb3JlQEAwSEEKICAgICAgICAgP3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEAyQFhaCiAgICAgICAgID9zY3JpcHROYW1lVG9Db2RlQFdlYkNvcmVAQFlBP0FX
NFVTY3JpcHRDb2RlQEBBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/c2Nyb2xsRWxlbWVudFRv
UmVjdEBGcmFtZVZpZXdAV2ViQ29yZUBAUUFFWFBBVkVsZW1lbnRAMkBBQlZJbnRSZWN0QDJAQFoK
KyAgICAgICAgP3NlYXJjaE5ld0xpZmV0aW1lT3duZXJATm9kZUBXZWJDb3JlQEBRQUVYWFoKICAg
ICAgICAgP3NldEN1cnNpdmVGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9t
aWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAgICAgICA/c2V0RGV2aWNlU2NhbGVG
YWN0b3JAUGFnZUBXZWJDb3JlQEBRQUVYTUBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2Vi
Q29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRl
eCA0NDcwZGVmYjhiMzQwMjIyYTkwMjhhYmY4OGE3N2MwZTcxODQ5ZjVhLi44ZjYyMjBiZDM3YzQ0
MGRlMzVkYjJkMDYxNDBkNjEzNzUwYWU2YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAg
LTEzMyw3ICsxMzMsNyBAQCBfWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMThk
aWRDYW5jZWxGcmFtZUltcGxFUE5TXzE5SW5zdHJ1bWVudGluZ0FnZQogX1pON1dlYkNvcmUxNFNj
cm9sbGFibGVBcmVhMjhzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50
RTsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsK
IF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKLV9aTjdX
ZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXY7CitfWk43V2ViQ29yZTROb2RlMTRzZWFyY2hO
ZXdMaWZldGltZU93bmVyRXY7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFt
aWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0
dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0
Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9udEZhbWlseUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMDY5ZDBiMTAzODQ2ZGU0NDNm
YTNhZTUyZTkxYzRkOGIzYWUzYjZjLi5jNDZiMGQxMzRjY2RiNjIzNjYyMjBlYThiNmU2ODk0YTEy
MTVmZWY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMjUgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIE5vZGUgWCBoYXMgYSByZWZlcmVu
Y2UgY291bnQsIGFsbCB0aGUgTm9kZXMgaW4gdGhlIHNhbWUgdHJlZSBzaG91bGQgYmUga2VwdCBh
bGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4
MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBnYy1k
b20tdHJlZS1saWZldGltZS5odG1sIHRlc3RzIHRoZSBmb2xsb3dpbmdzOgorCisgICAgICAgICAg
LSBBIG5vZGUgWCBpcyBub3QgcmVjbGFpbWVkLCBpZiB0aGUgbm9kZSBYIGlzIHJlYWNoYWJsZSBm
cm9tIGEgbm9kZSBZIHRoYXQgaGFzCisgICAgICAgICAgICBtb3JlIHRoYW4gMSByZWZlcmVuY2Ug
Y291bnQuCisgICAgICAgICAgLSBBIG5vZGUgWCBpcyByZWNsYWltZWQsIG90aGVyd2lzZS4KKwor
ICAgICAgICAqIGZhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHRlc3QgcmVzdWx0
cy4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAg
ICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wNi0yNCAgS3Jpc3TDs2YgS29zenR5w7MgIDxra3Jpc3RvZkBpbmYudS1zemVnZWQuaHU+CiAK
ICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBuZXcgZmFpbGluZyB0ZXN0
cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQKaW5kZXggNjBkM2ExNzBmMjli
NjMzNDg3MWM4Mzk2ZGUwYWFiYmI3NmIwYzE5Ni4uOTJkNDEyMTdlZjNhZTM5MGY1YWEyMDBjMmVl
OWVmZDE1YTYxMjZmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQKQEAg
LTQsNSArNCw2IEBAIFRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9m
IHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhCiAKIHJlcGxhY2VtZW50IGNvbnRl
bnQKIEIKK3BhcmVudCBub2RlIGV4aXN0cwogY2hpbGQgbm9kZSBleGlzdHMKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dAppbmRleCAxOGM4MzQ4OGIwY2Y2ZjA0MDFmZjM3OTdj
ZjE2NjM5ZGE1NjNkYTZlLi43MzgwOWNkYTg1NDM0ODc5Y2I5MjY3NmI5NmI3NWQxOWYwMzE3YjBj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dApAQCAtNCw0ICs0LDUgQEAg
VGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5l
cyBieSB0aGVtc2VsdmVzOiAicmVwbGEKIAogcmVwbGFjZW1lbnQgY29udGVudAogQgorRAogCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNzM5NWFlMDQ1ZGU3MmE4MjE4
ZmY3M2E3MWM0MGZhNWQwY2U3Mzg0NS4uYjZlYjlmZDBmODc2YmI2Y2ZjMzIyM2UzMGE5NmMyMWQy
ZWY0ODM4YSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA2LTI1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJZiBOb2RlIFggaGFzIGEgcmVmZXJlbmNlIGNvdW50LCBhbGwgdGhlIE5vZGVz
IGluIHRoZSBzYW1lIHRyZWUgc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3ltYm9sIGNoYW5nZXMuCisKKyAgICAgICAg
KiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA2LTIyICBKb3NodWEg
TmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJy
eV0gU2FuaXRpemUgR0xTTCBjb2RlIHVzaW5nIEFOR0xFLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149734</attachid>
            <date>2012-06-27 05:37:16 -0700</date>
            <delta_ts>2012-07-31 05:09:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88834-20120627213716.patch</filename>
            <type>text/plain</type>
            <size>66325</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2ZiMzRiYjEzOTc0MDU4
ZmE2ZWE3ZTQ5MzY3ZTQwYjNlY2Q5MDZjMy4uMTJjMzk5MTliMDUxZDE1Yzk4Y2ZhOTIzZTM5M2Iy
ZDY2ZDA0NWVkNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAxMi0wNi0yNSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgTm9kZSBYIGhh
cyBhIHJlZmVyZW5jZSBjb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3Vs
ZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEN1cnJlbnRseSB0aGUgbGlmZXRpbWUgbWFuYWdlbWVudCBvZiBET00gbm9kZXMgaXMg
dW5wcmVkaWN0YWJsZSBmcm9tIHRoZSBwZXJzcGVjdGl2ZQorICAgICAgICBvZiBwcm9ncmFtbWVy
cy4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworICAgICAg
ICAgIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgICBwLmlubmVySFRNTCA9JzxkaXY+PHNwYW4g
aWQ9InNwYW4iPjxicj48L3NwYW4+PC9kaXY+JzsKKyAgICAgICAgICBzcGFuID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInNwYW4iKTsKKyAgICAgICAgICBwLmlubmVySFRNTCA9ICIiOworICAg
ICAgICAgIGFsZXJ0KHNwYW4pOyAgLy8gPHNwYW4+CisgICAgICAgICAgYWxlcnQoc3Bhbi5wYXJl
bnROb2RlKTsgIC8vID8/PworICAgICAgICAgIGFsZXJ0KHNwYW4uZmlyc3RDaGlsZCk7ICAvLyA/
Pz8KKworICAgICAgICBUaGUgY3VycmVudCBXZWJLaXQgcmV0dXJucyBudWxsIGZvciBzcGFuLnBh
cmVudE5vZGUgKGkuZS4gPGRpdj4gaXMgYWxyZWFkeSByZWNsYWltZWQpCisgICAgICAgIGFuZCA8
YnI+IGZvciBzcGFuLmZpcnN0Q2hpbGQuCisKKyAgICAgICAgV2Ugd2FudCB0byBjaGFuZ2UgdGhl
IGJlaGF2aW9yIHNvIHRoYXQgc3Bhbi5wYXJlbnROb2RlIHJldHVybnMgPGRpdj4gYW5kCisgICAg
ICAgIHNwYW4uZmlyc3RDaGlsZCByZXR1cm5zIDxicj4uIEFjY3VyYXRlbHkgc3BlYWtpbmcsIHdl
IHdhbnQgdG8gZ3VhcmFudGVlIHRoZSBmb2xsb3dpbmdzOgorCisgICAgICAgICAgLSBBIG5vZGUg
WCBpcyBub3QgcmVjbGFpbWVkLCBpZiB0aGUgbm9kZSBYIGlzIHJlYWNoYWJsZSBmcm9tIGEgbm9k
ZSBZIHRoYXQgaGFzCisgICAgICAgICAgICBtb3JlIHRoYW4gMSByZWZlcmVuY2UgY291bnQuCisg
ICAgICAgICAgLSBBIG5vZGUgWCBpcyByZWNsYWltZWQsIG90aGVyd2lzZS4KKworICAgICAgICBU
aGlzIHBhdGNoIGFjY29tcGxpc2hlcyB0aGUgbGlmZXRpbWUgbWFuYWdlbWVudCBieSAiYSBsaWZl
dGltZSBvd25lciBhbGdvcml0aG0iLgorICAgICAgICBObyBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
LiBObyBhZGRpdGlvbmFsIGJ5dGUgdG8gZWFjaCBOb2RlIG9iamVjdC4KKworICAgICAgICBBIGRl
c2lnbiBkb2N1bWVudDogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZG9j
dW1lbnQvZC8xdVlIcHE3dTVTc2xqNTRVZ3pYakE3cFlSNTNYamlkcEJjckNhLW5lT0dRcy9lZGl0
P3BsaT0xCisKKyAgICAgICAgQSB3ZWJraXQtZGV2QCB0aHJlYWQ6IGh0dHA6Ly9tYXJrbWFpbC5v
cmcvdGhyZWFkL2txdm90ajVpaDRmNG13NG0KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9nYy1k
b20tdHJlZS1saWZldGltZS5odG1sCisgICAgICAgICAgICAgIGZhc3QvZG9tL2lubGluZS1ldmVu
dC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbAorICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwt
bGVhay1lbGVtZW50LWluc3RhbmNlcy1ub0Jhc2VWYWxSZWYuc3ZnCisgICAgICAgICAgICAgIGFu
aW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBh
bmltYXRpb25zL3NtaWwtbGVhay1keW5hbWljYWxseS1hZGRlZC1lbGVtZW50LWluc3RhbmNlcy5z
dmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudHMuc3ZnCisgICAg
ICAgICAgICAgIGFuaW1hdGlvbnMvc3ZnbGVuZ3RoLWVsZW1lbnQtcmVtb3ZlZC1jcmFzaC5zdmcK
KyAgICAgICAgICAgICAgQ29uZmlybSB0aGF0IGFsbCB0aGUgb3RoZXIgZXhpc3RpbmcgdGVzdHMg
ZG8gbm90IGNyYXNoLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogV2Vi
Q29yZS5vcmRlcjoKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dHRyOjpjcmVhdGVUZXh0Q2hpbGQpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Z2NDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjp+Q29udGFpbmVyTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5l
ck5vZGUuaDoKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3Zl
ZEZyb21UcmVlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6Q2hpbGROb2RlUmVtb3Zh
bE5vdGlmaWVyKToKKyAgICAgICAgKENoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmdjQ2hpbGRyZW5JbkNvbnRhaW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpyZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZElu
dG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRG
cm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5v
dGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNr
SWZMaWZldGltZU93bmVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmdjQ2hpbGRyZW5PZkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpndWFyZERlcmVmKToKKyAgICAg
ICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OmZvcmNlUmVtb3Zl
QWxsU2hhZG93Um9vdHMpOgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAg
IChFbGVtZW50U2hhZG93KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpyZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVNoYXJlZDo6VHJlZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp+VHJl
ZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6CisgICAgICAg
IChUcmVlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlZkNvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6Omhhc09uZVJlZik6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2hhcmVkOjpzZXRMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTaGFyZWQ6OnVuc2V0TGlmZXRpbWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hh
cmVkOjppc0xpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6c2V0
UGFyZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjptYXBJbnN0YW5jZVRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpy
ZW1vdmVJbnN0YW5jZU1hcHBpbmcpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudElu
c3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJ
bnN0YW5jZTo6YXBwZW5kQ2hpbGQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6aXNDb250YWluZXJOb2Rl
KToKKyAgICAgICAgKFNWR0VsZW1lbnRJbnN0YW5jZSk6CisKIDIwMTItMDYtMjcgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBFbGVtZW50Ojpy
YXJlRGF0YSgpIHRvIEVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSgpLCBhbmQgRWxlbWVudDo6ZW5z
dXJlUmFyZURhdGEoKSB0byBFbGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGM0MWI0MWQwM2FiZGNiMjU3Y2IyZjUxOTJlMWQwNjEyZGEyZTg0OTkuLjE0YTVmZWJh
YjFiZTUzNDViMWM2NzFkODk2MjQ4NTM3OGRmOGZjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wNi0yNSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSWYgTm9kZSBYIGhhcyBhIHJlZmVyZW5jZSBjb3VudCwgYWxsIHRoZSBOb2RlcyBp
biB0aGUgc2FtZSB0cmVlIHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN5bWJvbCBjaGFuZ2VzLgorCisgICAgICAgICog
d2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAx
Mi0wNi0yNyAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAg
IFtHdGtdIEFkZCBzdXBwb3J0IGZvciB0aGUgR2FtZXBhZCBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggYWJkZGZiNzIyYWQyYzNjNjQ0ZTI5NzIzZmFlOWUxY2IwYmU2MTMxNC4uYjQxZGU2MTll
NGRmNmU2MzA2OWVjM2MxMzNhZmI1ZjZiMDc3N2YyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAg
LTY0Niw3ICs2NDYsNiBAQCBfX1pON1dlYkNvcmU0S1VSTEMxRVA1TlNVUkwKIF9fWk43V2ViQ29y
ZTRLVVJMQzFFUEs3X19DRlVSTAogX19aTjdXZWJDb3JlNEtVUkxDMUVSS1MwX1JLTjNXVEY2U3Ry
aW5nRQogX19aTjdXZWJDb3JlNE5vZGUxMHJlbmRlclJlY3RFUGIKLV9fWk43V2ViQ29yZTROb2Rl
MTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmU0Tm9kZTE3c3RvcElnbm9yaW5nTGVha3NF
dgogX19aTjdXZWJDb3JlNE5vZGUxOHN0YXJ0SWdub3JpbmdMZWFrc0V2CiBfX1pON1dlYkNvcmU0
Tm9kZTE5c2V0TmVlZHNTdHlsZVJlY2FsY0VOU18xNVN0eWxlQ2hhbmdlVHlwZUUKQEAgLTEyNjUs
NiArMTI2NCw3IEBAIF9fWk5LN1dlYkNvcmU0Tm9kZTExdGV4dENvbnRlbnRFYgogX19aTks3V2Vi
Q29yZTROb2RlMTRpc0Rlc2NlbmRhbnRPZkVQS1MwXwogX19aTks3V2ViQ29yZTROb2RlMThnZXRT
dWJyZXNvdXJjZVVSTHNFUk4zV1RGMTFMaXN0SGFzaFNldElOU180S1VSTEVMbTI1NkVOU184S1VS
TEhhc2hFRUUKIF9fWk5LN1dlYkNvcmU0Tm9kZTIwdHJhdmVyc2VQcmV2aW91c05vZGVFUEtTMF8K
K19fWk43V2ViQ29yZTROb2RlMjJzZWFyY2hOZXdMaWZldGltZU93bmVyRXYKIF9fWk5LN1dlYkNv
cmU0Tm9kZTI3dHJhdmVyc2VOZXh0QW5jZXN0b3JTaWJsaW5nRXYKIF9fWk5LN1dlYkNvcmU0Tm9k
ZTMxbnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbkV2CiBfX1pOSzdXZWJDb3JlNE5vZGU5
bm9kZUluZGV4RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IGYzNjU0ZTUzMDBjYWMzOWU2YzRiNGFh
ZGMzMDdiOGEyMTMwZDk0ZDcuLmIzZDMzMjQ1YmU0OTQxNWM3NzEyOWRlMGJlMWEwMTAwZWNhYjEx
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMjQ3MSwxMyArMjQ3MSwxMCBAQCBfX1pOSzNXVEY5
SGFzaFRhYmxlSVB2UzFfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTMV9FRU5TXzdQdHJIYXNoSVMx
X0VFTlNfMTBIYXNoVAogX19aTjdXZWJDb3JlMTFKU05vZGVPd25lcjhmaW5hbGl6ZUVOM0pTQzZI
YW5kbGVJTlMxXzdVbmtub3duRUVFUHYKIF9fWk43V2ViQ29yZTE0dW5jYWNoZVdyYXBwZXJJTlNf
NE5vZGVFRUV2UE5TXzE1RE9NV3JhcHBlcldvcmxkRVBUX1BOU18xMkpTRE9NV3JhcHBlckUKIF9f
Wk43V2ViQ29yZTE0SlNIVE1MRG9jdW1lbnREMUV2Ci1fX1pUaG44X043V2ViQ29yZThEb2N1bWVu
dDE0cmVtb3ZlZExhc3RSZWZFdgotX19aTjdXZWJDb3JlOERvY3VtZW50MTRyZW1vdmVkTGFzdFJl
ZkV2CiBfX1pON1dlYkNvcmUxNFN0eWxlU2hlZXRMaXN0RDFFdgogX19aTjdXZWJDb3JlOVRyZWVT
Y29wZTIwZGVzdHJveVRyZWVTY29wZURhdGFFdgogX19aTjdXZWJDb3JlMThEb2N1bWVudE9yZGVy
ZWRNYXA1Y2xlYXJFdgogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTdyZW1vdmVBbGxDaGls
ZHJlbkV2Ci1fX1pON1dlYkNvcmUyOHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXJJTlNfNE5v
ZGVFTlNfMTNDb250YWluZXJOb2RlRUVFdlBUMF8KIF9fWk43V2ViQ29yZTE1SFRNTEh0bWxFbGVt
ZW50RDBFdgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50RDJFdgogX19aTjdXZWJDb3JlN0Vs
ZW1lbnREMkV2CkBAIC00MTUxLDcgKzQxNDgsNiBAQCBfX1pON1dlYkNvcmU0Tm9kZTE1cmVtb3Zl
ZEZyb21UcmVlRWIKIF9fWk43V2ViQ29yZUwxOW5vdGlmeUNoaWxkSW5zZXJ0ZWRFUE5TXzROb2Rl
RQogX19aTjdXZWJDb3JlNE5vZGUxNmluc2VydGVkSW50b1RyZWVFYgogX19aTjdXZWJDb3JlTDI4
ZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50c0VQTlNfNE5vZGVFCi1fX1pON1dlYkNvcmUxMFRy
ZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUUxNHJlbW92ZWRMYXN0UmVmRXYKIF9fWlRobjhf
TjdXZWJDb3JlMTZEb2N1bWVudEZyYWdtZW50RDBFdgogX19aTjdXZWJDb3JlTDMzY3JlYXRlSFRN
TFBhcmFncmFwaEVsZW1lbnRXcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9i
YWxPYmplY3RFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTFIVE1MRWxlbWVudEVFRQogX19aTjdXZWJD
b3JlMTNjcmVhdGVXcmFwcGVySU5TXzIySlNIVE1MUGFyYWdyYXBoRWxlbWVudEVOU18yMEhUTUxQ
YXJhZ3JhcGhFbGVtZW50RUVFUE5TXzEySlNET01XcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5T
XzE3SlNET01HbG9iYWxPYmplY3RFUFQwXwpAQCAtMjk0NzEsMTIgKzI5NDY3LDEwIEBAIF9fWk43
V2ViQ29yZTEzU1ZHVXNlRWxlbWVudDMwZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwRXYK
IF9fWk5LN1dlYkNvcmUxMlNWR1RyYW5zZm9ybTl0cmFuc2xhdGVFdgogX19aTjdXZWJDb3JlMTBG
bG9hdFBvaW50MTVuYXJyb3dQcmVjaXNpb25FZGQKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNm
b3JtOXNldE1hdHJpeEVkZGRkZGQKLV9fWk43V2ViQ29yZTEwVHJlZVNoYXJlZElOU18xOFNWR0Vs
ZW1lbnRJbnN0YW5jZUVFMTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmUxOFNWR0VsZW1l
bnRJbnN0YW5jZUQwRXYKIF9fWk43V2ViQ29yZTEwU1ZHRWxlbWVudDIxcmVtb3ZlSW5zdGFuY2VN
YXBwaW5nRVBOU18xOFNWR0VsZW1lbnRJbnN0YW5jZUUKIF9fWk5LM1dURjlIYXNoVGFibGVJUE43
V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNf
RUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U0ZmluZElTM19OU18y
MklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzNfUzNfUzdfRUVFRU5TXzIySGFzaFRhYmxlQ29uc3RJ
dGVyYXRvcklTM19TM19TNV9TN19TOV9TOV9FRVJLVF8KIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdX
ZWJDb3JlMThTVkdFbGVtZW50SW5zdGFuY2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19F
RU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTZyZW1vdmVFUFMzXwot
X19aTjdXZWJDb3JlMjhyZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVySU5TXzE4U1ZHRWxlbWVu
dEluc3RhbmNlRVMxX0VFdlBUMF8KIF9fWlRobjhfTjdXZWJDb3JlMTRTVkdMaW5lRWxlbWVudEQw
RXYKIF9fWlRobjhfTjdXZWJDb3JlMThTVkdQb2x5bGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043
V2ViQ29yZTE3U1ZHUG9seWdvbkVsZW1lbnREMEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQXR0ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggZGU5ZTRm
ZjQzZjQ5YmQ4NjRmZmM5NDRiMmRjMWJiZDk4Yzg3MTkzYS4uZjliYmY1NzBkYzQxMTc4MTc3NmY5
MDRhZDhkNzJiYjg1YmI4ZTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtODIsNiArODIsNyBAQCB2
b2lkIEF0dHI6OmNyZWF0ZVRleHRDaGlsZCgpCiAgICAgICAgIC8vIFRoaXMgZG9lcyBldmVyeXRo
aW5nIGFwcGVuZENoaWxkKCkgd291bGQgZG8gaW4gdGhpcyBzaXR1YXRpb24gKGFzc3VtaW5nIG1f
aWdub3JlQ2hpbGRyZW5DaGFuZ2VkIHdhcyBzZXQpLAogICAgICAgICAvLyBidXQgbXVjaCBtb3Jl
IGVmZmljaWVudGx5LgogICAgICAgICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlz
KTsKKyAgICAgICAgdGV4dE5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigpOwogICAgICAgICBzZXRG
aXJzdENoaWxkKHRleHROb2RlLmdldCgpKTsKICAgICAgICAgc2V0TGFzdENoaWxkKHRleHROb2Rl
LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYzIz
YTBiOWU5MGQwMGIyZGE0OWQ5NmEzOTg1MmI3N2RjMzY0M2I3ZC4uM2Q3NmEwZmE4ODIyZjM3YTIx
ZmMxMjM3MGZkMWEzMjQ2ZGQ0NjUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cApAQCAtODMsNyArODMsMTIgQEAgc3RhdGljIHZvaWQgY29sbGVjdENoaWxkcmVuQW5kUmVtb3Zl
RnJvbU9sZFBhcmVudChOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2RlcywKIAogdm9pZCBDb250
YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiB7Ci0gICAgcmVtb3ZlQWxsQ2hpbGRyZW5J
bkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlzKTsKKyAgICByZW1vdmVDaGlsZHJl
bkluQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KHRoaXMpOworfQorCitib29sIENvbnRh
aW5lck5vZGU6OmdjQ2hpbGRyZW4oKQoreworICAgIHJldHVybiBnY0NoaWxkcmVuSW5Db250YWlu
ZXIodGhpcyk7CiB9CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbShD
b250YWluZXJOb2RlKiBvbGRQYXJlbnQpCkBAIC0xMTEsNyArMTE2LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkKIAog
Q29udGFpbmVyTm9kZTo6fkNvbnRhaW5lck5vZGUoKQogewotICAgIHJlbW92ZUFsbENoaWxkcmVu
KCk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+Q29udGFpbmVyTm9kZSgpICVwXG4iLCB0aGlz
KTsKIH0KIAogYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUGFzc1JlZlB0cjxOb2Rl
PiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjLCBib29sIHNob3Vs
ZExhenlBdHRhY2gpCkBAIC00MDEsNyArNDA2LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1v
dmVDaGlsZChOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICBjaGlsZHJl
bkNoYW5nZWQoZmFsc2UsIHByZXYsIG5leHQsIC0xKTsKIAotICAgIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQuZ2V0KCkpOworICAgIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQuZ2V0KCksIGZhbHNlKTsKICAgICBkaXNwYXRjaFN1
YnRyZWVNb2RpZmllZEV2ZW50KCk7CiAKICAgICByZXR1cm4gY2hpbGQ7CkBAIC00NDcsNyArNDUy
LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlKiBvbGRDaGls
ZCkKICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxkKTsKIAogICAgIGNoaWxk
cmVuQ2hhbmdlZCh0cnVlLCBwcmV2LCBuZXh0LCAtMSk7Ci0gICAgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyKHRoaXMpLm5vdGlmeShvbGRDaGlsZCk7CisgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyKHRoaXMpLm5vdGlmeShvbGRDaGlsZCwgZmFsc2UpOwogfQogCiAvLyB0aGlzIGRpZmZlcnMg
ZnJvbSBvdGhlciByZW1vdmUgZnVuY3Rpb25zIGJlY2F1c2UgaXQgZm9yY2libHkgcmVtb3ZlcyBh
bGwgdGhlIGNoaWxkcmVuLApAQCAtNTA5LDcgKzUxNCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6
cmVtb3ZlQ2hpbGRyZW4oKQogICAgIGNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgMCwgMCwgLXN0YXRp
Y19jYXN0PGludD4ocmVtb3ZlZENoaWxkcmVuQ291bnQpKTsKIAogICAgIGZvciAoaSA9IDA7IGkg
PCByZW1vdmVkQ2hpbGRyZW5Db3VudDsgKytpKQotICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXIodGhpcykubm90aWZ5KHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKSk7CisgICAgICAgIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkocmVtb3ZlZENoaWxkcmVuW2ldLmdl
dCgpLCBmYWxzZSk7CiAKICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKICAgICBkaXNwYXRjaFN1
YnRyZWVNb2RpZmllZEV2ZW50KCk7CkBAIC01NzgsMTQgKzU4MywxNSBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4gbmV3Q2hpbGQpCiAKICAgICBm
b3JiaWRFdmVudERpc3BhdGNoKCk7CiAgICAgTm9kZSogbGFzdCA9IG1fbGFzdENoaWxkOworICAg
IE5vZGUqIGNoaWxkID0gbmV3Q2hpbGQuZ2V0KCk7CiAgICAgLy8gRklYTUU6IFRoaXMgbWV0aG9k
IHNob3VsZCB0YWtlIGEgUGFzc1JlZlB0ci4KLSAgICBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKG5l
d0NoaWxkLmdldCgpLCB0aGlzKTsKLSAgICB0cmVlU2NvcGUoKS0+YWRvcHRJZk5lZWRlZChuZXdD
aGlsZC5nZXQoKSk7CisgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihjaGlsZCwgdGhpcyk7Cisg
ICAgdHJlZVNjb3BlKCktPmFkb3B0SWZOZWVkZWQoY2hpbGQpOwogICAgIAogICAgIGFsbG93RXZl
bnREaXNwYXRjaCgpOwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIGxhc3QsIDAsIDEpOwot
ICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShuZXdDaGlsZC5nZXQo
KSk7CisgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxkKTsK
IH0KIAogdm9pZCBDb250YWluZXJOb2RlOjpzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA1ZjU1YzdiZWI0OGQwNDIyMmE1NjA3MWE1
ZGE5MDc3YjIyMTlmMjVlLi5iNDQ3ZWVhNmVjMzMyOTMxNTA0OGIxYjFmNzJlNTAwYWE5Y2I1OGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGlj
OgogICAgIC8vIEhvdyBkbyByZW1vdmVDaGlsZHJlbiBhbmQgcmVtb3ZlQWxsQ2hpbGRyZW4gZGlm
ZmVyPwogICAgIHZvaWQgcmVtb3ZlQ2hpbGRyZW4oKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxk
cmVuKCk7CisgICAgYm9vbCBnY0NoaWxkcmVuKCk7CiAKICAgICB2b2lkIHRha2VBbGxDaGlsZHJl
bkZyb20oQ29udGFpbmVyTm9kZSopOwogCkBAIC0xMTcsOSArMTE4LDExIEBAIHByb3RlY3RlZDoK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRh
aW5lcj4KICAgICBmcmllbmQgdm9pZCBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKEdlbmVyaWNOb2Rl
KiBjaGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsKLQogICAgIHRlbXBsYXRlPGNsYXNzIEdl
bmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KICAgICBmcmllbmQgdm9pZCBQ
cml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVhZCwg
R2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOworICAgIHRlbXBsYXRl
PGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KKyAgICBmcmll
bmQgdm9pZCByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKik7
CisgICAgZnJpZW5kIGJvb2wgZ2NDaGlsZHJlbkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUqKTsK
IAogICAgIHZvaWQgc2V0Rmlyc3RDaGlsZChOb2RlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBj
aGlsZDsgfQogICAgIHZvaWQgc2V0TGFzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENoaWxk
ID0gY2hpbGQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCmluZGV4IGM4OTU5ZGZiODE2M2Y0ZWU5NWI0NWUwOTNmNGY3YmM1MWMzZjU2M2MuLmE0
MGRlN2ZjNzE4OTI5MmM4M2U2MjA5MDYzMzdjNGFmMTBkMzBlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcApAQCAtNTksNiArNTksOCBAQCB2
b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJ
bnRvVHJlZShDb250YWluZXJOb2RlKgogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAg
IGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBub3RpZnlOb2RlSW5z
ZXJ0ZWRJbnRvVHJlZSh0b0NvbnRhaW5lck5vZGUoY2hpbGQpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY2hpbGQtPnVuc2V0TGlmZXRpbWVPd25lcigpOwogICAgIH0KIAogICAgIGZvciAo
U2hhZG93Um9vdCogcm9vdCA9IG5vZGUtPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290
ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCkBAIC05NSw2ICs5Nyw4IEBAIHZvaWQgQ2hpbGRO
b2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRh
aW5lck5vZGUqIG5vCiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxk
LT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRy
ZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNo
ZWNrSWZMaWZldGltZU93bmVyKGNoaWxkKTsKICAgICB9CiAKICAgICBpZiAoIW5vZGUtPmlzRWxl
bWVudE5vZGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
LmgKaW5kZXggYjVkZmE0ZmE2YWJmNDY3YzQ1YzhmYzI3ZmY2ZTk2YzIzM2VkODhhMS4uN2NhZDBk
MWI4NTQwMjM1ZDk1OTAxOWJkYTQxOGRiZTg2MTkxNTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKQEAgLTIzLDkgKzIzLDE0IEBACiAjZGVmaW5l
IENvbnRhaW5lck5vZGVBbGdvcml0aG1zX2gKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5j
bHVkZSAiRWxlbWVudFNoYWRvdy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNWR0Vs
ZW1lbnRJbnN0YW5jZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MiwxOCArNTcsMjEgQEAgY2xhc3Mg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXIoQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAg
IDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCkKKyAgICAgICAgLCBtX2xpZmV0aW1l
T3duZXJGb3VuZChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBub3RpZnkoTm9kZSop
OworICAgIHZvaWQgbm90aWZ5KE5vZGUqLCBib29sKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIG5v
dGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUqKTsKICAgICB2
b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOwogICAg
IHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSopOwogICAgIHZvaWQgbm90
aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKik7CisgICAgdm9pZCBjaGVja0lm
TGlmZXRpbWVPd25lcihOb2RlKik7CiAKICAgICBDb250YWluZXJOb2RlKiBtX2luc2VydGlvblBv
aW50OworICAgIGJvb2wgbV9saWZldGltZU93bmVyRm91bmQ7CiB9OwogCiBuYW1lc3BhY2UgUHJp
dmF0ZSB7CkBAIC03MywxMSArODEsMjM4IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKIAogfQogCi0v
LyBIZWxwZXIgZnVuY3Rpb25zIGZvciBUcmVlU2hhcmVkLWRlcml2ZWQgY2xhc3Nlcywgd2hpY2gg
aGF2ZSBhICdOb2RlJyBzdHlsZSBpbnRlcmZhY2UKLS8vIFRoaXMgYXBwbGllcyB0byAnQ29udGFp
bmVyTm9kZScgYW5kICdTVkdFbGVtZW50SW5zdGFuY2UnCisvLyBGSVhNRTogV3JhcCB1cCB0d28g
Z2NDaGlsZHJlbkluQ29udGFpbmVyKClzIGJ5IHRlbXBsYXRlLgoraW5saW5lIGJvb2wgZ2NDaGls
ZHJlbkluQ29udGFpbmVyKFNWR0VsZW1lbnRJbnN0YW5jZSogY29udGFpbmVyKQoreworICAgIC8v
IFRoaXMgYXNzZXJ0aW9uIGlzIGp1c3QgZm9yIHBlcmZvcm1hbmNlLiBGb3IgcGVyZm9ybWFuY2Ug
d2Ugc2hvdWxkIGF2b2lkIGNhbGxpbmcKKyAgICAvLyBnY0NoaWxkcmVuSW5Db250YWluZXIoKSBp
ZiBjb250YWluZXItPnJlZkNvdW50KCkgPiAwLgorICAgIEFTU0VSVCghY29udGFpbmVyLT5yZWZD
b3VudCgpKTsKKyAgICBBU1NFUlQoIWNvbnRhaW5lci0+aXNMaWZldGltZU93bmVyKCkpOworCisg
ICAgVmVjdG9yPFNWR0VsZW1lbnRJbnN0YW5jZSo+IGdhcmJhZ2VOb2RlczsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcihTVkdFbGVtZW50SW5zdGFuY2UqKSAl
cCBiZWZvcmVcbiIsIGNvbnRhaW5lcik7CisKKyAgICAvLyBET00gTm9kZXMgYXJlIHRyYXZlcnNl
ZCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyLiBUaGUgdHJhdmVyc2FsIG9yZGVyIGRvZXMgbm90IG1h
dHRlcgorICAgIC8vIGZvciBjb3JyZWN0bmVzcywgYnV0IGNyaXRpY2FsIGZvciBwZXJmb3JtYW5j
ZToKKyAgICAvLyAoMSkgVGhlIHJvb3Qgbm9kZQorICAgIC8vICgyKSBSZXZlcnNlIERGUyBvcmRl
ciBmb3IgdGhlIHJlc3Qgb2YgTm9kZXMKKyAgICBTVkdFbGVtZW50SW5zdGFuY2UqIG5vZGUgPSBj
b250YWluZXItPmxhc3RDaGlsZCgpOworICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgIC8vIEF0
IHRoZSBwb2ludCB3aGVyZSBnY0NoaWxkcmVuSW5Db250YWluZXIoKSBpcyBjYWxsZWQsIHRoZXJl
IGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZQorICAgICAgICAvLyBET00gdHJlZS4KKyAgICAg
ICAgQVNTRVJUKCFub2RlLT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAgZ2FyYmFnZU5v
ZGVzLmFwcGVuZChub2RlKTsKKyAgICAgICAgaWYgKG5vZGUtPmxhc3RDaGlsZCgpKSB7CisgICAg
ICAgICAgICBub2RlID0gbm9kZS0+bGFzdENoaWxkKCk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorICAgICAgICB3aGlsZSAoIW5vZGUtPnByZXZpb3VzU2libGluZygpKSB7Cisg
ICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgTm9kZSB0aGF0IGhhcyAxfiByZWZjb3VudCwgd2Ug
c2V0IHRoZSBub2RlIGFzIGEgbGlmZXRpbWUgb3duZXIsCisgICAgICAgICAgICAvLyBhbmQgcmV0
dXJuIHdpdGhvdXQgZGVsZXRpbmcgYW55IE5vZGUgaW4gdGhlIERPTSB0cmVlLgorICAgICAgICAg
ICAgaWYgKG5vZGUtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgIm5vZGUtPnJlZkNvdW50KCk+MCAlcCByZWZDb3VudD09JWRcbiIsIG5vZGUsIG5vZGUt
PnJlZkNvdW50KCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsK
KyAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5l
cigpICVwIGFmdGVyXG4iLCBjb250YWluZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUo
KTsKKyAgICAgICAgICAgIEFTU0VSVChub2RlKTsKKyAgICAgICAgICAgIGlmIChub2RlID09IGNv
bnRhaW5lcikgeworICAgICAgICAgICAgICAgIG5vZGUgPSAwOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChub2RlKSB7CisgICAg
ICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgTm9kZSB0aGF0IGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0
IHRoZSBub2RlIGFzIGEgbGlmZXRpbWUgb3duZXIsCisgICAgICAgICAgICAvLyBhbmQgcmV0dXJu
IHdpdGhvdXQgZGVsZXRpbmcgYW55IE5vZGUgaW4gdGhlIERPTSB0cmVlLgorICAgICAgICAgICAg
aWYgKG5vZGUtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIm5vZGUtPnJlZkNvdW50KCk+MCAlcCByZWZDb3VudD09JWRcbiIsIG5vZGUsIG5vZGUtPnJl
ZkNvdW50KCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKKyAg
ICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcigp
ICVwIGFmdGVyXG4iLCBjb250YWluZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGlu
ZygpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IGFsbCBOb2RlcyBpbiB0aGUgRE9N
IHRyZWUgaGF2ZSAwIHJlZmNvdW50LCBhbmQgd2UgY2FuIGRlbGV0ZSBhbGwgdGhlIE5vZGVzLgor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRpb24gc3RhcnRlZFxuIik7CisKKyAgICB1bnNp
Z25lZCBsZW5ndGggPSBnYXJiYWdlTm9kZXMuc2l6ZSgpOworICAgIC8vIEJlZm9yZSBzdGFydGlu
ZyBkZWxldGlvbiwgd2UgY2xlYXIgYWxsIHRyZWUgcG9pbnRlcnMgc28gdGhhdCBOb2RlIGRlc3Ry
dWN0b3IKKyAgICAvLyB3b24ndCBjYXVzZSB1bmV4cGVjdGVkIHBvaW50ZXIgZGVyZWZlcmVuY2Vz
IGRlcGVuZGluZyBvbiB0aGUgZGVsZXRpb24gb3JkZXIuCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0
ID0gZ2FyYmFnZU5vZGVzW2ldOworICAgICAgICB0YXJnZXQtPnNldFByZXZpb3VzU2libGluZygw
KTsKKyAgICAgICAgdGFyZ2V0LT5zZXROZXh0U2libGluZygwKTsKKyAgICAgICAgdGFyZ2V0LT5z
ZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+cmVmQ291bnQo
KSk7CisgICAgICAgIEFTU0VSVCghdGFyZ2V0LT5pc0xpZmV0aW1lT3duZXIoKSk7CisgICAgICAg
IHRhcmdldC0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICAgICAgdGFyZ2V0LT5zZXRMYXN0Q2hpbGQo
MCk7CisgICAgfQorICAgIGNvbnRhaW5lci0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICBjb250YWlu
ZXItPnNldExhc3RDaGlsZCgwKTsKKworICAgIC8vIE5vdyBpdCBpcyBzYWZlIHRvIGRlbGV0ZSBh
bGwgdGhlIE5vZGVzIGluIGFueSBvcmRlci4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXQgPSBnYXJi
YWdlTm9kZXNbaV07CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdl
dCkgYmVmb3JlXG4iLCB0YXJnZXQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgdGFyZ2V0LT5t
X2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIGRlbGV0ZSB0YXJnZXQ7
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdldCkgYWZ0ZXJcbiIs
IHRhcmdldCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29u
dGFpbmVyKFNWR0VsZW1lbnRJbnN0YW5jZSopICVwIGFmdGVyXG4iLCBjb250YWluZXIpOworICAg
IHJldHVybiB0cnVlOworfQorCitpbmxpbmUgYm9vbCBnY0NoaWxkcmVuSW5Db250YWluZXIoQ29u
dGFpbmVyTm9kZSogY29udGFpbmVyKQoreworICAgIC8vIEZJWE1FOiBPcHRpbWl6ZSB0aGUgaW5p
dGlhbCB2ZWN0b3Igc2l6ZS4KKyAgICBWZWN0b3I8Tm9kZSosIDEwPiBnYXJiYWdlTm9kZXM7Cisg
ICAgVmVjdG9yPEVsZW1lbnRTaGFkb3cqLCAxMD4gZ2FyYmFnZUVsZW1lbnRTaGFkb3dzOworICAg
IERlcXVlPFNoYWRvd1Jvb3QqLCAxMD4gcGVuZGluZ1NoYWRvd1Jvb3RzOworICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29udGFpbmVyKENvbnRhaW5lck5vZGUqKSAlcCBiZWZv
cmVcbiIsIGNvbnRhaW5lcik7CisKKyAgICBOb2RlKiBzdGFydE5vZGUgPSBjb250YWluZXI7Cisg
ICAgLy8gVGhlIHdob2xlIERPTSB0cmVlIGlzIHRyYXZlcnNlZCBpbiB0aGUgb3JkZXI6CisgICAg
Ly8gKDEpIExpZ2h0IERPTQorICAgIC8vICgyKSBTaGFkb3cgRE9NIGZvdW5kIGluIHRoZSBsaWdo
dCBET00KKyAgICAvLyAoMykgU2hhZG93IERPTSBmb3VuZCBpbiB0aGUgc2hhZG93IERPTSBmb3Vu
ZCBpbiB0aGUgbGlnaHQgRE9NCisgICAgLy8gKDQpIC4uLiAodW50aWwgbm8gc2hhZG93IERPTSBp
cyBmb3VuZC4pCisgICAgLy8KKyAgICAvLyBJbiBlYWNoIHRyYXZlcnNhbCwgRE9NIE5vZGVzIGFy
ZSB0cmF2ZXJzZWQgaW4gdGhlIGZvbGxvd2luZyBvcmRlci4KKyAgICAvLyBUaGUgdHJhdmVyc2Fs
IG9yZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5lc3MsIGJ1dCBjcml0aWNhbCBmb3Ig
cGVyZm9ybWFuY2U6CisgICAgLy8gKDEpIFRoZSByb290IG5vZGUKKyAgICAvLyAoMikgUmV2ZXJz
ZSBERlMgb3JkZXIgZm9yIHRoZSByZXN0IG9mIE5vZGVzCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgLy8gVGhpcyBhc3NlcnRpb24gaXMganVzdCBmb3IgcGVyZm9ybWFuY2UuIEZvciBwZXJm
b3JtYW5jZSB3ZSBzaG91bGQgYXZvaWQgY2FsbGluZworICAgICAgICAvLyBnY0NoaWxkcmVuSW5D
b250YWluZXIoKSBpZiBjb250YWluZXItPnJlZkNvdW50KCkgPiAwLgorICAgICAgICBBU1NFUlQo
IXN0YXJ0Tm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgIEFTU0VSVCghc3RhcnROb2RlLT5pc0xp
ZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAgTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZS0+bGFzdENo
aWxkKCk7CisgICAgICAgIHdoaWxlIChub2RlKSB7CisgICAgICAgICAgICAvLyBBdCB0aGUgcG9p
bnQgd2hlcmUgZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkgaXMgY2FsbGVkLCB0aGVyZSBpcyBubyBs
aWZldGltZSBvd25lciBpbiB0aGUKKyAgICAgICAgICAgIC8vIERPTSB0cmVlLgorICAgICAgICAg
ICAgQVNTRVJUKCFub2RlLT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAgICAgIGlmIChu
b2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5zaGFkb3coKSkgeworICAg
ICAgICAgICAgICAgIGdhcmJhZ2VFbGVtZW50U2hhZG93cy5hcHBlbmQodG9FbGVtZW50KG5vZGUp
LT5zaGFkb3coKSk7CisgICAgICAgICAgICAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gbm9k
ZS0+eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jv
b3QoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGUgcG9pbnQgd2hlcmUgZ2NDaGls
ZHJlbkluQ29udGFpbmVyKCkgaXMgY2FsbGVkLCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBp
biB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gRE9NIHRyZWUuCisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghcm9vdC0+aXNMaWZldGltZU93bmVyKCkpOworCisgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHdlIGZpbmQgYSBzaGFkb3cgcm9vdCB0aGF0IGhhcyAxfiByZWZjb3VudCwgd2Ug
c2V0IHRoZSBzaGFkb3cgcm9vdCBhcworICAgICAgICAgICAgICAgICAgICAvLyBhIGxpZmV0aW1l
IG93bmVyLCBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGhvdXQgZGVsZXRpbmcgYW55IE5vZGUg
aW4KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIERPTSB0cmVlLgorICAgICAgICAgICAgICAg
ICAgICBpZiAocm9vdC0+cmVmQ291bnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJzaGFkb3dSb290LT5yZWZDb3VudCgpPjAgJXAgcmVmQ291bnQ9PSVk
XG4iLCByb290LCByb290LT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJv
b3QtPnNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZ2NDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5l
cik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJwZW5kaW5n
U2hhZG93Um9vdHMuYXBwZW5kKHJvb3QpIHJvb3Q9JXBcbiIsIHJvb3QpOworCisgICAgICAgICAg
ICAgICAgICAgIC8vIFJlY29yZCB0aGUgc2hhZG93IHJvb3QgdG8gYmUgdHJhdmVyc2VkIGxhdGVy
LgorICAgICAgICAgICAgICAgICAgICBwZW5kaW5nU2hhZG93Um9vdHMuYXBwZW5kKHJvb3QpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGZwcmludGYo
c3RkZXJyLCAiZ2FyYmFnZU5vZGVzLmFwcGVuZChub2RlKSBub2RlPSVwXG4iLCBub2RlKTsKKyAg
ICAgICAgICAgIGdhcmJhZ2VOb2Rlcy5hcHBlbmQobm9kZSk7CisKKyAgICAgICAgICAgIGlmIChu
b2RlLT5sYXN0Q2hpbGQoKSkgeworICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5sYXN0Q2hp
bGQoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHdoaWxlICghbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICAv
LyBJZiB3ZSBmaW5kIGEgTm9kZSB0aGF0IGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0IHRoZSBub2Rl
IGFzIGEgbGlmZXRpbWUgb3duZXIsCisgICAgICAgICAgICAgICAgLy8gYW5kIHJldHVybiB3aXRo
b3V0IGRlbGV0aW5nIGFueSBOb2RlIGluIHRoZSBET00gdHJlZS4KKyAgICAgICAgICAgICAgICBp
ZiAobm9kZS0+cmVmQ291bnQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgIm5vZGUtPnJlZkNvdW50KCk+MCAlcCByZWZDb3VudD09JWRcbiIsIG5vZGUsIG5vZGUt
PnJlZkNvdW50KCkpOworICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVy
KCk7CisgICAgICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbklu
Q29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpOworICAgICAgICAgICAgICAgIEFTU0VSVChub2Rl
KTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZSA9PSBzdGFydE5vZGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlKSB7CisgICAgICAg
ICAgICAgICAgLy8gSWYgd2UgZmluZCBhIE5vZGUgdGhhdCBoYXMgMX4gcmVmY291bnQsIHdlIHNl
dCB0aGUgbm9kZSBhcyBhIGxpZmV0aW1lIG93bmVyLAorICAgICAgICAgICAgICAgIC8vIGFuZCBy
ZXR1cm4gd2l0aG91dCBkZWxldGluZyBhbnkgTm9kZSBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJub2RlLT5yZWZDb3VudCgpPjAgJXAgcmVmQ291bnQ9PSVkXG4iLCBu
b2RlLCBub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0TGlm
ZXRpbWVPd25lcigpOworICAgICAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdj
Q2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4iLCBjb250YWluZXIpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcGVuZGluZyBzaGFkb3cgcm9vdHMs
IGFsbCBOb2RlIHRyYXZlcnNhbHMgYXJlIGRvbmUuCisgICAgICAgIGlmIChwZW5kaW5nU2hhZG93
Um9vdHMuaXNFbXB0eSgpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0YXJ0Tm9kZSA9
IHBlbmRpbmdTaGFkb3dSb290cy50YWtlRmlyc3QoKTsKKyAgICB9CisKKyAgICAvLyBOb3cgYWxs
IE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVmY291bnQsIGFuZCB3ZSBjYW4gZGVsZXRl
IGFsbCB0aGUgTm9kZXMuCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGlvbiBzdGFydGVk
XG4iKTsKKworICAgIHVuc2lnbmVkIGxlbmd0aCA9IGdhcmJhZ2VFbGVtZW50U2hhZG93cy5zaXpl
KCk7CisgICAgLy8gQmVmb3JlIHN0YXJ0aW5nIGRlbGV0aW9uLCB3ZSBjbGVhciBhbGwgdHJlZSBw
b2ludGVycyBzbyB0aGF0IE5vZGUgZGVzdHJ1Y3RvcgorICAgIC8vIHdvbid0IGNhdXNlIHVuZXhw
ZWN0ZWQgcG9pbnRlciBkZXJlZmVyZW5jZXMgZGVwZW5kaW5nIG9uIHRoZSBkZWxldGlvbiBvcmRl
ci4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCisgICAgICAgIGdh
cmJhZ2VFbGVtZW50U2hhZG93c1tpXS0+Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290cygpOworCisg
ICAgbGVuZ3RoID0gZ2FyYmFnZU5vZGVzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgTm9kZSogdGFyZ2V0ID0gZ2FyYmFnZU5vZGVz
W2ldOworICAgICAgICB0YXJnZXQtPnNldFByZXZpb3VzU2libGluZygwKTsKKyAgICAgICAgdGFy
Z2V0LT5zZXROZXh0U2libGluZygwKTsKKyAgICAgICAgdGFyZ2V0LT5zZXRQYXJlbnRPckhvc3RO
b2RlKDApOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+cmVmQ291bnQoKSk7CisgICAgICAgIEFT
U0VSVCghdGFyZ2V0LT5pc0xpZmV0aW1lT3duZXIoKSk7CisgICAgICAgIGlmICh0YXJnZXQtPmlz
Q29udGFpbmVyTm9kZSgpKSB7CisgICAgICAgICAgICBDb250YWluZXJOb2RlKiB0YXJnZXRDb250
YWluZXIgPSBzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlKj4odGFyZ2V0KTsKKyAgICAgICAgICAg
IHRhcmdldENvbnRhaW5lci0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICAgICAgICAgIHRhcmdldENv
bnRhaW5lci0+c2V0TGFzdENoaWxkKDApOworICAgICAgICB9CisgICAgfQorICAgIGNvbnRhaW5l
ci0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICBjb250YWluZXItPnNldExhc3RDaGlsZCgwKTsKKwor
ICAgIC8vIE5vdyBpdCBpcyBzYWZlIHRvIGRlbGV0ZSBhbGwgdGhlIE5vZGVzIGluIGFueSBvcmRl
ci4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
Tm9kZSogdGFyZ2V0ID0gZ2FyYmFnZU5vZGVzW2ldOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImRlbGV0ZSAlcCh0YXJnZXQpIGJlZm9yZVxuIiwgdGFyZ2V0KTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIHRhcmdldC0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAg
ICAgICBkZWxldGUgdGFyZ2V0OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAl
cCh0YXJnZXQpIGFmdGVyXG4iLCB0YXJnZXQpOworICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImdjQ2hpbGRyZW5JbkNvbnRhaW5lcihDb250YWluZXJOb2RlKikgJXAgYWZ0ZXJcbiIsIGNv
bnRhaW5lcik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIEZJWE1FOiBSZXBsYWNlIGFsbCBy
ZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKClzIHdpdGggZ2NDaGlsZHJlbkluQ29udGFpbmVyKCku
CiB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+
Ci1pbmxpbmUgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29u
dGFpbmVyKiBjb250YWluZXIpCitpbmxpbmUgdm9pZCByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVy
KEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiB7CisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJyZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAgYmVmb3JlXG4iLCBjb250YWluZXIp
OwogICAgIC8vIExpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAgICBHZW5lcmljTm9kZSog
aGVhZCA9IDA7CiAgICAgR2VuZXJpY05vZGUqIHRhaWwgPSAwOwpAQCAtODcsOCArMzIyLDYgQEAg
aW5saW5lIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRh
aW5lciogY29udGFpbmVyKQogICAgIEdlbmVyaWNOb2RlKiBuOwogICAgIEdlbmVyaWNOb2RlKiBu
ZXh0OwogICAgIHdoaWxlICgobiA9IGhlYWQpICE9IDApIHsKLSAgICAgICAgQVNTRVJUKG4tPm1f
ZGVsZXRpb25IYXNCZWd1bik7Ci0KICAgICAgICAgbmV4dCA9IG4tPm5leHRTaWJsaW5nKCk7CiAg
ICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwogCkBAIC05OSw4ICszMzIsMTQgQEAgaW5saW5l
IHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciog
Y29udGFpbmVyKQogICAgICAgICBpZiAobi0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAgICAg
UHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZTxHZW5lcmljTm9kZSwgR2VuZXJp
Y05vZGVDb250YWluZXI+KGhlYWQsIHRhaWwsIHN0YXRpY19jYXN0PEdlbmVyaWNOb2RlQ29udGFp
bmVyKj4obikpOwogCisjaWZuZGVmIE5ERUJVRworICAgICAgICBuLT5tX2RlbGV0aW9uSGFzQmVn
dW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVw
IGJlZm9yZVxuIiwgbik7CiAgICAgICAgIGRlbGV0ZSBuOworICAgICAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgImRlbGV0ZSAlcCBhZnRlclxuIiwgbik7CiAgICAgfQorICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAicmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4iLCBjb250YWluZXIp
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250
YWluZXI+CkBAIC0xMTgsNyArMzU3LDcgQEAgaW5saW5lIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRh
aW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb24KICAgICBj
b250YWluZXItPnNldExhc3RDaGlsZChjaGlsZCk7CiB9CiAKLS8vIEhlbHBlciBtZXRob2RzIGZv
ciByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyLCBoaWRkZW4gZnJvbSBXZWJDb3JlIG5hbWVz
cGFjZQorLy8gSGVscGVyIG1ldGhvZHMgZm9yIHJlbW92ZUNoaWxkcmVuSW5Db250YWluZXIsIGhp
ZGRlbiBmcm9tIFdlYkNvcmUgbmFtZXNwYWNlCiBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAKICAgICB0
ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXIsIGJv
b2wgZGlzcGF0Y2hSZW1vdmFsTm90aWZpY2F0aW9uPgpAQCAtMTM3LDcgKzM3Niw3IEBAIG5hbWVz
cGFjZSBQcml2YXRlIHsKICAgICAgICAgICAgIGlmIChEb2N1bWVudCogY29udGFpbmVyRG9jdW1l
bnQgPSBjb250YWluZXItPm93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBjb250YWlu
ZXJEb2N1bWVudC0+YWRvcHRJZk5lZWRlZChub2RlKTsKICAgICAgICAgICAgIGlmIChub2RlLT5p
bkRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKGNv
bnRhaW5lcikubm90aWZ5KG5vZGUpOworICAgICAgICAgICAgICAgIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcihjb250YWluZXIpLm5vdGlmeShub2RlLCB0cnVlKTsKICAgICAgICAgfQogICAgIH07
CiAKQEAgLTE2NSw5ICs0MDQsNiBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAgICAgICBu
LT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOwogCiAgICAgICAgICAgICBpZiAoIW4tPnJlZkNvdW50
KCkpIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICAgICAgbi0+bV9kZWxldGlvbkhhc0Jl
Z3VuID0gdHJ1ZTsKLSNlbmRpZgogICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0
aGUgbGlzdCBvZiBub2RlcyB0byBiZSBkZWxldGVkLgogICAgICAgICAgICAgICAgIC8vIFJldXNl
IHRoZSBuZXh0U2libGluZyBwb2ludGVyIGZvciB0aGlzIHB1cnBvc2UuCiAgICAgICAgICAgICAg
ICAgaWYgKHRhaWwpCkBAIC0xOTIsNyArNDI4LDkgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5z
ZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChOb2RlKiBub2QK
IHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKICAgICBSZWZQ
dHI8Tm9kZT4gcHJvdGVjdChub2RlKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5v
ZGVJbnNlcnRlZEludG9Eb2N1bWVudCgpICVwIGluc2VydGlvblBvaW50PSVwXG4iLCBub2RlLCBt
X2luc2VydGlvblBvaW50KTsKICAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IHJlcXVlc3QgPSBub2RlLT5pbnNlcnRlZEludG8obV9pbnNlcnRpb25Qb2ludCk7CisgICAgbm9k
ZS0+dW5zZXRMaWZldGltZU93bmVyKCk7CiAKICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2Rl
KCkpCiAgICAgICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCh0b0NvbnRh
aW5lck5vZGUobm9kZSkpOwpAQCAtMjA2LDcgKzQ0NCw5IEBAIGlubGluZSB2b2lkIENoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJO
b2RlCiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwogICAgIGZv
cmJpZEV2ZW50RGlzcGF0Y2goKTsKIAorICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9k
ZUluc2VydGVkSW50b1RyZWUoKSAlcCBpbnNlcnRpb25Qb2ludD0lcFxuIiwgbm9kZSwgbV9pbnNl
cnRpb25Qb2ludCk7CiAgICAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCByZXF1
ZXN0ID0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpOworICAgIG5vZGUtPnVu
c2V0TGlmZXRpbWVPd25lcigpOwogCiAgICAgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1Ry
ZWUobm9kZSk7CiAgICAgaWYgKHJlcXVlc3QgPT0gTm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbERp
ZE5vdGlmeURlc2NlbmRhbnRJbnNlcnRpb25zKQpAQCAtMjM1LDEzICs0NzUsMTcgQEAgaW5saW5l
IHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeShOb2RlKiBub2RlKQogICAg
ICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQobm9kZSk7CiAgICAgZWxzZSBpZiAo
bm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9U
cmVlKHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAgZWxzZQorICAgICAgICBub2RlLT51bnNl
dExpZmV0aW1lT3duZXIoKTsKIH0KIAogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAg
QVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CisgICAgLy8gZnByaW50Zihz
dGRlcnIsICJub3RpZnlOb2RlUmVtb3ZhbEZyb21Eb2N1bWVudCgpICVwIGluc2VydGlvblBvaW50
PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50KTsKICAgICBub2RlLT5yZW1vdmVkRnJvbSht
X2luc2VydGlvblBvaW50KTsKKyAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsKIAogICAg
IGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5RGVzY2VuZGFudFJl
bW92ZWRGcm9tRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5vZGUpKTsKQEAgLTI1MiwxOCArNDk2
LDUyIEBAIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJl
bW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBuCiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBv
aW50LT5pbkRvY3VtZW50KCkpOwogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKIAorICAgIC8v
IGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZVJlbW92YWxGcm9tVHJlZSgpICVwIGluc2VydGlv
blBvaW50PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50KTsKICAgICBub2RlLT5yZW1vdmVk
RnJvbShtX2luc2VydGlvblBvaW50KTsKKyAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsK
KwogICAgIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUobm9kZSk7CiAKICAgICBhbGxv
d0V2ZW50RGlzcGF0Y2goKTsKIH0KIAotaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyOjpub3RpZnkoTm9kZSogbm9kZSkKK2lubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3Rp
Zmllcjo6bm90aWZ5KE5vZGUqIG5vZGUsIGJvb2wgaW5zZXJ0aW9uUG9pbnREZWxldGlvbkhhc0Jl
Z3VuKQogewogICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50KG5vZGUpOwogICAgIGVsc2UgaWYgKG5vZGUtPmlzQ29udGFpbmVy
Tm9kZSgpKQogICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9k
ZShub2RlKSk7CisgICAgZWxzZQorICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsK
KworICAgIGlmIChtX2xpZmV0aW1lT3duZXJGb3VuZCAmJiAhaW5zZXJ0aW9uUG9pbnREZWxldGlv
bkhhc0JlZ3VuKSB7CisgICAgICAgIC8vIElmIGEgbGlmZXRpbWUgb3duZXIgaXMgZm91bmQgaW4g
dGhlIERPTSB0cmVlIGJlaW5nIHJlbW92ZWQsCisgICAgICAgIC8vIGl0IGluZGljYXRlcyB0aGF0
IHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcml0aW5hbCBET00gdHJlZS4KKyAg
ICAgICAgLy8gU28gd2UgY2FsbCBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgZm9yIHRoZSBpbnNl
cnRpb24gcG9pbnQgdG8gc2V0IGEgbmV3CisgICAgICAgIC8vIGxpZmV0aW1lIG93bmVyIG9mIHRo
ZSBvcmlnaW5hbCBET00gdHJlZSwgZXhjZXB0IGZvciB0aGUgY2FzZQorICAgICAgICAvLyB3aGVy
ZSB0aGUgb3JpZ2luYWwgdHJlZSBpcyBiZWluZyByZW1vdmVkIGp1c3QgcmlnaHQgbm93CisgICAg
ICAgIC8vIChpLmUuIGV4Y2VwdCBmb3IgdGhlIGNhc2Ugb2YgaW5zZXJ0aW9uUG9pbnREZWxldGlv
bkhhc0JlZ3VuID09IHRydWUpLgorICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fbGlmZXRp
bWVPd25lckZvdW5kPXRydWUgIWluc2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1biAlcCBpbnNl
cnRpb25Qb2ludD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCk7CisgICAgICAgIG1faW5z
ZXJ0aW9uUG9pbnQtPnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKTsKKyAgICB9IGVsc2UgaWYgKCFt
X2xpZmV0aW1lT3duZXJGb3VuZCkgeworICAgICAgICAvLyBJZiBhIGxpZmV0aW1lIG93bmVyIGlz
IG5vdCBmb3VuZCBpbiB0aGUgRE9NIHRyZWUgYmVpbmcgcmVtb3ZlZCwKKyAgICAgICAgLy8gaXQg
aW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUgbGlmZXRpbWUgb3duZXIgaW4gdGhl
IG9yaWdpbmFsIERPTQorICAgICAgICAvLyB0cmVlLiBTbyB3ZSBqdXN0IGNhbGwgc2VhcmNoTmV3
TGlmZXRpbWVPd25lcigpIGZvciB0aGUgRE9NIHRyZWUgYmVpbmcgcmVtb3ZlZAorICAgICAgICAv
LyB0byBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YgdGhlIERPTSB0cmVlIGJlaW5nIHJlbW92
ZWQuCisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9ZmFs
c2UgJXAgaW5zZXJ0aW9uUG9pbnQ9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQpOworICAg
ICAgICBub2RlLT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgfQorfQorCitpbmxpbmUg
dm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNrSWZMaWZldGltZU93bmVyKE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKG5vZGUtPmlzTGlmZXRpbWVPd25lcigpKSB7CisgICAgICAgIC8v
IE9uZSBET00gdHJlZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbW9zdCBvbmUgbGlmZXRpbWUg
b3duZXIsCisgICAgICAgIC8vIHNvIG1fbGlmZXRpbWVPd25lckZvdW5kIHNob3VsZCBub3QgYmVj
b21lIHRydWUgbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIEFTU0VSVCghbV9saWZldGltZU93bmVy
Rm91bmQpOworICAgICAgICBtX2xpZmV0aW1lT3duZXJGb3VuZCA9IHRydWU7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAibm9kZS0+aXNMaWZldGltZU93bmVyKCk9PXRydWUgJXBcbiIsIG5v
ZGUpOworICAgIH0KIH0KIAogY2xhc3MgQ2hpbGRGcmFtZURpc2Nvbm5lY3RvciB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCA3ZjE5MGIyNjk4OTljODczY2MyOTJiNjA1NjU1MGQxNTk4Nzdj
YWM0Li5kNmIwNTFhN2IyMTY1YTA4MDA3NjdmNWFkMzFkMTgzNGJhYzdiZGQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTY1Myw1OSArNjUzLDg4IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQo
KQogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50
ZXJzOjpEb2N1bWVudENvdW50ZXIpOwogfQogCi12b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJl
ZigpCit2b2lkIERvY3VtZW50OjpnY0NoaWxkcmVuT2ZEb2N1bWVudCgpCiB7Ci0gICAgQVNTRVJU
KCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgIGlmIChtX2d1YXJkUmVmQ291bnQpIHsKLSAgICAg
ICAgLy8gSWYgcmVtb3ZpbmcgYSBjaGlsZCByZW1vdmVzIHRoZSBsYXN0IHNlbGYtb25seSByZWYs
IHdlIGRvbid0Ci0gICAgICAgIC8vIHdhbnQgdGhlIHNjb3BlIHRvIGJlIGRlc3RydWN0ZWQgdW50
aWwgYWZ0ZXIKLSAgICAgICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4gcmV0dXJucywgc28gd2UgZ3Vh
cmQgb3Vyc2VsdmVzIHdpdGggYW4KLSAgICAgICAgLy8gZXh0cmEgc2VsZi1vbmx5IHJlZi4KLSAg
ICAgICAgZ3VhcmRSZWYoKTsKLQotICAgICAgICAvLyBXZSBtdXN0IG1ha2Ugc3VyZSBub3QgdG8g
YmUgcmV0YWluaW5nIGFueSBvZiBvdXIgY2hpbGRyZW4gdGhyb3VnaAotICAgICAgICAvLyB0aGVz
ZSBleHRyYSBwb2ludGVycyBvciB3ZSB3aWxsIGNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZS4KLSAg
ICAgICAgbV9kb2NUeXBlID0gMDsKLSAgICAgICAgbV9mb2N1c2VkTm9kZSA9IDA7Ci0gICAgICAg
IG1faG92ZXJOb2RlID0gMDsKLSAgICAgICAgbV9hY3RpdmVOb2RlID0gMDsKLSAgICAgICAgbV90
aXRsZUVsZW1lbnQgPSAwOwotICAgICAgICBtX2RvY3VtZW50RWxlbWVudCA9IDA7Ci0gICAgICAg
IG1fY29udGV4dEZlYXR1cmVzID0gQ29udGV4dEZlYXR1cmVzOjpkZWZhdWx0U3dpdGNoKCk7Cisg
ICAgLy8gTWFrZSBzdXJlIG5vdCB0byBiZSByZWZlcmVuY2luZyBhbnkgb2YgdGhlIGNoaWxkcmVu
IHRocm91Z2gKKyAgICAvLyB0aGVzZSBleHRyYSBwb2ludGVycywgb3Igd2Ugd2lsbCBjcmVhdGUg
YSByZWZlcmVuY2UgY3ljbGUuCisgICAgbV9kb2NUeXBlID0gMDsKKyAgICBtX2ZvY3VzZWROb2Rl
ID0gMDsKKyAgICBtX2hvdmVyTm9kZSA9IDA7CisgICAgbV9hY3RpdmVOb2RlID0gMDsKKyAgICBt
X3RpdGxlRWxlbWVudCA9IDA7CisgICAgbV9kb2N1bWVudEVsZW1lbnQgPSAwOworICAgIG1fY29u
dGV4dEZlYXR1cmVzID0gQ29udGV4dEZlYXR1cmVzOjpkZWZhdWx0U3dpdGNoKCk7CiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKLSAg
ICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmNsZWFyKCk7CisgICAgbV9mdWxsU2NyZWVu
RWxlbWVudCA9IDA7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudFN0YWNrLmNsZWFyKCk7CiAjZW5k
aWYKIAotICAgICAgICBkZXRhY2hQYXJzZXIoKTsKKyAgICAvLyBUZWFyIGRvd24gc2NvcGUgaW5m
b3JtYXRpb24gdXBmcm9udCB0byBhdm9pZCBoYXZpbmcgc3RhbGUgcmVmZXJlbmNlcworICAgIC8v
IGluIHRoZSBpZCBtYXAuIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBnY0NoaWxkcmVuKCksIGJl
Y2F1c2UgZ2NDaGlsZHJlbigpCisgICAgLy8gY2FuIGRlbGV0ZSBOb2RlcyBhbmQgdGhlIE5vZGUg
ZGVzdHJ1Y3RvciBjYW4gbG9vayB1cCB0aGUgaWQgbWFwLgorICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiZGVzdHJveVRyZWVTY29wZURhdGEoKSAlcFxuIiwgdGhpcyk7CisgICAgZGVzdHJveVRyZWVT
Y29wZURhdGEoKTsKIAotICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbigpIGRvZXNuJ3QgYWx3
YXlzIHVucmVnaXN0ZXIgSURzLAotICAgICAgICAvLyBzbyB0ZWFyIGRvd24gc2NvcGUgaW5mb3Jt
YXRpb24gdXBmcm9udCB0byBhdm9pZCBoYXZpbmcgc3RhbGUgcmVmZXJlbmNlcyBpbiB0aGUgbWFw
LgotICAgICAgICBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOwotICAgICAgICByZW1vdmVBbGxDaGls
ZHJlbigpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbigpICVwIGJlZm9yZVxu
IiwgdGhpcyk7CisgICAgYm9vbCBjaGlsZHJlblJlbW92ZWQgPSBnY0NoaWxkcmVuKCk7CisgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJnY0NoaWxkcmVuKCkgJXAgY2hpbGRyZW5SZW1vdmVkPSVkIGFm
dGVyXG4iLCB0aGlzLCBjaGlsZHJlblJlbW92ZWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBtX2lu
UmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOworI2VuZGlmCisKKyAgICBpZiAoY2hpbGRy
ZW5SZW1vdmVkKSB7CisgICAgICAgIGRldGFjaFBhcnNlcigpOwogCiAgICAgICAgIG1fbWFya2Vy
cy0+ZGV0YWNoKCk7CiAKICAgICAgICAgbV9jc3NDYW52YXNFbGVtZW50cy5jbGVhcigpOwogCiAj
aWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgICAgICAvLyBGSVhNRTogY29u
c2lkZXIgdXNpbmcgQWN0aXZlRE9NT2JqZWN0LgorICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIg
dXNpbmcgQWN0aXZlRE9NT2JqZWN0LgogICAgICAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXIpCiAgICAgICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+Y2xl
YXJEb2N1bWVudFBvaW50ZXIoKTsKICAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY2xlYXIoKTsKICNlbmRpZgorICAgICAgICAvLyBOb3cgd2UganVzdCBoYXZlIHRvIHdhaXQg
Zm9yIGd1YXJkUmVmQ291bnQgdG8gYmVjb21lIDAuCisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
RklYTUU6IElmIGNoaWxkcmVuUmVtb3ZlZCBpcyBmYWxzZSwgaXQgbWVhbnMgdGhhdCBnY0NoaWxk
cmVuKCkgZGlkIG5vdGhpbmcuCisgICAgICAgIC8vIEFsbCB0aGUgTm9kZXMgaW4gdGhpcyBkb2N1
bWVudCBpcyBzdGlsbCBhbGl2ZS4gV2UgbmVlZCB0byByZXN0b3JlIGFsbCB0aGUKKyAgICAgICAg
Ly8gUmVmUHRycyB0aGF0IHdlIGNsZWFyZWQganVzdCBiZWZvcmUgZ2NDaGlsZHJlbigpLCBhbmQg
cmVzdG9yZSB0aGUgaWQgbWFwCisgICAgICAgIC8vIGluIHRoZSB0cmVlIHNjb3BlLgorICAgIH0K
K30KIAotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24g
PSBmYWxzZTsKLSNlbmRpZgordm9pZCBEb2N1bWVudDo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigp
Cit7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJEb2N1bWVudDo6c2VhcmNoTmV3TGlmZXRpbWVP
d25lcigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgQVNTRVJUKCFyZWZDb3VudCgpKTsKKyAg
ICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgaWYgKG1fZ3VhcmRSZWZDb3VudCkg
eworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fZ3VhcmRSZWZDb3VudD4wICVwXG4iLCB0
aGlzKTsKKworICAgICAgICAvLyBJZiBnY0NoaWxkcmVuKCkgcmVtb3ZlcyB0aGUgbGFzdCBndWFy
ZFJlZkNvdW50LCB0aGUgZG9jdW1lbnQgd2lsbCBiZQorICAgICAgICAvLyBkZXN0cnVjdGVkIGlu
c2lkZSBnY0NoaWxkcmVuKCkuIFRvIGF2b2lkIHRoZSBzaXR1YXRpb24sIHdlIGd1YXJkIG91cnNl
bHZlcworICAgICAgICAvLyB3aXRoIGFuIGV4dHJhIHNlbGYtb25seSBndWFyZFJlZkNvdW50Lgor
ICAgICAgICBndWFyZFJlZigpOworCisgICAgICAgIGdjQ2hpbGRyZW5PZkRvY3VtZW50KCk7CiAK
ICAgICAgICAgZ3VhcmREZXJlZigpOwotICAgIH0gZWxzZSB7Ci0jaWZuZGVmIE5ERUJVRyAKLSAg
ICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsgCi0jZW5kaWYgCi0gICAgICAgIGRlbGV0
ZSB0aGlzOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkRvY3VtZW50OjpzZWFyY2hOZXdM
aWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAibV9ndWFyZFJlZkNvdW50PTAgJXBcbiIsIHRoaXMp
OworCisgICAgLy8gUHJvYmFibHkgdGhpcyBnY0NoaWxkcmVuT2ZEb2N1bWVudCgpIGlzIG5vdCBu
ZWVkZWQuIENoaWxkIG5vZGVzIHdvdWxkIGJlCisgICAgLy8gYWxyZWFkeSByZW1vdmVkLCBhbmQg
dGh1cyBnY0NoaWxkcmVuT2ZEb2N1bWVudCgpIHdpbGwgZG8gbm90aGluZy4KKyAgICBnY0NoaWxk
cmVuT2ZEb2N1bWVudCgpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHJvb3Qp
IGJlZm9yZVxuIiwgdGhpcyk7CisjaWZuZGVmIE5ERUJVRworICAgIG1fZGVsZXRpb25IYXNCZWd1
biA9IHRydWU7CisjZW5kaWYKKyAgICBkZWxldGUgdGhpczsKKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImRlbGV0ZSAlcChyb290KSBhZnRlclxuIiwgdGhpcyk7CisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJEb2N1bWVudDo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVyXG4iLCB0aGlz
KTsKIH0KIAogRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0
cmluZyYgaWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDY4ODg1ZmIzM2Y0OTUyMTRj
MzFhMzcwMzM4ZmVjODA0YjRiMTFjYWQuLmJiZDNiZWE3MjhjODBiMzMxYWExYzA5YTY3MzNmZDIz
YTUwOTUxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yMTQsMTAgKzIxNCw5IEBAIHB1Ymxp
YzoKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICAtLW1fZ3Vh
cmRSZWZDb3VudDsKICAgICAgICAgaWYgKCFtX2d1YXJkUmVmQ291bnQgJiYgIXJlZkNvdW50KCkp
IHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVl
OwotI2VuZGlmCi0gICAgICAgICAgICBkZWxldGUgdGhpczsKKyAgICAgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZ3VhcmREZXJlZigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgICAgICAg
ICBzZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImd1YXJkRGVyZWYoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTExNDIsNyArMTE0MSw4IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIE5vZGU7CiAg
ICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOwog
Ci0gICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOworICAgIHZvaWQgZ2NDaGlsZHJlbk9mRG9jdW1l
bnQoKTsKKyAgICB2b2lkIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKTsKICAgICAKICAgICB2b2lk
IGRldGFjaFBhcnNlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMDdmMGY5ZTMxZTUy
NWViZWIxOTUwNzRmYTNmOTc3OWRiYjRjN2I5ZC4uYzM2YjU2Yzk2M2ViNDIwN2RkZjEyOWIzY2Nh
ZDE3NjA0ODVhYTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUyMSw2ICsxNTIxLDcg
QEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiAqRWxlbWVudDo6c3R5bGUoKQogCiB2b2lkIEVsZW1lbnQ6
OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQogeworICAgIC8vIGZwcmludGYo
c3RkZXJyLCAiRWxlbWVudDo6Zm9jdXMoKSAlcFxuIiwgdGhpcyk7CiAgICAgaWYgKCFpbkRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3Bw
CmluZGV4IDFmNjUwZjc3MjJiMjgzMzM0NGFhYzlkNjg1NjgzMDA0NGY5NmU4YWMuLjQ3YzRlZThl
MzFjYzc4MjdmZmM0MzliZGEyMmJlMjY1OGZiZGQ0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAKQEAgLTc3LDYgKzc3LDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFk
b3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAg
ICBzaGFkb3dSb290LT5zZXRQYXJlbnRUcmVlU2NvcGUoc2hhZG93SG9zdC0+dHJlZVNjb3BlKCkp
OwogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgpKTsKICAgICBpbnZhbGlk
YXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRWxl
bWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCgpIHNoYWRvd1Jvb3Q9JXAgc2hhZG93SG9zdD0lcFxu
Iiwgc2hhZG93Um9vdC5nZXQoKSwgc2hhZG93SG9zdCk7CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9u
Tm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgaWYg
KHNoYWRvd0hvc3QtPmF0dGFjaGVkKCkgJiYgIXNoYWRvd1Jvb3QtPmF0dGFjaGVkKCkpCkBAIC04
Nyw2ICs4OCw5IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBz
aGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAKIHZvaWQgRWxlbWVudFNoYWRv
dzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogeworICAgIGlmIChtX3NoYWRvd1Jvb3RzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgLy8gRG9udCBwcm90ZWN0IHRoaXMgcmVmIGNv
dW50LgogICAgIEVsZW1lbnQqIHNoYWRvd0hvc3QgPSBob3N0KCk7CiAKQEAgLTEwMiwxMiArMTA2
LDI1IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogICAgICAg
ICBvbGRSb290LT5zZXRQcmV2KDApOwogICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAg
ICAgICBzaGFkb3dIb3N0LT5kb2N1bWVudCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkp
OwotICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KG9s
ZFJvb3QuZ2V0KCkpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6
OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkgc2hhZG93Um9vdD0lcCBzaGFkb3dIb3N0PSVwXG4iLCBv
bGRSb290LmdldCgpLCBzaGFkb3dIb3N0KTsKKyAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpLCB0cnVlKTsKICAgICB9CiAKICAg
ICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOwogfQogCisvLyBIZWxwZXIgZnVu
Y3Rpb24gZm9yIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcigpLgordm9pZCBFbGVtZW50U2hhZG93Ojpm
b3JjZVJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKK3sKKyAgICB3aGlsZSAoU2hhZG93Um9vdCogcm9v
dCA9IG1fc2hhZG93Um9vdHMuaGVhZCgpKSB7CisgICAgICAgIG1fc2hhZG93Um9vdHMucmVtb3Zl
SGVhZCgpOworICAgICAgICByb290LT5zZXRIb3N0KDApOworICAgICAgICByb290LT5zZXRQcmV2
KDApOworICAgICAgICByb290LT5zZXROZXh0KDApOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIkVsZW1lbnRTaGFkb3c6OmZvcmNlUmVtb3ZlQWxsU2hhZG93Um9vdHMoKSBzaGFkb3dSb290
PSVwXG4iLCByb290KTsKKyAgICB9Cit9CisKIHZvaWQgRWxlbWVudFNoYWRvdzo6YXR0YWNoKCkK
IHsKICAgICBlbnN1cmVEaXN0cmlidXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5o
CmluZGV4IDEzZGUxYzAyMTBkNTY3NDI2ODNjNGZlOTNlMjYzYjMyOTc2N2M5MTQuLmEwMWM0OWQw
MDM0ZmZhZWQxZDM4NzczZmY1NTMyN2RiOWMxMThlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRT
aGFkb3cuaApAQCAtNTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgU2hhZG93Um9vdCogb2xkZXN0
U2hhZG93Um9vdCgpIGNvbnN0OwogCiAgICAgdm9pZCByZW1vdmVBbGxTaGFkb3dSb290cygpOwor
ICAgIHZvaWQgZm9yY2VSZW1vdmVBbGxTaGFkb3dSb290cygpOwogICAgIHZvaWQgYWRkU2hhZG93
Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICB2b2lkIGF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGFlMzk0
NWJlNWQwYzBkZWQ4ZGVjZjAwYzU5OWQ0ZjI4MjMxOTEwNjIuLjkyZjk4MzQ4NmFiZTgyNWY4Y2Zk
MmUyNDBiMGFjODZhNzUyMDM5NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM4Nyw2ICszODcsNyBA
QCB2b2lkIE5vZGU6OnRyYWNrRm9yRGVidWdnaW5nKCkKIAogTm9kZTo6fk5vZGUoKQogeworICAg
IC8vIGZwcmludGYoc3RkZXJyLCAifk5vZGUoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogI2lmbmRl
ZiBOREVCVUcKICAgICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgaXQgPSBpZ25vcmVTZXQuZmlu
ZCh0aGlzKTsKICAgICBpZiAoaXQgIT0gaWdub3JlU2V0LmVuZCgpKQpAQCAtNDE5LDYgKzQyMCw3
IEBAIE5vZGU6On5Ob2RlKCkKICAgICAgICAgZG9jLT5ndWFyZERlcmVmKCk7CiAKICAgICBJbnNw
ZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6Tm9kZUNv
dW50ZXIpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAifk5vZGUoKSAlcCBhZnRlclxuIiwgdGhp
cyk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAt
Mjc4MywyMSArMjc4NSw3MyBAQCB2b2lkIE5vZGVSYXJlRGF0YTo6Y2xlYXJDaGlsZE5vZGVMaXN0
Q2FjaGUoKQogICAgICAgICBtX2NoaWxkTm9kZUxpc3QtPmludmFsaWRhdGVDYWNoZSgpOwogfQog
Ci0vLyBJdCdzIGltcG9ydGFudCBub3QgdG8gaW5saW5lIHJlbW92ZWRMYXN0UmVmLCBiZWNhdXNl
IHdlIGRvbid0IHdhbnQgdG8gaW5saW5lIHRoZSBjb2RlIHRvCisvLyBJdCdzIGltcG9ydGFudCBu
b3QgdG8gaW5saW5lIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KIC8vIGRlbGV0ZSBhIE5vZGUgYXQgZWFjaCBkZXJlZiBj
YWxsIHNpdGUuCi12b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKK3ZvaWQgTm9kZTo6c2VhcmNo
TmV3TGlmZXRpbWVPd25lcigpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpzZWFy
Y2hOZXdMaWZldGltZU93bmVyKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICB1bnNldExpZmV0
aW1lT3duZXIoKTsKKworICAgIC8vIEhlcmUgaXQgaXMgZ3VhcmFudGVlZCB0aGF0IHRoZXJlIGlz
IG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZSBET00gdHJlZS4KKworICAgIGlmIChwYXJlbnRPckhv
c3ROb2RlKCkpIHsKKyAgICAgICAgLy8gQ2FsbCBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgZm9y
IHRoZSByb290IE5vZGUuCisgICAgICAgIE5vZGUqIHJvb3QgPSB0aGlzOworICAgICAgICB3aGls
ZSAocm9vdC0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgICAgICAgICAgcm9vdCA9IHJvb3QtPnBh
cmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpzZWFy
Y2hOZXdMaWZldGltZU93bmVyKCkgZm9yd2FyZGVkIHJvb3Q9JXAgYWZ0ZXJcbiIsIHJvb3QpOwor
ICAgICAgICByb290LT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVyXG4iLCB0
aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChyZWZDb3VudCgpKSB7Cisg
ICAgICAgIC8vIEZhc3QgcGF0aC4gSWYgdGhlIHJvb3QgTm9kZSBoYXMgMX4gcmVmY291bnQsIHdl
IHNldCB0aGUgcm9vdCBub2RlIGFzCisgICAgICAgIC8vIGEgbGlmZXRpbWUgb3duZXIuCisgICAg
ICAgIEFTU0VSVCghaXNMaWZldGltZU93bmVyKCkpOworICAgICAgICBzZXRMaWZldGltZU93bmVy
KCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3TGlmZXRpbWVP
d25lcigpIGVhcmx5LXJldHVybiAlcCBhZnRlclxuIiwgdGhpcyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZG
dW5jdGlvbik7CisgICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOworI2VuZGlm
CisKICAgICAvLyBBbiBleHBsaWNpdCBjaGVjayBmb3IgRG9jdW1lbnQgaGVyZSBpcyBiZXR0ZXIg
dGhhbiBhIHZpcnR1YWwgZnVuY3Rpb24gc2luY2UgaXQgaXMKLSAgICAvLyBmYXN0ZXIgZm9yIG5v
bi1Eb2N1bWVudCBub2RlcywgYW5kIGJlY2F1c2UgdGhlIGNhbGwgdG8gcmVtb3ZlZExhc3RSZWYg
dGhhdCBpcyBpbmxpbmVkCisgICAgLy8gZmFzdGVyIGZvciBub24tRG9jdW1lbnQgbm9kZXMsIGFu
ZCBiZWNhdXNlIHRoZSBjYWxsIHRvIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIgdGhhdCBpcyBpbmxp
bmVkCiAgICAgLy8gYXQgYWxsIGRlcmVmIGNhbGwgc2l0ZXMgaXMgc21hbGxlciBpZiBpdCdzIGEg
bm9uLXZpcnR1YWwgZnVuY3Rpb24uCiAgICAgaWYgKGlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+cmVtb3ZlZExhc3RSZWYoKTsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+c2VhcmNoTmV3TGlmZXRpbWVPd25lcigp
OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3du
ZXIoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBi
b29sIGNoaWxkcmVuUmVtb3ZlZCA9IHRydWU7CisgICAgaWYgKGlzQ29udGFpbmVyTm9kZSgpKSB7
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NDaGlsZHJlbigpICVwIGJlZm9yZVxuIiwg
dGhpcyk7CisgICAgICAgIGNoaWxkcmVuUmVtb3ZlZCA9IHN0YXRpY19jYXN0PENvbnRhaW5lck5v
ZGUqPih0aGlzKS0+Z2NDaGlsZHJlbigpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdj
Q2hpbGRyZW4oKSAlcCBjaGlsZHJlblJlbW92ZWQ9JWQgYWZ0ZXJcbiIsIHRoaXMsIGNoaWxkcmVu
UmVtb3ZlZCk7CisgICAgfQorICAgIGlmIChjaGlsZHJlblJlbW92ZWQpIHsKKyAgICAgICAgLy8g
QWxsIHRoZSBOb2RlcyBidXQgdGhlIHJvb3QgTm9kZSBhcmUgZGVsZXRlZCBieSBnY0NoaWxkcmVu
KCkuCisgICAgICAgIC8vIE5vdyBpdCBpcyB0aW1lIHRvIGRlbGV0ZSB0aGUgcm9vdCBOb2RlLgor
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHJvb3QpIGJlZm9yZVxuIiwg
dGhpcyk7CiAjaWZuZGVmIE5ERUJVRwotICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Cisg
ICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKLSAgICBkZWxldGUgdGhp
czsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVs
ZXRlICVwKHJvb3QpIGFmdGVyXG4iLCB0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBn
Y0NoaWxkcmVuKCkgZGlkIG5vdGhpbmcuIEFsbCB0aGUgTm9kZXMgaW4gdGhlIERPTSB0cmVlIGFy
ZSBzdGlsbCBhbGl2ZS4KKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9pblJlbW92ZWRMYXN0
UmVmRnVuY3Rpb24gPSBmYWxzZTsKKyNlbmRpZgorICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9
CiAKIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDhjNDc3YzA1ZGVhYWFmZjA3ZGQyNDFk
NjQ1YWYyNWVlYmI4Nzg2MmIuLmVlNzc4Y2E2MDU3MWY2YzNiMGQ0MjQ5M2Y4OWUxNzc1OGNmNmY5
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaApAQCAtMzYyLDYgKzM2Miw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
Q29udGVudEVkaXRhYmxlKCk7CiAgICAgYm9vbCBpc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwog
CisgICAgdm9pZCBzZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisKICAgICB2b2lkIGluc3BlY3Qo
KTsKIAogICAgIGJvb2wgcmVuZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5
cGUgPSBDb250ZW50SXNFZGl0YWJsZSkgY29uc3QKQEAgLTczNiw4ICs3MzgsNiBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5l
ck5vZGU+OwogCi0gICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwotCiAgICAgLy8gVGhlc2UgQVBJ
IHNob3VsZCBiZSBvbmx5IHVzZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdyYXRpb24uCiAgICAgLy8g
c2V0VHJlZVNjb3BlKCkgcmV0dXJucyBOb2RlUmFyZURhdGEgdG8gc2F2ZSBleHRyYSBub2RlUmFy
ZURhdGEoKSBpbnZvY2F0aW9ucyBvbiB0aGUgY2FsbGVyIHNpdGUuCiAgICAgTm9kZVJhcmVEYXRh
KiBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggZjBiYTc2NmFiZWVhZjc1MjY3NmZhZDUzYmVmOWIzNzdlYmMxYzI2OC4uMDMxYWE4MzVjYjBk
Mjg4MTI1YmE0YWIxMzNmOWJiYjYyYjZiYTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtMTEyMyw3ICsxMTIzLDEwIEBAIHZvaWQgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50
KENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciwgUGFzc1JlZlB0cjxEb2N1bWVudEZyCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInJlcGxhY2VDaGlsZHJl
bldpdGhGcmFnbWVudCgpIGNvbnRhaW5lcj0lcFxuIiwgY29udGFpbmVyKTsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgImNvbnRhaW5lck5vZGUtPnJlbW92ZUNoaWxkcmVuKCkgY29udGFpbmVyTm9k
ZT0lcFxuIiwgY29udGFpbmVyKTsKICAgICBjb250YWluZXJOb2RlLT5yZW1vdmVDaGlsZHJlbigp
OworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiY29udGFpbmVyTm9kZS0+YXBwZW5kQ2hpbGQoKSBj
b250YWluZXJOb2RlPSVwIGZyYWdtZW50PSVwXG4iLCBjb250YWluZXIsIGZyYWdtZW50LmdldCgp
KTsKICAgICBjb250YWluZXJOb2RlLT5hcHBlbmRDaGlsZChmcmFnbWVudCwgZWMpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggNmM0MTU0ZWRlN2FjOTcyODJiNTQ3
Njk1ODM5MzNiZjQ2NjNmMTQ4Mi4uM2I5YWYwMDMzNjE2Yjc0YWRkZGZlZmZiZDA0OTI3NzY2ZjZh
NTM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMzIsMTcgKzMyLDMx
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4g
Y2xhc3MgVHJlZVNoYXJlZDsKIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQ
YXJlbnROb2RlVHlwZT4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8Tm9kZVR5cGUsIFBhcmVudE5v
ZGVUeXBlPiopOwogI2VuZGlmCiAKKy8vIFRoZSBhbGdvcml0aG0gZ3VhcmFudGVlcyB0aGUgZm9s
bG93aW5nIGludmFyaWFudHM6CisvLworLy8gICAgIC0gT3V0c2lkZSBvZiBzZWFyY2hOZXdMaWZl
dGltZU93bmVyKCkgKGkuZS4gaW4gbm9ybWFsIGNhc2VzKSwgZWFjaCBET00gdHJlZSBoYXMgZXhh
Y3RseSBvbmUKKy8vICAgICAgIGxpZmV0aW1lIG93bmVyLgorLy8gICAgIC0gSW5zaWRlIG9mIHNl
YXJjaE5ld0xpZmV0aW1lT3duZXIoKSwgdGhlIERPTSB0cmVlIGhhcyBubyBsaWZldGltZSBvd25l
ci4gc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpCisvLyAgICAgICBlbGVjdHMgYSBuZXcgbGlmZXRp
bWUgb3duZXIuCisvLworLy8gU2VlIGEgZG9jdW1lbnQgKGh0dHBzOi8vZG9jcy5nb29nbGUuY29t
L2EvY2hyb21pdW0ub3JnL2RvY3VtZW50L2QvMXVZSHBxN3U1U3NsajU0VWd6WGpBN3BZUjUzWGpp
ZHBCY3JDYS1uZU9HUXMvZWRpdD9wbGk9MSkgZm9yIG1vcmUgZGV0YWlscy4KKwogdGVtcGxhdGU8
dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hh
cmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmVlU2hhcmVkKTsKIHByb3RlY3RlZDoK
ICAgICBUcmVlU2hhcmVkKCkKICAgICAgICAgOiBtX3BhcmVudCgwKQorICAgICAgICAvLyBBIG5l
dyBOb2RlIGJlY29tZXMgYSBsaWZldGltZSBvd25lciwgc2luY2UgdGhlcmUgaXMgb25seSBvbmUg
Tm9kZQorICAgICAgICAvLyBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICwgbV9saWZldGltZU93
bmVyKDEpCiAgICAgICAgICwgbV9yZWZDb3VudCgxKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAg
LCBtX2Fkb3B0aW9uSXNSZXF1aXJlZCh0cnVlKQogI2VuZGlmCiAgICAgeworICAgICAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIlRyZWVTaGFyZWQoKSAlcFxuIiwgdGhpcyk7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChpc0xpZmV0aW1lT3duZXIoKSk7CiAj
aWZuZGVmIE5ERUJVRwogICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSBmYWxzZTsKICAgICAg
ICAgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKQEAgLTUxLDggKzY1LDEwIEBA
IHByb3RlY3RlZDoKIAogICAgIH5UcmVlU2hhcmVkKCkKICAgICB7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiflRyZWVTaGFyZWQoKSAlcFxuIiwgdGhpcyk7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFTU0VSVCghbV9yZWZDb3VudCk7CisgICAgICAgIEFT
U0VSVCghcmVmQ291bnQoKSk7CisgICAgICAgIEFTU0VSVCghaXNMaWZldGltZU93bmVyKCkpOwog
ICAgICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fk
b3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgfQpAQCAtNzAsMTYgKzg2LDI3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRlcmVmKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgICAgIEFTU0VSVChtX3JlZkNvdW50ID49IDApOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRp
b25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24p
OwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKLSAgICAgICAgaWYgKC0t
bV9yZWZDb3VudCA8PSAwICYmICFtX3BhcmVudCkgeworICAgICAgICAtLW1fcmVmQ291bnQ7Cisg
ICAgICAgIGlmIChtX2xpZmV0aW1lT3duZXIgJiYgIW1fcmVmQ291bnQpIHsKKyAgICAgICAgICAg
IC8vIFRoZSBsaWZldGltZSBvd25lciBpcyByZXNwb25zaWJsZSB0byBjYWxsIHNlYXJjaE5ld0xp
ZmV0aW1lT3duZXIoKS4KKyAgICAgICAgICAgIC8vIElmIHRoZSBET00gdHJlZSBoYXMgYW5vdGhl
ciBOb2RlIHRoYXQgaGFzIDF+IHJlZmNvdW50LAorICAgICAgICAgICAgLy8gc2VhcmNoTmV3TGlm
ZXRpbWVPd25lcigpIHNldHMgdGhlIE5vZGUgYXMgYSBuZXcgbGlmZXRpbWUgb3duZXIuCisgICAg
ICAgICAgICAvLyBPdGhlcndpc2UgKGkuZS4gYWxsIHRoZSBOb2RlcyBpbiB0aGUgRE9NIHRyZWUg
aGF2ZSAwIHJlZmNvdW50KSwKKyAgICAgICAgICAgIC8vIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSBkZWxldGVzIGFsbCB0aGUgTm9kZXMuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb2RlVHlw
ZSo+KHRoaXMpLT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgICAgIH0KICNpZm5kZWYg
TkRFQlVHCi0gICAgICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRydWU7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVChyZWZDb3VudCgpIHx8ICFpc0xpZmV0aW1l
T3duZXIoKSk7CiAjZW5kaWYKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhp
cyktPnJlbW92ZWRMYXN0UmVmKCk7Ci0gICAgICAgIH0KKyAgICB9CisKKyAgICBpbnQgcmVmQ291
bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQ7CiAgICAgfQogCiAg
ICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdApAQCAtODksMTUgKzExNiwzMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX3JlZkNvdW50ID09IDE7CiAgICAgfQogCi0gICAgaW50IHJlZkNvdW50
KCkgY29uc3QKKyAgICB2b2lkIHNldExpZmV0aW1lT3duZXIoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fcmVmQ291bnQ7CisgICAgICAgIC8vIEEgbGlmZXRpbWUgb3duZXIgbXVzdCBoYXZlIDF+
IHJlZmNvdW50LCBzaW5jZSB0aGUgbGlmZXRpbWUgb3duZXIgaXMgcmVzcG9uc2libGUKKyAgICAg
ICAgLy8gZm9yIGNhbGxpbmcgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigpIHdoZW4gdGhlIHJlZmNv
dW50IGJlY29tZXMgMC4KKyAgICAgICAgQVNTRVJUKHJlZkNvdW50KCkpOworICAgICAgICBtX2xp
ZmV0aW1lT3duZXIgPSAxOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInNldExpZmV0aW1l
T3duZXIoKSAlcFxuIiwgdGhpcyk7CisgICAgfQorCisgICAgdm9pZCB1bnNldExpZmV0aW1lT3du
ZXIoKQorICAgIHsKKyAgICAgICAgbV9saWZldGltZU93bmVyID0gMDsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJ1bnNldExpZmV0aW1lT3duZXIoKSAlcFxuIiwgdGhpcyk7CisgICAgfQor
CisgICAgYm9vbCBpc0xpZmV0aW1lT3duZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGlm
ZXRpbWVPd25lcjsKICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudChQYXJlbnROb2RlVHlwZSog
cGFyZW50KQogICAgIHsgCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAg
IG1fcGFyZW50ID0gcGFyZW50OyAKKyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CiAgICAgfQog
CiAgICAgUGFyZW50Tm9kZVR5cGUqIHBhcmVudCgpIGNvbnN0CkBAIC0xMjMsNyArMTY1LDggQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAgICAgUGFyZW50Tm9kZVR5cGUqIG1fcGFyZW50OwotICAgIGlu
dCBtX3JlZkNvdW50OworICAgIHVuc2lnbmVkIG1fbGlmZXRpbWVPd25lciA6IDE7CisgICAgdW5z
aWduZWQgbV9yZWZDb3VudCA6IDMxOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9hZG9w
dGlvbklzUmVxdWlyZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggYzFmZmU4NThk
NDMwMWJkOGQ1ZjkyNWIzMWUyZjc3ZmZjMjRjMDFlMy4uMDMxMzFmYmI1MDExZGNmOTI1ZmI3NWEw
N2Y1ZGYwYzRkYWE1ZDAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNjEsNiAr
NjEsNyBAQCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IFNWR0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudAogCiBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVu
dCgpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+U1ZHRWxlbWVudCgpICVwIGJlZm9yZVxu
IiwgdGhpcyk7CiAgICAgaWYgKCFoYXNTVkdSYXJlRGF0YSgpKQogICAgICAgICBBU1NFUlQoIVNW
R0VsZW1lbnRSYXJlRGF0YTo6cmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7CiAgICAgZWxz
ZSB7CkBAIC04MCw2ICs4MSw3IEBAIFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKICAgICB9CiAg
ICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZW1vdmVBbGxBbmltYXRpb25F
bGVtZW50c0Zyb21UYXJnZXQodGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLT5yZW1vdmVBbGxFbGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldCh0aGlzKTsKKyAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50KCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQog
CiBib29sIFNWR0VsZW1lbnQ6OndpbGxSZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCkBA
IC0yMjQsNiArMjI2LDcgQEAgdm9pZCBTVkdFbGVtZW50OjptYXBJbnN0YW5jZVRvRWxlbWVudChT
VkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKQogICAgIEFTU0VSVCghaW5zdGFuY2VzLmNvbnRh
aW5zKGluc3RhbmNlKSk7CiAKICAgICBpbnN0YW5jZXMuYWRkKGluc3RhbmNlKTsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgImluc3RhbmNlcy5hZGQoaW5zdGFuY2UpICVwIGluc3RhbmNlPSVwXG4i
LCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAgCiB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZUluc3RhbmNl
TWFwcGluZyhTVkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlKQpAQCAtMjM1LDYgKzIzOCw3IEBA
IHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5j
ZSogaW5zdGFuY2UpCiAgICAgQVNTRVJUKGluc3RhbmNlcy5jb250YWlucyhpbnN0YW5jZSkpOwog
CiAgICAgaW5zdGFuY2VzLnJlbW92ZShpbnN0YW5jZSk7CisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJpbnN0YW5jZXMucmVtb3ZlKGluc3RhbmNlKSAlcCBpbnN0YW5jZT0lcFxuIiwgdGhpcywgaW5z
dGFuY2UpOwogfQogCiBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBTVkdFbGVt
ZW50OjppbnN0YW5jZXNGb3JFbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnRJbnN0YW5jZS5jcHAKaW5kZXggOWZlMmFjYmYwMGE1ZmVjZjVmMzQ1YTc2OWQ1NDFjNzU0
NjJmZWExNy4uMGNkY2Y0MTZhZmZhYmEzNDczMDk5ZDg0MDE4MzkzMTdkMTllM2ExNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKQEAgLTYyLDI0ICs2Miw3NSBA
QCBTVkdFbGVtZW50SW5zdGFuY2U6OlNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiBj
b3JyZXNwb25kaW5nVXNlRWxlbWVudCwgUwogCiBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVt
ZW50SW5zdGFuY2UoKQogewotICAgIC8vIENhbGwgZGV0YWNoIGJlY2F1c2Ugd2UgbWF5IGJlIGRl
bGV0ZWQgZGlyZWN0bHkgaWYgd2UgYXJlIGEgY2hpbGQgb2YgYSBkZXRhY2hlZCBpbnN0YW5jZS4K
LSAgICBkZXRhY2goKTsKLQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0
YW5jZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1
bik7CiAjaWZuZGVmIE5ERUJVRwogICAgIGluc3RhbmNlQ291bnRlci5kZWNyZW1lbnQoKTsKICNl
bmRpZgogCisgICAgaWYgKG1fZWxlbWVudC0+aW5zdGFuY2VzRm9yRWxlbWVudCgpLmNvbnRhaW5z
KHRoaXMpKQorICAgICAgICBtX2VsZW1lbnQtPnJlbW92ZUluc3RhbmNlTWFwcGluZyh0aGlzKTsK
KworICAgIG1fc2hhZG93VHJlZUVsZW1lbnQgPSAwOworICAgIG1fZGlyZWN0VXNlRWxlbWVudCA9
IDA7CisgICAgbV9jb3JyZXNwb25kaW5nVXNlRWxlbWVudCA9IDA7CiAgICAgbV9lbGVtZW50ID0g
MDsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50SW5zdGFuY2UoKSAlcCBhZnRl
clxuIiwgdGhpcyk7CiB9CiAKLS8vIEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3Zl
ZExhc3RSZWYsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KKy8v
IEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgc2VhcmNoTmV3TGlmZXRpbWVPd25lciwgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bwogLy8gZGVsZXRlIGFuIFNW
R0VsZW1lbnRJbnN0YW5jZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KLXZvaWQgU1ZHRWxlbWVu
dEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZigpCit2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6c2Vh
cmNoTmV3TGlmZXRpbWVPd25lcigpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVt
ZW50SW5zdGFuY2U6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSAlcCBiZWZvcmVcbiIsIHRoaXMp
OworICAgIHVuc2V0TGlmZXRpbWVPd25lcigpOworCisgICAgLy8gSGVyZSBpdCBpcyBndWFyYW50
ZWVkIHRoYXQgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlIERPTSB0cmVlLgorCisg
ICAgaWYgKHBhcmVudE5vZGUoKSkgeworICAgICAgICAvLyBDYWxsIHNlYXJjaE5ld0xpZmV0aW1l
T3duZXIoKSBmb3IgdGhlIHJvb3QgTm9kZS4KKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBy
b290ID0gdGhpczsKKyAgICAgICAgd2hpbGUgKHJvb3QtPnBhcmVudE5vZGUoKSkKKyAgICAgICAg
ICAgIHJvb3QgPSByb290LT5wYXJlbnROb2RlKCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiU1ZHRWxlbWVudEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgZm9yd2FyZGVk
IHJvb3Q9JXBcbiIsIHJvb3QpOworICAgICAgICByb290LT5zZWFyY2hOZXdMaWZldGltZU93bmVy
KCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVudEluc3RhbmNlOjpzZWFy
Y2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHJlZkNvdW50KCkpIHsKKyAgICAgICAgLy8gRmFzdCBwYXRoLiBJ
ZiB0aGUgcm9vdCBOb2RlIGhhcyAxfiByZWZjb3VudCwgd2Ugc2V0IHRoZSByb290IG5vZGUgYXMK
KyAgICAgICAgLy8gYSBsaWZldGltZSBvd25lci4KKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0aW1l
T3duZXIoKSk7CisgICAgICAgIHNldExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBl
YXJseS1yZXR1cm4gJXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24p
OworICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKKyNlbmRpZgorCisgICAg
Ym9vbCBjaGlsZHJlblJlbW92ZWQgPSBnY0NoaWxkcmVuSW5Db250YWluZXIodGhpcyk7CisgICAg
aWYgKGNoaWxkcmVuUmVtb3ZlZCkgeworICAgICAgICAvLyBBbGwgdGhlIE5vZGVzIGJ1dCB0aGUg
cm9vdCBOb2RlIGFyZSBkZWxldGVkIGJ5IGdjQ2hpbGRyZW4oKS4KKyAgICAgICAgLy8gTm93IGl0
IGlzIHRpbWUgdG8gZGVsZXRlIHRoZSByb290IE5vZGUuCisKKyAgICAgICAgLy8gZnByaW50Zihz
dGRlcnIsICJkZWxldGUgJXAoU1ZHRWxlbWVudEluc3RhbmNlKSBiZWZvcmVcbiIsIHRoaXMpOwog
I2lmbmRlZiBOREVCVUcKLSAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworICAgICAgICBt
X2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCi0gICAgZGVsZXRlIHRoaXM7CisgICAg
ICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcChT
VkdFbGVtZW50SW5zdGFuY2UpIGFmdGVyXG4iLCB0aGlzKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICAvLyBnY0NoaWxkcmVuKCkgZGlkIG5vdGhpbmcuIEFsbCB0aGUgTm9kZXMgaW4gdGhlIERPTSB0
cmVlIGFyZSBzdGlsbCBhbGl2ZS4KKworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKKyNlbmRpZgorICAgIH0KKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVw
IGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCgp
CkBAIC05Nyw3ICsxNDgsNyBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKCkKICAg
ICBtX2RpcmVjdFVzZUVsZW1lbnQgPSAwOwogICAgIG1fY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQg
PSAwOwogCi0gICAgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxTVkdFbGVtZW50SW5zdGFu
Y2UsIFNWR0VsZW1lbnRJbnN0YW5jZT4odGhpcyk7CisgICAgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRh
aW5lcjxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5jZT4odGhpcyk7CiB9CiAK
IFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNlTGlzdD4gU1ZHRWxlbWVudEluc3RhbmNlOjpj
aGlsZE5vZGVzKCkKQEAgLTExNCw2ICsxNjUsNyBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6
c2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIHZvaWQgU1ZHRWxlbWVu
dEluc3RhbmNlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4gY2hp
bGQpCiB7CiAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxTVkdFbGVtZW50SW5zdGFuY2UsIFNW
R0VsZW1lbnRJbnN0YW5jZT4oY2hpbGQuZ2V0KCksIHRoaXMpOworICAgIGNoaWxkLT51bnNldExp
ZmV0aW1lT3duZXIoKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVB
bGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCAxYzg5YzdjY2QxZDI4OTQyNDRlZmM2OGYwMDhi
NTNhNzM2ODMyZGI4Li42MjA1ZjhhMjY0ZjllOTNkMmFkYmVlMDdhYjU3ZTVkZmFmMmFjY2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBAIC03NCw2ICs3NCw4IEBA
IHB1YmxpYzoKICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiBtX2ZpcnN0Q2hpbGQ7IH0KICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGxhc3RDaGlsZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9CiAKKyAgICBib29sIGlzQ29udGFpbmVyTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50ID8gbV9lbGVtZW50LT5vd25lckRvY3VtZW50KCkg
OiAwOyB9CiAKICAgICBjbGFzcyBJbnZhbGlkYXRpb25HdWFyZCB7CkBAIC0xNTAsNyArMTUyLDcg
QEAgcHJpdmF0ZToKICAgICB1c2luZyBUcmVlU2hhcmVkPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZH
RWxlbWVudEluc3RhbmNlPjo6c2V0UGFyZW50OwogCiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKFNW
R1VzZUVsZW1lbnQqLCBTVkdVc2VFbGVtZW50KiwgUGFzc1JlZlB0cjxTVkdFbGVtZW50PiBvcmln
aW5hbEVsZW1lbnQpOwotICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKKyAgICB2b2lkIHNlYXJj
aE5ld0xpZmV0aW1lT3duZXIoKTsKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1
cm4gc2hhZG93VHJlZUVsZW1lbnQoKTsgfQogCkBAIC0xNTgsMTMgKzE2MCwxMiBAQCBwcml2YXRl
OgogICAgIHZvaWQgc2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCopOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotICAg
IGZyaWVuZCB2b2lkIGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBH
ZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKTsKLQorICAgIGZyaWVuZCB2b2lkIGFwcGVu
ZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5l
ciopOwogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNv
bnRhaW5lcj4KLSAgICBmcmllbmQgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdl
bmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQgUHJpdmF0
ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVy
aWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsKICAgICB0ZW1wbGF0ZTxjbGFz
cyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5kIHZv
aWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhl
YWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7
CisgICAgZnJpZW5kIHZvaWQgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNv
bnRhaW5lciopOworICAgIGZyaWVuZCBib29sIGdjQ2hpbGRyZW5JbkNvbnRhaW5lcihTVkdFbGVt
ZW50SW5zdGFuY2UqKTsKIAogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RDaGlsZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0
Mi5vcmRlciBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCmluZGV4IDIxY2EyZmY2
Y2UzYWJiZTdjZTcxNDYxNDUzZGM2MzVlMjllMzZlZjAuLjY2YWRiZDZiMzBmNzJlZmJjMDE1MTE3
MTFiOWNmODU3YmU5MWI5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQy
Lm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCkBAIC05NjMsNiAr
OTYzLDcgQEAgX19aTjNXVEY5UmV0YWluUHRySTEyTlNVUkxSZXF1ZXN0RUMyRVBTMV8KIF9fWk43
V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0YVNFUktTMF8KIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VS
ZXF1ZXN0QmFzZWFTRVJLUzBfCiBfX1pON1dlYkNvcmU0S1VSTGFTRVJLUzBfCitfX1pON1dlYkNv
cmU0Tm9kZTE0c2VhcmNoTmV3TGlmZXRpbWVPd25lckV2CiBfX1pOM1dURjIySGFzaFRhYmxlQ29u
c3RJdGVyYXRvcklOU18xMkF0b21pY1N0cmluZ0VTdDRwYWlySVMxX05TXzZTdHJpbmdFRU5TXzE4
UGFpckZpcnN0RXh0cmFjdG9ySVM0X0VFTlNfMTVDYXNlRm9sZGluZ0hhc2hFTlNfMTRQYWlySGFz
aFRyYWl0c0lOU18xMEhhc2hUcmFpdHNJUzFfRUVOUzlfSVMzX0VFRUVTQV9FMTZza2lwRW1wdHlC
dWNrZXRzRXYKIF9fWk4zV1RGNlZlY3RvcklOU182U3RyaW5nRUxtMEVFYVNFUktTMl8KIF9fWk5T
dDZfX2NvcHlJTGIwRVN0MjZyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZ0U0Y29weUlQS04zV1RG
NlN0cmluZ0VQUzRfRUVUMF9UX1M5X1M4XwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGVkMDNi
Y2M2YjQwNmJmOWE4NjY5YmViNTIwOTE2Y2JhOTlkZmZmMDYuLmExNzVhYjIzYjRlMTE3YTMwYWE3
NTk2Y2QyNjkwYjAzZWM3NjY2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIwNSw3ICsy
MDUsNiBAQCBFWFBPUlRTCiAgICAgICAgID9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZUBIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9yYW5nZUZy
b21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQ
dHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkNvbnRhaW5lck5vZGVAMkBISF9OQFoKICAgICAg
ICAgP3JlbW92ZUBTdHJpbmdAV1RGQEBRQUVYSUhAWgotICAgICAgICA/cmVtb3ZlZExhc3RSZWZA
Tm9kZUBXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmluZ0ltcGxAV1RG
QEBRQUVJX1dJQFoKICAgICAgICAgP3NfZnJvbnRlbmRDb3VudGVyQEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkBXZWJDb3JlQEAwSEEKICAgICAgICAgP3NjcmlwdEV4ZWN1dGlvbkNvbnRleHRASlNE
T01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAyQFha
CkBAIC0yNjIsNiArMjYxLDcgQEAgRVhQT1JUUwogICAgICAgICA/d2Via2l0V2lsbEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudEBEb2N1bWVudEBXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEBaCiAg
ICAgICAgID93ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRARG9jdW1lbnRAV2ViQ29y
ZUBAUUFFWFBBVkVsZW1lbnRAMkBAWgogICAgICAgICA/aXNQYWdlQm94VmlzaWJsZUBEb2N1bWVu
dEBXZWJDb3JlQEBRQUVfTkhAWgorICAgICAgICA/c2VhcmNoTmV3TGlmZXRpbWVPd25lckBOb2Rl
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29u
dHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0
aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5n
SGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKaW5kZXggZWQ2ZWNjZTg2MjBkOWZhZDQzYjZhMzZkMWI0NzQ1MzZjZmI2Yzg5ZS4uMjQ2
ZDRjZjMzNzliYTNiMjE5MjJkYmZmNWI0MGE4YWI2MDlmMmQyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTk4LDEyICsxOTgsMTIgQEAgRVhQT1JUUwogICAgICAgICA/
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGVASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2Vi
Q29yZUBAUUJFX05YWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0
ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQ
QVZDb250YWluZXJOb2RlQDJASEhfTkBaCiAgICAgICAgID9yZW1vdmVAU3RyaW5nQFdURkBAUUFF
WElIQFoKLSAgICAgICAgP3JlbW92ZWRMYXN0UmVmQE5vZGVAV2ViQ29yZUBAQUFFWFhaCiAgICAg
ICAgID9yZXZlcnNlRmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSV9XSUBaCiAgICAgICAgID9zX2Zy
b250ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAMEhBCiAgICAg
ICAgID9zY3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFC
RVBBVlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2NyaXB0TmFtZVRvQ29k
ZUBXZWJDb3JlQEBZQT9BVzRVU2NyaXB0Q29kZUBAQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAg
P3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJA
QUJWSW50UmVjdEAyQEBaCisgICAgICAgID9zZWFyY2hOZXdMaWZldGltZU93bmVyQE5vZGVAV2Vi
Q29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRDdXJzaXZlRm9udEZhbWlseUBTZXR0aW5nc0BXZWJD
b3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAgICAgICAg
P3NldERldmljZVNjYWxlRmFjdG9yQFBhZ2VAV2ViQ29yZUBAUUFFWE1AWgogICAgICAgICA/c2V0
RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggNDQ3MGRlZmI4YjM0MDIyMmE5MDI4YWJmODhhNzdjMGU3MTg0OWY1
YS4uOGY2MjIwYmQzN2M0NDBkZTM1ZGIyZDA2MTQwZDYxMzc1MGFlNmI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC0xMzMsNyArMTMzLDcgQEAgX1pON1dlYkNvcmUyNEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjE4ZGlkQ2FuY2VsRnJhbWVJbXBsRVBOU18xOUluc3RydW1lbnRpbmdBZ2UK
IF9aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTI4c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFs
c0VSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIzc2V0U2Nyb2xsYmFy
c1N1cHByZXNzZWRFYmI7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Ny
b2xsaW5nRWI7Ci1fWk43V2ViQ29yZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2OworX1pON1dlYkNv
cmU0Tm9kZTE0c2VhcmNoTmV3TGlmZXRpbWVPd25lckV2OwogX1pON1dlYkNvcmU4U2V0dGluZ3Mx
OHNldEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsK
IF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRTZXJpZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWlj
U3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZv
bnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWZh
YjVmOTEwZTc2NWM5NjU0NjAxODFlYmQzMDM2NzA2MDBlNjUyNS4uNDVlNzlkY2Q3ODU1NjcwNTY2
MTY0MmU0MjMyY2I3MWI0NWY3NjUwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTI1
ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBOb2Rl
IFggaGFzIGEgcmVmZXJlbmNlIGNvdW50LCBhbGwgdGhlIE5vZGVzIGluIHRoZSBzYW1lIHRyZWUg
c2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbCB0ZXN0cyB0aGUgZm9sbG93aW5n
czoKKworICAgICAgICAgIC0gQSBub2RlIFggaXMgbm90IHJlY2xhaW1lZCwgaWYgdGhlIG5vZGUg
WCBpcyByZWFjaGFibGUgZnJvbSBhIG5vZGUgWSB0aGF0IGhhcworICAgICAgICAgICAgbW9yZSB0
aGFuIDEgcmVmZXJlbmNlIGNvdW50LgorICAgICAgICAgIC0gQSBub2RlIFggaXMgcmVjbGFpbWVk
LCBvdGhlcndpc2UuCisKKyAgICAgICAgKiBmYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dDogVXBk
YXRlZCB0ZXN0IHJlc3VsdHMuCisgICAgICAgICogZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQ6
IERpdHRvLgorICAgICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRt
bDogQWRkZWQuCisKIDIwMTItMDYtMjcgIFpvbHRhbiBBcnZhaSAgPHphcnZhaUBpbmYudS1zemVn
ZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgcmViYXNlbGluZSBh
ZnRlciByMTIxMzAzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dAppbmRleCA2
MGQzYTE3MGYyOWI2MzM0ODcxYzgzOTZkZTBhYWJiYjc2YjBjMTk2Li45MmQ0MTIxN2VmM2FlMzkw
ZjVhYTIwMGMyZWU5ZWZkMTVhNjEyNmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nYy0zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVj
dGVkLnR4dApAQCAtNCw1ICs0LDYgQEAgVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2lu
ZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGEKIAogcmVwbGFj
ZW1lbnQgY29udGVudAogQgorcGFyZW50IG5vZGUgZXhpc3RzCiBjaGlsZCBub2RlIGV4aXN0cwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CmluZGV4IDE4YzgzNDg4YjBjZjZm
MDQwMWZmMzc5N2NmMTY2MzlkYTU2M2RhNmUuLjczODA5Y2RhODU0MzQ4NzljYjkyNjc2Yjk2Yjc1
ZDE5ZjAzMTdiMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CkBAIC00
LDQgKzQsNSBAQCBUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0
ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYQogCiByZXBsYWNlbWVudCBjb250ZW50
CiBCCitECiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAyYzM5OGZh
Y2YxZTc4YWViYjYxYTRjNTE2Nzk2ODQ5MGRiOTc4Zjg0Li5jMDBkMmY4ZGQ1NzZjZmNmNGZhNjA4
ZTcyMTNhM2EwMGIzOGQ3NTY1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDYtMjUgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIElmIE5vZGUgWCBoYXMgYSByZWZlcmVuY2UgY291bnQsIGFs
bCB0aGUgTm9kZXMgaW4gdGhlIHNhbWUgdHJlZSBzaG91bGQgYmUga2VwdCBhbGl2ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTeW1ib2wgY2hhbmdlcy4K
KworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDYt
MjcgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbR3Rr
XSBBZGQgc3VwcG9ydCBmb3IgdGhlIEdhbWVwYWQgQVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155499</attachid>
            <date>2012-07-31 05:09:14 -0700</date>
            <delta_ts>2012-08-27 21:40:48 -0700</delta_ts>
            <desc>patch for &apos;rough&apos; review</desc>
            <filename>bug-88834-20120731210857.patch</filename>
            <type>text/plain</type>
            <size>103874</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGNlMjE4YjAyYzNjMmNh
N2I5YTMzZDliMWM2MjFjZGE4NTFhMWU3MS4uYTcyOWRiYWJkYmE3MmFjZTIwYTRjNDNmNjZjMDM2
YWE2NmI5ODNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNiBAQAorMjAxMi0wNy0zMSAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFgg
aGFzIDF+IHJlZi1jb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3VsZCBi
ZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFtSZWZlcmVuY2VzXQorICAgICAgICBBIGRlc2lnbiBkb2N1bWVudCAxOiBodHRwczovL2Rv
Y3MuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9kb2N1bWVudC9kLzF1WUhwcTd1NVNzbGo1NFVn
elhqQTdwWVI1M1hqaWRwQmNyQ2EtbmVPR1FzL2VkaXQKKyAgICAgICAgQSBkZXNpZ24gZG9jdW1l
bnQgMjogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29tL2RvY3VtZW50L2QvMTd1
Yks0YW9ibTRHM2MyRkFEcUVvWEF3U1diQ0lpcFh3enJHRkpZX2F0b1EvZWRpdAorICAgICAgICBB
IHdlYmtpdC1kZXZAIHRocmVhZDogaHR0cDovL21hcmttYWlsLm9yZy90aHJlYWQva3F2b3RqNWlo
NGY0bXc0bQorCisgICAgICAgIFtPdmVydmlld10KKyAgICAgICAgQ3VycmVudGx5IHRoZSBsaWZl
dGltZSBzZW1hbnRpY3Mgb2YgRE9NIE5vZGVzIGlzIHVucHJlZGljdGFibGUgZnJvbSB0aGUgcGVy
c3BlY3RpdmUKKyAgICAgICAgb2YgcHJvZ3JhbW1lcnMuIEZvciBleGFtcGxlLCBjb25zaWRlciB0
aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKKyAgICAgICAgICBwID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgicCIpOworICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocCk7CisgICAg
ICAgICAgcC5pbm5lckhUTUwgPSc8ZGl2PjxzcGFuIGlkPSJzcGFuIj48YnI+PC9zcGFuPjwvZGl2
Pic7CisgICAgICAgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7Cisg
ICAgICAgICAgcC5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgICBhbGVydChzcGFuKTsgIC8vIDxz
cGFuPgorICAgICAgICAgIGFsZXJ0KHNwYW4ucGFyZW50Tm9kZSk7ICAvLyA/Pz8KKyAgICAgICAg
ICBhbGVydChzcGFuLmZpcnN0Q2hpbGQpOyAgLy8gPz8/CisKKyAgICAgICAgVGhlIGN1cnJlbnQg
V2ViS2l0IHJldHVybnMgbnVsbCBmb3Igc3Bhbi5wYXJlbnROb2RlIChpLmUuIDxkaXY+IGlzIGFs
cmVhZHkgcmVjbGFpbWVkKQorICAgICAgICBhbmQgPGJyPiBmb3Igc3Bhbi5maXJzdENoaWxkLgor
CisgICAgICAgIFdlIHdhbnQgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBzbyB0aGF0IHNwYW4ucGFy
ZW50Tm9kZSByZXR1cm5zIDxkaXY+IGFuZAorICAgICAgICBzcGFuLmZpcnN0Q2hpbGQgcmV0dXJu
cyA8YnI+LiBBY2N1cmF0ZWx5IHNwZWFraW5nLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGUKKyAg
ICAgICAgZm9sbG93aW5nIGxpZmV0aW1lIHNlbWFudGljczoKKworICAgICAgICAgIC0gSWYgYSBO
b2RlIFggaXMgcmVhY2hhYmxlIGZyb20gYSBub2RlIFkgdGhhdCBoYXMgMX4gcmVmZXJlbmNlIGNv
dW50LAorICAgICAgICAgICAgdGhlIE5vZGUgWCBpcyBub3QgcmVjbGFpbWVkLgorICAgICAgICAg
IC0gT3RoZXJ3aXNlLCB0aGUgbm9kZSBYIGlzIHJlY2xhaW1lZC4KKworICAgICAgICBbQmVuZWZp
dHNdCisgICAgICAgIFRoZSBmaXJzdCBiZW5lZml0IGlzIHRoYXQgdGhlIG5ldyBsaWZldGltZSBz
ZW1hbnRpY3MgaXMgbW9yZSBwcmVkaWN0YWJsZSBhbmQKKyAgICAgICAgdW5kZXJzdGFuZGFibGUg
dG8gSmF2YVNjcmlwdCBwcm9ncmFtbWVycywgYXMgZGVzY3JpYmVkIGFib3ZlLgorCisgICAgICAg
IFRoZSBzZWNvbmQgYmVuZWZpdCBpcyBwZXJmb3JtYW5jZS4gVGhlIGN1cnJlbnQgVHJlZVNoYXJl
ZCBhbGdvcml0aG0gaXMgTyhOKQorICAgICAgICBpbiBtb3N0IGNhc2VzIGJ1dCBPKE5eMikgaW4g
dGhlIHdvcnN0IGNhc2UuIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUgbmV3IGFsZ29yaXRobQorICAg
ICAgICBpcyBhbHdheXMgTyhOKS4gSW4gb3RoZXIgd29yZHMsIHRoZSBuZXcgYWxnb3JpdGhtIG5v
dCBvbmx5IGFjY29tcGxpc2hlcyB0aGUgbmV3CisgICAgICAgIGxpZmV0aW1lIHNlbWFudGljcyBi
dXQgYWxzbyBwZXJmb3JtcyBiZXR0ZXIgdGhhbiB0aGUgY3VycmVudCBUcmVlU2hhcmVkIGFsZ29y
aXRobQorICAgICAgICAoaW4gdGVybXMgb2YgdGltZSBjb21wbGV4aXR5KS4KKworICAgICAgICBU
aGUgdGhpcmQgYmVuZWZpdCBpcyBtb3JlIGVmZmljaWVudCBWOCdzIEdDLiBWOCBpbXBsZW1lbnRz
IGEgZ2VuZXJhdGlvbmFsIEdDCisgICAgICAgIGJ1dCBjYW5ub3QgcmVjbGFpbSBET00gb2JqZWN0
cyBpbiB0aGUgbWlub3IgR0MuIEFsbCBET00gd3JhcHBlciBvYmplY3RzIGhhdmUKKyAgICAgICAg
dG8gYmUgcHJvbW90ZWQgdG8gdGhlIG9sZCBzcGFjZSBhbmQgcmVjbGFpbWVkIGJ5IHRoZSBtYWpv
ciBHQy4gV2UgYXJlIHBsYW5uaW5nCisgICAgICAgIHRvIHJlZGVzaWduIFY4J3MgR0Mgc28gdGhh
dCBpdCBjYW4gcmVjbGFpbSBET00gb2JqZWN0cyBpbiB0aGUgbWlub3IgR0MsCisgICAgICAgIHdo
aWNoIHJlcXVpcmVzIHRoZSBuZXcgbGlmZXRpbWUgc2VtYW50aWNzIG9mIERPTSBub2Rlcy4gRm9y
IG1vcmUgZGV0YWlscworICAgICAgICBwbGVhc2Ugc2VlIGh0dHBzOi8vZG9jcy5nb29nbGUuY29t
L2EvZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFLaThXckdJSGlwSWp6ejVybDNTRzdTTi11bEg5Smdi
Y1FBT0E0SmEtaFhzL2VkaXQKKworICAgICAgICBbUGVyZm9ybWFuY2UgcmVzdWx0c10KKyAgICAg
ICAgVGhlIGZvbGxvd2luZyByZXN1bHRzIGFyZSB0aGUgYXZlcmFuZ2Ugb2YgZm91ciBydW4tcGVy
Zi10ZXN0czoKKworICAgICAgICAgIERyb21hZW8vZG9tLWF0dHIgICAgICAgICA3MzY4LjI5IHJ1
bnMvcyA9PiA3NDk1LjAwIHJ1bnMvcyAgICggKzEuNjklKQorICAgICAgICAgIERyb21hZW8vZG9t
LW1vZGlmeSAgICAgICA0MDE3LjY1IHJ1bnMvcyA9PiAzODI5Ljg1IHJ1bnMvcyAgICggLTQuNjcl
KQorICAgICAgICAgIERyb21hZW8vZG9tLXF1ZXJ5ICAgICAgNzUwMzU5LjMwIHJ1bnMvcyA9PiA4
NDcwMTEuMzcgcnVucy9zICgrMTIuODglKQorICAgICAgICAgIERyb21hZW8vZG9tLXRyYXZlcnNl
ICAgICAyNDc0LjQxIHJ1bnMvcyA9PiAyNTAyLjYxIHJ1bnMvcyAgICggKzEuMTMlKQorICAgICAg
ICAgIFBhcnNlci9pbm5lckhUTUwtc2V0dGVyICAgMzAzLjkyIHJ1bnMvcyA9PiAzMDIuMzEgcnVu
cy9zICAgICggLTAuNTMlKQorCisgICAgICAgIEkgY29uZmlybWVkIHRoYXQgdGhlIHBlcmZvcm1h
bmNlIHJlZ3Jlc3Npb24gb2YgRHJvbWFlby9kb20tbW9kaWZ5IGlzCisgICAgICAgIHRoZSBvdmVy
aGVhZCBvZiBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKSBpbiBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeSgpLgorICAgICAgICBBcyBmYXIgYXMgSSBleHBlcmltZW50ZWQsIGl0IGlz
IGRpZmZpY3VsdCB0byBraWxsIHRoZSA0LjY3JSBvdmVyaGVhZC4KKyAgICAgICAgSG93ZXZlciwg
SSBmb3VuZCB0aGF0IHdlIGNhbiBkcmFtYXRpY2FsbHkgb3B0aW1pemUgQ2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXIgYW5kCisgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllciBieSByZXdy
aXRpbmcgdGhlbSBpbiBhbiBpdGVyYXRpdmUgbWFubmVyLAorICAgICAgICB3aGljaCB3aWxsIGNv
bXBsZXRlbHkgb2Zmc2V0IHRoZSA0LjY3JSBvdmVyaGVhZC4KKyAgICAgICAgSSB3aWxsIGxhbmQg
dGhlIG9wdGltaXphdGlvbiBwYXRjaCBiZWZvcmUgbGFuZGluZyB0aGlzIHBhdGNoLgorCisgICAg
ICAgIFRlc3Q6IGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwKKyAgICAgICAgICAg
ICAgZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sCisgICAgICAg
ICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLW5vQmFzZVZhbFJl
Zi5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5j
ZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNhbGx5LWFk
ZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwt
bGVhay1lbGVtZW50cy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zdmdsZW5ndGgtZWxl
bWVudC1yZW1vdmVkLWNyYXNoLnN2ZworICAgICAgICAgICAgICBDb25maXJtIHRoYXQgYWxsIHRo
ZSBvdGhlciBleGlzdGluZyB0ZXN0cyBkbyBub3QgY3Jhc2guCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGRvbS9BdHRyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkF0dHI6OmNyZWF0ZVRleHRDaGlsZCk6CisgICAgICAgICog
ZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6
cmVtb3ZlQWxsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVt
b3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3Zl
Q2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4p
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQpOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjp+Q29udGFpbmVyTm9kZSk6CisgICAgICAgIChDb250YWluZXJOb2RlKToKKyAgICAgICAg
KiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hp
bGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVz
Y2VuZGFudFJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmg6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OkNo
aWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAgIChDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Z2NUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRv
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6
Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJv
bVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3Rp
ZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpjaGVja0lm
TGlmZXRpbWVPd25lcik6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjphbGxDaGlsZHJlblJlbW92ZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omd1YXJkRGVyZWYpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6Omd1YXJkUmVmQ291bnQpOgorICAgICAgICAoRG9jdW1lbnQpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZv
Y3VzKToKKyAgICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290cyk6
CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuaDoKKyAgICAgICAgKEVsZW1lbnRTaGFkb3cp
OgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6On5Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2VhcmNoTmV3
TGlmZXRpbWVPd25lcik6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VD
aGlsZHJlbldpdGhGcmFnbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vVHJlZVNoYXJlZC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpUcmVlU2hh
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6On5UcmVlU2hhcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hh
cmVkOjpkZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpyZWZDb3VudCk6Cisg
ICAgICAgIChUcmVlU2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6Omhhc09u
ZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpzZXRMaWZldGltZU93bmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnVuc2V0TGlmZXRpbWVPd25lcik6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjppc0xpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNoYXJlZDo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFkb3B0ZWQp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6On5TVkdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Om1hcElu
c3RhbmNlVG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZUlu
c3RhbmNlTWFwcGluZyk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2Up
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFu
Y2U6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dEluc3RhbmNlOjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNl
OjphcHBlbmRDaGlsZCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjppc0NvbnRhaW5lck5vZGUpOgorICAg
ICAgICAoU1ZHRWxlbWVudEluc3RhbmNlKToKKworICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlw
ZS5jcHA6IFRoZXNlIGNoYW5nZXMgYXJlIG5lZWRlZCB0byBlbGltaW5hdGUKKyAgICAgICAgUmVm
UHRycyBiZXR3ZWVuIHR3byBOb2RlcyBpbnNpZGUgdGhlIHNhbWUgRE9NIHRyZWUuCisgICAgICAg
IEkgd2lsbCBsYW5kIHRoZXNlIGNoYW5nZXMgc2VwYXJhdGVseSBiZWZvcmUgbGFuZGluZyB0aGUg
bWFpbiBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpEYXRlSW5wdXRU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0ZUlucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRy
ZWUpOgorICAgICAgICAqIGh0bWwvRGF0ZUlucHV0VHlwZS5oOgorICAgICAgICAoRGF0ZUlucHV0
VHlwZSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEZvcm1FbGVtZW50OjplbGVtZW50Rm9yQWxpYXMpOgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OkhUTUxNZXRlckVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6ZGlkRWxlbWVudFN0YXRlQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUpOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5oOgorICAgICAgICAoSFRNTE1l
dGVyRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OkhUTUxQcm9ncmVzc0VsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0
QXJlYUVsZW1lbnQ6OkhUTUxUZXh0QXJlYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6cGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmF0dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4
dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oOgorICAgICAgICAoSFRNTFRleHRBcmVhRWxlbWVudCk6CisgICAg
ICAgICogaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNo
SW5wdXRUeXBlOjpTZWFyY2hJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElu
cHV0VHlwZTo6cmVzdWx0c0J1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNo
SW5wdXRUeXBlOjpjYW5jZWxCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJj
aElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vh
cmNoSW5wdXRUeXBlOjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9TZWFyY2hJ
bnB1dFR5cGUuaDoKKyAgICAgICAgKFNlYXJjaElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRU
eXBlOjpUZXh0RmllbGRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVs
ZElucHV0VHlwZTo6Y29udGFpbmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Rmll
bGRJbnB1dFR5cGU6OmlubmVyQmxvY2tFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZElucHV0VHlwZTo6aW5uZXJUZXh0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RmllbGRJbnB1dFR5cGU6OmlubmVyU3BpbkJ1dHRvbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjpzcGVlY2hCdXR0b25FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6cGxhY2Vob2xkZXJFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjphdHRhY2gpOgorICAgICAg
ICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmg6CisgICAgICAgIChUZXh0RmllbGRJbnB1dFR5
cGUpOgorCiAyMDEyLTA3LTMxICBSYXVsIEh1ZGVhICA8cmh1ZGVhQGFkb2JlLmNvbT4KIAogICAg
ICAgICBJbnNwZWN0b3IgY3Jhc2hlcyB3aGVuIHRyeWluZyB0byBpbnNwZWN0IGEgcGFnZSB3aXRo
IENTUyByZWdpb24gc3R5bGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDZkNzdkZjc0MDg5Mzc0ZjFiNmFkODVi
NmI0ZjI2MmRiYWE4MGUyNDEuLjUwMjVjOTAwNWU4ZmJkYmViZmYxM2E3ZTg2YzMxNjhkNDk1YjVl
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNy0zMSAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFggaGFzIDF+IHJl
Zi1jb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3VsZCBiZSBrZXB0IGFs
aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgz
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN5bWJv
bCBjaGFuZ2VzLgorCisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6CisgICAgICAgICogd2lu
L1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0w
Ny0zMSAgRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9y
YS5jby51az4KIAogICAgICAgICBhZGQgRmFyc3RyZWFtIGZsYWdzL2RlcHMgdG8gV2ViS2l0LCBm
b3IgV2ViUlRDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUzNjc3MzEwZTg1YjY3NTdkM2U1YTdm
Y2Q4YzIzYzQ1NDM3NWU5ZDcuLmY3ODhjMzQxYmQyMTgwOTFmYTBkODhkNTkzOTIwZTZkOTIxYmYw
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02NTEsNyArNjUxLDYgQEAgX19aTjdXZWJDb3Jl
NEtVUkxDMUVQNU5TVVJMCiBfX1pON1dlYkNvcmU0S1VSTEMxRVBLN19fQ0ZVUkwKIF9fWk43V2Vi
Q29yZTRLVVJMQzFFUktTMF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTROb2RlMTByZW5k
ZXJSZWN0RVBiCi1fX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJD
b3JlNE5vZGUxN3N0b3BJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2ViQ29yZTROb2RlMThzdGFydEln
bm9yaW5nTGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOXNldE5lZWRzU3R5bGVSZWNhbGNFTlNf
MTVTdHlsZUNoYW5nZVR5cGVFCkBAIC0xMjcyLDYgKzEyNzEsNyBAQCBfX1pOSzdXZWJDb3JlNE5v
ZGUxMXRleHRDb250ZW50RWIKIF9fWk5LN1dlYkNvcmU0Tm9kZTE0aXNEZXNjZW5kYW50T2ZFUEtT
MF8KIF9fWk5LN1dlYkNvcmU0Tm9kZTE4Z2V0U3VicmVzb3VyY2VVUkxzRVJOM1dURjExTGlzdEhh
c2hTZXRJTlNfNEtVUkxFTG0yNTZFTlNfOEtVUkxIYXNoRUVFCiBfX1pOSzdXZWJDb3JlNE5vZGUy
MHRyYXZlcnNlUHJldmlvdXNOb2RlRVBLUzBfCitfX1pON1dlYkNvcmU0Tm9kZTIyc2VhcmNoTmV3
TGlmZXRpbWVPd25lckV2CiBfX1pOSzdXZWJDb3JlNE5vZGUyN3RyYXZlcnNlTmV4dEFuY2VzdG9y
U2libGluZ0V2CiBfX1pOSzdXZWJDb3JlNE5vZGUzMW51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hp
bGRyZW5FdgogX19aTks3V2ViQ29yZTROb2RlOW5vZGVJbmRleEV2CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpp
bmRleCAzNTdlYTQ2MjRhZDJlNzhiNDZkZDU3ZTcxZjM3NzVhNDNmNGM2ZjBiLi5mN2JmNjRjMDYy
NjM3OWYzY2RkNGJmNTNiMTQ1ZjU4ZTY1YTBiNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTE5
MjMsNyArMTkyMyw2IEBAIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2sxMXBhaW50RmxvYXRzRVJO
U185UGFpbnRJbmZvRWlpYgogX19aTjdXZWJDb3JlMTFSZW5kZXJCbG9jazEwcGFpbnRDYXJldEVS
TlNfOVBhaW50SW5mb0VpaU5TXzlDYXJldFR5cGVFCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVj
dGlvbjEzY2FyZXRSZW5kZXJlckV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdp
c0NvbnRlbnRFZGl0YWJsZUV2Ci1fX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNf
MTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFRQogX19aTjdXZWJDb3JlMThpc0VkaXRh
YmxlUG9zaXRpb25FUktOU184UG9zaXRpb25FCiBfX1pOSzdXZWJDb3JlMTlEcmFnQ2FyZXRDb250
cm9sbGVyMTNjYXJldFJlbmRlcmVyRXYKIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2syNXBhaW50
Q29udGludWF0aW9uT3V0bGluZXNFUk5TXzlQYWludEluZm9FaWkKQEAgLTI0NzEsMTMgKzI0NzAs
MTAgQEAgX19aTkszV1RGOUhhc2hUYWJsZUlQdlMxX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzFf
RUVOU183UHRySGFzaElTMV9FRU5TXzEwSGFzaFQKIF9fWk43V2ViQ29yZTExSlNOb2RlT3duZXI4
ZmluYWxpemVFTjNKU0M2SGFuZGxlSU5TMV83VW5rbm93bkVFRVB2CiBfX1pON1dlYkNvcmUxNHVu
Y2FjaGVXcmFwcGVySU5TXzROb2RlRUVFdlBOU18xNURPTVdyYXBwZXJXb3JsZEVQVF9QTlNfMTJK
U0RPTVdyYXBwZXJFCiBfX1pON1dlYkNvcmUxNEpTSFRNTERvY3VtZW50RDFFdgotX19aVGhuOF9O
N1dlYkNvcmU4RG9jdW1lbnQxNHJlbW92ZWRMYXN0UmVmRXYKLV9fWk43V2ViQ29yZThEb2N1bWVu
dDE0cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJDb3JlMTRTdHlsZVNoZWV0TGlzdEQxRXYKIF9f
Wk43V2ViQ29yZTlUcmVlU2NvcGUyMGRlc3Ryb3lUcmVlU2NvcGVEYXRhRXYKIF9fWk43V2ViQ29y
ZTE4RG9jdW1lbnRPcmRlcmVkTWFwNWNsZWFyRXYKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9k
ZTE3cmVtb3ZlQWxsQ2hpbGRyZW5FdgotX19aTjdXZWJDb3JlMjhyZW1vdmVBbGxDaGlsZHJlbklu
Q29udGFpbmVySU5TXzROb2RlRU5TXzEzQ29udGFpbmVyTm9kZUVFRXZQVDBfCiBfX1pON1dlYkNv
cmUxNUhUTUxIdG1sRWxlbWVudEQwRXYKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudEQyRXYK
IF9fWk43V2ViQ29yZTdFbGVtZW50RDJFdgpAQCAtNDE1MSw3ICs0MTQ3LDYgQEAgX19aTjdXZWJD
b3JlNE5vZGUxNXJlbW92ZWRGcm9tVHJlZUViCiBfX1pON1dlYkNvcmVMMTlub3RpZnlDaGlsZElu
c2VydGVkRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTROb2RlMTZpbnNlcnRlZEludG9UcmVlRWIK
IF9fWk43V2ViQ29yZUwyOGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHNFUE5TXzROb2RlRQot
X19aTjdXZWJDb3JlMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFMTRyZW1vdmVkTGFz
dFJlZkV2CiBfX1pUaG44X043V2ViQ29yZTE2RG9jdW1lbnRGcmFnbWVudEQwRXYKIF9fWk43V2Vi
Q29yZUwzM2NyZWF0ZUhUTUxQYXJhZ3JhcGhFbGVtZW50V3JhcHBlckVQTjNKU0M5RXhlY1N0YXRl
RVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzExSFRNTEVsZW1l
bnRFRUUKIF9fWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlcklOU18yMkpTSFRNTFBhcmFncmFwaEVs
ZW1lbnRFTlNfMjBIVE1MUGFyYWdyYXBoRWxlbWVudEVFRVBOU18xMkpTRE9NV3JhcHBlckVQTjNK
U0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBUMF8KQEAgLTI5NDY3LDEyICsy
OTQ2MiwxMCBAQCBfX1pON1dlYkNvcmUxM1NWR1VzZUVsZW1lbnQzMGZpbGxBdHRyaWJ1dGVUb1By
b3BlcnR5VHlwZU1hcEV2CiBfX1pOSzdXZWJDb3JlMTJTVkdUcmFuc2Zvcm05dHJhbnNsYXRlRXYK
IF9fWk43V2ViQ29yZTEwRmxvYXRQb2ludDE1bmFycm93UHJlY2lzaW9uRWRkCiBfX1pON1dlYkNv
cmUxNUFmZmluZVRyYW5zZm9ybTlzZXRNYXRyaXhFZGRkZGRkCi1fX1pON1dlYkNvcmUxMFRyZWVT
aGFyZWRJTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFRTE0cmVtb3ZlZExhc3RSZWZFdgogX19aTjdX
ZWJDb3JlMThTVkdFbGVtZW50SW5zdGFuY2VEMEV2CiBfX1pON1dlYkNvcmUxMFNWR0VsZW1lbnQy
MXJlbW92ZUluc3RhbmNlTWFwcGluZ0VQTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFCiBfX1pOSzNX
VEY5SGFzaFRhYmxlSVBON1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUVTM19OU18xN0lkZW50
aXR5RXh0cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVT
OV9FNGZpbmRJUzNfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1MzX1M3X0VFRUVOU18y
Mkhhc2hUYWJsZUNvbnN0SXRlcmF0b3JJUzNfUzNfUzVfUzdfUzlfUzlfRUVSS1RfCiBfX1pOM1dU
RjlIYXNoVGFibGVJUE43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRlbnRp
dHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5
X0U2cmVtb3ZlRVBTM18KLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5l
cklOU18xOFNWR0VsZW1lbnRJbnN0YW5jZUVTMV9FRXZQVDBfCiBfX1pUaG44X043V2ViQ29yZTE0
U1ZHTGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043V2ViQ29yZTE4U1ZHUG9seWxpbmVFbGVtZW50
RDBFdgogX19aVGhuOF9ON1dlYkNvcmUxN1NWR1BvbHlnb25FbGVtZW50RDBFdgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIu
Y3BwCmluZGV4IDk1YzNmZTA1MjZhNzRiMzY1YTRlNmVkOWY4YzFhNWQ3YzFkZjY2YWUuLjg4ZWMw
NDVhYTYwZGMxNzAwZDQ1ZTQ5YjA0YzMyYjQwMWIyZDI4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKQEAg
LTgyLDYgKzgyLDcgQEAgdm9pZCBBdHRyOjpjcmVhdGVUZXh0Q2hpbGQoKQogICAgICAgICAvLyBU
aGlzIGRvZXMgZXZlcnl0aGluZyBhcHBlbmRDaGlsZCgpIHdvdWxkIGRvIGluIHRoaXMgc2l0dWF0
aW9uIChhc3N1bWluZyBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCB3YXMgc2V0KSwKICAgICAgICAg
Ly8gYnV0IG11Y2ggbW9yZSBlZmZpY2llbnRseS4KICAgICAgICAgdGV4dE5vZGUtPnNldFBhcmVu
dE9ySG9zdE5vZGUodGhpcyk7CisgICAgICAgIHRleHROb2RlLT51bnNldExpZmV0aW1lT3duZXIo
KTsKICAgICAgICAgc2V0Rmlyc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgIHNldExh
c3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCmluZGV4IDNmY2FkMmJhYzgyY2NhNGE4YWUwODA3NzAyMTg5ZjE4ZTVmZGMxNzIuLjkx
NDJiNDM2OGVmOGNjMmZjZTA3ZmYyMjY1MGJiZDQ4MDA1ZmU2ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdENo
aWxkcmVuQW5kUmVtb3ZlRnJvbU9sZFBhcmVudChOb2RlKiBub2RlLCBOb2RlVmVjdG9yJiBub2Rl
cywKIAogdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbigpCiB7Ci0gICAgcmVt
b3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPih0aGlzKTsKKyAg
ICByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyPE5vZGUsIENvbnRhaW5lck5vZGU+KHRoaXMpOwog
fQogCiB2b2lkIENvbnRhaW5lck5vZGU6OnRha2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9k
ZSogb2xkUGFyZW50KQpAQCAtMTA5LDExICsxMDksNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnRh
a2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQogICAgIH0KIH0KIAot
Q29udGFpbmVyTm9kZTo6fkNvbnRhaW5lck5vZGUoKQotewotICAgIHJlbW92ZUFsbENoaWxkcmVu
KCk7Ci19Ci0KIGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKFBhc3NSZWZQdHI8Tm9k
ZT4gbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm9vbCBzaG91
bGRMYXp5QXR0YWNoKQogewogICAgIC8vIENoZWNrIHRoYXQgdGhpcyBub2RlIGlzIG5vdCAiZmxv
YXRpbmciLgpAQCAtNDA2LDcgKzQwMSw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hp
bGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgY2hpbGRyZW5DaGFu
Z2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7CiAKLSAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgpKTsKKyAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgpLCBmYWxzZSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVl
TW9kaWZpZWRFdmVudCgpOwogCiAgICAgcmV0dXJuIGNoaWxkOwpAQCAtNDUyLDcgKzQ0Nyw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQpCiAg
ICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0LCBvbGRDaGlsZCk7CiAKICAgICBjaGlsZHJlbkNo
YW5nZWQodHJ1ZSwgcHJldiwgbmV4dCwgLTEpOwotICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmll
cih0aGlzKS5ub3RpZnkob2xkQ2hpbGQpOworICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0
aGlzKS5ub3RpZnkob2xkQ2hpbGQsIGZhbHNlKTsKIH0KIAogLy8gdGhpcyBkaWZmZXJzIGZyb20g
b3RoZXIgcmVtb3ZlIGZ1bmN0aW9ucyBiZWNhdXNlIGl0IGZvcmNpYmx5IHJlbW92ZXMgYWxsIHRo
ZSBjaGlsZHJlbiwKQEAgLTUxNCw3ICs1MDksNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92
ZUNoaWxkcmVuKCkKICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIDAsIDAsIC1zdGF0aWNfY2Fz
dDxpbnQ+KHJlbW92ZWRDaGlsZHJlbkNvdW50KSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgcmVt
b3ZlZENoaWxkcmVuQ291bnQ7ICsraSkKLSAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVy
KHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0uZ2V0KCkpOworICAgICAgICBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKSwg
ZmFsc2UpOwogCiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVl
TW9kaWZpZWRFdmVudCgpOwpAQCAtNTgzLDE0ICs1NzgsMTUgQEAgdm9pZCBDb250YWluZXJOb2Rl
OjpwYXJzZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkKQogCiAgICAgZm9yYmlk
RXZlbnREaXNwYXRjaCgpOwogICAgIE5vZGUqIGxhc3QgPSBtX2xhc3RDaGlsZDsKKyAgICBOb2Rl
KiBjaGlsZCA9IG5ld0NoaWxkLmdldCgpOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91
bGQgdGFrZSBhIFBhc3NSZWZQdHIuCi0gICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihuZXdDaGls
ZC5nZXQoKSwgdGhpcyk7Ci0gICAgdHJlZVNjb3BlKCktPmFkb3B0SWZOZWVkZWQobmV3Q2hpbGQu
Z2V0KCkpOworICAgIGFwcGVuZENoaWxkVG9Db250YWluZXIoY2hpbGQsIHRoaXMpOworICAgIHRy
ZWVTY29wZSgpLT5hZG9wdElmTmVlZGVkKGNoaWxkKTsKICAgICAKICAgICBhbGxvd0V2ZW50RGlz
cGF0Y2goKTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0cnVlLCBsYXN0LCAwLCAxKTsKLSAgICBD
aGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcih0aGlzKS5ub3RpZnkobmV3Q2hpbGQuZ2V0KCkpOwor
ICAgIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZCk7CiB9CiAK
IHZvaWQgQ29udGFpbmVyTm9kZTo6c3VzcGVuZFBvc3RBdHRhY2hDYWxsYmFja3MoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggOWFiYWYyMzczYzBhOTBiMDNjYmEyMjIyYzk1YWIx
ODlkYjdjMmU3ZC4uNzE4NmQ1ZTRiZGNiNmVhMjc5NjlkNjI2YzBjM2I1YTI4OTZkYTlkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBQ
cml2YXRlIHsKIAogY2xhc3MgQ29udGFpbmVyTm9kZSA6IHB1YmxpYyBOb2RlIHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5Db250YWluZXJOb2RlKCk7CisgICAgdmlydHVhbCB+Q29udGFpbmVyTm9k
ZSgpIHsgfTsKIAogICAgIE5vZGUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0
Q2hpbGQ7IH0KICAgICBOb2RlKiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGls
ZDsgfQpAQCAtMTE3LDkgKzExNywxMSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB0ZW1wbGF0ZTxjbGFz
cyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZv
aWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2Rl
Q29udGFpbmVyKik7Ci0KICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2Vu
ZXJpY05vZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rl
c1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwg
R2VuZXJpY05vZGVDb250YWluZXIqKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwg
Y2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+CisgICAgZnJpZW5kIHZvaWQgcmVtb3ZlQ2hpbGRy
ZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciopOworICAgIGZyaWVuZCB2b2lkIGdj
VHJlZShOb2RlKik7CiAKICAgICB2b2lkIHNldEZpcnN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9m
aXJzdENoaWxkID0gY2hpbGQ7IH0KICAgICB2b2lkIHNldExhc3RDaGlsZChOb2RlKiBjaGlsZCkg
eyBtX2xhc3RDaGlsZCA9IGNoaWxkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCBjODk1OWRmYjgxNjNmNGVlOTViNDVlMDkzZjRmN2Jj
NTFjM2Y1NjNjLi5hNDBkZTdmYzcxODkyOTJjODNlNjIwOTA2MzM3YzRhZjEwZDMwZWZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTU5
LDYgKzU5LDggQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2Vu
ZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSoKICAgICBmb3IgKE5vZGUqIGNoaWxk
ID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmco
KSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICAgICAg
bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsKICAgICB9
CiAKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBub2RlLT55b3VuZ2VzdFNoYWRvd1Jvb3Qo
KTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKQpAQCAtOTUsNiArOTcsOCBA
QCB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRG
cm9tVHJlZShDb250YWluZXJOb2RlKiBubwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAg
ICAgIGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBub3RpZnlOb2Rl
UmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihjaGlsZCk7CiAgICAgfQogCiAgICAgaWYg
KCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5oCmluZGV4IGI1ZGZhNGZhNmFiZjQ2N2M0NWM4ZmMyN2ZmNmU5NmMyMzNl
ZDg4YTEuLmFiOWMyNWRkNjkyNGZlNWUwNTM5Zjc3NjkzNWY1YzZhY2RmMzFiNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0yMyw5ICsyMywx
NCBAQAogI2RlZmluZSBDb250YWluZXJOb2RlQWxnb3JpdGhtc19oCiAKICNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVP
d25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNp
bmNsdWRlICJTVkdFbGVtZW50SW5zdGFuY2UuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsMTggKzU3
LDIxIEBAIGNsYXNzIENoaWxkTm9kZVJlbW92YWxOb3RpZmllciB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQogICAgICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpCisgICAgICAg
ICwgbV9saWZldGltZU93bmVyRm91bmQoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIHZvaWQg
bm90aWZ5KE5vZGUqKTsKKyAgICB2b2lkIG5vdGlmeShOb2RlKiwgYm9vbCk7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJO
b2RlKik7CiAgICAgdm9pZCBub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRhaW5l
ck5vZGUqKTsKICAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqKTsK
ICAgICB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOworICAg
IHZvaWQgY2hlY2tJZkxpZmV0aW1lT3duZXIoTm9kZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSog
bV9pbnNlcnRpb25Qb2ludDsKKyAgICBib29sIG1fbGlmZXRpbWVPd25lckZvdW5kOwogfTsKIAog
bmFtZXNwYWNlIFByaXZhdGUgewpAQCAtNzMsMTEgKzgxLDI3OCBAQCBuYW1lc3BhY2UgUHJpdmF0
ZSB7CiAKIH0KIAotLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgVHJlZVNoYXJlZC1kZXJpdmVkIGNs
YXNzZXMsIHdoaWNoIGhhdmUgYSAnTm9kZScgc3R5bGUgaW50ZXJmYWNlCi0vLyBUaGlzIGFwcGxp
ZXMgdG8gJ0NvbnRhaW5lck5vZGUnIGFuZCAnU1ZHRWxlbWVudEluc3RhbmNlJworaW5saW5lIHZv
aWQgZ2NUcmVlKFNWR0VsZW1lbnRJbnN0YW5jZSogc3RhcnROb2RlKQoreworICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZ2NUcmVlKFNWR0VsZW1lbnRJbnN0YW5jZSopICVwIGJlZm9yZVxuIiwgc3Rh
cnROb2RlKTsKKyAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+cmVmQ291bnQoKSk7CisgICAgQVNTRVJU
KCFzdGFydE5vZGUtPmlzTGlmZXRpbWVPd25lcigpKTsKKworICAgIC8vIEZJWE1FOiBPcHRpbWl6
ZSB0aGUgaW5pdGlhbCB2ZWN0b3Igc2l6ZS4KKyAgICBWZWN0b3I8U1ZHRWxlbWVudEluc3RhbmNl
KiwgMTY+IGdhcmJhZ2VOb2RlczsKKworICAgIC8vIFdlIHRyYXZlcnNlIHRoZSBET00gdHJlZSBp
biB0aGUgREZTIG9yZGVyLCBzdGFydGluZyBmcm9tIHN0YXJ0Tm9kZS4gVGhlIHRyYXZlcnNhbAor
ICAgIC8vIG9yZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5lc3MgYnV0IGlzIGNyaXRp
Y2FsIGZvciBwZXJmb3JtYW5jZS4KKyAgICAvLyBTZWUgYSBkZXNpZ24gZG9jdW1lbnQgKGh0dHBz
Oi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzE3dWJLNGFvYm00RzNj
MkZBRHFFb1hBd1NXYkNJaXBYd3pyR0ZKWV9hdG9RL2VkaXQpIGZvciBtb3JlIGRldGFpbHMuCisg
ICAgU1ZHRWxlbWVudEluc3RhbmNlKiBub2RlID0gc3RhcnROb2RlOworICAgIGJvb2wgdHJhdmVy
c2VTdGFydGVkID0gZmFsc2U7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgQVNTRVJUKG5v
ZGUpOworICAgICAgICAvLyBBdCB0aGUgcG9pbnQgd2hlcmUgZ2NUcmVlKCkgaXMgY2FsbGVkLCB0
aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUKKyAgICAgICAgLy8gRE9NIHRyZWUuCisg
ICAgICAgIEFTU0VSVCghbm9kZS0+aXNMaWZldGltZU93bmVyKCkpOworCisgICAgICAgIGlmICh0
cmF2ZXJzZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIFdlIGNhbWUgYmFjayB0byB0aGUgc3Rh
cnROb2RlLgorICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnROb2RlKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHRyYXZlcnNlU3RhcnRlZCA9IHRydWU7CisK
KyAgICAgICAgLy8gSWYgd2UgZmluZCBhIE5vZGUgdGhhdCBoYXMgMX4gcmVmLWNvdW50LCB3ZSBz
ZXQgYSBsaWZldGltZSBvd25lciBvbiB0aGUgTm9kZQorICAgICAgICAvLyBhbmQgcmV0dXJuIHdp
dGhvdXQgZGVsZXRpbmcgYW55IE5vZGVzIGluIHRoZSBET00gdHJlZS4KKyAgICAgICAgaWYgKG5v
ZGUtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+
cmVmQ291bnQoKT4wICVwIHJlZkNvdW50PT0lZFxuIiwgbm9kZSwgbm9kZS0+cmVmQ291bnQoKSk7
CisgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgImdjVHJlZSgpICVwIGludGVycnVwdGVkIGFmdGVyXG4iLCBzdGFydE5v
ZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGdhcmJhZ2VOb2Rl
cy5hcHBlbmQobm9kZSk7CisKKyAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkgeworICAg
ICAgICAgICAgbm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIHdoaWxlICghbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICAgICAgaWYgKCFub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICB9CisgICAg
ICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKTsKKyAgICB9CisKKyAgICAvLyBBbGwgdGhlIE5vZGVzIGluIHRoZSBET00gdHJl
ZSBoYXZlIDAgcmVmLWNvdW50LiBXZSBjYW4gZGVsZXRlIGFsbCB0aGUgTm9kZXMuCisgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJkZWxldGlvbiBzdGFydGVkXG4iKTsKKworICAgIC8vIEJlZm9yZSBz
dGFydGluZyBkZWxldGlvbiwgd2UgY2xlYXIgYWxsIHRyZWUgZWRnZXMgc28gdGhhdCBOb2RlIGRl
c3RydWN0b3JzCisgICAgLy8gd29uJ3QgY2F1c2UgdW5leHBlY3RlZCBwb2ludGVyIGRlcmVmZXJl
bmNlcyBkZXBlbmRpbmcgb24gdGhlIGRlbGV0aW9uIG9yZGVyLgorICAgIHVuc2lnbmVkIGdhcmJh
Z2VDb3VudCA9IGdhcmJhZ2VOb2Rlcy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGdhcmJhZ2VDb3VudDsgaSsrKSB7CisgICAgICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogdGFy
Z2V0ID0gZ2FyYmFnZU5vZGVzW2ldOworICAgICAgICB0YXJnZXQtPnNldFByZXZpb3VzU2libGlu
ZygwKTsKKyAgICAgICAgdGFyZ2V0LT5zZXROZXh0U2libGluZygwKTsKKyAgICAgICAgdGFyZ2V0
LT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOworICAgICAgICBBU1NFUlQoIXRhcmdldC0+cmVmQ291
bnQoKSk7CisgICAgICAgIEFTU0VSVCghdGFyZ2V0LT5pc0xpZmV0aW1lT3duZXIoKSk7CisgICAg
ICAgIHRhcmdldC0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICAgICAgdGFyZ2V0LT5zZXRMYXN0Q2hp
bGQoMCk7CisgICAgfQorICAgIHN0YXJ0Tm9kZS0+c2V0Rmlyc3RDaGlsZCgwKTsKKyAgICBzdGFy
dE5vZGUtPnNldExhc3RDaGlsZCgwKTsKKworICAgIC8vIE5vdyBpdCBpcyBzYWZlIHRvIGRlbGV0
ZSBhbGwgdGhlIE5vZGVzIGluIGFueSBvcmRlci4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZ2FyYmFnZUNvdW50OyBpKyspIHsKKyAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJn
ZXQgPSBnYXJiYWdlTm9kZXNbaV07CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRl
ICVwKHRhcmdldCkgYmVmb3JlXG4iLCB0YXJnZXQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAg
dGFyZ2V0LT5tX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIGRlbGV0
ZSB0YXJnZXQ7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlICVwKHRhcmdldCkg
YWZ0ZXJcbiIsIHRhcmdldCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ2NUcmVl
KFNWR0VsZW1lbnRJbnN0YW5jZSopICVwIGFmdGVyXG4iLCBzdGFydE5vZGUpOworfQorCitpbmxp
bmUgdm9pZCBnY1RyZWUoTm9kZSogc3RhcnROb2RlKQoreworICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiZ2NUcmVlKE5vZGUqKSAlcCBiZWZvcmVcbiIsIHN0YXJ0Tm9kZSk7CisgICAgQVNTRVJUKCFz
dGFydE5vZGUtPnJlZkNvdW50KCkpOworICAgIEFTU0VSVCghc3RhcnROb2RlLT5pc0xpZmV0aW1l
T3duZXIoKSk7CisKKyAgICBpZiAoIXN0YXJ0Tm9kZS0+Zmlyc3RDaGlsZCgpCisgICAgICAgICYm
ICFzdGFydE5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKQorICAgICAgICAmJiAhc3RhcnROb2RlLT5p
bkRvY3VtZW50KCkKKyAgICAgICAgJiYgIShzdGFydE5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0
b0VsZW1lbnQoc3RhcnROb2RlKS0+c2hhZG93KCkpKSB7CisgICAgICAgIC8vIEZhc3QgcGF0aCBm
b3IgYSBET00gdHJlZSB0aGF0IGhhcyBvbmx5IG9uZSBOb2RlLgorICAgICAgICBBU1NFUlQoIXN0
YXJ0Tm9kZS0+bGFzdENoaWxkKCkpOworICAgICAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+bmV4dFNp
YmxpbmcoKSk7CisgICAgICAgIEFTU0VSVCghc3RhcnROb2RlLT5wcmV2aW91c1NpYmxpbmcoKSk7
CisgICAgICAgIEFTU0VSVCghc3RhcnROb2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJkZWxldGUgJXAgKHN0YXJ0Tm9kZSwgZmFzdCBwYXRoKSBiZWZvcmVcbiIs
IHN0YXJ0Tm9kZSk7CisgICAgICAgIGRlbGV0ZSBzdGFydE5vZGU7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZGVsZXRlICVwIChzdGFydE5vZGUsIGZhc3QgcGF0aCkgYWZ0ZXJcbiIsIHN0
YXJ0Tm9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogT3B0aW1p
emUgdGhlIGluaXRpYWwgdmVjdG9yIHNpemUuCisgICAgVmVjdG9yPE5vZGUqLCAxNj4gZ2FyYmFn
ZU5vZGVzOworICAgIFZlY3RvcjxFbGVtZW50U2hhZG93KiwgMTY+IGdhcmJhZ2VFbGVtZW50U2hh
ZG93czsKKyAgICBEZXF1ZTxTaGFkb3dSb290KiwgMTY+IHBlbmRpbmdTaGFkb3dSb290czsKKwor
ICAgIC8vIFdlIHRyYXZlcnNlIHRoZSBET00gdHJlZSBpbiB0aGUgREZTIG9yZGVyLCBzdGFydGlu
ZyBmcm9tIHN0YXJ0Tm9kZS4gVGhlIHRyYXZlcnNhbAorICAgIC8vIG9yZGVyIGRvZXMgbm90IG1h
dHRlciBmb3IgY29ycmVjdG5lc3MgYnV0IGlzIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZS4KKyAg
ICAvLyBTZWUgYSBkZXNpZ24gZG9jdW1lbnQgKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29v
Z2xlLmNvbS9kb2N1bWVudC9kLzE3dWJLNGFvYm00RzNjMkZBRHFFb1hBd1NXYkNJaXBYd3pyR0ZK
WV9hdG9RL2VkaXQpIGZvciBtb3JlIGRldGFpbHMuCisgICAgLy8KKyAgICAvLyBTaGFkb3cgRE9N
cyBjb21wbGljYXRlIHRoZSBERlMgdHJhdmVyc2FsLiBXZSB0cmF2ZXJzZSBOb2RlcyBpbiBlYWNo
IFRyZWVTY29wZQorICAgIC8vIGluIHRoZSBERlMgb3JkZXIuIFdlIHRyYXZlcnNlIFRyZWVTY29w
ZXMgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKKyAgICAvLyAKKyAgICAvLyB2b2lkIHRyYXZlcnNl
VHJlZVNjb3BlKHgpIHsKKyAgICAvLyAgICAgZm9yZWFjaCB5IGluICh4J3MgY2hpbGQgVHJlZVNj
b3BlcykgeworICAgIC8vICAgICAgICAgaWYgKHkgaXMgbm90IHlldCB0cmF2ZXJzZWQpCisgICAg
Ly8gICAgICAgICAgICAgdHJhdmVyc2VUcmVlU2NvcGUoeSk7CisgICAgLy8gICAgIH0KKyAgICAv
LyAgICAgaWYgKHgncyBwYXJlbnQgVHJlZVNjb3BlIGlzIG5vdCB5ZXQgdHJhdmVyc2VkKQorICAg
IC8vICAgICAgICAgdHJhdmVyc2VUcmVlU2NvcGUoeCdzIHBhcmVudCBUcmVlU2NvcGUpOworICAg
IC8vIH0KKyAgICAvLworICAgIC8vIFRoaXMgb3JkZXIgaXMgZGlmZmVyZW50IGZyb20gdGhlIERG
UyBvcmRlciBidXQgY2FuIGJlIGltcGxlbWVudGVkIGVhc2lseQorICAgIC8vIGluIGFuIGl0ZXJh
dGl2ZSBtYW5uZXIuIEdpdmVuIHRoYXQgdGhlIG51bWJlciBvZiBUcmVlU2NvcGVzIGlzIHNtYWxs
IGluIG1vc3QKKyAgICAvLyBjYXNlcywgdGhlIHRyYXZlcnNhbCBvcmRlciBvZiBUcmVlU2NvcGVz
IHdvdWxkbid0IGJlIGNyaXRpY2FsIGZvciBwZXJmb3JtYW5jZS4KKyAgICBOb2RlKiBzdGFydE5v
ZGVJblRyZWVTY29wZSA9IHN0YXJ0Tm9kZTsKKyAgICBOb2RlKiBzdGFydE5vZGVJblBhcmVudFRy
ZWVTY29wZSA9IDA7CisgICAgTm9kZSogcm9vdE5vZGVJblRyZWVTY29wZSA9IDA7CisgICAgTm9k
ZSogcm9vdE5vZGVJbkNoaWxkVHJlZVNjb3BlID0gMDsKKyAgICBib29sIHNob3VsZFRyYXZlcnNl
UGFyZW50VHJlZVNjb3BlID0gdHJ1ZTsKKyAgICB3aGlsZSAodHJ1ZSkgeyAvLyBUcmF2ZXJzZXMg
VHJlZVNjb3BlcyBpbiB0aGUgREZTIG9yZGVyLgorICAgICAgICBOb2RlKiBub2RlID0gc3RhcnRO
b2RlSW5UcmVlU2NvcGU7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiVHJlZUNjb3BlVHJh
dmVyc2FsU3RhcnRlZCBzdGFydE5vZGVJblRyZWVTY29wZT0lcFxuIiwgbm9kZSk7CisgICAgICAg
IGJvb2wgdHJhdmVyc2luZ1RyZWVTY29wZSA9IGZhbHNlOworICAgICAgICB3aGlsZSAodHJ1ZSkg
eyAvLyBUcmF2ZXJzZXMgTm9kZXMgaW4gZWFjaCBUcmVlU2NvcGUgaW4gdGhlIERGUyBvcmRlci4K
KyAgICAgICAgICAgIEFTU0VSVChub2RlKTsKKyAgICAgICAgICAgIC8vIEF0IHRoZSBwb2ludCB3
aGVyZSBnY1RyZWUoKSBpcyBjYWxsZWQsIHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRo
ZQorICAgICAgICAgICAgLy8gRE9NIHRyZWUuCisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgInRyYXZlcnNpbmcgbm9kZT0lcFxuIiwgbm9kZSk7CisgICAgICAgICAgICBBU1NFUlQoIW5v
ZGUtPmlzTGlmZXRpbWVPd25lcigpKTsKKworICAgICAgICAgICAgaWYgKHRyYXZlcnNpbmdUcmVl
U2NvcGUpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBjYW1lIGJhY2sgdG8gdGhlIHN0YXJ0Tm9k
ZSBvZiB0aGUgY3VycmVudCBUcmVlU2NvcGUuCisgICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0g
c3RhcnROb2RlSW5UcmVlU2NvcGUpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgdHJhdmVyc2luZ1RyZWVTY29wZSA9IHRydWU7CisKKyAgICAg
ICAgICAgIC8vIElmIHdlIGZpbmQgYSBOb2RlIHRoYXQgaGFzIDF+IHJlZi1jb3VudCwgd2Ugc2V0
IGEgbGlmZXRpbWUgb3duZXIgb24gdGhlIE5vZGUKKyAgICAgICAgICAgIC8vIGFuZCByZXR1cm4g
d2l0aG91dCBkZWxldGluZyBhbnkgTm9kZXMgaW4gdGhlIERPTSB0cmVlLgorICAgICAgICAgICAg
aWYgKG5vZGUtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIm5vZGUtPnJlZkNvdW50KCk+MCAlcCByZWZDb3VudD09JWRcbiIsIG5vZGUsIG5vZGUtPnJl
ZkNvdW50KCkpOworICAgICAgICAgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKKyAg
ICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImdjVHJlZSgpICVwIGFmdGVyXG4iLCBz
dGFydE5vZGUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQobm9kZSktPnNo
YWRvdygpKSB7CisgICAgICAgICAgICAgICAgZ2FyYmFnZUVsZW1lbnRTaGFkb3dzLmFwcGVuZCh0
b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKFNoYWRvd1Jv
b3QqIHJvb3QgPSBub2RlLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3Qt
Pm9sZGVyU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyb290ICE9IHJv
b3ROb2RlSW5DaGlsZFRyZWVTY29wZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVj
b3JkIHRoZSBzaGFkb3cgcm9vdCB0byBiZSB0cmF2ZXJzZWQgbGF0ZXIuCisgICAgICAgICAgICAg
ICAgICAgICAgICBwZW5kaW5nU2hhZG93Um9vdHMuYXBwZW5kKHJvb3QpOworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJwZW5kaW5nU2hhZG93Um9vdHMuYXBwZW5k
KHJvb3QpIHJvb3Q9JXBcbiIsIHJvb3QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW5vZGUtPnBhcmVu
dE5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChzaG91bGRUcmF2ZXJzZVBhcmVudFRyZWVT
Y29wZSkgeworICAgICAgICAgICAgICAgICAgICBzdGFydE5vZGVJblBhcmVudFRyZWVTY29wZSA9
IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGVJ
blRyZWVTY29wZSA9IG5vZGU7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZFRyYXZlcnNlUGFy
ZW50VHJlZVNjb3BlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAicm9vdCBub2RlPSVwIHNob3VsZFRyYXZlcnNlUGFyZW50VHJl
ZVNjb3BlPSVkIHN0YXJ0Tm9kZUluUGFyZW50VHJlZVNjb3BlPSVwXG4iLCBub2RlLCBzaG91bGRU
cmF2ZXJzZVBhcmVudFRyZWVTY29wZSwgc3RhcnROb2RlSW5QYXJlbnRUcmVlU2NvcGUpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJnYXJiYWdlTm9kZXMu
YXBwZW5kKG5vZGUpIG5vZGU9JXBcbiIsIG5vZGUpOworICAgICAgICAgICAgZ2FyYmFnZU5vZGVz
LmFwcGVuZChub2RlKTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkgewor
ICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSAoIW5vZGUtPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUt
PnBhcmVudE5vZGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5wYXJl
bnROb2RlKCkpCisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAocGVuZGluZ1NoYWRvd1Jvb3RzLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgaWYgKCFzdGFydE5vZGVJblBhcmVudFRyZWVTY29wZSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIFRyYXZlcnNlcyBhIHBhcmVudCBUcmVlU2NvcGUu
CisgICAgICAgICAgICBzdGFydE5vZGVJblRyZWVTY29wZSA9IHN0YXJ0Tm9kZUluUGFyZW50VHJl
ZVNjb3BlOworICAgICAgICAgICAgcm9vdE5vZGVJbkNoaWxkVHJlZVNjb3BlID0gcm9vdE5vZGVJ
blRyZWVTY29wZTsKKyAgICAgICAgICAgIHNob3VsZFRyYXZlcnNlUGFyZW50VHJlZVNjb3BlID0g
dHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRyYXZlcnNlcyBvbmUgb2Yg
dGhlIGNoaWxkIFRyZWVTY29wZXMuCisgICAgICAgICAgICBzdGFydE5vZGVJblRyZWVTY29wZSA9
IHBlbmRpbmdTaGFkb3dSb290cy50YWtlRmlyc3QoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHVuc2lnbmVkIGdhcmJhZ2VDb3VudCA9IGdhcmJhZ2VOb2Rlcy5zaXplKCk7CisKKyAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSAwOworICAgIGlmIChzdGFydE5vZGUtPmluRG9jdW1lbnQoKSkgewor
ICAgICAgICBkb2N1bWVudCA9IHN0YXJ0Tm9kZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgQVNTRVJU
KGRvY3VtZW50LT5ndWFyZFJlZkNvdW50KCkgPj0gKGludClnYXJiYWdlQ291bnQgLSAxKTsKKyAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJzdGFydE5vZGUtPmluRG9jdW1lbnQoKSAlcCBndWFy
ZFJlZkNvdW50PT0lZCBnYXJiYWdlQ291bnQtMT09JWRcbiIsIGRvY3VtZW50LCBkb2N1bWVudC0+
Z3VhcmRSZWZDb3VudCgpLCBnYXJiYWdlQ291bnQgLSAxKTsKKyAgICB9CisKKyAgICAvLyBOb3cg
YWxsIE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVmY291bnQsIGFuZCB3ZSBjYW4gZGVs
ZXRlIGFsbCB0aGUgTm9kZXMuCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGlvbiBzdGFy
dGVkXG4iKTsKKworICAgIC8vIEJlZm9yZSBzdGFydGluZyBkZWxldGlvbiwgd2UgY2xlYXIgYWxs
IHRyZWUgcG9pbnRlcnMgc28gdGhhdCBOb2RlIGRlc3RydWN0b3IKKyAgICAvLyB3b24ndCBjYXVz
ZSB1bmV4cGVjdGVkIHBvaW50ZXIgZGVyZWZlcmVuY2VzIGRlcGVuZGluZyBvbiB0aGUgZGVsZXRp
b24gb3JkZXIuCisgICAgdW5zaWduZWQgZ2FyYmFnZVNoYWRvd0NvdW50ID0gZ2FyYmFnZUVsZW1l
bnRTaGFkb3dzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2FyYmFnZVNo
YWRvd0NvdW50OyBpKyspCisgICAgICAgIGdhcmJhZ2VFbGVtZW50U2hhZG93c1tpXS0+Zm9yY2VS
ZW1vdmVBbGxTaGFkb3dSb290cygpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdh
cmJhZ2VDb3VudDsgaSsrKSB7CisgICAgICAgIE5vZGUqIHRhcmdldCA9IGdhcmJhZ2VOb2Rlc1tp
XTsKKyAgICAgICAgdGFyZ2V0LT5zZXRQcmV2aW91c1NpYmxpbmcoMCk7CisgICAgICAgIHRhcmdl
dC0+c2V0TmV4dFNpYmxpbmcoMCk7CisgICAgICAgIHRhcmdldC0+c2V0UGFyZW50T3JIb3N0Tm9k
ZSgwKTsKKyAgICAgICAgQVNTRVJUKCF0YXJnZXQtPnJlZkNvdW50KCkpOworICAgICAgICBBU1NF
UlQoIXRhcmdldC0+aXNMaWZldGltZU93bmVyKCkpOworICAgICAgICBpZiAodGFyZ2V0LT5pc0Nv
bnRhaW5lck5vZGUoKSkgeworICAgICAgICAgICAgQ29udGFpbmVyTm9kZSogdGFyZ2V0Q29udGFp
bmVyID0gc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KHRhcmdldCk7CisgICAgICAgICAgICB0
YXJnZXRDb250YWluZXItPnNldEZpcnN0Q2hpbGQoMCk7CisgICAgICAgICAgICB0YXJnZXRDb250
YWluZXItPnNldExhc3RDaGlsZCgwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1
bWVudCkgeworICAgICAgICAvLyBJZiAnZGVsZXRlIHRhcmdldCcgYmVsb3cgcmVtb3ZlcyB0aGUg
bGFzdCBndWFyZFJlZkNvdW50LCB0aGUgRG9jdW1lbnQKKyAgICAgICAgLy8gd2lsbCBiZSBkZXN0
cnVjdGVkIGluc2lkZSB0aGUgJ2RlbGV0ZSB0YXJnZXQnLiBUbyBhdm9pZCB0aGUgc2l0dWF0aW9u
LAorICAgICAgICAvLyB3ZSBndWFyZCB0aGUgRG9jdW1lbnQgd2l0aCBhbiBleHRyYSBzZWxmLW9u
bHkgZ3VhcmRSZWZDb3VudC4KKyAgICAgICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7CisgICAgfQor
CisgICAgLy8gTm93IGl0IGlzIHNhZmUgdG8gZGVsZXRlIGFsbCB0aGUgTm9kZXMgaW4gYW55IG9y
ZGVyLCBleGNlcHQgZm9yIHRoZSBEb2N1bWVudC4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZ2FyYmFnZUNvdW50OyBpKyspIHsKKyAgICAgICAgTm9kZSogdGFyZ2V0ID0gZ2FyYmFnZU5v
ZGVzW2ldOworICAgICAgICBpZiAodGFyZ2V0ICE9IGRvY3VtZW50KSB7CisgICAgICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcCh0YXJnZXQpIGJlZm9yZVxuIiwgdGFyZ2V0KTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgICAgICAgICB0YXJnZXQtPm1fZGVsZXRpb25IYXNCZWd1biA9
IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgIGRlbGV0ZSB0YXJnZXQ7CisgICAgICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcCh0YXJnZXQpIGFmdGVyXG4iLCB0YXJnZXQpOwor
ICAgICAgICB9CisgICAgfQorICAgIC8vIFRoZSBEb2N1bWVudCBzaG91bGQgYmUgZGVsZXRlZCBh
dCB0aGUgdmVyeSBlbmQgb2YgYWxsIE5vZGVzIGluIHRoZSBET00gdHJlZS4KKyAgICBpZiAoZG9j
dW1lbnQpIHsKKyAgICAgICAgZG9jdW1lbnQtPmFsbENoaWxkcmVuUmVtb3ZlZCgpOworICAgICAg
ICAvLyBUaGUgRG9jdW1lbnQgZGVzdHJ1Y3RvciBtYXkgYmUgY2FsbGVkIGluIGd1YXJkRGVyZWYo
KS4KKyAgICAgICAgZG9jdW1lbnQtPmd1YXJkRGVyZWYoKTsKKyAgICB9CisgICAgLy8gZnByaW50
ZihzdGRlcnIsICJnY1RyZWUoTm9kZSopICVwIGdhcmJhZ2VDb3VudD0lZCBhZnRlclxuIiwgc3Rh
cnROb2RlLCBnYXJiYWdlQ291bnQpOworfQorCisvLyBGSVhNRTogUmVwbGFjZSBhbGwgcmVtb3Zl
Q2hpbGRyZW5JbkNvbnRhaW5lcigpcyB3aXRoIGdjVHJlZSgpLgogdGVtcGxhdGU8Y2xhc3MgR2Vu
ZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotaW5saW5lIHZvaWQgcmVtb3Zl
QWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKQor
aW5saW5lIHZvaWQgcmVtb3ZlQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5l
ciogY29udGFpbmVyKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAicmVtb3ZlQ2hpbGRyZW5J
bkNvbnRhaW5lcigpICVwIGJlZm9yZVxuIiwgY29udGFpbmVyKTsKICAgICAvLyBMaXN0IG9mIG5v
ZGVzIHRvIGJlIGRlbGV0ZWQuCiAgICAgR2VuZXJpY05vZGUqIGhlYWQgPSAwOwogICAgIEdlbmVy
aWNOb2RlKiB0YWlsID0gMDsKQEAgLTg3LDggKzM2Miw2IEBAIGlubGluZSB2b2lkIHJlbW92ZUFs
bENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKICAg
ICBHZW5lcmljTm9kZSogbjsKICAgICBHZW5lcmljTm9kZSogbmV4dDsKICAgICB3aGlsZSAoKG4g
PSBoZWFkKSAhPSAwKSB7Ci0gICAgICAgIEFTU0VSVChuLT5tX2RlbGV0aW9uSGFzQmVndW4pOwot
CiAgICAgICAgIG5leHQgPSBuLT5uZXh0U2libGluZygpOwogICAgICAgICBuLT5zZXROZXh0U2li
bGluZygwKTsKIApAQCAtOTksOCArMzcyLDE0IEBAIGlubGluZSB2b2lkIHJlbW92ZUFsbENoaWxk
cmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKICAgICAgICAg
aWYgKG4tPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAgIFByaXZhdGU6OmFkZENoaWxkTm9k
ZXNUb0RlbGV0aW9uUXVldWU8R2VuZXJpY05vZGUsIEdlbmVyaWNOb2RlQ29udGFpbmVyPihoZWFk
LCB0YWlsLCBzdGF0aWNfY2FzdDxHZW5lcmljTm9kZUNvbnRhaW5lcio+KG4pKTsKIAorI2lmbmRl
ZiBOREVCVUcKKyAgICAgICAgbi0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgor
ICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSAlcCBiZWZvcmVcbiIsIG4pOwogICAg
ICAgICBkZWxldGUgbjsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUgJXAgYWZ0
ZXJcbiIsIG4pOwogICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInJlbW92ZUNoaWxkcmVu
SW5Db250YWluZXIoKSAlcCBhZnRlclxuIiwgY29udGFpbmVyKTsKIH0KIAogdGVtcGxhdGU8Y2xh
c3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgpAQCAtMTE4LDcgKzM5
Nyw3IEBAIGlubGluZSB2b2lkIGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNo
aWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29uCiAgICAgY29udGFpbmVyLT5zZXRMYXN0Q2hp
bGQoY2hpbGQpOwogfQogCi0vLyBIZWxwZXIgbWV0aG9kcyBmb3IgcmVtb3ZlQWxsQ2hpbGRyZW5J
bkNvbnRhaW5lciwgaGlkZGVuIGZyb20gV2ViQ29yZSBuYW1lc3BhY2UKKy8vIEhlbHBlciBtZXRo
b2RzIGZvciByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyLCBoaWRkZW4gZnJvbSBXZWJDb3JlIG5h
bWVzcGFjZQogbmFtZXNwYWNlIFByaXZhdGUgewogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJp
Y05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyLCBib29sIGRpc3BhdGNoUmVtb3ZhbE5v
dGlmaWNhdGlvbj4KQEAgLTEzNyw3ICs0MTYsNyBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAg
ICAgICAgICBpZiAoRG9jdW1lbnQqIGNvbnRhaW5lckRvY3VtZW50ID0gY29udGFpbmVyLT5vd25l
ckRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgY29udGFpbmVyRG9jdW1lbnQtPmFkb3B0SWZO
ZWVkZWQobm9kZSk7CiAgICAgICAgICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpKQotICAgICAg
ICAgICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihjb250YWluZXIpLm5vdGlmeShub2Rl
KTsKKyAgICAgICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoY29udGFpbmVyKS5u
b3RpZnkobm9kZSwgdHJ1ZSk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xNjUsOSArNDQ0LDYg
QEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAgICAgICAgICAgbi0+c2V0UGFyZW50T3JIb3N0Tm9k
ZSgwKTsKIAogICAgICAgICAgICAgaWYgKCFuLT5yZWZDb3VudCgpKSB7Ci0jaWZuZGVmIE5ERUJV
RwotICAgICAgICAgICAgICAgIG4tPm1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYK
ICAgICAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIGxpc3Qgb2Ygbm9kZXMgdG8g
YmUgZGVsZXRlZC4KICAgICAgICAgICAgICAgICAvLyBSZXVzZSB0aGUgbmV4dFNpYmxpbmcgcG9p
bnRlciBmb3IgdGhpcyBwdXJwb3NlLgogICAgICAgICAgICAgICAgIGlmICh0YWlsKQpAQCAtMTkx
LDYgKzQ2Nyw5IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKIGlubGluZSB2b2lkIENoaWxkTm9kZUlu
c2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9k
ZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCgpICVwIGlu
c2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5z
ZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
KTsKKyAgICBub2RlLT51bnNldExpZmV0aW1lT3duZXIoKTsKKwogICAgIFJlZlB0cjxOb2RlPiBw
cm90ZWN0KG5vZGUpOwogICAgIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgcmVx
dWVzdCA9IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlvblBvaW50KTsKIApAQCAtMjA0LDYg
KzQ4Myw5IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlO
b2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJ
bnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9k
ZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7
CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSgpICVw
IGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1f
aW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9k
ZSgpKTsKKyAgICBub2RlLT51bnNldExpZmV0aW1lT3duZXIoKTsKKwogICAgIGZvcmJpZEV2ZW50
RGlzcGF0Y2goKTsKIAogICAgIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgcmVx
dWVzdCA9IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlvblBvaW50KTsKQEAgLTIzNSwxMiAr
NTE3LDE2IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnko
Tm9kZSogbm9kZSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KG5vZGUp
OwogICAgIGVsc2UgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICBub3RpZnlO
b2RlSW5zZXJ0ZWRJbnRvVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAgIGVsc2UKKyAg
ICAgICAgbm9kZS0+dW5zZXRMaWZldGltZU93bmVyKCk7CiB9CiAKLQogaW5saW5lIHZvaWQgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChOb2Rl
KiBub2RlKQogewogICAgIEFTU0VSVChtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZVJlbW92YWxGcm9tRG9jdW1lbnQoKSAl
cCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBt
X2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5v
ZGUoKSk7CisgICAgLy8gY2hlY2tJZkxpZmV0aW1lT3duZXIobm9kZSk7CisKICAgICBub2RlLT5y
ZW1vdmVkRnJvbShtX2luc2VydGlvblBvaW50KTsKIAogICAgIGlmIChub2RlLT5pc0NvbnRhaW5l
ck5vZGUoKSkKQEAgLTI1MCwyMCArNTM2LDY0IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSogbm9kZSkKIGlu
bGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9t
VHJlZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbV9pbnNlcnRpb25Qb2lu
dC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVSZW1v
dmFsRnJvbVRyZWUoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0
PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUt
PnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgLy8gY2hlY2tJZkxpZmV0aW1lT3duZXIobm9kZSk7
CisKICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CiAKICAgICBub2RlLT5yZW1vdmVkRnJvbSht
X2luc2VydGlvblBvaW50KTsKKwogICAgIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUo
bm9kZSk7CiAKICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKIH0KIAotaW5saW5lIHZvaWQgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKK2lubGluZSB2b2lkIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUsIGJvb2wgaW5zZXJ0aW9u
UG9pbnREZWxldGlvbkhhc0JlZ3VuKQogewogICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCiAg
ICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG5vZGUpOwogICAgIGVsc2UgaWYg
KG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21U
cmVlKHRvQ29udGFpbmVyTm9kZShub2RlKSk7CisgICAgZWxzZQorICAgICAgICBjaGVja0lmTGlm
ZXRpbWVPd25lcihub2RlKTsKKworICAgIGlmICghbV9saWZldGltZU93bmVyRm91bmQpIHsKKyAg
ICAgICAgLy8gSWYgYSBsaWZldGltZSBvd25lciBpcyBub3QgZm91bmQgaW4gdGhlIERPTSB0cmVl
IGJlaW5nIHJlbW92ZWQsCisgICAgICAgIC8vIGl0IGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGV4
YWN0bHkgb25lIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcmlnaW5hbCBET00KKyAgICAgICAgLy8g
dHJlZS4gU28gd2UganVzdCBjYWxsIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKSBmb3IgdGhlIERP
TSB0cmVlIGJlaW5nIHJlbW92ZWQKKyAgICAgICAgLy8gdG8gc2V0IGEgbmV3IGxpZmV0aW1lIG93
bmVyIG9mIHRoZSBET00gdHJlZSBiZWluZyByZW1vdmVkLgorICAgICAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgIm1fbGlmZXRpbWVPd25lckZvdW5kPWZhbHNlICVwIGluc2VydGlvblBvaW50PSVwIHBh
cmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUt
PnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICAgICAgaWYgKExJ
S0VMWShub2RlLT5yZWZDb3VudCgpKSkKKyAgICAgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3du
ZXIoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbm9kZS0+c2VhcmNoTmV3TGlmZXRpbWVP
d25lcigpOworICAgIH0gZWxzZSBpZiAobV9saWZldGltZU93bmVyRm91bmQgJiYgIWluc2VydGlv
blBvaW50RGVsZXRpb25IYXNCZWd1bikgeworICAgICAgICAvLyBJZiBhIGxpZmV0aW1lIG93bmVy
IGlzIGZvdW5kIGluIHRoZSBET00gdHJlZSBiZWluZyByZW1vdmVkLAorICAgICAgICAvLyBpdCBp
bmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUgb3JpZ2luYWwg
RE9NIHRyZWUuCisgICAgICAgIC8vIFNvIHdlIGNhbGwgc2VhcmNoTmV3TGlmZXRpbWVPd25lcigp
IGZvciB0aGUgcm9vdCBOb2RlIG9mIHRoZSBvcmlnaW5hbCBET00KKyAgICAgICAgLy8gdHJlZSB0
byBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIuIE9uZSBleGNlcHRpb24gaXMgdGhlIGNhc2Ugd2hl
cmUgdGhlCisgICAgICAgIC8vIG9yaWdpbmFsIHRyZWUgaXMgYmVpbmcgcmVtb3ZlZCBqdXN0IHJp
Z2h0IG5vdyAoaS5lLiB0aGUgY2FzZSBvZgorICAgICAgICAvLyBpbnNlcnRpb25Qb2ludERlbGV0
aW9uSGFzQmVndW4gPT0gdHJ1ZSkuCisgICAgICAgIE5vZGUqIHJvb3QgPSBtX2luc2VydGlvblBv
aW50OworICAgICAgICB3aGlsZSAocm9vdC0+cGFyZW50T3JIb3N0Tm9kZSgpKQorICAgICAgICAg
ICAgcm9vdCA9IHJvb3QtPnBhcmVudE9ySG9zdE5vZGUoKTsKKyAgICAgICAgLy8gZnByaW50Zihz
dGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3VuZD10cnVlICFpbnNlcnRpb25Qb2ludERlbGV0aW9u
SGFzQmVndW4gJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcm9vdD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JI
b3N0PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCByb290LCBub2RlLT5wYXJlbnROb2Rl
KCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgICAgIGlmIChyb290LT5yZWZDb3Vu
dCgpKQorICAgICAgICAgICAgcm9vdC0+c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByb290LT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CisgICAgfQorfQor
CitpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNrSWZMaWZldGltZU93
bmVyKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKFVOTElLRUxZKG5vZGUtPmlzTGlmZXRpbWVPd25l
cigpKSkgeworICAgICAgICAvLyBPbmUgRE9NIHRyZWUgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0
IG1vc3Qgb25lIGxpZmV0aW1lIG93bmVyLAorICAgICAgICAvLyBzbyBtX2xpZmV0aW1lT3duZXJG
b3VuZCBzaG91bGQgbm90IGJlY29tZSB0cnVlIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBBU1NF
UlQoIW1fbGlmZXRpbWVPd25lckZvdW5kKTsKKyAgICAgICAgbV9saWZldGltZU93bmVyRm91bmQg
PSB0cnVlOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vZGUtPmlzTGlmZXRpbWVPd25l
cigpPT10cnVlICVwXG4iLCBub2RlKTsKKyAgICB9CiB9CiAKIGNsYXNzIENoaWxkRnJhbWVEaXNj
b25uZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMTY5ZDhhNWEwMmFhNzJiOTg5
YjUxMzFjYmYzMjE5ZWZkZjBiYWY0Ni4uMmM4ZjQyMTNmNmMxYTk5NmQ1MzUzNmQ4MTk0OTk1NThi
NDY1YWIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5j
bHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tbWVudC5oIgogI2luY2x1ZGUgIkNv
bnNvbGUuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgog
I2luY2x1ZGUgIkNvb2tpZUphci5oIgpAQCAtNjg3LDU5ICs2ODgsNjEgQEAgRG9jdW1lbnQ6On5E
b2N1bWVudCgpCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVj
dG9yQ291bnRlcnM6OkRvY3VtZW50Q291bnRlcik7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnJlbW92
ZWRMYXN0UmVmKCkKK3ZvaWQgRG9jdW1lbnQ6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKQogewor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIEFTU0VSVCghcmVmQ291bnQoKSk7CiAgICAgQVNT
RVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgIGlmIChtX2d1YXJkUmVmQ291bnQpIHsKLSAg
ICAgICAgLy8gSWYgcmVtb3ZpbmcgYSBjaGlsZCByZW1vdmVzIHRoZSBsYXN0IHNlbGYtb25seSBy
ZWYsIHdlIGRvbid0Ci0gICAgICAgIC8vIHdhbnQgdGhlIHNjb3BlIHRvIGJlIGRlc3RydWN0ZWQg
dW50aWwgYWZ0ZXIKLSAgICAgICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4gcmV0dXJucywgc28gd2Ug
Z3VhcmQgb3Vyc2VsdmVzIHdpdGggYW4KLSAgICAgICAgLy8gZXh0cmEgc2VsZi1vbmx5IHJlZi4K
LSAgICAgICAgZ3VhcmRSZWYoKTsKLQotICAgICAgICAvLyBXZSBtdXN0IG1ha2Ugc3VyZSBub3Qg
dG8gYmUgcmV0YWluaW5nIGFueSBvZiBvdXIgY2hpbGRyZW4gdGhyb3VnaAotICAgICAgICAvLyB0
aGVzZSBleHRyYSBwb2ludGVycyBvciB3ZSB3aWxsIGNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZS4K
LSAgICAgICAgbV9kb2NUeXBlID0gMDsKLSAgICAgICAgbV9mb2N1c2VkTm9kZSA9IDA7Ci0gICAg
ICAgIG1faG92ZXJOb2RlID0gMDsKLSAgICAgICAgbV9hY3RpdmVOb2RlID0gMDsKLSAgICAgICAg
bV90aXRsZUVsZW1lbnQgPSAwOwotICAgICAgICBtX2RvY3VtZW50RWxlbWVudCA9IDA7Ci0gICAg
ICAgIG1fY29udGV4dEZlYXR1cmVzID0gQ29udGV4dEZlYXR1cmVzOjpkZWZhdWx0U3dpdGNoKCk7
CisgICAgdW5zZXRMaWZldGltZU93bmVyKCk7CisgICAgLy8gQXQgdGhpcyBwb2ludCBpdCBpcyBn
dWFyYW50ZWVkIHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZSBET00gdHJlZS4KKwor
ICAgIC8vIE1ha2Ugc3VyZSBub3QgdG8gYmUgcmVmZXJlbmNpbmcgYW55IG9mIHRoZSBjaGlsZHJl
biB0aHJvdWdoCisgICAgLy8gdGhlc2UgcmVmLXBvaW50ZXJzLCBvciB3ZSB3aWxsIGNyZWF0ZSBh
IHJlZmVyZW5jZSBjeWNsZS4KKyAgICBtX2RvY1R5cGUgPSAwOworICAgIG1fZm9jdXNlZE5vZGUg
PSAwOworICAgIG1faG92ZXJOb2RlID0gMDsKKyAgICBtX2FjdGl2ZU5vZGUgPSAwOworICAgIG1f
dGl0bGVFbGVtZW50ID0gMDsKKyAgICBtX2RvY3VtZW50RWxlbWVudCA9IDA7CisgICAgbV9jb250
ZXh0RmVhdHVyZXMgPSBDb250ZXh0RmVhdHVyZXM6OmRlZmF1bHRTd2l0Y2goKTsKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOwotICAg
ICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suY2xlYXIoKTsKKyAgICBtX2Z1bGxTY3JlZW5F
bGVtZW50ID0gMDsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50U3RhY2suY2xlYXIoKTsKICNlbmRp
ZgogCi0gICAgICAgIGRldGFjaFBhcnNlcigpOworICAgIC8vIFRlYXIgZG93biBzY29wZSBpbmZv
cm1hdGlvbiB0byBpbnZhbGlkYXRlIHN0YWxlIHJlZmVyZW5jZXMKKyAgICAvLyBpbiB0aGUgaWQg
bWFwLiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgZ2NUcmVlKCksIGJlY2F1c2UgZ2NUcmVlKCkK
KyAgICAvLyBjYW4gZGVsZXRlIE5vZGVzIGFuZCB0aGUgTm9kZSBkZXN0cnVjdG9ycyBjYW4gbG9v
ayB1cCB0aGUgaWQgbWFwLgorICAgIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CiAKLSAgICAgICAg
Ly8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywKLSAg
ICAgICAgLy8gc28gdGVhciBkb3duIHNjb3BlIGluZm9ybWF0aW9uIHVwZnJvbnQgdG8gYXZvaWQg
aGF2aW5nIHN0YWxlIHJlZmVyZW5jZXMgaW4gdGhlIG1hcC4KLSAgICAgICAgZGVzdHJveVRyZWVT
Y29wZURhdGEoKTsKLSAgICAgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICAvLyBJZiBhbGwg
dGhlIE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVmLWNvdW50cywgYWxsIHRoZSBOb2Rl
cyBhcmUgZGVsZXRlZC4KKyAgICAvLyBPdGhlcndpc2UsIGFsbCB0aGUgTm9kZXMgYXJlIGtlcHQg
YWxpdmUuCisgICAgZ2NUcmVlKHRoaXMpOwogCi0gICAgICAgIG1fbWFya2Vycy0+ZGV0YWNoKCk7
CisgICAgLy8gRklYTUU6IElmIGdjVHJlZSgpIGZhaWxlZCB0byBkZWxldGUgTm9kZXMsIHdlIG5l
ZWQgdG8gcmVzdG9yZSBhbGwgdGhlCisgICAgLy8gcmVmLXBvaW50ZXJzIGFuZCB0aGUgaWQgbWFw
IHRoYXQgd2UgY2xlYXJlZCBqdXN0IGJlZm9yZSBnY1RyZWUoKS4KKyAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgIkRvY3VtZW50OjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkgJXAgYWZ0ZXJcbiIsIHRo
aXMpOworfQogCi0gICAgICAgIG1fY3NzQ2FudmFzRWxlbWVudHMuY2xlYXIoKTsKK3ZvaWQgRG9j
dW1lbnQ6OmFsbENoaWxkcmVuUmVtb3ZlZCgpCit7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJh
bGxDaGlsZHJlblJlbW92ZWQoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIC8vIEF0IHRoaXMg
cG9pbnQsIGFsbCB0aGUgY2hpbGRyZW4gYXJlIGRlbGV0ZWQgYW5kIG9ubHkgdGhlIERvY3VtZW50
IGlzIGtlcHQgYWxpdmUuCisgICAgLy8gVGhlIERvY3VtZW50IHdpbGwgYmUgZGVsZXRlZCB3aGVu
IG1fZ3VhcmRSZWZDb3VudCBiZWNvbWVzIDAuCisgICAgLy8gRklYTUU6IEtlZXAgYWxsIHRoZSBO
b2RlcyBhbGl2ZSB1bnRpbCBtX2d1YXJkUmVmQ291bnQgYmVjb21lcyAwLgorICAgIEFTU0VSVCht
X2d1YXJkUmVmQ291bnQpOwogCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQot
ICAgICAgICAvLyBGSVhNRTogY29uc2lkZXIgdXNpbmcgQWN0aXZlRE9NT2JqZWN0LgotICAgICAg
ICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIpCi0gICAgICAgICAgICBtX3Njcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlci0+Y2xlYXJEb2N1bWVudFBvaW50ZXIoKTsKLSAgICAgICAg
bV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY2xlYXIoKTsKLSNlbmRpZgorICAgIGRldGFj
aFBhcnNlcigpOworICAgIG1fbWFya2Vycy0+ZGV0YWNoKCk7CisgICAgbV9jc3NDYW52YXNFbGVt
ZW50cy5jbGVhcigpOwogCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICBtX2luUmVtb3ZlZExhc3RS
ZWZGdW5jdGlvbiA9IGZhbHNlOworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkK
KyAgICAvLyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgQWN0aXZlRE9NT2JqZWN0LgorICAgIGlmICht
X3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKKyAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXItPmNsZWFyRG9jdW1lbnRQb2ludGVyKCk7CisgICAgbV9zY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuY2xlYXIoKTsKICNlbmRpZgotCi0gICAgICAgIGd1YXJkRGVyZWYoKTsK
LSAgICB9IGVsc2UgewotI2lmbmRlZiBOREVCVUcgCi0gICAgICAgIG1fZGVsZXRpb25IYXNCZWd1
biA9IHRydWU7IAotI2VuZGlmIAotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9CisgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJhbGxDaGlsZHJlblJlbW92ZWQoKSAlcCBhZnRlclxuIiwgdGhpcyk7
CiB9CiAKIEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJp
bmcmIGlkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAwMTdlYjhjODUxOTdkMGM4NTAx
MjFhNzBkNTc2OTI3YzhkZDgxMmU5Li5kODZjZTBmZjA2Yzk5MjNiMTg3OTgzMGM0Yzg5NDc1ZDdl
MTA0OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjM3LDE0ICsyMzcsMTggQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICAt
LW1fZ3VhcmRSZWZDb3VudDsKLSAgICAgICAgaWYgKCFtX2d1YXJkUmVmQ291bnQgJiYgIXJlZkNv
dW50KCkpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX2d1YXJkUmVmQ291bnQgJiYgIXJlZkNv
dW50KCkpKSB7CisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImd1YXJkRGVyZWYoKSBk
ZWxldGUgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBt
X2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICBkZWxldGUgdGhp
czsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ3VhcmREZXJlZigpIGRlbGV0ZSAl
cCBhZnRlclxuIiwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpbnQgZ3VhcmRSZWZD
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3VhcmRSZWZDb3VudDsgfTsKKwogICAgIEVsZW1lbnQq
IGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQpAQCAtNDYzLDYgKzQ2Nyw4IEBAIHB1YmxpYzoKICAgICBOb2RlUmFyZURhdGEqIGRvY3VtZW50
UmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50UmFyZURhdGE7IH07CiAgICAgdm9p
ZCBzZXREb2N1bWVudFJhcmVEYXRhKE5vZGVSYXJlRGF0YSopOwogCisgICAgdm9pZCBhbGxDaGls
ZHJlblJlbW92ZWQoKTsKKwogICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXJJZkV4aXN0
cygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVSZXNvbHZlci5nZXQoKTsgfQogCiAgICAgYm9vbCBp
c1ZpZXdTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2lzVmlld1NvdXJjZTsgfQpAQCAtMTE4NSw4
ICsxMTkxLDggQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTm9kZTsKICAgICBmcmllbmQg
Y2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKLSAgICB2b2lk
IHJlbW92ZWRMYXN0UmVmKCk7Ci0gICAgCisgICAgdm9pZCBzZWFyY2hOZXdMaWZldGltZU93bmVy
KCk7CisKICAgICB2b2lkIGRldGFjaFBhcnNlcigpOwogCiAgICAgdHlwZWRlZiB2b2lkICgqQXJn
dW1lbnRzQ2FsbGJhY2spKGNvbnN0IFN0cmluZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZh
bHVlU3RyaW5nLCBEb2N1bWVudCosIHZvaWQqIGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmlu
ZGV4IDI5NGI0ODM5NDI4Y2M0NDMwNjQwNDFkZDRhMDBlNzg2NjU4ZjZkOWIuLmJiZTIzOGE3ZmM4
NzdlMjQxMTcwZTUwMDNhZTUyOGRmOTE3NGRmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTE1NTUsNiArMTU1NSw3IEBAIENTU1N0eWxlRGVjbGFyYXRpb24gKkVsZW1lbnQ6OnN0eWxlKCkK
IAogdm9pZCBFbGVtZW50Ojpmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikKIHsK
KyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1lbnQ6OmZvY3VzKCkgJXBcbiIsIHRoaXMpOwog
ICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50U2hhZG93LmNwcAppbmRleCA2ZjVlMzMyNDUyNzFjYjUwNjEwNjExZWIyYmJhMTc0OGEy
MDFkZGY0Li4wMjI5ZTBlMmU0OTk5NWFlNGE5ZWQ2YWJmMDk3MDU0YTE3M2Y4Y2M0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC04MCw2ICs4MCw3IEBAIHZvaWQgRWxlbWVu
dFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNo
YWRvd1Jvb3Q+IHNoCiAgICAgc2hhZG93Um9vdC0+c2V0UGFyZW50VHJlZVNjb3BlKHNoYWRvd0hv
c3QtPnRyZWVTY29wZSgpKTsKICAgICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5nZXQo
KSk7CiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0LCBJbnZhbGlkYXRlSWZO
ZWVkZWQpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93
Um9vdCgpIHNoYWRvd1Jvb3Q9JXAgc2hhZG93SG9zdD0lcFxuIiwgc2hhZG93Um9vdC5nZXQoKSwg
c2hhZG93SG9zdCk7CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCku
bm90aWZ5KHNoYWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgaWYgKHNoYWRvd0hvc3QtPmF0dGFjaGVk
KCkgJiYgIXNoYWRvd1Jvb3QtPmF0dGFjaGVkKCkpCkBAIC05MCw2ICs5MSw5IEBAIHZvaWQgRWxl
bWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRy
PFNoYWRvd1Jvb3Q+IHNoCiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9v
dHMoKQogeworICAgIGlmIChtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgLy8gRG9udCBwcm90ZWN0IHRoaXMgcmVmIGNvdW50LgogICAgIEVsZW1lbnQqIHNo
YWRvd0hvc3QgPSBob3N0KCk7CiAKQEAgLTEwNSwxMiArMTA5LDI1IEBAIHZvaWQgRWxlbWVudFNo
YWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogICAgICAgICBvbGRSb290LT5zZXRQcmV2KDAp
OwogICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBzaGFkb3dIb3N0LT5kb2N1
bWVudCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwotICAgICAgICBDaGlsZE5vZGVS
ZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCkpOworICAgICAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3Rz
KCkgc2hhZG93Um9vdD0lcCBzaGFkb3dIb3N0PSVwXG4iLCBvbGRSb290LmdldCgpLCBzaGFkb3dI
b3N0KTsKKyAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlm
eShvbGRSb290LmdldCgpLCB0cnVlKTsKICAgICB9CiAKICAgICBpbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKHNoYWRvd0hvc3QsIEludmFsaWRhdGVJZk5lZWRlZCk7CiB9CiAKKy8vIEhlbHBlciBmdW5j
dGlvbiBmb3IgZ2NUcmVlKCkuCit2b2lkIEVsZW1lbnRTaGFkb3c6OmZvcmNlUmVtb3ZlQWxsU2hh
ZG93Um9vdHMoKQoreworICAgIHdoaWxlIChTaGFkb3dSb290KiByb290ID0gbV9zaGFkb3dSb290
cy5oZWFkKCkpIHsKKyAgICAgICAgbV9zaGFkb3dSb290cy5yZW1vdmVIZWFkKCk7CisgICAgICAg
IHJvb3QtPnNldEhvc3QoMCk7CisgICAgICAgIHJvb3QtPnNldFByZXYoMCk7CisgICAgICAgIHJv
b3QtPnNldE5leHQoMCk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRv
dzo6Zm9yY2VSZW1vdmVBbGxTaGFkb3dSb290cygpIHNoYWRvd1Jvb3Q9JXBcbiIsIHJvb3QpOwor
ICAgIH0KK30KKwogdm9pZCBFbGVtZW50U2hhZG93OjphdHRhY2goKQogewogICAgIGVuc3VyZURp
c3RyaWJ1dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFk
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmgKaW5kZXggM2FiNWMwNzVk
NDNlZWVlZTQ4ZThhMjlmMDgyZWYxNGI1NjhjYjhjMi4uODk1NWE0ZDQzMjFmZDdmMWUzM2MzZTQ0
Nzg3NjcyMDBmNTAzNzBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRT
aGFkb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCkBAIC01Myw2
ICs1Myw3IEBAIHB1YmxpYzoKICAgICBTaGFkb3dSb290KiBvbGRlc3RTaGFkb3dSb290KCkgY29u
c3Q7CiAKICAgICB2b2lkIHJlbW92ZUFsbFNoYWRvd1Jvb3RzKCk7CisgICAgdm9pZCBmb3JjZVJl
bW92ZUFsbFNoYWRvd1Jvb3RzKCk7CiAgICAgdm9pZCBhZGRTaGFkb3dSb290KEVsZW1lbnQqIHNo
YWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4sIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3RU
eXBlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIGF0dGFjaCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CmluZGV4IDg0MjY5Njc3OTBiMTgwNzI0MjMyNzNlOTk5N2Q1MzAxMTFmYjUxMDcuLjAxYjVkZDk5
Njc5NDJiNGJkOTEwMzczYmJmODM0Mzk2OWY0YzY5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQw
LDYgKzQwLDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2hpbGRO
b2RlTGlzdC5oIgogI2luY2x1ZGUgIkNsYXNzTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJDb250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiRE9NU2V0dGFibGVUb2tl
bkxpc3QuaCIKQEAgLTM5Myw2ICszOTQsNyBAQCB2b2lkIE5vZGU6OnRyYWNrRm9yRGVidWdnaW5n
KCkKIAogTm9kZTo6fk5vZGUoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAifk5vZGUoKSAl
cCBiZWZvcmVcbiIsIHRoaXMpOwogI2lmbmRlZiBOREVCVUcKICAgICBIYXNoU2V0PE5vZGUqPjo6
aXRlcmF0b3IgaXQgPSBpZ25vcmVTZXQuZmluZCh0aGlzKTsKICAgICBpZiAoaXQgIT0gaWdub3Jl
U2V0LmVuZCgpKQpAQCAtNDI0LDYgKzQyNiw3IEBAIE5vZGU6On5Ob2RlKCkKICAgICAgICAgZG9j
LT5ndWFyZERlcmVmKCk7CiAKICAgICBJbnNwZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRl
cihJbnNwZWN0b3JDb3VudGVyczo6Tm9kZUNvdW50ZXIpOworICAgIC8vIGZwcmludGYoc3RkZXJy
LCAifk5vZGUoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0RG9jdW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMjgwNCwyMSArMjgwNywyOSBAQCBQYXNzUmVmUHRy
PFByb3BlcnR5Tm9kZUxpc3Q+IE5vZGU6OnByb3BlcnR5Tm9kZUxpc3QoY29uc3QgU3RyaW5nJiBu
YW1lKQogfQogI2VuZGlmCiAKLS8vIEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3Zl
ZExhc3RSZWYsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KKy8v
IEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgc2VhcmNoTmV3TGlmZXRpbWVPd25lciwgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bwogLy8gZGVsZXRlIGEgTm9k
ZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KLXZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQor
dm9pZCBOb2RlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkKIHsKLSAgICAvLyBBbiBleHBsaWNp
dCBjaGVjayBmb3IgRG9jdW1lbnQgaGVyZSBpcyBiZXR0ZXIgdGhhbiBhIHZpcnR1YWwgZnVuY3Rp
b24gc2luY2UgaXQgaXMKLSAgICAvLyBmYXN0ZXIgZm9yIG5vbi1Eb2N1bWVudCBub2RlcywgYW5k
IGJlY2F1c2UgdGhlIGNhbGwgdG8gcmVtb3ZlZExhc3RSZWYgdGhhdCBpcyBpbmxpbmVkCi0gICAg
Ly8gYXQgYWxsIGRlcmVmIGNhbGwgc2l0ZXMgaXMgc21hbGxlciBpZiBpdCdzIGEgbm9uLXZpcnR1
YWwgZnVuY3Rpb24uCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpzZWFyY2hOZXdMaWZl
dGltZU93bmVyKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICAvLyBBbiBleHBsaWNpdCBjaGVj
ayBmb3IgRG9jdW1lbnQgaGVyZSBpcyBiZXR0ZXIgdGhhbiBhIHZpcnR1YWwgZnVuY3Rpb24sIGJl
Y2F1c2UgaXQgaXMKKyAgICAvLyBmYXN0ZXIgZm9yIG5vbi1Eb2N1bWVudCBub2RlcyBhbmQgYmVj
YXVzZSB0aGUgY2FsbCB0byBzZWFyY2hOZXdMaWZldGltZU93bmVyKCkKKyAgICAvLyB0aGF0IGlz
IGlubGluZWQgYXQgYWxsIGRlcmVmIGNhbGwgc2l0ZXMgaXMgc21hbGxlciBpZiBpdCdzIGEgbm9u
LXZpcnR1YWwgZnVuY3Rpb24uCiAgICAgaWYgKGlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAg
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+cmVtb3ZlZExhc3RSZWYoKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpOwor
ICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OnNlYXJjaE5ld0xpZmV0aW1lT3duZXIo
KSAlcCBhZnRlclxuIiwgdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0jaWZuZGVmIE5E
RUJVRwotICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKLSAgICBkZWxldGUg
dGhpczsKKworICAgIEFTU0VSVCghcmVmQ291bnQoKSk7CisgICAgQVNTRVJUKCFtX2RlbGV0aW9u
SGFzQmVndW4pOworICAgIHVuc2V0TGlmZXRpbWVPd25lcigpOworICAgIC8vIEF0IHRoaXMgcG9p
bnQgaXQgaXMgZ3VhcmFudGVlZCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUgRE9N
IHRyZWUuCisKKyAgICAvLyBJZiBhbGwgdGhlIE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAg
cmVmLWNvdW50cywgYWxsIHRoZSBOb2RlcyBhcmUgZGVsZXRlZC4KKyAgICAvLyBPdGhlcndpc2Us
IGFsbCB0aGUgTm9kZXMgYXJlIGtlcHQgYWxpdmUuCisgICAgZ2NUcmVlKHRoaXMpOworICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiTm9kZTo6c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpICVwIGFmdGVy
XG4iLCB0aGlzKTsKIH0KIAogdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYTFmYjE4NGMz
MmRmOGM0MmJiNDc5YWU4MmU4YTBlNTU2NTU5MTUzMC4uMTBmYzJjMzk4YTM1YTRjNjI4YWY0ZmQw
MTg4Nzk2YjM2NWQxN2E1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0zNzEsNiArMzcxLDggQEAgcHVibGlj
OgogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKTsKICAgICBib29sIGlzQ29udGVudFJpY2hs
eUVkaXRhYmxlKCk7CiAKKyAgICB2b2lkIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKTsKKwogICAg
IHZvaWQgaW5zcGVjdCgpOwogCiAgICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVU
eXBlIGVkaXRhYmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKSBjb25zdApAQCAtNzUwLDggKzc1
Miw2IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTaGFyZWQ8
Tm9kZSwgQ29udGFpbmVyTm9kZT47CiAKLSAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7Ci0KICAg
ICAvLyBUaGVzZSBBUEkgc2hvdWxkIGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVlIHNjb3BlIG1pZ3Jh
dGlvbi4KICAgICAvLyBzZXRUcmVlU2NvcGUoKSByZXR1cm5zIE5vZGVSYXJlRGF0YSB0byBzYXZl
IGV4dHJhIG5vZGVSYXJlRGF0YSgpIGludm9jYXRpb25zIG9uIHRoZSBjYWxsZXIgc2l0ZS4KICAg
ICBOb2RlUmFyZURhdGEqIHNldFRyZWVTY29wZShUcmVlU2NvcGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAppbmRleCA1ZDliYTJkZWU2MDJkZDAyZWIwOTgyZDYyOTUxM2JmYTk3NjlmMjg4
Li5iMWQzYjg1YWZkNTBkMWMyNTBhYjI3ZDViM2ZkNmRmMjFiOTc1NzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYXJrdXAuY3BwCkBAIC0xMTIzLDcgKzExMjMsMTAgQEAgdm9pZCByZXBsYWNlQ2hpbGRy
ZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSogY29udGFpbmVyLCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
cmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCkgY29udGFpbmVyPSVwXG4iLCBjb250YWluZXIp
OworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiY29udGFpbmVyTm9kZS0+cmVtb3ZlQ2hpbGRyZW4o
KSBjb250YWluZXJOb2RlPSVwXG4iLCBjb250YWluZXIpOwogICAgIGNvbnRhaW5lck5vZGUtPnJl
bW92ZUNoaWxkcmVuKCk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJjb250YWluZXJOb2RlLT5h
cHBlbmRDaGlsZCgpIGNvbnRhaW5lck5vZGU9JXAgZnJhZ21lbnQ9JXBcbiIsIGNvbnRhaW5lciwg
ZnJhZ21lbnQuZ2V0KCkpOwogICAgIGNvbnRhaW5lck5vZGUtPmFwcGVuZENoaWxkKGZyYWdtZW50
LCBlYyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCmluZGV4IDk2MjA0
NmE0MmUxMmI3NDc5MGI1Zjc3YWNkZTc0Nzg4MDhjNmM3ZWMuLjQwMDlmYzA4NjRkZjBmNmYxZmY3
OTc5M2Q3ODU1ZWYzYTI4ZmU1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNw
cApAQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgY29uc3QgaW50IGRhdGVTdGVwU2NhbGVGYWN0b3Ig
PSA4NjQwMDAwMDsKIAogaW5saW5lIERhdGVJbnB1dFR5cGU6OkRhdGVJbnB1dFR5cGUoSFRNTElu
cHV0RWxlbWVudCogZWxlbWVudCkKICAgICA6IEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShlbGVt
ZW50KQorICAgICwgbV9waWNrZXJFbGVtZW50KDApCiB7CiB9CiAKQEAgLTEwMiwxNCArMTAzLDE1
IEBAIGJvb2wgRGF0ZUlucHV0VHlwZTo6aXNEYXRlRmllbGQoKSBjb25zdAogdm9pZCBEYXRlSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBCYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKLSAgICBtX3BpY2tlckVsZW1lbnQgPSBDYWxl
bmRhclBpY2tlckVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwotICAgIGNv
bnRhaW5lckVsZW1lbnQoKS0+aW5zZXJ0QmVmb3JlKG1fcGlja2VyRWxlbWVudC5nZXQoKSwgaW5u
ZXJCbG9ja0VsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgUmVmUHRyPENhbGVuZGFyUGlja2VyRWxlbWVudD4gcGlja2VyRWxlbWVudCA9IENhbGVuZGFy
UGlja2VyRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CisgICAgbV9waWNr
ZXJFbGVtZW50ID0gcGlja2VyRWxlbWVudC5nZXQoKTsKKyAgICBjb250YWluZXJFbGVtZW50KCkt
Pmluc2VydEJlZm9yZShtX3BpY2tlckVsZW1lbnQsIGlubmVyQmxvY2tFbGVtZW50KCktPm5leHRT
aWJsaW5nKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCiB2b2lkIERhdGVJbnB1dFR5cGU6
OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCk7Ci0gICAgbV9waWNrZXJFbGVtZW50LmNsZWFyKCk7CisgICAgbV9w
aWNrZXJFbGVtZW50ID0gMDsKIH0KIAogYm9vbCBEYXRlSW5wdXRUeXBlOjpuZWVkc0NvbnRhaW5l
cigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCmluZGV4IDJmYWRjNDdiNDhj
ZDBhMzllMDBmNDNiM2JmMTFiYTBhOWIyMWMwMWYuLmQ0ODA0OWRhYWY2MTUzZWZkZGY5NzUwNTY3
NDVlZmJjNjljODQ0YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5oCkBAIC02NSw3
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZEhhdmVTcGluQnV0dG9uKCkgY29u
c3QgT1ZFUlJJREU7CiAKLSAgICBSZWZQdHI8Q2FsZW5kYXJQaWNrZXJFbGVtZW50PiBtX3BpY2tl
ckVsZW1lbnQ7CisgICAgQ2FsZW5kYXJQaWNrZXJFbGVtZW50KiBtX3BpY2tlckVsZW1lbnQ7CiAj
ZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA5
YjJhNTkxNWM0N2NjOWIwN2UwYTQ4YmU0ZGQzZTZlMzFkY2I2ZDlhLi5iNTFhYjJmZTI5Y2M1NzEz
ZWEyNDM5MTUxNjhmNGM4NWFiZmZiMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCkBAIC02MjksNyArNjI5LDcgQEAgSFRNTEZvcm1Db250cm9sRWxlbWVudCogSFRN
TEZvcm1FbGVtZW50OjplbGVtZW50Rm9yQWxpYXMoY29uc3QgQXRvbWljU3RyaW5nJiBhbGkKIHsK
ICAgICBpZiAoYWxpYXMuaXNFbXB0eSgpIHx8ICFtX2VsZW1lbnRBbGlhc2VzKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICByZXR1cm4gbV9lbGVtZW50QWxpYXNlcy0+Z2V0KGFsaWFzLmltcGwoKSku
Z2V0KCk7CisgICAgcmV0dXJuIG1fZWxlbWVudEFsaWFzZXMtPmdldChhbGlhcy5pbXBsKCkpOwog
fQogCiB2b2lkIEhUTUxGb3JtRWxlbWVudDo6YWRkRWxlbWVudEFsaWFzKEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgYWxpYXMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUVsZW1lbnQuaAppbmRleCA5ZDQ3Mzk0MjM4YTg1N2QxOTIxYjYwYjA3NDMz
YTRjMWY0NDkwNWY4Li4xODc1ZmU0MGM3MTBlZmNjMjI3Y2JlZGE5OTYyMmE4MDExZjM2MWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBw
cml2YXRlOgogICAgIC8vIGFyZSBhbnkgaW52YWxpZCBjb250cm9scyBpbiB0aGlzIGZvcm0uCiAg
ICAgYm9vbCBjaGVja0ludmFsaWRDb250cm9sc0FuZENvbGxlY3RVbmhhbmRsZWQoVmVjdG9yPFJl
ZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+ID4mKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4sIFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiA+
IEFsaWFzTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4s
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPiBBbGlhc01hcDsKIAogICAgIEZvcm1TdWJtaXNzaW9u
OjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAgICBPd25QdHI8QWxpYXNNYXA+IG1fZWxlbWVu
dEFsaWFzZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAppbmRleCAy
OTBkZTViMDc4OWNlY2Q4NTQzNjBjNTE2ZWYxZWE0ZTcxZWY3NzEzLi5jNmI3OTUxNGZhOGE1NmE2
MmE1ZTZjNDcyNTg0MzgzYzZiNzcxMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
IAogSFRNTE1ldGVyRWxlbWVudDo6SFRNTE1ldGVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBMYWJlbGFibGVFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50KQorICAgICwgbV92YWx1ZSgwKQogewogICAgIEFTU0VSVChoYXNUYWdO
YW1lKG1ldGVyVGFnKSk7CiB9CkBAIC0yMTMsNiArMjE0LDcgQEAgZG91YmxlIEhUTUxNZXRlckVs
ZW1lbnQ6OnZhbHVlUmF0aW8oKSBjb25zdAogCiB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OmRpZEVs
ZW1lbnRTdGF0ZUNoYW5nZSgpCiB7CisgICAgQVNTRVJUKG1fdmFsdWUpOwogICAgIG1fdmFsdWUt
PnNldFdpZHRoUGVyY2VudGFnZSh2YWx1ZVJhdGlvKCkqMTAwKTsKICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXIgPSByZW5kZXJlcigpKQogICAgICAgICByZW5kZXItPnVwZGF0ZUZyb21FbGVt
ZW50KCk7CkBAIC0yMjEsOSArMjIzLDExIEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6ZGlkRWxl
bWVudFN0YXRlQ2hhbmdlKCkKIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiB7CiAgICAgQVNTRVJUKCFzaGFkb3coKSk7CisgICAgQVNTRVJUKCFtX3ZhbHVlKTsK
IAogICAgIFJlZlB0cjxNZXRlckJhckVsZW1lbnQ+IGJhciA9IE1ldGVyQmFyRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KCkpOwotICAgIG1fdmFsdWUgPSBNZXRlclZhbHVlRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KCkpOworICAgIFJlZlB0cjxNZXRlclZhbHVlRWxlbWVudD4gdmFsdWUgPSBNZXRl
clZhbHVlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOworICAgIG1fdmFsdWUgPSB2YWx1ZS5n
ZXQoKTsKICAgICBtX3ZhbHVlLT5zZXRXaWR0aFBlcmNlbnRhZ2UoMCk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgYmFyLT5hcHBlbmRDaGlsZChtX3ZhbHVlLCBlYyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCmluZGV4IDE4ODMwOTE1NzIzZWU4YTdmYzM3YjA2
MTU0N2I2Yzk1M2IzNjcxNmYuLjRhMWY2NGM0Y2ZiYzBlZjZkZmUyNmI2MmNjMTQzN2ZmMTRlMjQ5
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5oCkBAIC03Nyw3ICs3Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRFbGVtZW50U3RhdGVDaGFuZ2UoKTsKICAgICB2b2lk
IGNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKIAotICAgIFJlZlB0cjxNZXRlclZhbHVlRWxlbWVudD4g
bV92YWx1ZTsKKyAgICBNZXRlclZhbHVlRWxlbWVudCogbV92YWx1ZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRl
eCA3NDJiMDlmZmEwYTI1NDhkZWY1OTAyOTM1OWM1NGY3YmFmNGVhZWNjLi4wNjAzMDYyYmQxMTli
Mzg5ZGQyYjAzNTczNzMyNWI5NTUwMTc5MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAgY29uc3QgZG91YmxlIEhUTUxQ
cm9ncmVzc0VsZW1lbnQ6OkludmFsaWRQb3NpdGlvbiA9IC0yOwogCiBIVE1MUHJvZ3Jlc3NFbGVt
ZW50OjpIVE1MUHJvZ3Jlc3NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKICAgICA6IExhYmVsYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCisgICAgLCBtX3ZhbHVlKDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUocHJvZ3Jlc3NU
YWcpKTsKIH0KQEAgLTE0Niw5ICsxNDcsMTEgQEAgdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50Ojpk
aWRFbGVtZW50U3RhdGVDaGFuZ2UoKQogdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKCkKIHsKICAgICBBU1NFUlQoIXNoYWRvdygpKTsKKyAgICBBU1NFUlQoIW1f
dmFsdWUpOwogCiAgICAgUmVmUHRyPFByb2dyZXNzQmFyRWxlbWVudD4gYmFyID0gUHJvZ3Jlc3NC
YXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7Ci0gICAgbV92YWx1ZSA9IFByb2dyZXNzVmFs
dWVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPFByb2dyZXNzVmFsdWVF
bGVtZW50PiB2YWx1ZSA9IFByb2dyZXNzVmFsdWVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7
CisgICAgbV92YWx1ZSA9IHZhbHVlLmdldCgpOwogICAgIGJhci0+YXBwZW5kQ2hpbGQobV92YWx1
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gcm9vdCA9
IFNoYWRvd1Jvb3Q6OmNyZWF0ZSh0aGlzLCBTaGFkb3dSb290OjpVc2VyQWdlbnRTaGFkb3dSb290
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NF
bGVtZW50LmgKaW5kZXggNzIxODBiOTNkZjEwY2RmOGRmNTBhZmMyMDA3OGVjN2YyYTNhZTExZS4u
ZTcxMWE2N2ViMzBkMzQxYTRjZjY5MDNiYWU0ZGI3MWMwZmFkMTZkNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpOwogICAgIHZvaWQgY3JlYXRlU2hhZG93
U3VidHJlZSgpOwogCi0gICAgUmVmUHRyPFByb2dyZXNzVmFsdWVFbGVtZW50PiBtX3ZhbHVlOwor
ICAgIFByb2dyZXNzVmFsdWVFbGVtZW50KiBtX3ZhbHVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGJhZDg1
NzFkMzUxZjVjODU1MzMwMjAwNGZhYjIyODhmZjAwZjc1NjIuLjcyODJhNWNlZDM1NDk5ODI1MTY2
M2JjZmJiOWRhNDRlM2NjMzc3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcApAQCAtNzIsNiArNzIsNyBAQCBIVE1MVGV4dEFyZWFFbGVtZW50OjpIVE1M
VGV4dEFyZWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kgog
ICAgICwgbV9yb3dzKGRlZmF1bHRSb3dzKQogICAgICwgbV9jb2xzKGRlZmF1bHRDb2xzKQogICAg
ICwgbV93cmFwKFNvZnRXcmFwKQorICAgICwgbV9wbGFjZWhvbGRlcigwKQogICAgICwgbV9pc0Rp
cnR5KGZhbHNlKQogICAgICwgbV93YXNNb2RpZmllZEJ5VXNlcihmYWxzZSkKIHsKQEAgLTQ5MCwx
MyArNDkxLDEzIEBAIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6c2hvdWxkVXNlSW5wdXRNZXRo
b2QoKQogCiBIVE1MRWxlbWVudCogSFRNTFRleHRBcmVhRWxlbWVudDo6cGxhY2Vob2xkZXJFbGVt
ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGFjZWhvbGRlci5nZXQoKTsKKyAgICByZXR1
cm4gbV9wbGFjZWhvbGRlcjsKIH0KIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjphdHRhY2go
KQogewogICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphdHRhY2goKTsKLSAgICBmaXhQ
bGFjZWhvbGRlclJlbmRlcmVyKG1fcGxhY2Vob2xkZXIuZ2V0KCksIGlubmVyVGV4dEVsZW1lbnQo
KSk7CisgICAgZml4UGxhY2Vob2xkZXJSZW5kZXJlcihtX3BsYWNlaG9sZGVyLCBpbm5lclRleHRF
bGVtZW50KCkpOwogfQogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9s
ZGVyVGV4dCgpCkBAIC01MDUsMjEgKzUwNiwyMiBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9IHN0
cmlwcGVkUGxhY2Vob2xkZXIoKTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0LmlzRW1wdHkoKSkg
ewogICAgICAgICBpZiAobV9wbGFjZWhvbGRlcikgewotICAgICAgICAgICAgdXNlckFnZW50U2hh
ZG93Um9vdCgpLT5yZW1vdmVDaGlsZChtX3BsYWNlaG9sZGVyLmdldCgpLCBlYyk7CisgICAgICAg
ICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIsIGVj
KTsKICAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAgbV9wbGFjZWhvbGRlci5j
bGVhcigpOworICAgICAgICAgICAgbV9wbGFjZWhvbGRlciA9IDA7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgbV9w
bGFjZWhvbGRlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgICAg
IFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KCkpOworICAgICAgICBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIuZ2V0
KCk7CiAgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LWlu
cHV0LXBsYWNlaG9sZGVyIik7CiAgICAgICAgIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+aW5zZXJ0
QmVmb3JlKG1fcGxhY2Vob2xkZXIsIGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwg
ZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAgICAgbV9wbGFjZWhvbGRlci0+c2V0
SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMpOwogICAgIEFTU0VSVCghZWMpOwotICAgIGZp
eFBsYWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRlci5nZXQoKSwgaW5uZXJUZXh0RWxlbWVu
dCgpKTsKKyAgICBmaXhQbGFjZWhvbGRlclJlbmRlcmVyKG1fcGxhY2Vob2xkZXIsIGlubmVyVGV4
dEVsZW1lbnQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgKaW5kZXggNGU2ZGI1NjNlM2M5YzEyYzVhNTM1N2FkMjgyODMyNzMxN2M0ZjAyOS4uNmUy
YWE1OGI5NjhjNmRkZTc0MzEyMDE0NzcwZTY0NzMwMDU0M2MwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgog
ICAgIGludCBtX3Jvd3M7CiAgICAgaW50IG1fY29sczsKICAgICBXcmFwTWV0aG9kIG1fd3JhcDsK
LSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fcGxhY2Vob2xkZXI7CisgICAgSFRNTEVsZW1lbnQq
IG1fcGxhY2Vob2xkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV92YWx1ZTsKICAgICBtdXRhYmxl
IGJvb2wgbV9pc0RpcnR5OwogICAgIG11dGFibGUgYm9vbCBtX3dhc01vZGlmaWVkQnlVc2VyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCmluZGV4IDk1ODg3OGNlZDI3MDQ5
ODE3MjdjYTUwMWNhNzQ5MmE3OWEzYTE4MDguLjA5ZjA3OWI3OWE2YTUyYTFmYzA1ZmI0MTUzMjAz
MzA0NjEyZDdlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKQEAg
LTQ1LDYgKzQ1LDggQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogaW5saW5lIFNlYXJj
aElucHV0VHlwZTo6U2VhcmNoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgOiBCYXNlVGV4dElucHV0VHlwZShlbGVtZW50KQorICAgICwgbV9yZXN1bHRzQnV0dG9uKDAp
CisgICAgLCBtX2NhbmNlbEJ1dHRvbigwKQogICAgICwgbV9zZWFyY2hFdmVudFRpbWVyKHRoaXMs
ICZTZWFyY2hJbnB1dFR5cGU6OnNlYXJjaEV2ZW50VGltZXJGaXJlZCkKIHsKIH0KQEAgLTk3LDIx
ICs5OSwyMyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAg
ICAgQVNTRVJUKHRleHRXcmFwcGVyKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IG1fcmVzdWx0c0J1dHRvbiA9IFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0
ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOworICAgIFJlZlB0cjxTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25FbGVtZW50PiByZXN1bHRzQnV0dG9uID0gU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxl
bWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CisgICAgbV9yZXN1bHRzQnV0dG9u
ID0gcmVzdWx0c0J1dHRvbi5nZXQoKTsKICAgICBjb250YWluZXItPmluc2VydEJlZm9yZShtX3Jl
c3VsdHNCdXR0b24sIHRleHRXcmFwcGVyLCBlYyk7CiAKLSAgICBtX2NhbmNlbEJ1dHRvbiA9IFNl
YXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1lbnQo
KSk7CisgICAgUmVmUHRyPFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uRWxlbWVudD4gY2FuY2VsQnV0
dG9uID0gU2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5k
b2N1bWVudCgpKTsKKyAgICBtX2NhbmNlbEJ1dHRvbiA9IGNhbmNlbEJ1dHRvbi5nZXQoKTsKICAg
ICBjb250YWluZXItPmluc2VydEJlZm9yZShtX2NhbmNlbEJ1dHRvbiwgdGV4dFdyYXBwZXItPm5l
eHRTaWJsaW5nKCksIGVjKTsKIH0KIAogSFRNTEVsZW1lbnQqIFNlYXJjaElucHV0VHlwZTo6cmVz
dWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX3Jlc3VsdHNCdXR0b24u
Z2V0KCk7CisgICAgcmV0dXJuIG1fcmVzdWx0c0J1dHRvbjsKIH0KIAogSFRNTEVsZW1lbnQqIFNl
YXJjaElucHV0VHlwZTo6Y2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fY2FuY2VsQnV0dG9uLmdldCgpOworICAgIHJldHVybiBtX2NhbmNlbEJ1dHRvbjsKIH0KIAog
dm9pZCBTZWFyY2hJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCkKQEAgLTEzNSw4ICsxMzksOCBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6aGFuZGxlS2V5
ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogdm9pZCBTZWFyY2hJbnB1dFR5cGU6OmRl
c3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBUZXh0RmllbGRJbnB1dFR5cGU6OmRlc3Ryb3lT
aGFkb3dTdWJ0cmVlKCk7Ci0gICAgbV9yZXN1bHRzQnV0dG9uLmNsZWFyKCk7Ci0gICAgbV9jYW5j
ZWxCdXR0b24uY2xlYXIoKTsKKyAgICBtX3Jlc3VsdHNCdXR0b24gPSAwOworICAgIG1fY2FuY2Vs
QnV0dG9uID0gMDsKIH0KIAogdm9pZCBTZWFyY2hJbnB1dFR5cGU6OnN0YXJ0U2VhcmNoRXZlbnRU
aW1lcigpCkBAIC0xNzIsNyArMTc2LDcgQEAgYm9vbCBTZWFyY2hJbnB1dFR5cGU6OnNlYXJjaEV2
ZW50c1Nob3VsZEJlRGlzcGF0Y2hlZCgpIGNvbnN0CiAKIHZvaWQgU2VhcmNoSW5wdXRUeXBlOjpz
dWJ0cmVlSGFzQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKG1fY2FuY2VsQnV0dG9uLmdldCgpKQorICAg
IGlmIChtX2NhbmNlbEJ1dHRvbikKICAgICAgICAgdG9SZW5kZXJTZWFyY2hGaWVsZChlbGVtZW50
KCktPnJlbmRlcmVyKCkpLT51cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5KCk7CiAKICAgICAv
LyBJZiB0aGUgaW5jcmVtZW50YWwgYXR0cmlidXRlIGlzIHNldCwgdGhlbiBkaXNwYXRjaCB0aGUg
c2VhcmNoIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAppbmRleCBlY2Uz
NWEyNTlmMDgxZTA3YjQwZDQ3Y2E3N2MyODgxNjI1NWJmNTVkLi40NGJkMWI3YzBhMDM0MDk5OWMw
YTIxNDUzMjg1MGMwNTRiNzE2YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Nl
YXJjaElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBl
LmgKQEAgLTY0LDggKzY0LDggQEAgcHJpdmF0ZToKICAgICBib29sIHNlYXJjaEV2ZW50c1Nob3Vs
ZEJlRGlzcGF0Y2hlZCgpIGNvbnN0OwogICAgIHZvaWQgc3RhcnRTZWFyY2hFdmVudFRpbWVyKCk7
CiAKLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1fcmVzdWx0c0J1dHRvbjsKLSAgICBSZWZQdHI8
SFRNTEVsZW1lbnQ+IG1fY2FuY2VsQnV0dG9uOworICAgIEhUTUxFbGVtZW50KiBtX3Jlc3VsdHNC
dXR0b247CisgICAgSFRNTEVsZW1lbnQqIG1fY2FuY2VsQnV0dG9uOwogICAgIFRpbWVyPFNlYXJj
aElucHV0VHlwZT4gbV9zZWFyY2hFdmVudFRpbWVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IGYxMTRlZWI1ZTI1ODhlNzAwNmEzMGJhZjZk
NzI1MjE4MDM1YjAwZDUuLmQ1ZjliY2M3MmNmZGNkYTIwZGJjOTJlN2I1ZDMzNjE4OTAyODc0ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTU4LDYg
KzU4LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFRleHRGaWVsZElucHV0VHlw
ZTo6VGV4dEZpZWxkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgOiBJ
bnB1dFR5cGUoZWxlbWVudCkKKyAgICAsIG1fY29udGFpbmVyKDApCisgICAgLCBtX2lubmVyQmxv
Y2soMCkKKyAgICAsIG1faW5uZXJUZXh0KDApCisgICAgLCBtX3BsYWNlaG9sZGVyKDApCisgICAg
LCBtX2lubmVyU3BpbkJ1dHRvbigwKQorI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCisgICAgLCBt
X3NwZWVjaEJ1dHRvbigwKQorI2VuZGlmCiB7CiB9CiAKQEAgLTI0NCwzMSArMjUyLDM2IEBAIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICBib29sIGNy
ZWF0ZXNDb250YWluZXIgPSBzaG91bGRIYXZlU3BpbkJ1dHRvbiB8fCBuZWVkc0NvbnRhaW5lcigp
IHx8IHNob3VsZEFkZERlY29yYXRpb25zOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CisgICAgUmVmUHRyPFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudD4gaW5uZXJUZXh0
ID0gVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIG1f
aW5uZXJUZXh0ID0gaW5uZXJUZXh0LmdldCgpOwogICAgIGlmICghY3JlYXRlc0NvbnRhaW5lcikg
ewogICAgICAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQo
bV9pbm5lclRleHQsIGVjKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFNoYWRvd1Jv
b3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKLSAgICBt
X2NvbnRhaW5lciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIFJlZlB0
cjxIVE1MRGl2RWxlbWVudD4gY29udGFpbmVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CisgICAgbV9jb250YWluZXIgPSBjb250YWluZXIuZ2V0KCk7CiAgICAgbV9jb250YWlu
ZXItPnNldFNoYWRvd1BzZXVkb0lkKCItd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRh
aW5lciIpOwogICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKG1fY29udGFpbmVyLCBlYyk7CiAK
LSAgICBtX2lubmVyQmxvY2sgPSBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKKyAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IGlubmVyQmxvY2sgPSBU
ZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKKyAgICBtX2lubmVyQmxv
Y2sgPSBpbm5lckJsb2NrLmdldCgpOwogICAgIG1faW5uZXJCbG9jay0+YXBwZW5kQ2hpbGQobV9p
bm5lclRleHQsIGVjKTsKICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9pbm5lckJsb2Nr
LCBlYyk7CiAKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgIEFTU0VSVCghbV9zcGVlY2hC
dXR0b24pOwogICAgIGlmIChlbGVtZW50KCktPmlzU3BlZWNoRW5hYmxlZCgpKSB7Ci0gICAgICAg
IG1fc3BlZWNoQnV0dG9uID0gSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CisgICAgICAgIFJlZlB0cjxJbnB1dEZpZWxkU3BlZWNoQnV0dG9uRWxlbWVudD4g
c3BlZWNoQnV0dG9uID0gSW5wdXRGaWVsZFNwZWVjaEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CisgICAgICAgIG1fc3BlZWNoQnV0dG9uID0gc3BlZWNoQnV0dG9uLmdldCgpOwogICAg
ICAgICBtX2NvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9zcGVlY2hCdXR0b24sIGVjKTsKICAgICB9
CiAjZW5kaWYKIAogICAgIGlmIChzaG91bGRIYXZlU3BpbkJ1dHRvbikgewotICAgICAgICBtX2lu
bmVyU3BpbkJ1dHRvbiA9IFNwaW5CdXR0b25FbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQsICp0aGlz
KTsKKyAgICAgICAgUmVmUHRyPFNwaW5CdXR0b25FbGVtZW50PiBpbm5lclNwaW5CdXR0b24gPSBT
cGluQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcyk7CisgICAgICAgIG1faW5u
ZXJTcGluQnV0dG9uID0gaW5uZXJTcGluQnV0dG9uLmdldCgpOwogICAgICAgICBtX2NvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQobV9pbm5lclNwaW5CdXR0b24sIGVjKTsKICAgICB9CiAKQEAgLTI3OCw1
MCArMjkxLDUwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KCkKIAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6Y29udGFpbmVyRWxlbWVudCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGFpbmVyLmdldCgpOworICAgIHJldHVybiBtX2Nv
bnRhaW5lcjsKIH0KIAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlwZTo6aW5uZXJCbG9j
a0VsZW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2lubmVyQmxvY2suZ2V0KCk7CisgICAg
cmV0dXJuIG1faW5uZXJCbG9jazsKIH0KIAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlw
ZTo6aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faW5uZXJUZXh0KTsK
LSAgICByZXR1cm4gbV9pbm5lclRleHQuZ2V0KCk7CisgICAgcmV0dXJuIG1faW5uZXJUZXh0Owog
fQogCiBIVE1MRWxlbWVudCogVGV4dEZpZWxkSW5wdXRUeXBlOjppbm5lclNwaW5CdXR0b25FbGVt
ZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbm5lclNwaW5CdXR0b24uZ2V0KCk7CisgICAg
cmV0dXJuIG1faW5uZXJTcGluQnV0dG9uOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
IEhUTUxFbGVtZW50KiBUZXh0RmllbGRJbnB1dFR5cGU6OnNwZWVjaEJ1dHRvbkVsZW1lbnQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3NwZWVjaEJ1dHRvbi5nZXQoKTsKKyAgICByZXR1cm4gbV9z
cGVlY2hCdXR0b247CiB9CiAjZW5kaWYKIAogSFRNTEVsZW1lbnQqIFRleHRGaWVsZElucHV0VHlw
ZTo6cGxhY2Vob2xkZXJFbGVtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wbGFjZWhvbGRl
ci5nZXQoKTsKKyAgICByZXR1cm4gbV9wbGFjZWhvbGRlcjsKIH0KIAogdm9pZCBUZXh0RmllbGRJ
bnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBJbnB1dFR5cGU6OmRlc3Ry
b3lTaGFkb3dTdWJ0cmVlKCk7Ci0gICAgbV9pbm5lclRleHQuY2xlYXIoKTsKLSAgICBtX3BsYWNl
aG9sZGVyLmNsZWFyKCk7Ci0gICAgbV9pbm5lckJsb2NrLmNsZWFyKCk7CisgICAgbV9pbm5lclRl
eHQgPSAwOworICAgIG1fcGxhY2Vob2xkZXIgPSAwOworICAgIG1faW5uZXJCbG9jayA9IDA7CiAj
aWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBtX3NwZWVjaEJ1dHRvbi5jbGVhcigpOworICAg
IG1fc3BlZWNoQnV0dG9uID0gMDsKICNlbmRpZgogICAgIGlmIChtX2lubmVyU3BpbkJ1dHRvbikK
ICAgICAgICAgbV9pbm5lclNwaW5CdXR0b24tPnJlbW92ZVN0ZXBBY3Rpb25IYW5kbGVyKCk7Ci0g
ICAgbV9pbm5lclNwaW5CdXR0b24uY2xlYXIoKTsKLSAgICBtX2NvbnRhaW5lci5jbGVhcigpOwor
ICAgIG1faW5uZXJTcGluQnV0dG9uID0gMDsKKyAgICBtX2NvbnRhaW5lciA9IDA7CiB9CiAKIHZv
aWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKQpAQCAtNDA4
LDI3ICs0MjEsMjggQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVy
VGV4dCgpCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9IHVzZXNGaXhlZFBsYWNlaG9sZGVy
KCkgPyBmaXhlZFBsYWNlaG9sZGVyKCkgOiBlbGVtZW50KCktPnN0cmlwcGVkUGxhY2Vob2xkZXIo
KTsKICAgICBpZiAocGxhY2Vob2xkZXJUZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9w
bGFjZWhvbGRlcikgewotICAgICAgICAgICAgbV9wbGFjZWhvbGRlci0+cGFyZW50Tm9kZSgpLT5y
ZW1vdmVDaGlsZChtX3BsYWNlaG9sZGVyLmdldCgpLCBlYyk7CisgICAgICAgICAgICBtX3BsYWNl
aG9sZGVyLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIsIGVjKTsKICAg
ICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAgbV9wbGFjZWhvbGRlci5jbGVhcigp
OworICAgICAgICAgICAgbV9wbGFjZWhvbGRlciA9IDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBpZiAoIW1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgbV9wbGFjZWhv
bGRlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKKyAg
ICAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBwbGFjZWhvbGRlciA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKKyAgICAgICAgbV9wbGFjZWhvbGRlciA9
IHBsYWNlaG9sZGVyLmdldCgpOwogICAgICAgICBtX3BsYWNlaG9sZGVyLT5zZXRTaGFkb3dQc2V1
ZG9JZCgiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciIpOwogICAgICAgICBlbGVtZW50KCktPnVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIG1fY29udGFp
bmVyID8gbV9jb250YWluZXItPm5leHRTaWJsaW5nKCkgOiBpbm5lclRleHRFbGVtZW50KCktPm5l
eHRTaWJsaW5nKCksIGVjKTsKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogICAgIG1fcGxh
Y2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIGVjKTsKICAgICBBU1NFUlQo
IWVjKTsKLSAgICBlbGVtZW50KCktPmZpeFBsYWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRl
ci5nZXQoKSwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci5nZXQoKSA6IG1faW5uZXJUZXh0Lmdl
dCgpKTsKKyAgICBlbGVtZW50KCktPmZpeFBsYWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRl
ciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lciA6IG1faW5uZXJUZXh0KTsKIH0KIAogdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OmF0dGFjaCgpCiB7CiAgICAgSW5wdXRUeXBlOjphdHRhY2goKTsK
LSAgICBlbGVtZW50KCktPmZpeFBsYWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRlci5nZXQo
KSwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci5nZXQoKSA6IG1faW5uZXJUZXh0LmdldCgpKTsK
KyAgICBlbGVtZW50KCktPmZpeFBsYWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRlciwgbV9j
b250YWluZXIgPyBtX2NvbnRhaW5lciA6IG1faW5uZXJUZXh0KTsKIH0KIAogYm9vbCBUZXh0Rmll
bGRJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgbGlzdCwgYm9vbCBtdWx0
aXBhcnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElu
cHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaAppbmRl
eCBiZTZjNjY2ZTRiOTFkMjAwYTFmNWUyMDEyZDVmZjQ5MjQxM2NmMmExLi5mYjUyMTg3ZjFhMTcw
ODJkOTkyYTEyMzFlMTY5NWJhOTRkZmNlM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmgKQEAgLTkwLDEzICs5MCwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzcGluQnV0dG9uU3RlcERvd24oKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3Bp
bkJ1dHRvblN0ZXBVcCgpIE9WRVJSSURFOwogCi0gICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtX2Nv
bnRhaW5lcjsKLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1faW5uZXJCbG9jazsKLSAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IG1faW5uZXJUZXh0OwotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9w
bGFjZWhvbGRlcjsKLSAgICBSZWZQdHI8U3BpbkJ1dHRvbkVsZW1lbnQ+IG1faW5uZXJTcGluQnV0
dG9uOworICAgIEhUTUxFbGVtZW50KiBtX2NvbnRhaW5lcjsKKyAgICBIVE1MRWxlbWVudCogbV9p
bm5lckJsb2NrOworICAgIEhUTUxFbGVtZW50KiBtX2lubmVyVGV4dDsKKyAgICBIVE1MRWxlbWVu
dCogbV9wbGFjZWhvbGRlcjsKKyAgICBTcGluQnV0dG9uRWxlbWVudCogbV9pbm5lclNwaW5CdXR0
b247CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1f
c3BlZWNoQnV0dG9uOworICAgIEhUTUxFbGVtZW50KiBtX3NwZWVjaEJ1dHRvbjsKICNlbmRpZgog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IGQ0ZDUzZWFlZTkyNGVh
MjFhZDhmZWFjNzFlYmQyNjY3Y2UxMzI0YWUuLjlhMjg1YTZlNGQ2ZWZhMmEyOGI5MmMzMzc2YWZm
MThiYjU0YzkyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFy
ZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTMyLDI3
ICszMiw0MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9k
ZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlw
ZW5hbWUgUGFyZW50Tm9kZVR5cGU+IHZvaWQgYWRvcHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlLCBQ
YXJlbnROb2RlVHlwZT4qKTsKICNlbmRpZgogCisvLyBUaGUgYWxnb3JpdGhtIGd1YXJhbnRlZXMg
dGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOgorLy8KKy8vICAgICAtIE91dHNpZGUgb2Ygc2VhcmNo
TmV3TGlmZXRpbWVPd25lcigpIChpLmUuIGluIG5vcm1hbCBjYXNlcyksIGVhY2ggRE9NIHRyZWUg
aGFzIGV4YWN0bHkgb25lCisvLyAgICAgICBsaWZldGltZSBvd25lci4KKy8vICAgICAtIEluc2lk
ZSBvZiBzZWFyY2hOZXdMaWZldGltZU93bmVyKCksIHRoZSBET00gdHJlZSBoYXMgbm8gbGlmZXRp
bWUgb3duZXIuIHNlYXJjaE5ld0xpZmV0aW1lT3duZXIoKQorLy8gICAgICAgZWxlY3RzIGEgbmV3
IGxpZmV0aW1lIG93bmVyLgorLy8KKy8vIFNlZSBhIGRlc2lnbiBkb2N1bWVudCAoaHR0cHM6Ly9k
b2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29tL2RvY3VtZW50L2QvMTd1Yks0YW9ibTRHM2MyRkFE
cUVvWEF3U1diQ0lpcFh3enJHRkpZX2F0b1EvZWRpdCkgZm9yIG1vcmUgZGV0YWlscy4KKwogdGVt
cGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBU
cmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmVlU2hhcmVkKTsKIHByb3Rl
Y3RlZDoKICAgICBUcmVlU2hhcmVkKCkKICAgICAgICAgOiBtX3BhcmVudCgwKQorICAgICAgICAv
LyBBIG5ld2x5IGNyZWF0ZWQgTm9kZSBiZWNvbWVzIGEgbGlmZXRpbWUgb3duZXIsIGJlY2F1c2Ug
dGhpcyBOb2RlIGlzIHRoZSBvbmx5CisgICAgICAgIC8vIE5vZGUgaW4gdGhlIERPTSB0cmVlLgor
ICAgICAgICAsIG1fbGlmZXRpbWVPd25lcigxKQogICAgICAgICAsIG1fcmVmQ291bnQoMSkKICNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9hZG9wdGlvbklzUmVxdWlyZWQodHJ1ZSkKICNlbmRp
ZgogICAgIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJUcmVlU2hhcmVkKCkgJXBcbiIs
IHRoaXMpOwogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQo
aXNMaWZldGltZU93bmVyKCkpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kZWxldGlvbkhh
c0JlZ3VuID0gZmFsc2U7Ci0gICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFs
c2U7CiAjZW5kaWYKICAgICB9CiAKICAgICB+VHJlZVNoYXJlZCgpCiAgICAgeworICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIn5UcmVlU2hhcmVkKCkgJXBcbiIsIHRoaXMpOwogICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQoIW1fcmVmQ291bnQpOworICAg
ICAgICBBU1NFUlQoIXJlZkNvdW50KCkpOworICAgICAgICBBU1NFUlQoIWlzTGlmZXRpbWVPd25l
cigpKTsKICAgICAgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIEFTU0VS
VCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwogICAgIH0KQEAgLTYyLDQyICs3Nyw2NSBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NF
UlQoIW1fZGVsZXRpb25IYXNCZWd1bik7Ci0gICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0
UmVmRnVuY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKICAg
ICAgICAgKyttX3JlZkNvdW50OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInJlZigpICVw
IHJlZkNvdW50PSVkXG4iLCB0aGlzLCBtX3JlZkNvdW50KTsKICAgICB9CiAKICAgICB2b2lkIGRl
cmVmKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFT
U0VSVChtX3JlZkNvdW50ID49IDApOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1
bik7Ci0gICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgICAg
ICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKLSAgICAgICAgaWYgKC0tbV9yZWZDb3Vu
dCA8PSAwICYmICFtX3BhcmVudCkgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1faW5S
ZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+cmVtb3ZlZExhc3RSZWYoKTsKKyAgICAgICAgLS1tX3Jl
ZkNvdW50OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlcmVmKCkgJXAgcmVmQ291bnQ9
JWRcbiIsIHRoaXMsIG1fcmVmQ291bnQpOworICAgICAgICBpZiAobV9saWZldGltZU93bmVyID09
IDEgJiYgIW1fcmVmQ291bnQpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBET00gdHJlZSBoYXMg
YW5vdGhlciBOb2RlIHRoYXQgaGFzIDF+IHJlZi1jb3VudCwKKyAgICAgICAgICAgIC8vIHNlYXJj
aE5ld0xpZmV0aW1lT3duZXIoKSBkZWxlZ2F0ZXMgYSBsaWZldGltZSBvd25lciB0byB0aGUgTm9k
ZS4KKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSAoaS5lLiBhbGwgdGhlIE5vZGVzIGluIHRoZSBE
T00gdHJlZSBoYXZlIDAgcmVmLWNvdW50KSwKKyAgICAgICAgICAgIC8vIHNlYXJjaE5ld0xpZmV0
aW1lT3duZXIoKSBkZWxldGVzIGFsbCB0aGUgTm9kZXMuCisgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxOb2RlVHlwZSo+KHRoaXMpLT5zZWFyY2hOZXdMaWZldGltZU93bmVyKCk7CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBpbnQgcmVmQ291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fcmVmQ291bnQ7CisgICAgfQorCiAgICAgYm9vbCBoYXNPbmVSZWYoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgICAgICBBU1NFUlQoIW1f
aW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICAgICAgcmV0dXJuIG1fcmVmQ291bnQgPT0g
MTsKICAgICB9CiAKLSAgICBpbnQgcmVmQ291bnQoKSBjb25zdAorICAgIHZvaWQgc2V0TGlmZXRp
bWVPd25lcigpCiAgICAgewotICAgICAgICByZXR1cm4gbV9yZWZDb3VudDsKKyAgICAgICAgLy8g
QSBsaWZldGltZSBvd25lciBtdXN0IGhhdmUgMX4gcmVmLWNvdW50LCBiZWNhdXNlIHRoZSBsaWZl
dGltZSBvd25lcgorICAgICAgICAvLyBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBzZWFyY2hO
ZXdMaWZldGltZU93bmVyKCkgd2hlbiB0aGUgcmVmY291bnQKKyAgICAgICAgLy8gYmVjb21lcyAw
LgorICAgICAgICBBU1NFUlQocmVmQ291bnQoKSk7CisgICAgICAgIEFTU0VSVCghbV9kZWxldGlv
bkhhc0JlZ3VuKTsKKyAgICAgICAgbV9saWZldGltZU93bmVyID0gMTsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJzZXRMaWZldGltZU93bmVyKCkgJXBcbiIsIHRoaXMpOworICAgIH0KKwor
ICAgIHZvaWQgdW5zZXRMaWZldGltZU93bmVyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9k
ZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgbV9saWZldGltZU93bmVyID0gMDsKKyAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJ1bnNldExpZmV0aW1lT3duZXIoKSAlcFxuIiwgdGhpcyk7Cisg
ICAgfQorCisgICAgYm9vbCBpc0xpZmV0aW1lT3duZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fbGlmZXRpbWVPd25lcjsKICAgICB9CiAKICAgICB2b2lkIHNldFBhcmVudChQYXJlbnROb2Rl
VHlwZSogcGFyZW50KQogICAgIHsgCiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgICAgIG1fcGFyZW50ID0gcGFyZW50OyAKKyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CiAg
ICAgfQogCiAgICAgUGFyZW50Tm9kZVR5cGUqIHBhcmVudCgpIGNvbnN0CkBAIC0xMDgsNyArMTQ2
LDYgQEAgcHVibGljOgogCiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgbV9kZWxldGlvbkhhc0Jl
Z3VuOwotICAgIGJvb2wgbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb247CiAjZW5kaWYKIAogICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKQEAgLTEyMyw3ICsxNjAsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBQYXJl
bnROb2RlVHlwZSogbV9wYXJlbnQ7Ci0gICAgaW50IG1fcmVmQ291bnQ7CisgICAgdW5zaWduZWQg
bV9saWZldGltZU93bmVyIDogMTsKKyAgICB1bnNpZ25lZCBtX3JlZkNvdW50IDogMzE7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZDsKQEAgLTEzNyw3ICsx
NzUsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5
cGU+IGlubGluZSB2b2lkIGFkb3B0ZWQoVHJlZVNoYQogICAgIGlmICghb2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAgICAgQVNTRVJUKCFvYmplY3QtPm1fZGVsZXRpb25IYXNCZWd1bik7Ci0gICAg
QVNTRVJUKCFvYmplY3QtPm1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICBvYmplY3Qt
Pm1fYWRvcHRpb25Jc1JlcXVpcmVkID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAppbmRleCBjODBiMjU3ZGE0MTM5ODBiNGMyNzkyNGJmYmU1NGI0MjVlMDM4MGVmLi5mYTA3
M2Q0YjFmNzE0ZjQ1NTU3YWJkYjg2Y2UwNWUzN2M3Njc0MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCkBAIC02MSw2ICs2MSw3IEBAIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gU1ZHRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAKIFNW
R0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5TVkdF
bGVtZW50KCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICAgICBpZiAoIWhhc1NWR1JhcmVEYXRhKCkp
CiAgICAgICAgIEFTU0VSVCghU1ZHRWxlbWVudFJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRh
aW5zKHRoaXMpKTsKICAgICBlbHNlIHsKQEAgLTgwLDYgKzgxLDcgQEAgU1ZHRWxlbWVudDo6flNW
R0VsZW1lbnQoKQogICAgIH0KICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkt
PnJlbW92ZUFsbEFuaW1hdGlvbkVsZW1lbnRzRnJvbVRhcmdldCh0aGlzKTsKICAgICBkb2N1bWVu
dCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9y
VGFyZ2V0KHRoaXMpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnQoKSAlcCBh
ZnRlclxuIiwgdGhpcyk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0
eWxlQ2hhbmdlIGNoYW5nZSkKQEAgLTIyNiw2ICsyMjgsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6Om1h
cEluc3RhbmNlVG9FbGVtZW50KFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpCiAgICAgQVNT
RVJUKCFpbnN0YW5jZXMuY29udGFpbnMoaW5zdGFuY2UpKTsKIAogICAgIGluc3RhbmNlcy5hZGQo
aW5zdGFuY2UpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaW5zdGFuY2VzLmFkZChpbnN0YW5j
ZSkgJXAgaW5zdGFuY2U9JXBcbiIsIHRoaXMsIGluc3RhbmNlKTsKIH0KICAKIHZvaWQgU1ZHRWxl
bWVudDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2Up
CkBAIC0yMzcsNiArMjQwLDcgQEAgdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVJbnN0YW5jZU1hcHBp
bmcoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSkKICAgICBBU1NFUlQoaW5zdGFuY2VzLmNv
bnRhaW5zKGluc3RhbmNlKSk7CiAKICAgICBpbnN0YW5jZXMucmVtb3ZlKGluc3RhbmNlKTsKKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImluc3RhbmNlcy5yZW1vdmUoaW5zdGFuY2UpICVwIGluc3Rh
bmNlPSVwXG4iLCB0aGlzLCBpbnN0YW5jZSk7CiB9CiAKIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVu
dEluc3RhbmNlKj4mIFNWR0VsZW1lbnQ6Omluc3RhbmNlc0ZvckVsZW1lbnQoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAppbmRleCA5ZmUyYWNiZjAwYTVm
ZWNmNWYzNDVhNzY5ZDU0MWM3NTQ2MmZlYTE3Li4wMmRmNzA2MWQ4MWJkOGVhYjgzYzYzZmZhZTQ1
NjJjOGNmOTBjYTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElu
c3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNw
cApAQCAtNjIsMjQgKzYyLDM1IEBAIFNWR0VsZW1lbnRJbnN0YW5jZTo6U1ZHRWxlbWVudEluc3Rh
bmNlKFNWR1VzZUVsZW1lbnQqIGNvcnJlc3BvbmRpbmdVc2VFbGVtZW50LCBTCiAKIFNWR0VsZW1l
bnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSgpCiB7Ci0gICAgLy8gQ2FsbCBkZXRhY2gg
YmVjYXVzZSB3ZSBtYXkgYmUgZGVsZXRlZCBkaXJlY3RseSBpZiB3ZSBhcmUgYSBjaGlsZCBvZiBh
IGRldGFjaGVkIGluc3RhbmNlLgotICAgIGRldGFjaCgpOwotCisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJ+U1ZHRWxlbWVudEluc3RhbmNlKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBBU1NF
UlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgaW5zdGFuY2VDb3Vu
dGVyLmRlY3JlbWVudCgpOwogI2VuZGlmCiAKKyAgICBpZiAobV9lbGVtZW50LT5pbnN0YW5jZXNG
b3JFbGVtZW50KCkuY29udGFpbnModGhpcykpCisgICAgICAgIG1fZWxlbWVudC0+cmVtb3ZlSW5z
dGFuY2VNYXBwaW5nKHRoaXMpOworCisgICAgbV9zaGFkb3dUcmVlRWxlbWVudCA9IDA7CisgICAg
bV9kaXJlY3RVc2VFbGVtZW50ID0gMDsKKyAgICBtX2NvcnJlc3BvbmRpbmdVc2VFbGVtZW50ID0g
MDsKICAgICBtX2VsZW1lbnQgPSAwOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1l
bnRJbnN0YW5jZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAotLy8gSXQncyBpbXBvcnRhbnQg
bm90IHRvIGlubGluZSByZW1vdmVkTGFzdFJlZiwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGlu
bGluZSB0aGUgY29kZSB0bworLy8gSXQncyBpbXBvcnRhbnQgbm90IHRvIGlubGluZSBzZWFyY2hO
ZXdMaWZldGltZU93bmVyLCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gaW5saW5lIHRoZSBjb2Rl
IHRvCiAvLyBkZWxldGUgYW4gU1ZHRWxlbWVudEluc3RhbmNlIGF0IGVhY2ggZGVyZWYgY2FsbCBz
aXRlLgotdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKCkKK3ZvaWQgU1ZH
RWxlbWVudEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVyKCkKIHsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKLSNlbmRpZgotICAgIGRlbGV0ZSB0
aGlzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVudEluc3RhbmNlOjpzZWFyY2hO
ZXdMaWZldGltZU93bmVyKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBBU1NFUlQoIXJlZkNv
dW50KCkpOworICAgIHVuc2V0TGlmZXRpbWVPd25lcigpOworICAgIC8vIEF0IHRoaXMgcG9pbnQg
aXQgaXMgZ3VhcmFudGVlZCB0aGVyZSBpcyBubyBsaWZldGltZSBvd25lciBpbiB0aGUgRE9NIHRy
ZWUuCisKKyAgICAvLyBJZiBhbGwgdGhlIE5vZGVzIGluIHRoZSBET00gdHJlZSBoYXZlIDAgcmVm
LWNvdW50cywgYWxsIHRoZSBOb2RlcyBhcmUgZGVsZXRlZC4KKyAgICAvLyBPdGhlcndpc2UsIGFs
bCB0aGUgTm9kZXMgYXJlIGtlcHQgYWxpdmUuCisgICAgZ2NUcmVlKHRoaXMpOworICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiU1ZHRWxlbWVudEluc3RhbmNlOjpzZWFyY2hOZXdMaWZldGltZU93bmVy
KCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0
YWNoKCkKQEAgLTk3LDcgKzEwOCw3IEBAIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpkZXRhY2go
KQogICAgIG1fZGlyZWN0VXNlRWxlbWVudCA9IDA7CiAgICAgbV9jb3JyZXNwb25kaW5nVXNlRWxl
bWVudCA9IDA7CiAKLSAgICByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyPFNWR0VsZW1lbnRJ
bnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPih0aGlzKTsKKyAgICByZW1vdmVDaGlsZHJlbklu
Q29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5jZSwgU1ZHRWxlbWVudEluc3RhbmNlPih0aGlzKTsK
IH0KIAogUGFzc1JlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2VMaXN0PiBTVkdFbGVtZW50SW5zdGFu
Y2U6OmNoaWxkTm9kZXMoKQpAQCAtMTE0LDYgKzEyNSw3IEBAIHZvaWQgU1ZHRWxlbWVudEluc3Rh
bmNlOjpzZXRTaGFkb3dUcmVlRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQogdm9pZCBTVkdF
bGVtZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKFBhc3NSZWZQdHI8U1ZHRWxlbWVudEluc3RhbmNl
PiBjaGlsZCkKIHsKICAgICBhcHBlbmRDaGlsZFRvQ29udGFpbmVyPFNWR0VsZW1lbnRJbnN0YW5j
ZSwgU1ZHRWxlbWVudEluc3RhbmNlPihjaGlsZC5nZXQoKSwgdGhpcyk7CisgICAgY2hpbGQtPnVu
c2V0TGlmZXRpbWVPd25lcigpOwogfQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxp
ZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudChTVkdFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCmluZGV4IDFjODljN2NjZDFkMjg5NDI0NGVmYzY4
ZjAwOGI1M2E3MzY4MzJkYjguLjljODBjYmI1N2ZmZDg5NmYyZTAxYmI0NzM2MDQzM2U3YjViYjFh
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKQEAgLTc0LDYgKzc0
LDggQEAgcHVibGljOgogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogZmlyc3RDaGlsZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogbGFzdENo
aWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KIAorICAgIGJvb2wgaXNDb250YWlu
ZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgRG9jdW1lbnQqIG93bmVyRG9j
dW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnQgPyBtX2VsZW1lbnQtPm93bmVyRG9jdW1l
bnQoKSA6IDA7IH0KIAogICAgIGNsYXNzIEludmFsaWRhdGlvbkd1YXJkIHsKQEAgLTE1MCw3ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFRyZWVTaGFyZWQ8U1ZHRWxlbWVudEluc3RhbmNl
LCBTVkdFbGVtZW50SW5zdGFuY2U+OjpzZXRQYXJlbnQ7CiAKICAgICBTVkdFbGVtZW50SW5zdGFu
Y2UoU1ZHVXNlRWxlbWVudCosIFNWR1VzZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+
IG9yaWdpbmFsRWxlbWVudCk7Ci0gICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOworICAgIHZvaWQg
c2VhcmNoTmV3TGlmZXRpbWVPd25lcigpOwogCiAgICAgdmlydHVhbCBOb2RlKiB0b05vZGUoKSB7
IHJldHVybiBzaGFkb3dUcmVlRWxlbWVudCgpOyB9CiAKQEAgLTE1OCwxMyArMTYwLDEyIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRTaGFkb3dUcmVlRWxlbWVudChTVkdFbGVtZW50Kik7CiAKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+
Ci0gICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hp
bGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQg
YXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29u
dGFpbmVyKik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNO
b2RlQ29udGFpbmVyPgotICAgIGZyaWVuZCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWlu
ZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7Ci0KKyAgICBmcmllbmQgdm9pZCBQ
cml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVhZCwg
R2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOwogICAgIHRlbXBsYXRl
PGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBmcmll
bmQgdm9pZCBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2Rl
KiYgaGVhZCwgR2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFp
bmVyKTsKKyAgICBmcmllbmQgdm9pZCByZW1vdmVDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNO
b2RlQ29udGFpbmVyKik7CisgICAgZnJpZW5kIHZvaWQgZ2NUcmVlKFNWR0VsZW1lbnRJbnN0YW5j
ZSopOwogCiAgICAgYm9vbCBoYXNDaGlsZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENo
aWxkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyIGIv
U291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKaW5kZXggMjFjYTJmZjZjZTNhYmJlN2Nl
NzE0NjE0NTNkYzYzNWUyOWUzNmVmMC4uNjZhZGJkNmIzMGY3MmVmYmMwMTUxMTcxMWI5Y2Y4NTdi
ZTkxYjk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKKysr
IGIvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIKQEAgLTk2Myw2ICs5NjMsNyBAQCBf
X1pOM1dURjlSZXRhaW5QdHJJMTJOU1VSTFJlcXVlc3RFQzJFUFMxXwogX19aTjdXZWJDb3JlMTVS
ZXNvdXJjZVJlcXVlc3RhU0VSS1MwXwogX19aTjdXZWJDb3JlMTlSZXNvdXJjZVJlcXVlc3RCYXNl
YVNFUktTMF8KIF9fWk43V2ViQ29yZTRLVVJMYVNFUktTMF8KK19fWk43V2ViQ29yZTROb2RlMTRz
ZWFyY2hOZXdMaWZldGltZU93bmVyRXYKIF9fWk4zV1RGMjJIYXNoVGFibGVDb25zdEl0ZXJhdG9y
SU5TXzEyQXRvbWljU3RyaW5nRVN0NHBhaXJJUzFfTlNfNlN0cmluZ0VFTlNfMThQYWlyRmlyc3RF
eHRyYWN0b3JJUzRfRUVOU18xNUNhc2VGb2xkaW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5T
XzEwSGFzaFRyYWl0c0lTMV9FRU5TOV9JUzNfRUVFRVNBX0UxNnNraXBFbXB0eUJ1Y2tldHNFdgog
X19aTjNXVEY2VmVjdG9ySU5TXzZTdHJpbmdFTG0wRUVhU0VSS1MyXwogX19aTlN0Nl9fY29weUlM
YjBFU3QyNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRTRjb3B5SVBLTjNXVEY2U3RyaW5nRVBT
NF9FRVQwX1RfUzlfUzhfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZGVhMzZlZDkwMjlhZWIy
MmQ1NWFjNzMxNzdhOWZjZTRlMjg1OTQ5Mi4uZGMzN2IxMWI5ZmQ4NjAxOGIwMWIzZTBkMTRiNTIz
MjczMGY0NDBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisr
KyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjA0LDcgKzIwNCw2IEBAIEVY
UE9SVFMKICAgICAgICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VA
V2ViQ29yZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3Zl
QFN0cmluZ0BXVEZAQFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNv
cmVAQEFBRVhYWgogICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lA
WgogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdl
YkNvcmVAQDBIQQogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9i
amVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKQEAgLTI2OCw2
ICsyNjcsNyBAQCBFWFBPUlRTCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNv
cmVAQFFCRT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2li
bGVARG9jdW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKICAgICAgICAgP2lzQWN0aXZlQEluc2VydGlv
blBvaW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP3NlYXJjaE5ld0xpZmV0aW1lT3duZXJA
Tm9kZUBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlv
bkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFu
aW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3Vu
ZGluZ0hhY2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCmluZGV4IDFhNDdkMmYzYTUwNGViNTY0YjA4N2VhOWZhZjBhYzRjNjljOTI3OWUu
LjhhZTI0YjcxYWJhYjNkNDE0M2I0NjlmYzU4MGEwODIyYWUxNThjYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTIwMSwxMiArMjAxLDEyIEBAIEVYUE9SVFMKICAgICAg
ICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRl
eHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdU
RkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZA
QFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgog
ICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAgICA/
c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQog
ICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3Jl
QEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3NjcmlwdE5hbWVU
b0NvZGVAV2ViQ29yZUBAWUE/QVc0VVNjcmlwdENvZGVAQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAg
ICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVu
dEAyQEFCVkludFJlY3RAMkBAWgorICAgICAgICA/c2VhcmNoTmV3TGlmZXRpbWVPd25lckBOb2Rl
QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAU2V0dGluZ3NA
V2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAg
ICAgID9zZXREZXZpY2VTY2FsZUZhY3RvckBQYWdlQFdlYkNvcmVAQFFBRVhNQFoKICAgICAgICAg
P3NldERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlNDQEBIQFoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyCmluZGV4IDgyZmZjMmU5YTRjNDMzYmM4ODg2NGFmNTNiMzllZmMzMjA4
ZmQwMDAuLjRmMjdjYjIxMzNhMTEyODJjODk3ZmRhNDkwYzEzOGUzNjhlODNmZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgpAQCAtMTQwLDcgKzE0MCw3IEBAIF9aTjdXZWJDb3JlMjRJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24xOGRpZENhbmNlbEZyYW1lSW1wbEVQTlNfMTlJbnN0cnVtZW50aW5n
QWdlCiBfWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyOHNldFNjcm9sbE9mZnNldEZyb21JbnRl
cm5hbHNFUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9s
bGJhcnNTdXBwcmVzc2VkRWJiOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRl
c1Njcm9sbGluZ0ViOwotX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdjsKK19aTjdX
ZWJDb3JlNE5vZGUxNHNlYXJjaE5ld0xpZmV0aW1lT3duZXJFdjsKIF9aTjdXZWJDb3JlOFNldHRp
bmdzMThzZXRGaXhlZEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENv
ZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZGb250RmFtaWx5RVJLTjNXVEYxMkF0
b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNp
dmVGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGU2MTJhNmYzOGU5Nzc0YTU2NTdhZDc5YjIyMjA5Y2Q1NjZlMjllYTMuLmM5MDUwMzlkNWZmZTFm
YTg1MTgyODI0ZjM4MjlkNmEzYmIyOWNlZmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0w
Ny0zMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYg
YSBOb2RlIFggaGFzIDF+IHJlZi1jb3VudCwgYWxsIHRoZSBOb2RlcyBpbiB0aGUgc2FtZSB0cmVl
IHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGdjLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwgdGVzdHMgdGhlIGZvbGxvd2lu
Z3M6CisKKyAgICAgICAgICAtIElmIGEgTm9kZSBYIGlzIHJlYWNoYWJsZSBmcm9tIGEgbm9kZSBZ
IHRoYXQgaGFzIDF+IHJlZmVyZW5jZSBjb3VudCwKKyAgICAgICAgICAgIHRoZSBOb2RlIFggaXMg
bm90IHJlY2xhaW1lZC4KKyAgICAgICAgICAtIE90aGVyd2lzZSwgdGhlIG5vZGUgWCBpcyByZWNs
YWltZWQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dDogVXBkYXRlZCB0
aGUgdGVzdCByZXN1bHQuCisgICAgICAgICogZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQ6IERp
dHRvLgorICAgICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbDog
QWRkZWQuCisKIDIwMTItMDctMzEgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBVbnNraXAgcGFzc2luZyB0
ZXN0cyBhbmQgYWRkIG5ldyBleHBlY3RlZCBmaWxlcy4gKGJ1Zzg1MjAzKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9nYy0zLWV4cGVjdGVkLnR4dAppbmRleCA2MGQzYTE3MGYyOWI2MzM0ODcxYzgzOTZkZTBh
YWJiYjc2YjBjMTk2Li45MmQ0MTIxN2VmM2FlMzkwZjVhYTIwMGMyZWU5ZWZkMTVhNjEyNmY4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dApAQCAtNCw1ICs0LDYgQEAgVGhl
IG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBi
eSB0aGVtc2VsdmVzOiAicmVwbGEKIAogcmVwbGFjZW1lbnQgY29udGVudAogQgorcGFyZW50IG5v
ZGUgZXhpc3RzCiBjaGlsZCBub2RlIGV4aXN0cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhw
ZWN0ZWQudHh0CmluZGV4IDE4YzgzNDg4YjBjZjZmMDQwMWZmMzc5N2NmMTY2MzlkYTU2M2RhNmUu
LjczODA5Y2RhODU0MzQ4NzljYjkyNjc2Yjk2Yjc1ZDE5ZjAzMTdiMGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CkBAIC00LDQgKzQsNSBAQCBUaGUgb3V0cHV0IHNob3Vs
ZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6
ICJyZXBsYQogCiByZXBsYWNlbWVudCBjb250ZW50CiBCCitECiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jODNlZWRlMWI0MTNkNjQ3ZWU3ODE2ZTY1Y2FiZjAwOTZjN2E4NTQwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjAyIEBACis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEt
Y2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVu
dE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBp
cyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYx
LWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJl
bnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQg
aXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09
PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBh
cmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5k
IGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBh
cmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRp
dlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJl
IHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYy
LWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJl
bnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQg
aXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFy
ZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlk
IGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9
PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5w
YXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQu
aWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFu
ZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5w
YXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQu
aWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBk
aXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFy
ZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFy
ZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlk
IGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBh
cmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlgg
PT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBh
bmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwg
ZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBh
cmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBh
cmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGls
ZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5w
YXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQu
aWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZY
ID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnRO
b2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMg
ImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2
LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGls
ZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgg
YW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2
LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGls
ZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgs
IGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUg
YXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGls
ZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5w
YXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQu
aWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFT
UyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlz
ICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hp
bGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2
WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50
Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlz
ICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERp
di5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hp
bGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZY
IGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERp
di5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hp
bGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZY
LCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVl
IGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFT
UyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlz
ICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hp
bGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNo
aWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnRO
b2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMg
ImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2
LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGls
ZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRp
dlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVu
dE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBp
cyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2
WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2
WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJl
ZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRv
bS10cmVlLWxpZmV0aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgwMDNkNTk3ZmU4NjU3NjJiYjVmMDY5
ODE4ZjNmMTJkODY1YTJlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgdGVzdENh
c2VzID0gW1siZGl2MCIsICJkaXYxIiwgImRpdjIiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYw
IiwgImRpdjIiLCAiZGl2MSJdLAorICAgICAgICAgICAgICAgICBbImRpdjEiLCAiZGl2MCIsICJk
aXYyIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MSIsICJkaXYyIiwgImRpdjAiXSwKKyAgICAg
ICAgICAgICAgICAgWyJkaXYyIiwgImRpdjAiLCAiZGl2MSJdLAorICAgICAgICAgICAgICAgICBb
ImRpdjIiLCAiZGl2MSIsICJkaXYwIl1dOworCit2YXIgcm9vdERpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290RGl2KTsKK3Zh
ciB0ZXN0SHRtbCA9ICI8ZGl2IGlkPSdkaXYwLXBhcmVudCc+PGRpdiBpZD0nZGl2MCc+PGRpdiBp
ZD0nZGl2MC1jaGlsZCc+PC9kaXY+PC9kaXY+PGRpdiBpZD0nZGl2MS1wYXJlbnQnPjxkaXYgaWQ9
J2RpdjEnPjxkaXYgaWQ9J2RpdjEtY2hpbGQnPjwvZGl2PjwvZGl2PjxkaXYgaWQ9J2RpdjItcGFy
ZW50Jz48ZGl2IGlkPSdkaXYyJz48ZGl2IGlkPSdkaXYyLWNoaWxkJz48L2Rpdj48L2Rpdj48L2Rp
dj48L2Rpdj48L2Rpdj4iOworCit0ZXN0Q2FzZXMuZm9yRWFjaChmdW5jdGlvbiAodGVzdCkgewor
ICAgIHZhciBkaXZYLCBkaXZZLCBkaXZaOworICAgIGRlYnVnKCI9PT0gSW5pdGlhbCBzdGF0ZSA9
PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRl
c3RbMl0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAg
ICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJl
bnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBj
bGVhcmluZyBpbm5lckhUTUwgPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRt
bDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2
WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOwor
ICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAgICBjaGVja1Bh
cmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGls
ZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwgYW5kIGRpdlggPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRt
bDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2
WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOwor
ICAgIGRpdlggPSBudWxsOworICAgIGdjKCk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZl
KGRpdlksIHRlc3RbMV0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0
WzJdKTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFu
ZCBkaXZZID09PSIpOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2
WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGVzdFsyXSk7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBkaXZYID0g
bnVsbDsKKyAgICBkaXZZID0gbnVsbDsKKyAgICBnYygpOworICAgIGNoZWNrUGFyZW50QW5kQ2hp
bGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PSIpOworICAgIHJvb3REaXYuaW5uZXJI
VE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3Rb
MF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBk
aXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIHByZXZOb2RlcyA9IHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZM
aXZlTm9kZXMoKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxs
OworICAgIGRpdlkgPSBudWxsOworICAgIGRpdlogPSBudWxsOworICAgIGdjKCk7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gSWYgYWxsIHRoZSBOb2RlIG9iamVjdHMg
aW4gdGVzdEh0bWwgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLAorICAgICAgICAvLyBhdCBs
ZWFzdCA5IDxkaXY+cyBvYmplY3RzIHdpbGwgYmUgcmVtb3ZlZC4KKyAgICAgICAgLy8gKEFjdHVh
bGx5LCBzaW5jZSB0ZXN0SHRtbCByZW5kZXJpbmcgcmVxdWlyZXMgbW9yZSB0aGFuIDkgTm9kZSBv
YmplY3RzLikKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMo
KSA8PSBwcmV2Tm9kZXMgLSA5KQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIDxkaXY+IG9i
amVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuIik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIjxkaXY+IG9iamVjdHMgaW4gYSBET00g
dHJlZSBhcmUgbm90IGRlc3RydWN0ZWQuIik7CisgICAgfQorfSk7CisKK2Z1bmN0aW9uIGNoZWNr
UGFyZW50QW5kQ2hpbGRBbGl2ZShkaXYsIG5hbWUpIHsKKyAgICBnbG9iYWxEaXYgPSBkaXY7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYuaWQnLCBuYW1lKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5wYXJlbnROb2RlLmlkJywgbmFtZSArICItcGFy
ZW50Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCcsIG5hbWUgKyAiLWNoaWxkIik7CisgICAgZ2xvYmFsRGl2ID0gbnVsbDsKKyAgICBnYygpOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDdiNDkxNjRk
YTdmZjM0MzBkZWQwM2U5NWI3ZTBiODQyY2NmZDMzZmIuLmI2ZDk4MzA1ZjBiMGZiMDg1YWY0MDEx
NjQ2Nzk1ODBmMmRhYWQyNjcgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNy0zMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFggaGFzIDF+IHJlZi1jb3VudCwgYWxsIHRo
ZSBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN5bWJvbCBjaGFuZ2VzLgorCisg
ICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wNy0zMSAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQZXJmLW8tbWF0aWM6
IGRhc2hib2FyZCBpbWFnZXMgYXJlIG5vdCBnZW5lcmF0ZWQgcHJvcGVybHkgZnJvbSBpbmNyZW1l
bnRhbGx5IHVwZGF0ZWQgSlNPTgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160895</attachid>
            <date>2012-08-27 21:40:55 -0700</date>
            <delta_ts>2012-09-03 19:02:13 -0700</delta_ts>
            <desc>Simplified the algorithm. Fixed crashes. Fixed memory leaks. But the perf regression of Dromaeo/dom-modify is still unacceptable. I&apos;m working on the optimization.</desc>
            <filename>bug-88834-20120828134046.patch</filename>
            <type>text/plain</type>
            <size>73502</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVlMDEzZWFkMDkzOGM4
YTQxZTc3NmRmZjExMjdjOTAxZGU2ZTJiNi4uMzI3OGJkODk0YTVlYzhiNDBlZGQzNDg4NTgxNmM3
OWM5M2MyNjk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2MiBAQAorMjAxMi0wOC0yOCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgTm9kZSBYIGlz
IHJlZmVyZW5jZWQgYnkgYSB3cmFwcGVyIG9iamVjdCwgYWxsIE5vZGVzIGluIHRoZSBzYW1lIHRy
ZWUgc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1JlZmVyZW5jZXNdCisgICAgICAgIEEgZGVzaWduIGRvY3VtZW50IDE6
IGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3JnL2RvY3VtZW50L2QvMXVZSHBx
N3U1U3NsajU0VWd6WGpBN3BZUjUzWGppZHBCY3JDYS1uZU9HUXMvZWRpdAorICAgICAgICBBIGRl
c2lnbiBkb2N1bWVudCAyOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vZG9j
dW1lbnQvZC8xN3ViSzRhb2JtNEczYzJGQURxRW9YQXdTV2JDSWlwWHd6ckdGSllfYXRvUS9lZGl0
CisgICAgICAgIEEgd2Via2l0LWRldkAgdGhyZWFkOiBodHRwOi8vbWFya21haWwub3JnL3RocmVh
ZC9rcXZvdGo1aWg0ZjRtdzRtCisKKyAgICAgICAgW092ZXJ2aWV3XQorICAgICAgICBDdXJyZW50
bHkgdGhlIGxpZmV0aW1lIHNlbWFudGljcyBvZiBET00gTm9kZXMgaXMgdW5wcmVkaWN0YWJsZSBm
cm9tIHRoZSBwZXJzcGVjdGl2ZQorICAgICAgICBvZiBwcm9ncmFtbWVycy4gRm9yIGV4YW1wbGUs
IGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKworICAgICAgICAgIHAgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChwKTsKKyAgICAgICAgICBwLmlubmVySFRNTCA9JzxkaXY+PHNwYW4gaWQ9InNwYW4iPjxicj48
L3NwYW4+PC9kaXY+JzsKKyAgICAgICAgICBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNwYW4iKTsKKyAgICAgICAgICBwLmlubmVySFRNTCA9ICIiOworICAgICAgICAgIGFsZXJ0KHNw
YW4pOyAgLy8gPHNwYW4+CisgICAgICAgICAgYWxlcnQoc3Bhbi5wYXJlbnROb2RlKTsgIC8vID8/
PworICAgICAgICAgIGFsZXJ0KHNwYW4uZmlyc3RDaGlsZCk7ICAvLyA/Pz8KKworICAgICAgICBU
aGUgY3VycmVudCBXZWJLaXQgcmV0dXJucyBudWxsIGZvciBzcGFuLnBhcmVudE5vZGUgKGkuZS4g
PGRpdj4gaXMgYWxyZWFkeSByZWNsYWltZWQpCisgICAgICAgIGFuZCA8YnI+IGZvciBzcGFuLmZp
cnN0Q2hpbGQuCisKKyAgICAgICAgV2Ugd2FudCB0byBjaGFuZ2UgdGhlIGJlaGF2aW9yIHNvIHRo
YXQgc3Bhbi5wYXJlbnROb2RlIHJldHVybnMgPGRpdj4gYW5kCisgICAgICAgIHNwYW4uZmlyc3RD
aGlsZCByZXR1cm5zIDxicj4uIEFjY3VyYXRlbHkgc3BlYWtpbmcsIHdlIHdhbnQgdG8gZ3VhcmFu
dGVlIHRoZQorICAgICAgICBmb2xsb3dpbmcgbGlmZXRpbWUgc2VtYW50aWNzOgorCisgICAgICAg
ICAgLSBJZiBOb2RlIFggaXMgcmVmZXJlbmNlZCBieSBhIHdyYXBwZXIgb2JqZWN0LCBhbGwgTm9k
ZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgICAgIHRyZWUgYXJlIGtlcHQgYWxpdmUuCisKKyAgICAg
ICAgW0JlbmVmaXRzXQorICAgICAgICBUaGUgZmlyc3QgYmVuZWZpdCBpcyB0aGF0IHRoZSBuZXcg
bGlmZXRpbWUgc2VtYW50aWNzIGlzIG1vcmUgcHJlZGljdGFibGUgYW5kCisgICAgICAgIHVuZGVy
c3RhbmRhYmxlIHRvIEphdmFTY3JpcHQgcHJvZ3JhbW1lcnMsIGFzIGRlc2NyaWJlZCBhYm92ZS4K
KworICAgICAgICBUaGUgc2Vjb25kIGJlbmVmaXQgaXMgcGVyZm9ybWFuY2UuIFRoZSBjdXJyZW50
IFRyZWVTaGFyZWQgYWxnb3JpdGhtIGlzIE8oTikKKyAgICAgICAgaW4gbW9zdCBjYXNlcyBidXQg
TyhOXjIpIGluIHRoZSB3b3JzdCBjYXNlLiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIG5ldyBhbGdv
cml0aG0KKyAgICAgICAgaXMgYWx3YXlzIE8oTikuIEluIG90aGVyIHdvcmRzLCB0aGUgbmV3IGFs
Z29yaXRobSBub3Qgb25seSBhY2NvbXBsaXNoZXMgdGhlIG5ldworICAgICAgICBsaWZldGltZSBz
ZW1hbnRpY3MgYnV0IGFsc28gcGVyZm9ybXMgYmV0dGVyIHRoYW4gdGhlIGN1cnJlbnQgVHJlZVNo
YXJlZCBhbGdvcml0aG0KKyAgICAgICAgKGluIHRlcm1zIG9mIHRpbWUgY29tcGxleGl0eSkuCisK
KyAgICAgICAgVGhlIHRoaXJkIGJlbmVmaXQgaXMgbW9yZSBlZmZpY2llbnQgVjgncyBHQy4gVjgg
aW1wbGVtZW50cyBhIGdlbmVyYXRpb25hbCBHQworICAgICAgICBidXQgY2Fubm90IHJlY2xhaW0g
RE9NIG9iamVjdHMgaW4gdGhlIG1pbm9yIEdDLiBBbGwgRE9NIHdyYXBwZXIgb2JqZWN0cyBoYXZl
CisgICAgICAgIHRvIGJlIHByb21vdGVkIHRvIHRoZSBvbGQgc3BhY2UgYW5kIHJlY2xhaW1lZCBi
eSB0aGUgbWFqb3IgR0MuIFdlIGFyZSBwbGFubmluZworICAgICAgICB0byByZWRlc2lnbiBWOCdz
IEdDIHNvIHRoYXQgaXQgY2FuIHJlY2xhaW0gRE9NIG9iamVjdHMgaW4gdGhlIG1pbm9yIEdDLAor
ICAgICAgICB3aGljaCByZXF1aXJlcyB0aGUgbmV3IGxpZmV0aW1lIHNlbWFudGljcyBvZiBET00g
bm9kZXMuIEZvciBtb3JlIGRldGFpbHMKKyAgICAgICAgcGxlYXNlIHNlZSBodHRwczovL2RvY3Mu
Z29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vZG9jdW1lbnQvZC8xS2k4V3JHSUhpcElqeno1cmwzU0c3
U04tdWxIOUpnYmNRQU9BNEphLWhYcy9lZGl0CisKKyAgICAgICAgW1BlcmZvcm1hbmNlIHJlc3Vs
dHNdCisgICAgICAgIFRoZSBmb2xsb3dpbmcgcmVzdWx0cyBhcmUgdGhlIGF2ZXJhbmdlIG9mIGZv
dXIgcnVuLXBlcmYtdGVzdHM6CisKKyAgICAgICAgICBEcm9tYWVvL2RvbS1hdHRyICAgICAgICA2
NTA4LjkgcnVucy9zID0+ICA2NTIwLjMgcnVucy9zICAgKCsgMC4wMSUpCisgICAgICAgICAgRHJv
bWFlby9kb20tbW9kaWZ5ICAgICAgNDIyMC41IHJ1bnMvcyA9PiAgMzcwNy41IHJ1bnMvcyAgICgt
MTIuMjYlKQorICAgICAgICAgIERyb21hZW8vZG9tLXF1ZXJ5ICAgICA4NTM1MTcuOCBydW5zL3Mg
PT4gODY3MDExLjMgcnVucy9zICAoKyAxLjU4JSkKKyAgICAgICAgICBEcm9tYWVvL2RvbS10cmF2
ZXJzZSAgICAyNDk1LjUgcnVucy9zID0+ICAyNTAyLjYgcnVucy9zICAgKCsgMC4wMiUpCisKKyAg
ICAgICAgSSBjb25maXJtZWQgdGhhdCB0aGUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBvZiBEcm9t
YWVvL2RvbS1tb2RpZnkgaXMKKyAgICAgICAgdGhlIG92ZXJoZWFkIG9mIGNoZWNrSWZMaWZldGlt
ZU93bmVyKG5vZGUpIGluIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KCkuCisgICAg
ICAgIEFzIGZhciBhcyBJIGV4cGVyaW1lbnRlZCwgaXQgaXMgZGlmZmljdWx0IHRvIGtpbGwgdGhl
IDQuNjclIG92ZXJoZWFkLgorICAgICAgICBIb3dldmVyLCBJIGZvdW5kIHRoYXQgd2UgY2FuIGRy
YW1hdGljYWxseSBvcHRpbWl6ZSBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllciBhbmQKKyAgICAg
ICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyIGJ5IHJld3JpdGluZyB0aGVtIGluIGFuIGl0ZXJh
dGl2ZSBtYW5uZXIsCisgICAgICAgIHdoaWNoIHdpbGwgY29tcGxldGVseSBvZmZzZXQgdGhlIDQu
NjclIG92ZXJoZWFkLgorICAgICAgICBJIHdpbGwgbGFuZCB0aGUgb3B0aW1pemF0aW9uIHBhdGNo
IGJlZm9yZSBsYW5kaW5nIHRoaXMgcGF0Y2guCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vZ2Mt
ZG9tLXRyZWUtbGlmZXRpbWUuaHRtbAorICAgICAgICAgICAgICBmYXN0L2RvbS9pbmxpbmUtZXZl
bnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0bWwKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWls
LWxlYWstZWxlbWVudC1pbnN0YW5jZXMtbm9CYXNlVmFsUmVmLnN2ZworICAgICAgICAgICAgICBh
bmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50LWluc3RhbmNlcy5zdmcKKyAgICAgICAgICAgICAg
YW5pbWF0aW9ucy9zbWlsLWxlYWstZHluYW1pY2FsbHktYWRkZWQtZWxlbWVudC1pbnN0YW5jZXMu
c3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnRzLnN2ZworICAg
ICAgICAgICAgICBhbmltYXRpb25zL3N2Z2xlbmd0aC1lbGVtZW50LXJlbW92ZWQtY3Jhc2guc3Zn
CisgICAgICAgICAgICAgIENvbmZpcm0gdGhhdCBhbGwgdGhlIG90aGVyIGV4aXN0aW5nIHRlc3Rz
IGRvIG5vdCBjcmFzaC4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdl
YkNvcmUub3JkZXI6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERP
TVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURPTU5vZGUpOgorICAgICAgICAqIGRvbS9B
dHRyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF0dHI6OmNyZWF0ZVRleHRDaGlsZCk6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFy
c2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
Q2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250
YWluZXJOb2RlKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2Nl
bmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJ
bnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50
UmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFs
Tm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rl
SW5zZXJ0aW9uTm90aWZpZXI6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKToKKyAgICAgICAg
KENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9k
ZVJlbW92YWxOb3RpZmllcjo6Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKToKKyAgICAgICAgKENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzUmVhY2hhYmxlRnJvbVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
QWxsQ2hpbGRyZW5JbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlOjpOb2Rl
UmVtb3ZhbERpc3BhdGNoZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGU6
OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUlu
c2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90
aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNo
aWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeSk6CisgICAgICAg
IChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNrSWZMaWZldGltZU93bmVy
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpndWFyZERlcmVmKToKKyAgICAgICAgKERvY3VtZW50KToKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1
cyk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
cmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpnY1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OlRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNoYXJlZDo6flRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6
cmVmKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJl
ZDo6d3JhcHBlclJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp3cmFwcGVyRGVyZWYpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNoYXJlZDo6cmVmQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJl
ZDo6d3JhcHBlclJlZkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6Omhhc09u
ZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpzZXRMaWZldGltZU93bmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnVuc2V0TGlmZXRpbWVPd25lcik6CisgICAg
ICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjppc0xpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNoYXJlZDo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFkb3B0ZWQp
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6On5TVkdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0
UmVmKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudElu
c3RhbmNlOjpnY1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjph
cHBlbmRDaGlsZCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAg
ICAoU1ZHRWxlbWVudEluc3RhbmNlKToKKwogMjAxMi0wOC0yNiAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHBhcmVudCBwb2ludGVyIGZyb20gU3R5
bGVTaGVldENvbnRlbnRzIGFuZCBTdHlsZVJ1bGVJbXBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNjNkMjg3
ZjMzMDRlMmFjOWVlNDE3OWEzNTkzOTljNDYwNWY2YmEwLi45ZGJiMTVlOGZmNGVhMzBkNTc1YThh
NWNiMWE0ZmIwYzNjNzA5MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgt
MjcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIE5v
ZGUgWCBpcyByZWZlcmVuY2VkIGJ5IGEgd3JhcHBlciBvYmplY3QsIGFsbCBOb2RlcyBpbiB0aGUg
c2FtZSB0cmVlIHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFN5bWJvbCBjaGFuZ2VzLgorCisgICAgICAgICogbWFjL1dl
YktpdDIub3JkZXI6CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wOC0yNSAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dh
bGF0YWdlQGdtYWlsLmNvbT4KIAogICAgICAgICBXaW5DYWlybyBCdWlsZCBCcm9rZW4gZHVlIHRv
IG1pc3NpbmcgZXhwb3J0IGRlZmluaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGRkNjc3
ZmQ4MWYzNThiZjgzN2E4MTFjNTgzYWE2MmZjMDZhOTQ2NDguLjBjYzQyMmVkYWYyNjkyZGUzNDU2
MzNlZTc1YjAzZTI2MTFkOGU0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02NTEsOCArNjUx
LDggQEAgX19aTjdXZWJDb3JlNEtVUkxDMUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04zV1RG
NlN0cmluZ0UKIF9fWk43V2ViQ29yZTRLVVJMQzFFUDVOU1VSTAogX19aTjdXZWJDb3JlNEtVUkxD
MUVQSzdfX0NGVVJMCiBfX1pON1dlYkNvcmU0S1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCitf
X1pON1dlYkNvcmU0Tm9kZTZnY1RyZWVFdgogX19aTjdXZWJDb3JlNE5vZGUxMHJlbmRlclJlY3RF
UGIKLV9fWk43V2ViQ29yZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmU0Tm9k
ZTE3c3RvcElnbm9yaW5nTGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOHN0YXJ0SWdub3JpbmdM
ZWFrc0V2CiBfX1pON1dlYkNvcmU0Tm9kZTE5c2V0TmVlZHNTdHlsZVJlY2FsY0VOU18xNVN0eWxl
Q2hhbmdlVHlwZUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDBiMmIxNzU4M2NiNzA2MDc5YjczMjI4
N2QyOGZmMjQyY2IzNWQzZmMuLjlkOGU4MGM1Y2NiOTI5NjJhZmIxZjk3ZTlkYjA0M2ZkMGU0OTNi
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5vcmRlcgpAQCAtMTkyMyw3ICsxOTIzLDYgQEAgX19aTjdXZWJDb3Jl
MTFSZW5kZXJCbG9jazExcGFpbnRGbG9hdHNFUk5TXzlQYWludEluZm9FaWliCiBfX1pON1dlYkNv
cmUxMVJlbmRlckJsb2NrMTBwYWludENhcmV0RVJOU185UGFpbnRJbmZvRWlpTlNfOUNhcmV0VHlw
ZUUKIF9fWk5LN1dlYkNvcmUxNEZyYW1lU2VsZWN0aW9uMTNjYXJldFJlbmRlcmVyRXYKIF9fWk5L
N1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb24xN2lzQ29udGVudEVkaXRhYmxlRXYKLV9fWk43V2Vi
Q29yZTE4Y2FsbFJlbW92ZWRMYXN0UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJO
b2RlRUVFCiBfX1pON1dlYkNvcmUxOGlzRWRpdGFibGVQb3NpdGlvbkVSS05TXzhQb3NpdGlvbkUK
IF9fWk5LN1dlYkNvcmUxOURyYWdDYXJldENvbnRyb2xsZXIxM2NhcmV0UmVuZGVyZXJFdgogX19a
TjdXZWJDb3JlMTFSZW5kZXJCbG9jazI1cGFpbnRDb250aW51YXRpb25PdXRsaW5lc0VSTlNfOVBh
aW50SW5mb0VpaQpAQCAtMjQ3MSwxMyArMjQ3MCwxMCBAQCBfX1pOSzNXVEY5SGFzaFRhYmxlSVB2
UzFfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTMV9FRU5TXzdQdHJIYXNoSVMxX0VFTlNfMTBIYXNo
VAogX19aTjdXZWJDb3JlMTFKU05vZGVPd25lcjhmaW5hbGl6ZUVOM0pTQzZIYW5kbGVJTlMxXzdV
bmtub3duRUVFUHYKIF9fWk43V2ViQ29yZTE0dW5jYWNoZVdyYXBwZXJJTlNfNE5vZGVFRUV2UE5T
XzE1RE9NV3JhcHBlcldvcmxkRVBUX1BOU18xMkpTRE9NV3JhcHBlckUKIF9fWk43V2ViQ29yZTE0
SlNIVE1MRG9jdW1lbnREMUV2Ci1fX1pUaG44X043V2ViQ29yZThEb2N1bWVudDE0cmVtb3ZlZExh
c3RSZWZFdgotX19aTjdXZWJDb3JlOERvY3VtZW50MTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dl
YkNvcmUxNFN0eWxlU2hlZXRMaXN0RDFFdgogX19aTjdXZWJDb3JlOVRyZWVTY29wZTIwZGVzdHJv
eVRyZWVTY29wZURhdGFFdgogX19aTjdXZWJDb3JlMThEb2N1bWVudE9yZGVyZWRNYXA1Y2xlYXJF
dgogX19aTjdXZWJDb3JlMTNDb250YWluZXJOb2RlMTdyZW1vdmVBbGxDaGlsZHJlbkV2Ci1fX1pO
N1dlYkNvcmUyOHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXJJTlNfNE5vZGVFTlNfMTNDb250
YWluZXJOb2RlRUVFdlBUMF8KIF9fWk43V2ViQ29yZTE1SFRNTEh0bWxFbGVtZW50RDBFdgogX19a
TjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50RDJFdgogX19aTjdXZWJDb3JlN0VsZW1lbnREMkV2CkBA
IC00MTUxLDcgKzQxNDcsNiBAQCBfX1pON1dlYkNvcmU0Tm9kZTE1cmVtb3ZlZEZyb21UcmVlRWIK
IF9fWk43V2ViQ29yZUwxOW5vdGlmeUNoaWxkSW5zZXJ0ZWRFUE5TXzROb2RlRQogX19aTjdXZWJD
b3JlNE5vZGUxNmluc2VydGVkSW50b1RyZWVFYgogX19aTjdXZWJDb3JlTDI4ZGlzcGF0Y2hDaGls
ZEluc2VydGlvbkV2ZW50c0VQTlNfNE5vZGVFCi1fX1pON1dlYkNvcmUxMFRyZWVTaGFyZWRJTlNf
MTNDb250YWluZXJOb2RlRUUxNHJlbW92ZWRMYXN0UmVmRXYKIF9fWlRobjhfTjdXZWJDb3JlMTZE
b2N1bWVudEZyYWdtZW50RDBFdgogX19aTjdXZWJDb3JlTDMzY3JlYXRlSFRNTFBhcmFncmFwaEVs
ZW1lbnRXcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFTjNX
VEYxMFBhc3NSZWZQdHJJTlNfMTFIVE1MRWxlbWVudEVFRQogX19aTjdXZWJDb3JlMTNjcmVhdGVX
cmFwcGVySU5TXzIySlNIVE1MUGFyYWdyYXBoRWxlbWVudEVOU18yMEhUTUxQYXJhZ3JhcGhFbGVt
ZW50RUVFUE5TXzEySlNET01XcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9i
YWxPYmplY3RFUFQwXwpAQCAtMjk0NjQsMTIgKzI5NDU5LDEwIEBAIF9fWk43V2ViQ29yZTEzU1ZH
VXNlRWxlbWVudDMwZmlsbEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwRXYKIF9fWk5LN1dlYkNv
cmUxMlNWR1RyYW5zZm9ybTl0cmFuc2xhdGVFdgogX19aTjdXZWJDb3JlMTBGbG9hdFBvaW50MTVu
YXJyb3dQcmVjaXNpb25FZGQKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtOXNldE1hdHJp
eEVkZGRkZGQKLV9fWk43V2ViQ29yZTEwVHJlZVNoYXJlZElOU18xOFNWR0VsZW1lbnRJbnN0YW5j
ZUVFMTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUQw
RXYKIF9fWk43V2ViQ29yZTEwU1ZHRWxlbWVudDIxcmVtb3ZlSW5zdGFuY2VNYXBwaW5nRVBOU18x
OFNWR0VsZW1lbnRJbnN0YW5jZUUKIF9fWk5LM1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTE4U1ZH
RWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFz
aElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U0ZmluZElTM19OU18yMklkZW50aXR5SGFz
aFRyYW5zbGF0b3JJUzNfUzNfUzdfRUVFRU5TXzIySGFzaFRhYmxlQ29uc3RJdGVyYXRvcklTM19T
M19TNV9TN19TOV9TOV9FRVJLVF8KIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlMThTVkdF
bGVtZW50SW5zdGFuY2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19FRU5TXzdQdHJIYXNo
SVMzX0VFTlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTZyZW1vdmVFUFMzXwotX19aTjdXZWJDb3Jl
MjhyZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVySU5TXzE4U1ZHRWxlbWVudEluc3RhbmNlRVMx
X0VFdlBUMF8KIF9fWlRobjhfTjdXZWJDb3JlMTRTVkdMaW5lRWxlbWVudEQwRXYKIF9fWlRobjhf
TjdXZWJDb3JlMThTVkdQb2x5bGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043V2ViQ29yZTE3U1ZH
UG9seWdvbkVsZW1lbnREMEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmNwcAppbmRleCAyMjc2MTllNzhiOTZkNDIzZmZmMGJkNjQwMGZhNGMwMDE2MWMyNjRlLi4z
NjY4ZmZlZTYwMzEzYTRhNzY0YjI2Y2NiN2YzMzg2Y2Y2NmU0NzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTE1NywxNSArMTU3LDE1IEBAIHZv
aWQgRE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1
ZT4gdmFsdWUsIHZvaWQqIGRvbU9iCiAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBsaXN0
W2ldOwogICAgICAgICBET01Ob2RlTWFwcGluZyYgbm9kZU1hcCA9IG5vZGUtPmlzQWN0aXZlTm9k
ZSgpID8gc3RvcmUtPmFjdGl2ZURvbU5vZGVNYXAoKSA6IHN0b3JlLT5kb21Ob2RlTWFwKCk7CiAg
ICAgICAgIGlmIChub2RlTWFwLnJlbW92ZUlmUHJlc2VudChub2RlLCB2OE9iamVjdCkpIHsKLSAg
ICAgICAgICAgIG5vZGUtPmRlcmVmKCk7IC8vIE5vYm9keSBvdmVycmlkZXMgTm9kZTo6ZGVyZWYg
c28gaXQncyBzYWZlCi0gICAgICAgICAgICByZXR1cm47IC8vIFRoZXJlIG1pZ2h0IGJlIGF0IG1v
c3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdvcmxkJ3MgbWFwcworICAgICAgICAgICAg
bm9kZS0+d3JhcHBlckRlcmVmKCk7CisgICAgICAgICAgICByZXR1cm47IC8vIFRoZXJlIGlzIGF0
IG1vc3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdvcmxkJ3MgbWFwcy4KICAgICAgICAg
fQogICAgIH0KIAogICAgIC8vIElmIG5vdCBmb3VuZCwgaXQgbWVhbnMgbWFwIGZvciB0aGUgd3Jh
cHBlciBoYXMgYmVlbiBhbHJlYWR5IGRlc3Ryb3llZCwganVzdCBkaXNwb3NlIHRoZQogICAgIC8v
IGhhbmRsZSBhbmQgZGVyZWYgdGhlIG9iamVjdCB0byBmaWdodCBtZW1vcnkgbGVhay4KICAgICB2
OE9iamVjdC5EaXNwb3NlKCk7Ci0gICAgbm9kZS0+ZGVyZWYoKTsgLy8gTm9ib2R5IG92ZXJyaWRl
cyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKKyAgICBub2RlLT53cmFwcGVyRGVyZWYoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5jcHAKaW5kZXggZjUxYjY3YmJlN2M3MjY4MTA0MGY3NDYzMzU5ZWQ4YmFlNTFl
ZjIyMS4uNjEwMzM1NTEwYjg2NzA5NmNmMTBhNTRjOTUyMjg1ZTk3ZjZmNjE1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC03Myw3ICs3Myw4IEBA
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
RE9NTm9kZShQYXNzUmVmUHRyPE5vZGU+CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7
CiAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7CiAgICAgQVNTRVJU
KCFub2RlLT5pc0FjdGl2ZU5vZGUoKSk7Ci0gICAgZ2V0RE9NTm9kZU1hcChpc29sYXRlKS5zZXQo
bm9kZS5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUpOworICAgIG5vZGUtPndyYXBwZXJSZWYoKTsK
KyAgICBnZXRET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmdldCgpLCB3cmFwcGVySGFuZGxl
KTsKICAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKIH0KIApAQCAtODIsNyArODMsOCBAQCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2
ZURPTU5vZGUoUGFzc1JlZlB0cgogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwogICAg
IEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwogICAgIEFTU0VSVChub2Rl
LT5pc0FjdGl2ZU5vZGUoKSk7Ci0gICAgZ2V0QWN0aXZlRE9NTm9kZU1hcChpc29sYXRlKS5zZXQo
bm9kZS5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUpOworICAgIG5vZGUtPndyYXBwZXJSZWYoKTsK
KyAgICBnZXRBY3RpdmVET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmdldCgpLCB3cmFwcGVy
SGFuZGxlKTsKICAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCmlu
ZGV4IGQ2ZTI5YmQxOGM2ZTlmYzFkMTBiZjUxODY5OWU1ZWNkOWRlNDIzZTguLjA5YjhhMGYyM2Fl
MjQ5ZGQ3YWI1ZTk0ZjdhOWQ1NjQ3ZDdlYjQyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKQEAgLTgyLDYg
KzgyLDcgQEAgdm9pZCBBdHRyOjpjcmVhdGVUZXh0Q2hpbGQoKQogICAgICAgICAvLyBUaGlzIGRv
ZXMgZXZlcnl0aGluZyBhcHBlbmRDaGlsZCgpIHdvdWxkIGRvIGluIHRoaXMgc2l0dWF0aW9uIChh
c3N1bWluZyBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCB3YXMgc2V0KSwKICAgICAgICAgLy8gYnV0
IG11Y2ggbW9yZSBlZmZpY2llbnRseS4KICAgICAgICAgdGV4dE5vZGUtPnNldFBhcmVudE9ySG9z
dE5vZGUodGhpcyk7CisgICAgICAgIHRleHROb2RlLT51bnNldExpZmV0aW1lT3duZXIoKTsKICAg
ICAgICAgc2V0Rmlyc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgICAgIHNldExhc3RDaGls
ZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CmluZGV4IGFkYWZlYjYxNzA2MTQ4MDFiZmMwNzY2N2E1OTEyYWU5MDZlNDgzM2EuLmIwOTcyNWM0
OGExMDkyMTE3NmFiNmZjYTQ2OWE0NTdlYjE0YmE4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCBib29sIENvbnRhaW5lck5vZGU6OnJlbW92
ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIGNoaWxkcmVu
Q2hhbmdlZChmYWxzZSwgcHJldiwgbmV4dCwgLTEpOwogCi0gICAgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZC5nZXQoKSk7CisgICAgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZC5nZXQoKSwgZmFsc2UpOwogICAgIGRpc3BhdGNoU3Vi
dHJlZU1vZGlmaWVkRXZlbnQoKTsKIAogICAgIHJldHVybiBjaGlsZDsKQEAgLTQ2OCw3ICs0Njgs
NyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxk
KQogICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgb2xkQ2hpbGQpOwogCiAgICAgY2hpbGRy
ZW5DaGFuZ2VkKHRydWUsIHByZXYsIG5leHQsIC0xKTsKLSAgICBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXIodGhpcykubm90aWZ5KG9sZENoaWxkKTsKKyAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXIodGhpcykubm90aWZ5KG9sZENoaWxkLCBmYWxzZSk7CiB9CiAKIC8vIHRoaXMgZGlmZmVycyBm
cm9tIG90aGVyIHJlbW92ZSBmdW5jdGlvbnMgYmVjYXVzZSBpdCBmb3JjaWJseSByZW1vdmVzIGFs
bCB0aGUgY2hpbGRyZW4sCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpy
ZW1vdmVDaGlsZHJlbigpCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCAwLCAwLCAtc3RhdGlj
X2Nhc3Q8aW50PihyZW1vdmVkQ2hpbGRyZW5Db3VudCkpOwogCiAgICAgZm9yIChpID0gMDsgaSA8
IHJlbW92ZWRDaGlsZHJlbkNvdW50OyArK2kpCi0gICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3Rp
Zmllcih0aGlzKS5ub3RpZnkocmVtb3ZlZENoaWxkcmVuW2ldLmdldCgpKTsKKyAgICAgICAgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRyZW5baV0uZ2V0
KCksIGZhbHNlKTsKIAogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwogICAgIGRpc3BhdGNoU3Vi
dHJlZU1vZGlmaWVkRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDhi
OTI0NzczZTdhMjZkYTU4YTVlZDg1MzgwNTA0YjFjMzNjMjUzMGIuLjgwZmI3MTAzOGY5Njc2YjY5
OTgzNWI3ZmZjMWRmZDU5MjY5YWZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApA
QCAtMTE5LDkgKzExOSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5l
cmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZvaWQgYXBw
ZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFp
bmVyKik7Ci0KICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05v
ZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVs
ZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJp
Y05vZGVDb250YWluZXIqKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZT4KKyAgICBm
cmllbmQgYm9vbCBpc1JlYWNoYWJsZUZyb21XcmFwcGVyKEdlbmVyaWNOb2RlKiwgR2VuZXJpY05v
ZGUqKik7CiAKICAgICB2b2lkIHNldEZpcnN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9maXJzdENo
aWxkID0gY2hpbGQ7IH0KICAgICB2b2lkIHNldExhc3RDaGlsZChOb2RlKiBjaGlsZCkgeyBtX2xh
c3RDaGlsZCA9IGNoaWxkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcAppbmRleCAyZWRlYTMwZTBjMDg2ZWUwZWNmODM0M2U1OTY1ZWY5ODJkZWIz
MDJiLi5kMWM1MmU1ZTAzMWYwYWUyMGVhN2U1Y2JjMmQ3ODY2NmEyM2U2MTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTQ3LDkgKzQ3
LDExIEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJ
bnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKSB7Cisg
ICAgICAgIG1fdHJlZVNjb3BlRGVwdGgrKzsKICAgICAgICAgU2hhZG93Um9vdFZlY3RvciByb290
cyhzaGFkb3cpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3RzLnNpemUoKTsg
KytpKQogICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KHJvb3RzW2ld
LmdldCgpKTsKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aC0tOwogICAgIH0KIH0KIApAQCAtNTgs
MTAgKzYwLDE0IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2Nl
bmRhbnRJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqCiAgICAgZm9yIChOb2RlKiBjaGls
ZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAg
IG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAg
ICAgICBlbHNlIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgICAgIGNoaWxkLT51bnNl
dExpZmV0aW1lT3duZXIoKTsKICAgICB9CiAKKyAgICBtX3RyZWVTY29wZURlcHRoKys7CiAgICAg
Zm9yIChTaGFkb3dSb290KiByb290ID0gbm9kZS0+eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7
IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2Vy
dGVkSW50b1RyZWUocm9vdCk7CisgICAgbV90cmVlU2NvcGVEZXB0aC0tOwogfQogCiB2b2lkIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1l
bnQoQ29udGFpbmVyTm9kZSogbm9kZSkKQEAgLTgyLDkgKzg4LDExIEBAIHZvaWQgQ2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250
YWluZXJOb2RlCiAgICAgICAgIG5vZGUtPmRvY3VtZW50KCktPnNldENTU1RhcmdldCgwKTsKIAog
ICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygp
KSB7CisgICAgICAgIG1fdHJlZVNjb3BlRGVwdGgrKzsKICAgICAgICAgU2hhZG93Um9vdFZlY3Rv
ciByb290cyhzaGFkb3cpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3RzLnNp
emUoKTsgKytpKQogICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQocm9v
dHNbaV0uZ2V0KCkpOworICAgICAgICBtX3RyZWVTY29wZURlcHRoLS07CiAgICAgfQogfQogCkBA
IC05MywxNSArMTAxLDE5IEBAIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlE
ZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG5vCiAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAg
ICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7
CisgICAgICAgIGVsc2UgaWYgKCFtX3RyZWVTY29wZURlcHRoKQorICAgICAgICAgICAgY2hlY2tJ
ZkxpZmV0aW1lT3duZXIoY2hpbGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93
ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3coKSkgeworICAgICAgICBtX3RyZWVTY29wZURlcHRo
Kys7CiAgICAgICAgIFNoYWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByb290cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG5vdGlm
eU5vZGVSZW1vdmVkRnJvbVRyZWUocm9vdHNbaV0uZ2V0KCkpOworICAgICAgICBtX3RyZWVTY29w
ZURlcHRoLS07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oCmluZGV4IDE2MzI5NTU0MTM1NWU3ZDM2MjI4ZTQyYjM0MTE5NGMwMjBhY2Qx
MTAuLmYzZWI3OGZhYWU3YTUwYzQ0MzU1YmJlNGIxM2ZkMDU4OTdkYjg4YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0zMyw2ICszMyw3IEBA
IGNsYXNzIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2lu
dCkKICAgICAgICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KQorICAgICAgICAs
IG1fdHJlZVNjb3BlRGVwdGgoMCkKICAgICB7CiAgICAgfQogCkBAIC00NywyNCArNDgsMzQgQEAg
cHJpdmF0ZToKIAogICAgIENvbnRhaW5lck5vZGUqIG1faW5zZXJ0aW9uUG9pbnQ7CiAgICAgVmVj
dG9yPCBSZWZQdHI8Tm9kZT4gPiBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzOwor
ICAgIC8vIG1fdHJlZVNjb3BlRGVwdGggPT0gMCBtZWFucyB0aGF0IHRoZSBOb3RpZmllciBpcyBp
biB0aGUgVHJlZVNjb3BlIG9mIG1faW5zZXJ0aW9uUG9pbnQuCisgICAgaW50IG1fdHJlZVNjb3Bl
RGVwdGg7CiB9OwogCiBjbGFzcyBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihDb250YWluZXJOb2RlKiBpbnNl
cnRpb25Qb2ludCkKICAgICAgICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KQor
ICAgICAgICAsIG1fdHJlZVNjb3BlRGVwdGgoMCkKKyAgICAgICAgLCBtX2xpZmV0aW1lT3duZXJG
b3VuZChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBub3RpZnkoTm9kZSopOworICAg
IHZvaWQgbm90aWZ5KE5vZGUqLCBib29sKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeURl
c2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUqKTsKICAgICB2b2lkIG5v
dGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOwogICAgIHZvaWQg
bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSopOwogICAgIHZvaWQgbm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKik7CisgICAgdm9pZCBjaGVja0lmTGlmZXRp
bWVPd25lcihOb2RlKik7CiAKICAgICBDb250YWluZXJOb2RlKiBtX2luc2VydGlvblBvaW50Owor
ICAgIC8vIG1fdHJlZVNjb3BlRGVwdGggPT0gMCBtZWFucyB0aGF0IHRoZSBOb3RpZmllciBpcyBp
biB0aGUgVHJlZVNjb3BlIG9mIG1faW5zZXJ0aW9uUG9pbnQuCisgICAgaW50IG1fdHJlZVNjb3Bl
RGVwdGg7CisgICAgLy8gbV9saWZldGltZU93bmVyRm91bmQgPT0gdHJ1ZSBtZWFucyB0aGF0IGEg
bGlmZXRpbWUgb3duZXIgaXMgZm91bmQgaW4gdGhlIFRyZWVTY29wZSBvZgorICAgIC8vIG1faW5z
ZXJ0aW9uUG9pbnQuCisgICAgYm9vbCBtX2xpZmV0aW1lT3duZXJGb3VuZDsKIH07CiAKIG5hbWVz
cGFjZSBQcml2YXRlIHsKQEAgLTc0LDExICs4NSw2NiBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAK
IH0KIAorLy8gSWYgdGhlIFRyZWVTY29wZSBoYXMgYSBOb2RlIHJlZmVyZW5jZWQgYnkgYSB3cmFw
cGVyIG9iamVjdCwgaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpIHNldHMKKy8vIGEgbGlmZXRpbWUg
b3duZXIgb24gdGhlIE5vZGUgYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlLCBpc1JlYWNoYWJs
ZUZyb21XcmFwcGVyKCkgc2ltcGx5CisvLyByZXR1cm5zIGZhbHNlIHdpdGhvdXQgc2V0dGluZyBh
IGxpZmV0aW1lIG93bmVyLgordGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGU+CitpbmxpbmUgYm9v
bCBpc1JlYWNoYWJsZUZyb21XcmFwcGVyKEdlbmVyaWNOb2RlKiBzdGFydE5vZGUsIEdlbmVyaWNO
b2RlKiogcm9vdCkKK3sKKyAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgVHJlZVNjb3BlIGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSBubyBsaWZldGltZSBvd25lci4KKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBiZWZvcmVcbiIsIHN0YXJ0Tm9kZSk7Cisg
ICAgQVNTRVJUKCFzdGFydE5vZGUtPmlzTGlmZXRpbWVPd25lcigpKTsKKworICAgIC8vIFdlIHRy
YXZlcnNlIHRoZSBUcmVlU2NvcGUgaW4gdGhlIERGUyBvcmRlciwgc3RhcnRpbmcgZnJvbSBzdGFy
dE5vZGUuIFRoZSB0cmF2ZXJzYWwKKyAgICAvLyBvcmRlciBkb2VzIG5vdCBtYXR0ZXIgZm9yIGNv
cnJlY3RuZXNzIGJ1dCBtYXR0ZXJzIGZvciBwZXJmb3JtYW5jZS4KKyAgICAvLyBTZWUgYSBkZXNp
Z24gZG9jdW1lbnQgKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVu
dC9kLzE3dWJLNGFvYm00RzNjMkZBRHFFb1hBd1NXYkNJaXBYd3pyR0ZKWV9hdG9RL2VkaXQpIGZv
ciBtb3JlIGRldGFpbHMuCisgICAgR2VuZXJpY05vZGUqIG5vZGUgPSBzdGFydE5vZGU7CisgICAg
Ym9vbCB0cmF2ZXJzZVN0YXJ0ZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICBBU1NFUlQobm9kZSk7CisgICAgICAgIEFTU0VSVCghbm9kZS0+aXNMaWZldGltZU93bmVyKCkp
OworCisgICAgICAgIGlmICh0cmF2ZXJzZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIFdlIGNh
bWUgYmFjayB0byB0aGUgc3RhcnROb2RlLgorICAgICAgICAgICAgaWYgKG5vZGUgPT0gc3RhcnRO
b2RlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHRyYXZlcnNl
U3RhcnRlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKG5vZGUtPndyYXBwZXJSZWZDb3VudCgpKSB7
CisgICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgTm9kZSByZWZlcmVuY2VkIGJ5IGEgd3JhcHBl
ciBvYmplY3QsIHdlIHNldCBhIGxpZmV0aW1lIG93bmVyCisgICAgICAgICAgICAvLyBvbiB0aGUg
Tm9kZS4KKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+d3JhcHBlclJlZkNv
dW50KCk+MCAlcCB3cmFwcGVyUmVmQ291bnQ9PSVkXG4iLCBub2RlLCBub2RlLT53cmFwcGVyUmVm
Q291bnQoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBhZnRl
clxuIiwgc3RhcnROb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkgeworICAgICAgICAgICAgbm9kZSA9IG5v
ZGUtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAg
ICAgIHdoaWxlICghbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKCFub2Rl
LT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAqcm9vdCA9IG5vZGU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub2RlID0gbm9kZS0+
cGFyZW50Tm9kZSgpOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkp
CisgICAgICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICB9CisKKyAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBhZnRlclxuIiwg
c3RhcnROb2RlKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIEhlbHBlciBmdW5jdGlvbnMg
Zm9yIFRyZWVTaGFyZWQtZGVyaXZlZCBjbGFzc2VzLCB3aGljaCBoYXZlIGEgJ05vZGUnIHN0eWxl
IGludGVyZmFjZQogLy8gVGhpcyBhcHBsaWVzIHRvICdDb250YWluZXJOb2RlJyBhbmQgJ1NWR0Vs
ZW1lbnRJbnN0YW5jZScKIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmlj
Tm9kZUNvbnRhaW5lcj4KIGlubGluZSB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIo
R2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgInJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoKSAlcCBiZWZvcmVcbiIsIGNvbnRhaW5l
cik7CiAgICAgLy8gTGlzdCBvZiBub2RlcyB0byBiZSBkZWxldGVkLgogICAgIEdlbmVyaWNOb2Rl
KiBoZWFkID0gMDsKICAgICBHZW5lcmljTm9kZSogdGFpbCA9IDA7CkBAIC04OCw4ICsxNTQsNiBA
QCBpbmxpbmUgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29u
dGFpbmVyKiBjb250YWluZXIpCiAgICAgR2VuZXJpY05vZGUqIG47CiAgICAgR2VuZXJpY05vZGUq
IG5leHQ7CiAgICAgd2hpbGUgKChuID0gaGVhZCkgIT0gMCkgewotICAgICAgICBBU1NFUlQobi0+
bV9kZWxldGlvbkhhc0JlZ3VuKTsKLQogICAgICAgICBuZXh0ID0gbi0+bmV4dFNpYmxpbmcoKTsK
ICAgICAgICAgbi0+c2V0TmV4dFNpYmxpbmcoMCk7CiAKQEAgLTEwMCw4ICsxNjQsMTQgQEAgaW5s
aW5lIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5l
ciogY29udGFpbmVyKQogICAgICAgICBpZiAobi0+aGFzQ2hpbGROb2RlcygpKQogICAgICAgICAg
ICAgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZTxHZW5lcmljTm9kZSwgR2Vu
ZXJpY05vZGVDb250YWluZXI+KGhlYWQsIHRhaWwsIHN0YXRpY19jYXN0PEdlbmVyaWNOb2RlQ29u
dGFpbmVyKj4obikpOwogCisjaWZuZGVmIE5ERUJVRworICAgICAgICBuLT5tX2RlbGV0aW9uSGFz
QmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRl
KG4pICVwIGJlZm9yZVxuIiwgbik7CiAgICAgICAgIGRlbGV0ZSBuOworICAgICAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgImRlbGV0ZShuKSAlcCBhZnRlclxuIiwgbik7CiAgICAgfQorICAgIC8vIGZw
cmludGYoc3RkZXJyLCAicmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGFmdGVyXG4i
LCBjb250YWluZXIpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2Vu
ZXJpY05vZGVDb250YWluZXI+CkBAIC0xMjQsOSArMTk0LDEwIEBAIG5hbWVzcGFjZSBQcml2YXRl
IHsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNv
bnRhaW5lciwgYm9vbCBkaXNwYXRjaFJlbW92YWxOb3RpZmljYXRpb24+CiAgICAgc3RydWN0IE5v
ZGVSZW1vdmFsRGlzcGF0Y2hlciB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoKEdlbmVy
aWNOb2RlKiwgR2VuZXJpY05vZGVDb250YWluZXIqKQorICAgICAgICBzdGF0aWMgdm9pZCBkaXNw
YXRjaChHZW5lcmljTm9kZSogbm9kZSwgR2VuZXJpY05vZGVDb250YWluZXIqKQogICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBuby1vcCwgYnkgZGVmYXVsdAorICAgICAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJSZW1vdmFsRGlzcGF0Y2hlcigpICVwXG4iLCBub2RlKTsKKyAgICAgICAgICAg
IG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTEzNyw4
ICsyMDgsMTUgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAgICAgICAgICAgLy8gQ2xlYW4gdXAg
YW55IFRyZWVTY29wZSB0byBhIHJlbW92ZWQgdHJlZS4KICAgICAgICAgICAgIGlmIChEb2N1bWVu
dCogY29udGFpbmVyRG9jdW1lbnQgPSBjb250YWluZXItPm93bmVyRG9jdW1lbnQoKSkKICAgICAg
ICAgICAgICAgICBjb250YWluZXJEb2N1bWVudC0+YWRvcHRJZk5lZWRlZChub2RlKTsKLSAgICAg
ICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgQ2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyKGNvbnRhaW5lcikubm90aWZ5KG5vZGUpOworCisgICAgICAgICAgICBp
ZiAobm9kZS0+aW5Eb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgLy8gbm90aWZ5KCkgd2ls
bCBzZXQgYSBsaWZldGltZSBvd25lciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUuCisgICAgICAg
ICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKGNvbnRhaW5lcikubm90aWZ5KG5vZGUs
IHRydWUpOworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbERpc3Bh
dGNoZXIoKSAlcCBpbkRvY3VtZW50KClcbiIsIG5vZGUpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgICAgICAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJSZW1vdmFsRGlzcGF0Y2hlcigpICVwICFpbkRvY3VtZW50
KClcbiIsIG5vZGUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfTsKIApAQCAtMTY1
LDEwICsyNDMsOCBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAgICAgICBuLT5zZXROZXh0
U2libGluZygwKTsKICAgICAgICAgICAgIG4tPnNldFBhcmVudE9ySG9zdE5vZGUoMCk7CiAKKyAg
ICAgICAgICAgIEFTU0VSVCghbi0+d3JhcHBlclJlZkNvdW50KCkpOwogICAgICAgICAgICAgaWYg
KCFuLT5yZWZDb3VudCgpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgICAgIG4tPm1f
ZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICAvLyBBZGQg
dGhlIG5vZGUgdG8gdGhlIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAgICAgICAgICAg
ICAgICAvLyBSZXVzZSB0aGUgbmV4dFNpYmxpbmcgcG9pbnRlciBmb3IgdGhpcyBwdXJwb3NlLgog
ICAgICAgICAgICAgICAgIGlmICh0YWlsKQpAQCAtMTc5LDYgKzI1NSw3IEBAIG5hbWVzcGFjZSBQ
cml2YXRlIHsKICAgICAgICAgICAgICAgICB0YWlsID0gbjsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgUmVmUHRyPEdlbmVyaWNOb2RlPiBwcm90ZWN0KG4pOyAvLyByZW1v
dmVkRnJvbURvY3VtZW50IG1heSByZW1vdmUgcmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIHRoaXMg
bm9kZS4KKyAgICAgICAgICAgICAgICAvLyBkaXNwYXRjaCgpIHNldHMgYSBsaWZldGltZSBvd25l
ciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUuCiAgICAgICAgICAgICAgICAgTm9kZVJlbW92YWxE
aXNwYXRjaGVyPEdlbmVyaWNOb2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lciwgU2hvdWxkRGlzcGF0
Y2hSZW1vdmFsTm90aWZpY2F0aW9uPEdlbmVyaWNOb2RlPjo6dmFsdWU+OjpkaXNwYXRjaChuLCBj
b250YWluZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTIsNiArMjY5LDEwIEBA
IG5hbWVzcGFjZSBQcml2YXRlIHsKIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlm
aWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBB
U1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgIm5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCgpICVwIGluc2VydGlvblBvaW50
PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQs
IG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBpZiAo
IW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIG5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigpOwor
CiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3Qobm9kZSk7CiAgICAgaWYgKE5vZGU6Okluc2VydGlv
blNob3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZElu
dG8obV9pbnNlcnRpb25Qb2ludCkpCiAgICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlv
blRhcmdldHMuYXBwZW5kKG5vZGUpOwpAQCAtMjAyLDYgKzI4MywxMCBAQCBpbmxpbmUgdm9pZCBD
aGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50
KE5vZGUqIG5vZAogaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlm
eU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJU
KCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOworICAgIC8vIGZwcmludGYoc3RkZXJy
LCAibm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJl
bnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5w
YXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgaWYgKCFtX3RyZWVT
Y29wZURlcHRoKQorICAgICAgICBub2RlLT51bnNldExpZmV0aW1lT3duZXIoKTsKKwogICAgIGZv
cmJpZEV2ZW50RGlzcGF0Y2goKTsKIAogICAgIGlmIChOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxs
RGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0
aW9uUG9pbnQpKQpAQCAtMjE4LDggKzMwMywxMiBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kZSkKIAog
aW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeShOb2RlKiBub2Rl
KQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeSgp
ICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXAgYmVmb3JlXG4i
LCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKSk7CiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwog
CisgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICBtX3RyZWVTY29wZURlcHRo
ID0gMTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRJbnNlcnRET01Ob2RlKG5vZGUtPmRvY3VtZW50KCksIG5vZGUpOwogI2VuZGlmCkBA
IC0yMzEsMTUgKzMyMCwyMSBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5KE5vZGUqIG5vZGUpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1
bWVudChub2RlKTsKICAgICBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAg
ICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAg
ICBlbHNlIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgbm9kZS0+dW5zZXRMaWZldGlt
ZU93bmVyKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9zdEluc2VydGlvbk5v
dGlmaWNhdGlvblRhcmdldHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fcG9zdEluc2VydGlvbk5v
dGlmaWNhdGlvblRhcmdldHNbaV0tPmRpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zKG1faW5zZXJ0
aW9uUG9pbnQpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXAgYWZ0
ZXJcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+
cGFyZW50T3JIb3N0Tm9kZSgpKTsKIH0KIAotCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFs
Tm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqIG5vZGUpCiB7CiAg
ICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CisgICAgLy8gZnByaW50
ZihzdGRlcnIsICJub3RpZnlOb2RlUmVtb3ZhbEZyb21Eb2N1bWVudCgpICVwIGluc2VydGlvblBv
aW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9p
bnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBp
ZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUp
OworCiAgICAgbm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRpb25Qb2ludCk7CiAKICAgICBpZiAo
bm9kZS0+aXNDb250YWluZXJOb2RlKCkpCkBAIC0yNDksNiArMzQ0LDEwIEBAIGlubGluZSB2b2lk
IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQo
Tm9kZSogbm9kZSkKIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5
Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCgh
bV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
Im5vdGlmeU5vZGVSZW1vdmFsRnJvbVRyZWUoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9
JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJl
bnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgaWYgKCFtX3RyZWVTY29w
ZURlcHRoKQorICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsKKwogICAgIGZvcmJp
ZEV2ZW50RGlzcGF0Y2goKTsKIAogICAgIG5vZGUtPnJlbW92ZWRGcm9tKG1faW5zZXJ0aW9uUG9p
bnQpOwpAQCAtMjU3LDEzICszNTYsNDggQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG4KICAgICBh
bGxvd0V2ZW50RGlzcGF0Y2goKTsKIH0KIAotaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKK2lubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUsIGJvb2wgaW5zZXJ0aW9uUG9pbnREZWxldGlvbkhh
c0JlZ3VuKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbE5vdGlmaWVyOjpub3Rp
ZnkoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwIGJlZm9y
ZVxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5w
YXJlbnRPckhvc3ROb2RlKCkpOworICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAg
ICAgbV90cmVlU2NvcGVEZXB0aCA9IDE7CisKICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpKSB7
CiAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG5vZGUpOwogICAgICAgICBu
b2RlLT5kb2N1bWVudCgpLT5ub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRlZCgpOwogICAg
IH0gZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICBlbHNlIGlmICghbV90
cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgY2hlY2tJZkxpZmV0aW1lT3duZXIobm9kZSk7CisKKyAg
ICBpZiAoIW1fbGlmZXRpbWVPd25lckZvdW5kICYmICFub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewor
ICAgICAgICAvLyBJZiBhIGxpZmV0aW1lIG93bmVyIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVtb3Zl
ZCBUcmVlU2NvcGUsIGl0CisgICAgICAgIC8vIGluZGljYXRlcyB0aGF0IHRoZXJlIGlzIGV4YWN0
bHkgb25lIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcmlnaW5hbAorICAgICAgICAvLyBUcmVlU2Nv
cGUuIFNvIHdlIGp1c3QgY2FsbCBnY1RyZWUoKSBmb3IgdGhlIHJvb3Qgbm9kZSBvZiB0aGUgcmVt
b3ZlZAorICAgICAgICAvLyBUcmVlU2NvcGUsIGluIG9yZGVyIHRvIHNldCBhIG5ldyBsaWZldGlt
ZSBvd25lciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUuCisgICAgICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9ZmFsc2UgJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFy
ZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+
cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworICAgICAgICBub2RlLT5n
Y1RyZWUoKTsKKyAgICB9IGVsc2UgaWYgKG1fbGlmZXRpbWVPd25lckZvdW5kICYmICFpbnNlcnRp
b25Qb2ludERlbGV0aW9uSGFzQmVndW4pIHsKKyAgICAgICAgLy8gSWYgYSBsaWZldGltZSBvd25l
ciBpcyBmb3VuZCBpbiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUsIGl0CisgICAgICAgIC8vIGluZGlj
YXRlcyB0aGF0IHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcmlnaW5hbCBUcmVl
U2NvcGUuCisgICAgICAgIC8vIFNvIHdlIGNhbGwgZ2NUcmVlKCkgZm9yIHRoZSBpbnNlcnRpb24g
cG9pbnQgb2YgdGhlIG9yaWdpbmFsCisgICAgICAgIC8vIFRyZWVTY29wZSwgaW4gb3JkZXIgdG8g
c2V0IGEgbmV3IGxpZmV0aW1lIG93bmVyIG9mIHRoZSBvcmlnaW5hbCBUcmVlU2NvcGUuCisgICAg
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9dHJ1ZSAhaW5zZXJ0
aW9uUG9pbnREZWxldGlvbkhhc0JlZ3VuICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBw
YXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5v
ZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICAgICAgbV9pbnNlcnRpb25Qb2lu
dC0+Z2NUcmVlKCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbE5vdGlm
aWVyOjpub3RpZnkoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0
PSVwIGFmdGVyXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCks
IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7Cit9CisKK2lubGluZSB2b2lkIENoaWxkTm9kZVJl
bW92YWxOb3RpZmllcjo6Y2hlY2tJZkxpZmV0aW1lT3duZXIoTm9kZSogbm9kZSkKK3sKKyAgICBB
U1NFUlQoIW1fdHJlZVNjb3BlRGVwdGgpOworICAgIGlmIChVTkxJS0VMWShub2RlLT5pc0xpZmV0
aW1lT3duZXIoKSkpIHsKKyAgICAgICAgLy8gT25lIFRyZWVTY29wZSBpcyBndWFyYW50ZWVkIHRv
IGhhdmUgYXQgbW9zdCBvbmUgbGlmZXRpbWUgb3duZXIsCisgICAgICAgIC8vIHNvIG1fbGlmZXRp
bWVPd25lckZvdW5kIHNob3VsZCBub3QgYmVjb21lIHRydWUgbW9yZSB0aGFuIG9uY2UuCisgICAg
ICAgIEFTU0VSVCghbV9saWZldGltZU93bmVyRm91bmQpOworICAgICAgICBtX2xpZmV0aW1lT3du
ZXJGb3VuZCA9IHRydWU7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+aXNMaWZl
dGltZU93bmVyKCk9PXRydWUgJXBcbiIsIG5vZGUpOworICAgIH0KIH0KIAogY2xhc3MgQ2hpbGRG
cmFtZURpc2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5MWZhMmU4M2Nk
YzQwNWU5ZGU0YjhiNDgxYjFiOTVkYzQyMTk2NzBmLi5kNTgzZGI0Y2MzYmMwZmYyMGMzODhkOGJm
YmM3NjMzNzRkZDc1ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTY4OCw2ICs2ODgs
NyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKIAogdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RS
ZWYoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVm
KCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7
CiAgICAgaWYgKG1fZ3VhcmRSZWZDb3VudCkgewogICAgICAgICAvLyBJZiByZW1vdmluZyBhIGNo
aWxkIHJlbW92ZXMgdGhlIGxhc3Qgc2VsZi1vbmx5IHJlZiwgd2UgZG9uJ3QKQEAgLTcxNSw2ICs3
MTYsOCBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIC8vIHJlbW92
ZUFsbENoaWxkcmVuKCkgZG9lc24ndCBhbHdheXMgdW5yZWdpc3RlciBJRHMsCiAgICAgICAgIC8v
IHNvIHRlYXIgZG93biBzY29wZSBpbmZvcm1hdGlvbiB1cGZyb250IHRvIGF2b2lkIGhhdmluZyBz
dGFsZSByZWZlcmVuY2VzIGluIHRoZSBtYXAuCiAgICAgICAgIGRlc3Ryb3lUcmVlU2NvcGVEYXRh
KCk7CisKKyAgICAgICAgLy8gRklYTUU6IEtlZXAgYWxsIHRoZSBOb2RlcyBhbGl2ZSB1bnRpbCBt
X2d1YXJkUmVmQ291bnQgYmVjb21lcyAwLgogICAgICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwog
CiAgICAgICAgIG1fbWFya2Vycy0+ZGV0YWNoKCk7CkBAIC03MjgsMTcgKzczMSwxNiBAQCB2b2lk
IERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyLmNsZWFyKCk7CiAjZW5kaWYKIAotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9p
blJlbW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKLSNlbmRpZgotCiAgICAgICAgIGd1YXJk
RGVyZWYoKTsKICAgICB9IGVsc2UgewotI2lmbmRlZiBOREVCVUcgCi0gICAgICAgIG1fZGVsZXRp
b25IYXNCZWd1biA9IHRydWU7IAotI2VuZGlmIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9k
ZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgICAgICBkZWxldGUgdGhp
czsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUodGhpcykgJXAgYWZ0ZXJcbiIs
IHRoaXMpOwogICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkRvY3VtZW50OjpyZW1vdmVk
TGFzdFJlZigpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogRWxlbWVudCogRG9jdW1lbnQ6Omdl
dEVsZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCmluZGV4IGI4NWM1NDQzNGZjN2UxMTM3OGY2MmNjNjFjYzRhNTYzZWM0MDYyZjguLmI1NTM0
OWE3NDQ1MTFkYjg5MzA1NWM2NTViMDNhYzU3NGE2ODRmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CkBAIC0yMzgsMTEgKzIzOCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1f
ZGVsZXRpb25IYXNCZWd1bik7CiAgICAgICAgIC0tbV9ndWFyZFJlZkNvdW50OwotICAgICAgICBp
ZiAoIW1fZ3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkgeworICAgICAgICBpZiAoVU5MSUtF
TFkoIW1fZ3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkpIHsKKyAgICAgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiZ3VhcmREZXJlZigpIGRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRo
aXMpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRy
dWU7CiAjZW5kaWYKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJndWFyZERlcmVmKCkgZGVsZXRlKHRoaXMpICVwIGFmdGVyXG4iLCB0aGlz
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE5NSw3ICsxMTk3LDcgQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAK
ICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7Ci0gICAgCisKICAgICB2b2lkIGRldGFjaFBhcnNl
cigpOwogCiAgICAgdHlwZWRlZiB2b2lkICgqQXJndW1lbnRzQ2FsbGJhY2spKGNvbnN0IFN0cmlu
ZyYga2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVudCosIHZvaWQq
IGRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDA0YmMyMGIwYjk3NDdkZjQxYmQyNjc4
ZmQzMWU1M2IwMzU3N2E0OTguLmNiMjdhN2U0ODAwMmMxZDA3YzAyYzdkNWQ2ZTcyMmFjMDUxMjc1
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1ODAsNiArMTU4MCw3IEBAIENTU1N0eWxl
RGVjbGFyYXRpb24gKkVsZW1lbnQ6OnN0eWxlKCkKIAogdm9pZCBFbGVtZW50Ojpmb2N1cyhib29s
IHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbikKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVs
ZW1lbnQ6OmZvY3VzKCkgJXBcbiIsIHRoaXMpOwogICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hh
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCAwMTdi
ZTRiNThlYzA5MDM3MzU2ZTZlMjk1YjZlN2RjOGVkMDkzYTU5Li5jYmI4MjA4MTAxYjI4MGJkZTZl
M2JhNDY4ZGIyYmE2MGUwZmZiMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3Bw
CkBAIC04MSw2ICs4MSw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVt
ZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAgICAgbV9zaGFkb3dS
b290cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkpOwogICAgIHNldFZhbGlkaXR5VW5kZXRlcm1pbmVk
KCk7CiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoKSBzaGFkb3dSb290PSVw
IHNoYWRvd0hvc3Q9JXBcbiIsIHNoYWRvd1Jvb3QuZ2V0KCksIHNoYWRvd0hvc3QpOwogICAgIENo
aWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290Lmdl
dCgpKTsKIAogICAgIGlmIChzaGFkb3dIb3N0LT5hdHRhY2hlZCgpICYmICFzaGFkb3dSb290LT5h
dHRhY2hlZCgpKQpAQCAtOTEsNiArOTIsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRv
d1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogCiB2
b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKIHsKKyAgICBpZiAobV9z
aGFkb3dSb290cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIERvbnQgcHJv
dGVjdCB0aGlzIHJlZiBjb3VudC4KICAgICBFbGVtZW50KiBzaGFkb3dIb3N0ID0gaG9zdCgpOwog
CkBAIC0xMDYsNyArMTEwLDggQEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dS
b290cygpCiAgICAgICAgIG9sZFJvb3QtPnNldFByZXYoMCk7CiAgICAgICAgIG9sZFJvb3QtPnNl
dE5leHQoMCk7CiAgICAgICAgIHNoYWRvd0hvc3QtPmRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQo
b2xkUm9vdC5nZXQoKSk7Ci0gICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFkb3dI
b3N0KS5ub3RpZnkob2xkUm9vdC5nZXQoKSk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
RWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKSBzaGFkb3dSb290PSVwIHNoYWRv
d0hvc3Q9JXBcbiIsIG9sZFJvb3QuZ2V0KCksIHNoYWRvd0hvc3QpOworICAgICAgICBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCksIHRydWUp
OwogICAgIH0KIAogICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKaW5kZXggYTNhMWMyMmYyNTU0OWY3ZmNhYmY0MDcwMTYxYWI2OThlZDIxYzc5Yi4u
MmVmZjdmYWE1MTY1MDU5ODhhZDIyODA1YThjNDdlYjBiMjRjYjkwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRl
ICJDaGlsZE5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgorI2luY2x1ZGUg
IkNvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIKICNpbmNsdWRlICJET01TZXR0
YWJsZVRva2VuTGlzdC5oIgpAQCAtMzk0LDYgKzM5NSw3IEBAIHZvaWQgTm9kZTo6dHJhY2tGb3JE
ZWJ1Z2dpbmcoKQogCiBOb2RlOjp+Tm9kZSgpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+
Tm9kZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAgIEhhc2hTZXQ8
Tm9kZSo+OjppdGVyYXRvciBpdCA9IGlnbm9yZVNldC5maW5kKHRoaXMpOwogICAgIGlmIChpdCAh
PSBpZ25vcmVTZXQuZW5kKCkpCkBAIC00MjUsNiArNDI3LDcgQEAgTm9kZTo6fk5vZGUoKQogICAg
ICAgICBkb2MtPmd1YXJkRGVyZWYoKTsKIAogICAgIEluc3BlY3RvckNvdW50ZXJzOjpkZWNyZW1l
bnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpOb2RlQ291bnRlcik7CisgICAgLy8gZnByaW50
ZihzdGRlcnIsICJ+Tm9kZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogdm9pZCBOb2RlOjpz
ZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCkBAIC0yODA2LDYgKzI4MDksOCBAQCBQYXNz
UmVmUHRyPFByb3BlcnR5Tm9kZUxpc3Q+IE5vZGU6OnByb3BlcnR5Tm9kZUxpc3QoY29uc3QgU3Ry
aW5nJiBuYW1lKQogLy8gZGVsZXRlIGEgTm9kZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KIHZv
aWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9k
ZTo6cmVtb3ZlZExhc3RSZWYoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIEFTU0VSVCghbV9k
ZWxldGlvbkhhc0JlZ3VuKTsKICAgICAvLyBBbiBleHBsaWNpdCBjaGVjayBmb3IgRG9jdW1lbnQg
aGVyZSBpcyBiZXR0ZXIgdGhhbiBhIHZpcnR1YWwgZnVuY3Rpb24gc2luY2UgaXQgaXMKICAgICAv
LyBmYXN0ZXIgZm9yIG5vbi1Eb2N1bWVudCBub2RlcywgYW5kIGJlY2F1c2UgdGhlIGNhbGwgdG8g
cmVtb3ZlZExhc3RSZWYgdGhhdCBpcyBpbmxpbmVkCiAgICAgLy8gYXQgYWxsIGRlcmVmIGNhbGwg
c2l0ZXMgaXMgc21hbGxlciBpZiBpdCdzIGEgbm9uLXZpcnR1YWwgZnVuY3Rpb24uCkBAIC0yODE2
LDcgKzI4MjEsMzQgQEAgdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiAjaWZuZGVmIE5ERUJV
RwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgIGRlbGV0ZSB0
aGlzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlKHRoaXMpICVwIGFmdGVyXG4iLCB0
aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OnJlbW92ZWRMYXN0UmVmKCkgJXAg
YWZ0ZXJcbiIsIHRoaXMpOworfQorCisvLyBXaGVuIGdjVHJlZSgpIGlzIGNhbGxlZCwgdGhlIFRy
ZWVTY29wZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgbm8gbGlmZXRpbWUgb3duZXIuCisvLyBnY1Ry
ZWUoKSBtdXN0IHJlY2xhaW0gYWxsIE5vZGVzIGluIHRoZSBUcmVlU2NvcGUgb3Igc2V0IGEgbmV3
IGxpZmV0aW1lIG93bmVyIG9mCisvLyB0aGUgVHJlZVNjb3BlLgordm9pZCBOb2RlOjpnY1RyZWUo
KQoreworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6Z2NUcmVlKCkgJXAgYmVmb3JlXG4i
LCB0aGlzKTsKKyAgICBOb2RlKiByb290ID0gMDsKKyAgICBpZiAoaXNSZWFjaGFibGVGcm9tV3Jh
cHBlcjxOb2RlPih0aGlzLCAmcm9vdCkpIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJp
c1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgdHJ1ZVxuIiwgdGhpcyk7CisgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiTm9kZTo6Z2NUcmVlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChyb290KTsKKyAgICBpZiAoIXJvb3QtPnBhcmVu
dE9ySG9zdE5vZGUoKSAmJiAhcm9vdC0+cmVmQ291bnQoKSkgeworICAgICAgICBBU1NFUlQoIXJv
b3QtPndyYXBwZXJSZWZDb3VudCgpKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJpc1Jl
YWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgZmFsc2UgIXJvb3QtPnBhcmVudE9ySG9zdE5vZGUoKSAm
JiAhcm9vdC0+cmVmQ291bnQoKVxuIiwgdGhpcyk7CisgICAgICAgIHJvb3QtPnJlbW92ZWRMYXN0
UmVmKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJpc1JlYWNo
YWJsZUZyb21XcmFwcGVyKCkgJXAgZmFsc2Ugb3RoZXJ3aXNlIHJvb3QtPnBhcmVudE9ySG9zdE5v
ZGUoKT0lcCByb290LT5yZWZDb3VudCgpPSVkXG4iLCB0aGlzLCByb290LT5wYXJlbnRPckhvc3RO
b2RlKCksIHJvb3QtPnJlZkNvdW50KCkpOworICAgICAgICByb290LT5zZXRMaWZldGltZU93bmVy
KCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6Z2NUcmVlKCkgJXAgYWZ0
ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA0MzlhYTkz
NmE5ZDM0YzJkOTE0NzI3ZThhNGZlNzM0MTM0ZjRlZjA4Li44OGYxZDdlYzZiNDk0ZWI5ZmNjZjM4
ZjhmODZlMDVhMjk0Yjk2NzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTM3NCw2ICszNzQsOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgpOwogICAgIGJvb2wgaXNDb250ZW50Umlj
aGx5RWRpdGFibGUoKTsKIAorICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKKyAgICB2b2lkIGdj
VHJlZSgpOworCiAgICAgdm9pZCBpbnNwZWN0KCk7CiAKICAgICBib29sIHJlbmRlcmVySXNFZGl0
YWJsZShFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlID0gQ29udGVudElzRWRpdGFibGUpIGNvbnN0
CkBAIC03NTEsOCArNzU0LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2RlPjsKIAotICAgIHZvaWQgcmVtb3ZlZExh
c3RSZWYoKTsKLQogICAgIC8vIFRoZXNlIEFQSSBzaG91bGQgYmUgb25seSB1c2VkIGZvciBhIHRy
ZWUgc2NvcGUgbWlncmF0aW9uLgogICAgIC8vIHNldFRyZWVTY29wZSgpIHJldHVybnMgTm9kZVJh
cmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRhKCkgaW52b2NhdGlvbnMgb24gdGhlIGNh
bGxlciBzaXRlLgogICAgIE5vZGVSYXJlRGF0YSogc2V0VHJlZVNjb3BlKFRyZWVTY29wZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmluZGV4IGZiZWZlYjE1OTIyMzcxOGJkMTA2
N2VjMTk0YmJmNDQ4MWJmNjNjZGMuLjA4NGM3NWI1ZDhjNmIzM2FhNjIxYmRiZDRhYmM3OWUyYjg2
MGE3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKQEAgLTMyLDI3ICszMiw0
NiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+
IGNsYXNzIFRyZWVTaGFyZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUg
UGFyZW50Tm9kZVR5cGU+IHZvaWQgYWRvcHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlLCBQYXJlbnRO
b2RlVHlwZT4qKTsKICNlbmRpZgogCisvLyBUaGUgYWxnb3JpdGhtIGd1YXJhbnRlZXMgdGhlIGZv
bGxvd2luZyBpbnZhcmlhbnRzOgorLy8KKy8vICAgICAtIE91dHNpZGUgb2YgZ2NUcmVlKCkgKG5v
cm1hbCBjYXNlcyksIGVhY2ggVHJlZVNjb3BlIGhhcyBleGFjdGx5IG9uZQorLy8gICAgICAgbGlm
ZXRpbWUgb3duZXIuIFRoZSBsaWZldGltZSBvd25lciBpcyBzZXQgb24gdGhlIHJvb3QgTm9kZSBv
ZiB0aGUgVHJlZVNjb3BlCisvLyAgICAgICBvciBhbnkgTm9kZSB0aGF0IGlzIHJlZmVyZW5jZWQg
YnkgYSB3cmFwcGVyIG9iamVjdC4KKy8vCisvLyAgICAgLSBJbnNpZGUgb2YgZ2NUcmVlKCksIHRo
ZSBUcmVlU2NvcGUgaGFzIG5vIGxpZmV0aW1lIG93bmVyLiBnY1RyZWUoKSByZWNsYWltcworLy8g
ICAgICAgYWxsIE5vZGVzIGluIHRoZSBUcmVlU2NvcGUgb3Igc2V0cyBhIG5ldyBsaWZldGltZSBv
d25lciBvZiB0aGUgVHJlZVNjb3BlLgorLy8KKy8vIFNlZSBhIGRlc2lnbiBkb2N1bWVudCAoaHR0
cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29tL2RvY3VtZW50L2QvMTd1Yks0YW9ibTRH
M2MyRkFEcUVvWEF3U1diQ0lpcFh3enJHRkpZX2F0b1EvZWRpdCkgZm9yIG1vcmUgZGV0YWlscy4K
KwogdGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBj
bGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmVlU2hhcmVkKTsK
IHByb3RlY3RlZDoKICAgICBUcmVlU2hhcmVkKCkKICAgICAgICAgOiBtX3BhcmVudCgwKQotICAg
ICAgICAsIG1fcmVmQ291bnQoMSkKKyAgICAgICAgLy8gQSBuZXdseSBjcmVhdGVkIE5vZGUgYmVj
b21lcyBhIGxpZmV0aW1lIG93bmVyLCBiZWNhdXNlIHRoaXMgTm9kZSBpcyB0aGUgb25seQorICAg
ICAgICAvLyBOb2RlIGluIHRoZSBET00gdHJlZS4KKyAgICAgICAgLCBtX2xpZmV0aW1lT3duZXIo
MSkKKyAgICAgICAgLCBtX25vbldyYXBwZXJSZWZDb3VudCgxKQorICAgICAgICAsIG1fd3JhcHBl
clJlZkNvdW50KDApCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAsIG1fYWRvcHRpb25Jc1JlcXVp
cmVkKHRydWUpCiAjZW5kaWYKICAgICB7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiVHJl
ZVNoYXJlZCgpICVwXG4iLCB0aGlzKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICAgICAgQVNTRVJUKGlzTGlmZXRpbWVPd25lcigpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IGZhbHNlOwotICAgICAgICBtX2luUmVtb3ZlZExhc3RS
ZWZGdW5jdGlvbiA9IGZhbHNlOwogI2VuZGlmCiAgICAgfQogCiAgICAgflRyZWVTaGFyZWQoKQog
ICAgIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+VHJlZVNoYXJlZCgpICVwXG4iLCB0
aGlzKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKCFt
X3JlZkNvdW50KTsKKyAgICAgICAgQVNTRVJUKCFyZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJU
KCF3cmFwcGVyUmVmQ291bnQoKSk7CisgICAgICAgIEFTU0VSVCghaXNMaWZldGltZU93bmVyKCkp
OwogICAgICAgICBBU1NFUlQobV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFt
X2Fkb3B0aW9uSXNSZXF1aXJlZCk7CiAgICAgfQpAQCAtNjIsNDIgKzgxLDkwIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCgh
bV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZG
dW5jdGlvbik7CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwotICAgICAg
ICArK21fcmVmQ291bnQ7CisgICAgICAgICsrbV9ub25XcmFwcGVyUmVmQ291bnQ7CisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAicmVmKCkgJXAgcmVmQ291bnQ9JWQgd3JhcHBlclJlZkNvdW50
PSVkXG4iLCB0aGlzLCBtX25vbldyYXBwZXJSZWZDb3VudCwgbV93cmFwcGVyUmVmQ291bnQpOwor
ICAgIH0KKworICAgIHZvaWQgd3JhcHBlclJlZigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisgICAg
ICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOworICAgICAgICArK21fd3JhcHBlclJl
ZkNvdW50OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIndyYXBwZXJSZWYoKSAlcCByZWZD
b3VudD0lZCB3cmFwcGVyUmVmQ291bnQ9JWRcbiIsIHRoaXMsIG1fbm9uV3JhcHBlclJlZkNvdW50
LCBtX3dyYXBwZXJSZWZDb3VudCk7CiAgICAgfQogCiAgICAgdm9pZCBkZXJlZigpCiAgICAgewog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQobV9yZWZDb3Vu
dCA+PSAwKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgICAgICBB
U1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX2Fk
b3B0aW9uSXNSZXF1aXJlZCk7Ci0gICAgICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCAmJiAhbV9w
YXJlbnQpIHsKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZG
dW5jdGlvbiA9IHRydWU7Ci0jZW5kaWYKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBl
Kj4odGhpcyktPnJlbW92ZWRMYXN0UmVmKCk7CisgICAgICAgIC0tbV9ub25XcmFwcGVyUmVmQ291
bnQ7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVyZWYoKSAlcCByZWZDb3VudD0lZCB3
cmFwcGVyUmVmQ291bnQ9JWRcbiIsIHRoaXMsIG1fbm9uV3JhcHBlclJlZkNvdW50LCBtX3dyYXBw
ZXJSZWZDb3VudCk7CisgICAgICAgIGlmIChtX2xpZmV0aW1lT3duZXIgPT0gMSAmJiAhbV9ub25X
cmFwcGVyUmVmQ291bnQgJiYgIW1fd3JhcHBlclJlZkNvdW50ICYmICFtX3BhcmVudCkgeworICAg
ICAgICAgICAgbV9saWZldGltZU93bmVyID0gMDsKKyAgICAgICAgICAgIC8vIGdjVHJlZSgpIHJl
Y2xhaW1zIGFsbCBOb2RlcyBpbiB0aGUgVHJlZVNjb3BlIG9yIHNldHMgYSBuZXcgbGlmZXRpbWUK
KyAgICAgICAgICAgIC8vIG93bmVyIG9mIHRoZSBUcmVlU2NvcGUuCisgICAgICAgICAgICBzdGF0
aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLT5nY1RyZWUoKTsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QKKyAgICB2b2lkIHdyYXBwZXJEZXJlZigpCiAgICAg
eworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRpb25IYXNCZWd1bik7Ci0gICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rp
b24pOwotICAgICAgICByZXR1cm4gbV9yZWZDb3VudCA9PSAxOworICAgICAgICBBU1NFUlQoIW1f
YWRvcHRpb25Jc1JlcXVpcmVkKTsKKyAgICAgICAgLS1tX3dyYXBwZXJSZWZDb3VudDsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJ3cmFwcGVyRGVyZWYoKSAlcCByZWZDb3VudD0lZCB3cmFw
cGVyUmVmQ291bnQ9JWRcbiIsIHRoaXMsIG1fbm9uV3JhcHBlclJlZkNvdW50LCBtX3dyYXBwZXJS
ZWZDb3VudCk7CisgICAgICAgIGlmIChtX2xpZmV0aW1lT3duZXIgPT0gMSAmJiAhbV93cmFwcGVy
UmVmQ291bnQpIHsKKyAgICAgICAgICAgIG1fbGlmZXRpbWVPd25lciA9IDA7CisgICAgICAgICAg
ICAvLyBnY1RyZWUoKSByZWNsYWltcyBhbGwgTm9kZXMgaW4gdGhlIFRyZWVTY29wZSBvciBzZXRz
IGEgbmV3IGxpZmV0aW1lCisgICAgICAgICAgICAvLyBvd25lciBvZiB0aGUgVHJlZVNjb3BlLgor
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+Z2NUcmVlKCk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBpbnQgcmVmQ291bnQoKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fcmVmQ291bnQ7CisgICAgICAgIHJldHVybiBtX25vbldyYXBwZXJSZWZDb3VudCAr
IG1fd3JhcHBlclJlZkNvdW50OworICAgIH0KKworICAgIGludCB3cmFwcGVyUmVmQ291bnQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fd3JhcHBlclJlZkNvdW50OworICAgIH0KKwor
ICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9kZWxl
dGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgcmV0dXJuIHJlZkNvdW50KCkgPT0gMTsKKyAgICB9CisK
KyAgICB2b2lkIHNldExpZmV0aW1lT3duZXIoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2xp
ZmV0aW1lT3duZXIpOworICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisgICAg
ICAgIG1fbGlmZXRpbWVPd25lciA9IDE7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAic2V0
TGlmZXRpbWVPd25lcigpICVwXG4iLCB0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIHVuc2V0TGlm
ZXRpbWVPd25lcigpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7
CisgICAgICAgIG1fbGlmZXRpbWVPd25lciA9IDA7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJy
LCAidW5zZXRMaWZldGltZU93bmVyKCkgJXBcbiIsIHRoaXMpOworICAgIH0KKworICAgIGJvb2wg
aXNMaWZldGltZU93bmVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2xpZmV0aW1lT3duZXI7
CiAgICAgfQogCiAgICAgdm9pZCBzZXRQYXJlbnQoUGFyZW50Tm9kZVR5cGUqIHBhcmVudCkKICAg
ICB7IAogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBtX3BhcmVudCA9
IHBhcmVudDsgCisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OwogICAgIH0KIAogICAgIFBhcmVu
dE5vZGVUeXBlKiBwYXJlbnQoKSBjb25zdApAQCAtMTA4LDcgKzE3NSw2IEBAIHB1YmxpYzoKIAog
I2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1bjsKLSAgICBib29sIG1f
aW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwogI2VuZGlmCiAKICAgICB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CkBAIC0xMjMs
NyArMTg5LDkgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUGFyZW50Tm9kZVR5cGUqIG1fcGFy
ZW50OwotICAgIGludCBtX3JlZkNvdW50OworICAgIHVuc2lnbmVkIG1fbGlmZXRpbWVPd25lciA6
IDE7IC8vIEluZGljYXRlcyB3aGV0aGVyIHRoaXMgTm9kZSBpcyBhIGxpZmV0aW1lIG93bmVyIG9y
IG5vdC4KKyAgICB1bnNpZ25lZCBtX25vbldyYXBwZXJSZWZDb3VudCA6IDExOyAvLyBSZWZlcmVu
Y2UgY291bnQgbm90IGJ5IHdyYXBwZXIgb2JqZWN0cyAoaS5lLiBub3JtYWwgUmVmUHRycykuCisg
ICAgdW5zaWduZWQgbV93cmFwcGVyUmVmQ291bnQgOiAyMDsgLy8gUmVmZXJlbmNlIGNvdW50IGJ5
IHdyYXBwZXIgb2JqZWN0cy4KIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fYWRvcHRpb25J
c1JlcXVpcmVkOwpAQCAtMTM3LDcgKzIwNSw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBl
LCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gaW5saW5lIHZvaWQgYWRvcHRlZChUcmVlU2hhCiAg
ICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIW9iamVjdC0+bV9k
ZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBBU1NFUlQoIW9iamVjdC0+bV9pblJlbW92ZWRMYXN0UmVm
RnVuY3Rpb24pOwogICAgIG9iamVjdC0+bV9hZG9wdGlvbklzUmVxdWlyZWQgPSBmYWxzZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDFjMDljNjE5YjYxZmQ4MmU0ODhlYjBk
NTE2MjQyOGQ4ZTRhMWYyMzAuLjQ4YTM0NDdjYTIzOWM2ZGVhMGY5ODc2NGE1MTllNmYzNGNhZGFk
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgUGFzc1Jl
ZlB0cjxTVkdFbGVtZW50PiBTVkdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQKIAogU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogeworICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnQoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAg
IGlmICghaGFzU1ZHUmFyZURhdGEoKSkKICAgICAgICAgQVNTRVJUKCFTVkdFbGVtZW50UmFyZURh
dGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnModGhpcykpOwogICAgIGVsc2UgewpAQCAtODAsNiAr
ODEsNyBAQCBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCgpCiAgICAgfQogICAgIGRvY3VtZW50KCkt
PmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlQWxsQW5pbWF0aW9uRWxlbWVudHNGcm9tVGFy
Z2V0KHRoaXMpOwogICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3Zl
QWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQodGhpcyk7CisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJ+U1ZHRWxlbWVudCgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogYm9vbCBTVkdFbGVt
ZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAppbmRleCA5ZmUyYWNiZjAwYTVmZWNmNWYzNDVhNzY5
ZDU0MWM3NTQ2MmZlYTE3Li4wZWEwMTAxMDk4ZmZlMjllMTc3MjA5OWY1YjBiMjhmMzIzMzRlNDNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcApAQCAtNjIsNiAr
NjIsOSBAQCBTVkdFbGVtZW50SW5zdGFuY2U6OlNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVt
ZW50KiBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCwgUwogCiBTVkdFbGVtZW50SW5zdGFuY2U6On5T
VkdFbGVtZW50SW5zdGFuY2UoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1l
bnRJbnN0YW5jZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgQVNTRVJUKG1fZGVsZXRpb25I
YXNCZWd1bik7CisKICAgICAvLyBDYWxsIGRldGFjaCBiZWNhdXNlIHdlIG1heSBiZSBkZWxldGVk
IGRpcmVjdGx5IGlmIHdlIGFyZSBhIGNoaWxkIG9mIGEgZGV0YWNoZWQgaW5zdGFuY2UuCiAgICAg
ZGV0YWNoKCk7CiAKQEAgLTcwLDE2ICs3Myw0NiBAQCBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdF
bGVtZW50SW5zdGFuY2UoKQogI2VuZGlmCiAKICAgICBtX2VsZW1lbnQgPSAwOworICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsK
IH0KIAogLy8gSXQncyBpbXBvcnRhbnQgbm90IHRvIGlubGluZSByZW1vdmVkTGFzdFJlZiwgYmVj
YXVzZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bwogLy8gZGVsZXRlIGFuIFNW
R0VsZW1lbnRJbnN0YW5jZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KIHZvaWQgU1ZHRWxlbWVu
dEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZigpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJT
VkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsK
KyAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1f
ZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgIGRlbGV0ZSB0aGlzOworICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlKHRoaXMpICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYo
KSAlcCBhZnRlclxuIiwgdGhpcyk7Cit9CisKKy8vIFdoZW4gZ2NUcmVlKCkgaXMgY2FsbGVkLCB0
aGUgVHJlZVNjb3BlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBubyBsaWZldGltZSBvd25lci4KKy8v
IGdjVHJlZSgpIG11c3QgcmVjbGFpbSBhbGwgTm9kZXMgaW4gdGhlIFRyZWVTY29wZSBvciBzZXQg
YSBuZXcgbGlmZXRpbWUgb3duZXIgb2YKKy8vIHRoZSBUcmVlU2NvcGUuCit2b2lkIFNWR0VsZW1l
bnRJbnN0YW5jZTo6Z2NUcmVlKCkKK3sKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1l
bnRJbnN0YW5jZTo6Z2NUcmVlKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBTVkdFbGVtZW50
SW5zdGFuY2UqIHJvb3QgPSAwOworICAgIGlmIChpc1JlYWNoYWJsZUZyb21XcmFwcGVyPFNWR0Vs
ZW1lbnRJbnN0YW5jZT4odGhpcywgJnJvb3QpKSB7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVwIHRydWVcbiIsIHRoaXMpOworICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkgJXAgYWZ0ZXJc
biIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChyb290KTsKKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBmYWxzZVxu
IiwgdGhpcyk7CisgICAgaWYgKHJvb3QtPnJlZkNvdW50KCkpIHsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJyb290LT5yZWZDb3VudCgpICVwXG4iLCB0aGlzKTsKKyAgICAgICAgcm9vdC0+
c2V0TGlmZXRpbWVPd25lcigpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAiIXJvb3QtPnJlZkNvdW50KCkgJXBcbiIsIHRoaXMpOworICAgICAgICByb290LT5yZW1v
dmVkTGFzdFJlZigpOworICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJ
bnN0YW5jZTo6Z2NUcmVlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIFNWR0VsZW1l
bnRJbnN0YW5jZTo6ZGV0YWNoKCkKQEAgLTExNCw2ICsxNDcsNyBAQCB2b2lkIFNWR0VsZW1lbnRJ
bnN0YW5jZTo6c2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIHZvaWQg
U1ZHRWxlbWVudEluc3RhbmNlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0
YW5jZT4gY2hpbGQpCiB7CiAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxTVkdFbGVtZW50SW5z
dGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5jZT4oY2hpbGQuZ2V0KCksIHRoaXMpOworICAgIGNoaWxk
LT51bnNldExpZmV0aW1lT3duZXIoKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6Omlu
dmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCBmOGU0ODliNmJhNDM1OWVjNzk1
OTc5N2Y3MjNjNTI1OTU0NDY0M2M2Li5lYmVjZGJiZTYxNzU3ODk0ZjkwZGE5NDA1MTg3NDFkNTM1
ZDcwMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCkBAIC0xNTEs
NiArMTUxLDcgQEAgcHJpdmF0ZToKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVt
ZW50KiwgU1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3JpZ2luYWxFbGVt
ZW50KTsKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CisgICAgdm9pZCBnY1RyZWUoKTsKIAog
ICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gc2hhZG93VHJlZUVsZW1lbnQoKTsg
fQogCkBAIC0xNTgsMTMgKzE1OSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U2hhZG93VHJl
ZUVsZW1lbnQoU1ZHRWxlbWVudCopOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUs
IGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxk
VG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29u
dGFpbmVyKTsKLQorICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJp
Y05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOwogICAgIHRlbXBsYXRlPGNsYXNz
IEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBmcmllbmQgdm9p
ZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250
YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRp
b25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05v
ZGVDb250YWluZXIqKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2Vu
ZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rl
c1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwg
R2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7CisgICAgZnJpZW5kIHZvaWQgcmVtb3Zl
QWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciopOworICAgIHRlbXBs
YXRlPGNsYXNzIEdlbmVyaWNOb2RlPgorICAgIGZyaWVuZCBib29sIGlzUmVhY2hhYmxlRnJvbVdy
YXBwZXIoR2VuZXJpY05vZGUqLCBHZW5lcmljTm9kZSoqKTsKIAogICAgIGJvb2wgaGFzQ2hpbGRO
b2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlciBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQy
Lm9yZGVyCmluZGV4IDIxY2EyZmY2Y2UzYWJiZTdjZTcxNDYxNDUzZGM2MzVlMjllMzZlZjAuLmZj
ZDZhZTBlNDZlMzI3YmY1OWVhNmU3ZmQ4MzRiNGI4ZDgyNTIzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJL
aXQyLm9yZGVyCkBAIC05NjMsNiArOTYzLDcgQEAgX19aTjNXVEY5UmV0YWluUHRySTEyTlNVUkxS
ZXF1ZXN0RUMyRVBTMV8KIF9fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0YVNFUktTMF8KIF9f
Wk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZWFTRVJLUzBfCiBfX1pON1dlYkNvcmU0S1VS
TGFTRVJLUzBfCitfX1pON1dlYkNvcmU0Tm9kZTZnY1RyZWVFdgogX19aTjNXVEYyMkhhc2hUYWJs
ZUNvbnN0SXRlcmF0b3JJTlNfMTJBdG9taWNTdHJpbmdFU3Q0cGFpcklTMV9OU182U3RyaW5nRUVO
U18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNF9FRU5TXzE1Q2FzZUZvbGRpbmdIYXNoRU5TXzE0UGFp
ckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMxX0VFTlM5X0lTM19FRUVFU0FfRTE2c2tpcEVt
cHR5QnVja2V0c0V2CiBfX1pOM1dURjZWZWN0b3JJTlNfNlN0cmluZ0VMbTBFRWFTRVJLUzJfCiBf
X1pOU3Q2X19jb3B5SUxiMEVTdDI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdFNGNvcHlJUEtO
M1dURjZTdHJpbmdFUFM0X0VFVDBfVF9TOV9TOF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCAx
YmYwNzhmNWI3ZTBhNjI4ODJmMDQ1NTNkNjMyNTQ2ZDhjYmU5NzI2Li4zMjM0YjQxOTIyNTdhZWZl
YTdkZGNmYWRlZTNlMGE2NWNkMDY4Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0yMDUs
NyArMjA1LDYgQEAgRVhQT1JUUwogICAgICAgICA/cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGVA
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAgICAgICA/cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNz
UmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZDb250YWluZXJOb2RlQDJASEhfTkBaCiAg
ICAgICAgID9yZW1vdmVAU3RyaW5nQFdURkBAUUFFWElIQFoKLSAgICAgICAgP3JlbW92ZWRMYXN0
UmVmQE5vZGVAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yZXZlcnNlRmluZEBTdHJpbmdJbXBs
QFdURkBAUUFFSV9XSUBaCiAgICAgICAgID9zX2Zyb250ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25AV2ViQ29yZUBAMEhBCiAgICAgICAgID9zYXZlRG9jdW1lbnRBbmRTY3JvbGxT
dGF0ZUBIaXN0b3J5Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKQEAgLTI3MSw2ICsyNzAsNyBA
QCBFWFBPUlRTCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9B
VVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1l
bnRAV2ViQ29yZUBAUUFFX05IQFoKICAgICAgICAgP2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdl
YkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP2djVHJlZUBOb2RlQFdlYkNvcmVAQFFBRVhYWgogICAg
ICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
WFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3Jl
QEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3Jl
QEBTQVhfTkBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggNTYxZGIyMjIw
ZjA0OTU3OTliZDM0YjZkNzNhODQyOTMxZTc5N2RiMy4uYzU4NTRhOThjZTFiNmZkNzA2NjdlZjlh
NmJlMjU3YmZmMjJjMjliZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJD
RkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAt
MjAyLDcgKzIwMiw2IEBAIEVYUE9SVFMKICAgICAgICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNp
YmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAg
P3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8k
UGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05A
WgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZAQFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVk
TGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5n
SW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQogICAgICAgICA/c2F2ZURvY3VtZW50QW5kU2Ny
b2xsU3RhdGVASGlzdG9yeUNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCkBAIC0yMTAsNiArMjA5
LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2NyaXB0TmFtZVRvQ29kZUBXZWJDb3JlQEBZQT9BVzRV
U2NyaXB0Q29kZUBAQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1Jl
Y3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAg
ICAgICAgID9zZXRDYW5TdGFydE1lZGlhQFBhZ2VAV2ViQ29yZUBAUUFFWF9OQFoKKyAgICAgICAg
P2djVHJlZUBOb2RlQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0Q3Vyc2l2ZUZvbnRGYW1p
bHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENv
ZGVAQEBaCiAgICAgICAgID9zZXREZXZpY2VTY2FsZUZhY3RvckBQYWdlQFdlYkNvcmVAQFFBRVhN
QFoKICAgICAgICAgP3NldERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVjU3RhdGVASlND
QEBIQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGFmNGJmZjZhOWI5NTEyYmFiYWNhOGUx
ZDk0ZTI0NmI3NzRjYWU5NzguLmY1ZjRmMjRmZjRkMGE4YmRhOTRlYWZhYjc0YzUwZjU0YjkzZTA4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTQ0LDcgKzE0NCw3IEBAIF9aTjdXZWJD
b3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xOGRpZENhbmNlbEZyYW1lSW1wbEVQTlNfMTlJ
bnN0cnVtZW50aW5nQWdlCiBfWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyOHNldFNjcm9sbE9m
ZnNldEZyb21JbnRlcm5hbHNFUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmUxMFNjcm9sbFZp
ZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcy
MXNldERlbGVnYXRlc1Njcm9sbGluZ0ViOwotX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RS
ZWZFdjsKK19aTjdXZWJDb3JlNE5vZGU2Z2NUcmVlRXY7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4
c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwog
X1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9u
dEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjY2Iz
ZmE2ZTRlM2VhMmVhMmNiYzVjZWMwZGUzODg4ZmVmNGQwN2MxLi5jY2NjZjMyOGUwMzhhNGU0NjE3
MGUxMjE1YTNlMGVhM2JlZmZlNmFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDgtMjgg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIE5vZGUg
WCBpcyByZWZlcmVuY2VkIGJ5IGEgd3JhcHBlciBvYmplY3QsIGFsbCBOb2RlcyBpbiB0aGUgc2Ft
ZSB0cmVlIHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGdjLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwgdGVzdHMgdGhlIGZv
bGxvd2luZ3M6CisKKyAgICAgICAgICAtIElmIE5vZGUgWCBpcyByZWZlcmVuY2VkIGJ5IGEgd3Jh
cHBlciBvYmplY3QsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZQorICAgICAgICAgICAgdHJlZSBhcmUg
a2VwdCBhbGl2ZS4KKworICAgICAgICAqIGZhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0OiBVcGRh
dGVkIHRoZSB0ZXN0IHJlc3VsdC4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4
dDogRGl0dG8uCisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5o
dG1sOiBBZGRlZC4KKwogMjAxMi0wOC0yNiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5v
cmc+CiAKICAgICAgICAgU3VwcHJlc3MgTWFjIHRlc3QgcmVxdWlyaW5nIHJlYmFzZWxpbmUgYWZ0
ZXIgcjEyNjY4My4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQKaW5kZXggNjBk
M2ExNzBmMjliNjMzNDg3MWM4Mzk2ZGUwYWFiYmI3NmIwYzE5Ni4uOTJkNDEyMTdlZjNhZTM5MGY1
YWEyMDBjMmVlOWVmZDE1YTYxMjZmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2MtMy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3Rl
ZC50eHQKQEAgLTQsNSArNCw2IEBAIFRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcg
cGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhCiAKIHJlcGxhY2Vt
ZW50IGNvbnRlbnQKIEIKK3BhcmVudCBub2RlIGV4aXN0cwogY2hpbGQgbm9kZSBleGlzdHMKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dAppbmRleCAxOGM4MzQ4OGIwY2Y2ZjA0
MDFmZjM3OTdjZjE2NjM5ZGE1NjNkYTZlLi43MzgwOWNkYTg1NDM0ODc5Y2I5MjY3NmI5NmI3NWQx
OWYwMzE3YjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dApAQCAtNCw0
ICs0LDUgQEAgVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4
dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGEKIAogcmVwbGFjZW1lbnQgY29udGVudAog
QgorRAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZl
dGltZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZl
dGltZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgzZWVkZTFiNDEzZDY0N2VlNzgxNmU2NWNh
YmYwMDk2YzdhODU0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2dj
LWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwMiBAQAorPT09IElu
aXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFs
RGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RD
aGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4g
b2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJ
bml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9i
YWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJz
dENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBjbGVh
cmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNs
ZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNs
ZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+
IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0g
SW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9i
YWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJz
dENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVh
cmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xv
YmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmly
c3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBj
bGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBj
bGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2
PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09
IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xv
YmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmly
c3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGds
b2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZp
cnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNs
ZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYy
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIg
Y2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIg
Y2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRp
dj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09
PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGds
b2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZp
cnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNs
ZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBn
bG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5m
aXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBBZnRlciBj
bGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVy
IGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVy
IGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxk
aXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCis9
PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBn
bG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5m
aXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBj
bGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYx
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIg
Y2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRl
ciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRl
ciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8
ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg4MDAzZDU5N2ZlODY1NzYyYmI1ZjA2OTgxOGYzZjEyZDg2NWEyZTQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5odG1sCkBAIC0w
LDAgKzEsOTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8c2NyaXB0PgordmFyIHRlc3RDYXNlcyA9IFtbImRpdjAiLCAiZGl2MSIsICJkaXYyIl0s
CisgICAgICAgICAgICAgICAgIFsiZGl2MCIsICJkaXYyIiwgImRpdjEiXSwKKyAgICAgICAgICAg
ICAgICAgWyJkaXYxIiwgImRpdjAiLCAiZGl2MiJdLAorICAgICAgICAgICAgICAgICBbImRpdjEi
LCAiZGl2MiIsICJkaXYwIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MiIsICJkaXYwIiwgImRp
djEiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYyIiwgImRpdjEiLCAiZGl2MCJdXTsKKwordmFy
IHJvb3REaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2RvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQocm9vdERpdik7Cit2YXIgdGVzdEh0bWwgPSAiPGRpdiBpZD0nZGl2MC1wYXJl
bnQnPjxkaXYgaWQ9J2RpdjAnPjxkaXYgaWQ9J2RpdjAtY2hpbGQnPjwvZGl2PjwvZGl2PjxkaXYg
aWQ9J2RpdjEtcGFyZW50Jz48ZGl2IGlkPSdkaXYxJz48ZGl2IGlkPSdkaXYxLWNoaWxkJz48L2Rp
dj48L2Rpdj48ZGl2IGlkPSdkaXYyLXBhcmVudCc+PGRpdiBpZD0nZGl2Mic+PGRpdiBpZD0nZGl2
Mi1jaGlsZCc+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+IjsKKwordGVzdENhc2VzLmZv
ckVhY2goZnVuY3Rpb24gKHRlc3QpIHsKKyAgICB2YXIgZGl2WCwgZGl2WSwgZGl2WjsKKyAgICBk
ZWJ1ZygiPT09IEluaXRpYWwgc3RhdGUgPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0
ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7Cisg
ICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxk
QWxpdmUoZGl2WCwgdGVzdFswXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlks
IHRlc3RbMV0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsK
KworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PSIpOworICAgIHJv
b3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAg
cm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2
WCwgdGVzdFswXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlksIHRlc3RbMV0p
OworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsKKworICAgIGRl
YnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PSIpOworICAgIHJv
b3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAg
cm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBkaXZYID0gbnVsbDsKKyAgICBnYygpOworICAg
IGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZZLCB0ZXN0WzFdKTsKKyAgICBjaGVja1BhcmVu
dEFuZENoaWxkQWxpdmUoZGl2WiwgdGVzdFsyXSk7CisKKyAgICBkZWJ1ZygiPT09IEFmdGVyIGNs
ZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0iKTsKKyAgICByb290RGl2LmlubmVy
SFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7CisgICAg
ZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMl0pOworICAgIHJvb3REaXYuaW5u
ZXJIVE1MID0gIiI7CisgICAgZGl2WCA9IG51bGw7CisgICAgZGl2WSA9IG51bGw7CisgICAgZ2Mo
KTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WiwgdGVzdFsyXSk7CisKKyAgICBk
ZWJ1ZygiPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9
PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRl
c3RbMl0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBwcmV2Tm9kZXMgPSB3
aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZU5vZGVzKCk7CisgICAgcm9vdERpdi5pbm5lckhU
TUwgPSAiIjsKKyAgICBkaXZYID0gbnVsbDsKKyAgICBkaXZZID0gbnVsbDsKKyAgICBkaXZaID0g
bnVsbDsKKyAgICBnYygpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIC8v
IElmIGFsbCB0aGUgTm9kZSBvYmplY3RzIGluIHRlc3RIdG1sIGFyZSBzdWNjZXNzZnVsbHkgZGVz
dHJ1Y3RlZCwKKyAgICAgICAgLy8gYXQgbGVhc3QgOSA8ZGl2PnMgb2JqZWN0cyB3aWxsIGJlIHJl
bW92ZWQuCisgICAgICAgIC8vIChBY3R1YWxseSwgc2luY2UgdGVzdEh0bWwgcmVuZGVyaW5nIHJl
cXVpcmVzIG1vcmUgdGhhbiA5IE5vZGUgb2JqZWN0cy4pCisgICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzLm51bWJlck9mTGl2ZU5vZGVzKCkgPD0gcHJldk5vZGVzIC0gOSkKKyAgICAgICAgICAg
IHRlc3RQYXNzZWQoIkFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3Nm
dWxseSBkZXN0cnVjdGVkLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXN0RmFpbGVk
KCI8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIG5vdCBkZXN0cnVjdGVkLiIpOworICAg
IH0KK30pOworCitmdW5jdGlvbiBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2LCBuYW1lKSB7
CisgICAgZ2xvYmFsRGl2ID0gZGl2OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZ2xvYmFs
RGl2LmlkJywgbmFtZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYucGFy
ZW50Tm9kZS5pZCcsIG5hbWUgKyAiLXBhcmVudCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQnLCBuYW1lICsgIi1jaGlsZCIpOworICAgIGdsb2Jh
bERpdiA9IG51bGw7CisgICAgZ2MoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2lubGluZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2lubGluZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbAppbmRleCBi
ZjExOGJiZTVkNDI0Nzc1Y2NkYmQ0ZDc2ZWJjNzM5ZWRlMGE2OGJjLi5mNTkyZjQ5NzUzZWFhNzQ2
ZWFiYzdlMzBkMTlhN2I2NTNlYTk4YmYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sCkBAIC0yNSw0ICsy
NSw0IEBAIHZhciBhZnRlckNvdW50ID0gbnVtYmVyT2ZMaXZlTm9kZXMoKTsKIHNob3VsZEJlKCdh
ZnRlckNvdW50IC0gYmVmb3JlQ291bnQnLCAnMCcpOwogCiA8L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
OTczZTYwODcyODYzM2JmZTY2YzZlMTlkM2FhOTBlMTBkNmUzZDZmMC4uNzdjZWY2NjM1MDFmOTg0
MDQwOGRkNzEwNjA4N2U1MDc0Nzk4ZDYyNyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTI4ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBOb2RlIFggaXMgcmVmZXJlbmNlZCBieSBh
IHdyYXBwZXIgb2JqZWN0LCBhbGwgTm9kZXMgaW4gdGhlIHNhbWUgdHJlZSBzaG91bGQgYmUga2Vw
dCBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODg4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBT
eW1ib2wgY2hhbmdlcy4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXI6CisKIDIwMTItMDgtMjMgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5j
b20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gRGlzYWJsZSBjb21waWxh
dGlvbiBvZiBXZWJET00gZmlsZSBmb3Igbm93LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161956</attachid>
            <date>2012-09-03 19:02:21 -0700</date>
            <delta_ts>2012-09-03 19:17:20 -0700</delta_ts>
            <desc>Fixed perf regression</desc>
            <filename>bug-88834-20120904110204.patch</filename>
            <type>text/plain</type>
            <size>77975</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Mzk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VhYjM1Y2RjZWJkNGFh
YWVhZDlkZDQ0OTQzODJkNDk0ZDA1NWM0NS4uY2U2M2RkYzE4ZjJlMGQ1N2I1OWQ0ZmJjNmQyNjQ4
YzBhNzU1NzgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxMi0wOS0wMyAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFgg
aXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBzYW1lIHRyZWUg
c2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmVyZW5jZXNdCisgICAgICAgIEEgZGVzaWduIGRvY3VtZW50OiBodHRw
czovL2RvY3MuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9kb2N1bWVudC9kLzFIY2FlVS03NXh1
a01ZU1Vhc2tlRG9ITC1MMEZOdUNESXVrdlBtT2hlWThRL2VkaXQKKyAgICAgICAgQSB3ZWJraXQt
ZGV2QCB0aHJlYWQ6IGh0dHA6Ly9tYXJrbWFpbC5vcmcvdGhyZWFkL2txdm90ajVpaDRmNG13NG0K
KworICAgICAgICBbT3ZlcnZpZXddCisgICAgICAgIEN1cnJlbnRseSB0aGUgbGlmZXRpbWUgc2Vt
YW50aWNzIG9mIERPTSBOb2RlcyBpcyB1bnByZWRpY3RhYmxlIGZyb20gdGhlIHBlcnNwZWN0aXZl
CisgICAgICAgIG9mIEphdmFTY3JpcHQgcHJvZ3JhbW1lcnMuIEZvciBleGFtcGxlLCBjb25zaWRl
ciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKKyAgICAgICAgICBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgicCIpOworICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgICAgICAgcC5pbm5lckhUTUwgPSc8ZGl2PjxzcGFuIGlkPSJzcGFuIj48YnI+PC9zcGFuPjwv
ZGl2Pic7CisgICAgICAgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7
CisgICAgICAgICAgcC5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgICBhbGVydChzcGFuKTsgIC8v
IDxzcGFuPgorICAgICAgICAgIGFsZXJ0KHNwYW4ucGFyZW50Tm9kZSk7ICAvLyA/Pz8KKyAgICAg
ICAgICBhbGVydChzcGFuLmZpcnN0Q2hpbGQpOyAgLy8gPz8/CisKKyAgICAgICAgVGhlIGN1cnJl
bnQgV2ViS2l0IHJldHVybnMgbnVsbCBmb3Igc3Bhbi5wYXJlbnROb2RlIChpLmUuIDxkaXY+IGlz
IGFscmVhZHkgcmVjbGFpbWVkKQorICAgICAgICBhbmQgPGJyPiBmb3Igc3Bhbi5maXJzdENoaWxk
LgorCisgICAgICAgIFdlIHdhbnQgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBzbyB0aGF0IHNwYW4u
cGFyZW50Tm9kZSByZXR1cm5zIDxkaXY+IGFuZAorICAgICAgICBzcGFuLmZpcnN0Q2hpbGQgcmV0
dXJucyA8YnI+LiBBY2N1cmF0ZWx5IHNwZWFraW5nLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGUK
KyAgICAgICAgZm9sbG93aW5nIGxpZmV0aW1lIHNlbWFudGljczoKKworICAgICAgICAgIC0gSWYg
YSBOb2RlIFggaXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBz
YW1lIHRyZWUKKyAgICAgICAgICAgIGFyZSBrZXB0IGFsaXZlLgorCisgICAgICAgIFtCZW5lZml0
c10KKyAgICAgICAgVGhlIGZpcnN0IGJlbmVmaXQgaXMgdGhhdCB0aGUgbmV3IGxpZmV0aW1lIHNl
bWFudGljcyBpcyBtb3JlIHByZWRpY3RhYmxlIGFuZAorICAgICAgICB1bmRlcnN0YW5kYWJsZSB0
byBKYXZhU2NyaXB0IHByb2dyYW1tZXJzLiBUaGUgc2VtYW50aWNzIGlzIGFsaWduZWQgdG8gdGhl
IHNwZWMuCisgICAgICAgIFRoaXMgd2lsbCBmaXggYSBidW5jaCBvZiBpbmNvbXByZWhlbnNpYmxl
IGJlaGF2aW9ycyBvZiB0aGUgY3VycmVudCBXZWJLaXQKKyAgICAgICAgYXMgZGVzY3JpYmVkIGlu
IHRoZSBkZXNpZ24gZG9jdW1lbnQuCisKKyAgICAgICAgVGhlIHNlY29uZCBiZW5lZml0IGlzIG1v
cmUgZWZmaWNpZW50IFY4J3MgR0MuIFY4IGltcGxlbWVudHMgYSBnZW5lcmF0aW9uYWwgR0MKKyAg
ICAgICAgYnV0IGNhbm5vdCByZWNsYWltIERPTSBub2RlcyBpbiB0aGUgbWlub3IgR0MuIEFsbCBE
T00gd3JhcHBlciBvYmplY3RzIGhhdmUKKyAgICAgICAgdG8gYmUgcHJvbW90ZWQgdG8gdGhlIG9s
ZCBzcGFjZSBhbmQgcmVjbGFpbWVkIGJ5IHRoZSBtYWpvciBHQy4gV2UgYXJlIHBsYW5uaW5nCisg
ICAgICAgIHRvIHJlZGVzaWduIFY4J3MgR0Mgc28gdGhhdCBpdCBjYW4gcmVjbGFpbSBET00gbm9k
ZXMgaW4gdGhlIG1pbm9yIEdDLAorICAgICAgICB3aGljaCByZXF1aXJlcyB0aGUgbmV3IGxpZmV0
aW1lIHNlbWFudGljcyBvZiBET00gbm9kZXMuIEZvciBtb3JlIGRldGFpbHMKKyAgICAgICAgcGxl
YXNlIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVu
dC9kLzFLaThXckdJSGlwSWp6ejVybDNTRzdTTi11bEg5SmdiY1FBT0E0SmEtaFhzL2VkaXQKKwor
ICAgICAgICBbUGVyZm9ybWFuY2UgcmVzdWx0c10KKyAgICAgICAgVGhlIGZvbGxvd2luZyByZXN1
bHRzIGFyZSB0aGUgYXZlcmFuZ2Ugb2YgMTAgcnVuLXBlcmYtdGVzdHM6CisKKyAgICAgICAgICAo
Q2hyb21pdW0vTGludXgpCisgICAgICAgICAgRHJvbWFlby9kb20tYXR0ciAgICAgICAgNjU3MCBy
dW5zL3MgPT4gNjU4NyBydW5zL3MgICAoKzAuMjUlKQorICAgICAgICAgIERyb21hZW8vZG9tLW1v
ZGlmeSAgICAgIDM5MDUgcnVucy9zID0+IDM4NzMgcnVucy9zICAgKC0wLjgxJSkKKyAgICAgICAg
ICBEcm9tYWVvL2RvbS1xdWVyeSAgICAgODIyOTkzIHJ1bnMvcyA9PiA4NjU4NjggcnVucy9zICgr
NS4yMSUpCisgICAgICAgICAgRHJvbWFlby9kb20tdHJhdmVyc2UgICAgMjQ0OCBydW5zL3MgPT4g
MjQ0MiBydW5zL3MgICAoLTAuMjQlKQorCisgICAgICAgICAgKFNhZmFyaS9NYWMpCisgICAgICAg
ICAgRHJvbWFlby9kb20tYXR0ciAgICAgICAgNTc2OSBydW5zL3MgPT4gNTc5MCBydW5zL3MgICAo
KzAuMzYlKQorICAgICAgICAgIERyb21hZW8vZG9tLW1vZGlmeSAgICAgIDQ5MzUgcnVucy9zID0+
IDQ3NzAgcnVucy9zICAgKC0zLjM0JSkKKyAgICAgICAgICBEcm9tYWVvL2RvbS1xdWVyeSAgICAg
OTQ4OTQxIHJ1bnMvcyA9PiA5NTQyMTggcnVucy9zICgrMC41NSUpCisgICAgICAgICAgRHJvbWFl
by9kb20tdHJhdmVyc2UgICAgMzg3MCBydW5zL3MgPT4gMzg1MCBydW5zL3MgICAoLTAuNTElKQor
CisgICAgICAgIFRoZSAtMy4zNCUgcmVncmVzc2lvbiBpbiBkb20tbW9kaWZ5IGluIFNhZmFyaS9N
YWMgaXMgbm90IGFjY2VwdGFibGUsCisgICAgICAgIGJ1dCBJIGhhdmUgYWxyZWFkeSBvcHRpbWl6
ZWQgZG9tLW1vZGlmeSBieSA4LjIlIGluIGFub3RoZXIgcGF0Y2ggKGJ1ZyA5Mjk2NSkKKyAgICAg
ICAgdG8gb2Zmc2V0IHRoZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLiBTZWUgdGhlIGRlc2lnbiBk
b2N1bWVudCBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWxlZCBkaXNjdXNzaW9uIGFib3V0IHBlcmZv
cm1hbmNlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0
bWwKKyAgICAgICAgICAgICAgZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFz
ZS5odG1sCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFu
Y2VzLW5vQmFzZVZhbFJlZi5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWst
ZWxlbWVudC1pbnN0YW5jZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFr
LWR5bmFtaWNhbGx5LWFkZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBh
bmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50cy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9u
cy9zdmdsZW5ndGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLnN2ZworICAgICAgICAgICAgICBDb25m
aXJtIHRoYXQgYWxsIHRoZSBvdGhlciBleGlzdGluZyB0ZXN0cyBkbyBub3QgY3Jhc2guCisKKyAg
ICAgICAgTm90ZTogSSB3aWxsIHJlbW92ZSBhbGwgZnByaW50ZigpcyBhbmQgYWRkIHBlci1mdW5j
dGlvbiBjb21tZW50cyBhZnRlcgorICAgICAgICB3ZSBmb3VuZCB0aGF0IHRoaXMgcGF0Y2ggaXMg
T0suCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVy
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckFjdGl2ZURPTU5vZGUpOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF0dHI6OmNyZWF0ZVRleHRDaGlsZCk6CisgICAgICAgICogZG9tL0NvbnRh
aW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250YWluZXJOb2RlKToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZElu
dG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlm
eURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oOgorICAgICAgICAoQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6OkNoaWxkTm9kZUluc2Vy
dGlvbk5vdGlmaWVyKToKKyAgICAgICAgKENoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OkNoaWxkTm9kZVJlbW92YWxO
b3RpZmllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVhY2hh
YmxlRnJvbVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQWxsQ2hpbGRyZW5JbkNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlOjpOb2RlUmVtb3ZhbERpc3BhdGNo
ZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGU6OmFkZENoaWxkTm9kZXNU
b0RlbGV0aW9uUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90
aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeSk6
CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNrSWZMaWZldGltZU93bmVyKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZWRMYXN0
UmVmKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpndWFyZERlcmVmKToKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICog
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjpyZW1vdmVB
bGxTaGFkb3dSb290cyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3ZlZExhc3RSZWYp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnY1RyZWUpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTaGFyZWQ6OlRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6flRy
ZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVmKToKKyAgICAgICAg
KFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6d3JhcHBlclJlZik6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2hhcmVkOjp3cmFwcGVyRGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJl
ZDo6cmVmQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6d3JhcHBlclJlZkNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6Omhhc09uZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2hhcmVkOjpzZXRMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTaGFyZWQ6OnVuc2V0TGlmZXRpbWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2hhcmVkOjppc0xpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJl
ZDo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFkb3B0ZWQpOgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpnY1RyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjphcHBlbmRDaGlsZCk6Cisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAoU1ZHRWxlbWVudElu
c3RhbmNlKToKKwogMjAxMi0wOS0wMiAgWW9zaGlmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtGb3Jtc10gQU0vUE0gZmllbGQgb2YgbXVsdGlwbGUgZmllbGRzIHRp
bWUgaW5wdXQgVUkgc2hvdWxkIGJlIGZpeGVkIHdpZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWFhZTdmODIw
MjNlOGRkZWY5ZjliZjg0OTYyNzgzYjAwZDcwMjJkNS4uMTQyNTEyZTkyMjgwYTJkMjRiMWIzMjE1
ZmIwNzhkN2MyYmU1OGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTAz
ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBhIE5v
ZGUgWCBpcyByZWFjaGFibGUgZnJvbSBKYXZhU2NyaXB0LCBhbGwgTm9kZXMgaW4gdGhlIHNhbWUg
dHJlZSBzaG91bGQgYmUga2VwdCBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTeW1ib2wgY2hhbmdlcy4KKworICAgICAgICAqIG1hYy9XZWJLaXQy
Lm9yZGVyOgorICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0
MkNGTGl0ZS5kZWY6CisKIDIwMTItMDktMDIgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gS2VlcCBhY3RpdmVQb3B1cE1lbnUgdG8gY2Fs
bCB2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUoKSBvdXRzaWRlIHNob3dQb3B1cE1lbnUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCBiNTc3ZTZmNDllYTQ5MjViZjJiODM2ZWJkZDM1OTRhYzU3OTQ2
MmMyLi43Mzg3NmNkNTJhMGMxYTMyNDc0ZDY2NDk5MTkxOTkyYWRmNjNhYTI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtNjUxLDggKzY1MSw4IEBAIF9fWk43V2ViQ29yZTRLVVJMQzFFTlNfMThQ
YXJzZWRVUkxTdHJpbmdUYWdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU0S1VSTEMxRVA1
TlNVUkwKIF9fWk43V2ViQ29yZTRLVVJMQzFFUEs3X19DRlVSTAogX19aTjdXZWJDb3JlNEtVUkxD
MUVSS1MwX1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlNE5vZGU2Z2NUcmVlRXYKIF9fWk43
V2ViQ29yZTROb2RlMTByZW5kZXJSZWN0RVBiCi1fX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExh
c3RSZWZFdgogX19aTjdXZWJDb3JlNE5vZGUxN3N0b3BJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2Vi
Q29yZTROb2RlMThzdGFydElnbm9yaW5nTGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOXNldE5l
ZWRzU3R5bGVSZWNhbGNFTlNfMTVTdHlsZUNoYW5nZVR5cGVFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRl
eCAwYjJiMTc1ODNjYjcwNjA3OWI3MzIyODdkMjhmZjI0MmNiMzVkM2ZjLi45ZDhlODBjNWNjYjky
OTYyYWZiMWY5N2U5ZGIwNDNmZDBlNDkzYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTE5MjMs
NyArMTkyMyw2IEBAIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2sxMXBhaW50RmxvYXRzRVJOU185
UGFpbnRJbmZvRWlpYgogX19aTjdXZWJDb3JlMTFSZW5kZXJCbG9jazEwcGFpbnRDYXJldEVSTlNf
OVBhaW50SW5mb0VpaU5TXzlDYXJldFR5cGVFCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlv
bjEzY2FyZXRSZW5kZXJlckV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0Nv
bnRlbnRFZGl0YWJsZUV2Ci1fX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBU
cmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFRQogX19aTjdXZWJDb3JlMThpc0VkaXRhYmxl
UG9zaXRpb25FUktOU184UG9zaXRpb25FCiBfX1pOSzdXZWJDb3JlMTlEcmFnQ2FyZXRDb250cm9s
bGVyMTNjYXJldFJlbmRlcmVyRXYKIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2syNXBhaW50Q29u
dGludWF0aW9uT3V0bGluZXNFUk5TXzlQYWludEluZm9FaWkKQEAgLTI0NzEsMTMgKzI0NzAsMTAg
QEAgX19aTkszV1RGOUhhc2hUYWJsZUlQdlMxX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzFfRUVO
U183UHRySGFzaElTMV9FRU5TXzEwSGFzaFQKIF9fWk43V2ViQ29yZTExSlNOb2RlT3duZXI4Zmlu
YWxpemVFTjNKU0M2SGFuZGxlSU5TMV83VW5rbm93bkVFRVB2CiBfX1pON1dlYkNvcmUxNHVuY2Fj
aGVXcmFwcGVySU5TXzROb2RlRUVFdlBOU18xNURPTVdyYXBwZXJXb3JsZEVQVF9QTlNfMTJKU0RP
TVdyYXBwZXJFCiBfX1pON1dlYkNvcmUxNEpTSFRNTERvY3VtZW50RDFFdgotX19aVGhuOF9ON1dl
YkNvcmU4RG9jdW1lbnQxNHJlbW92ZWRMYXN0UmVmRXYKLV9fWk43V2ViQ29yZThEb2N1bWVudDE0
cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJDb3JlMTRTdHlsZVNoZWV0TGlzdEQxRXYKIF9fWk43
V2ViQ29yZTlUcmVlU2NvcGUyMGRlc3Ryb3lUcmVlU2NvcGVEYXRhRXYKIF9fWk43V2ViQ29yZTE4
RG9jdW1lbnRPcmRlcmVkTWFwNWNsZWFyRXYKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE3
cmVtb3ZlQWxsQ2hpbGRyZW5FdgotX19aTjdXZWJDb3JlMjhyZW1vdmVBbGxDaGlsZHJlbkluQ29u
dGFpbmVySU5TXzROb2RlRU5TXzEzQ29udGFpbmVyTm9kZUVFRXZQVDBfCiBfX1pON1dlYkNvcmUx
NUhUTUxIdG1sRWxlbWVudEQwRXYKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudEQyRXYKIF9f
Wk43V2ViQ29yZTdFbGVtZW50RDJFdgpAQCAtNDE1MSw3ICs0MTQ3LDYgQEAgX19aTjdXZWJDb3Jl
NE5vZGUxNXJlbW92ZWRGcm9tVHJlZUViCiBfX1pON1dlYkNvcmVMMTlub3RpZnlDaGlsZEluc2Vy
dGVkRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTROb2RlMTZpbnNlcnRlZEludG9UcmVlRWIKIF9f
Wk43V2ViQ29yZUwyOGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHNFUE5TXzROb2RlRQotX19a
TjdXZWJDb3JlMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFMTRyZW1vdmVkTGFzdFJl
ZkV2CiBfX1pUaG44X043V2ViQ29yZTE2RG9jdW1lbnRGcmFnbWVudEQwRXYKIF9fWk43V2ViQ29y
ZUwzM2NyZWF0ZUhUTUxQYXJhZ3JhcGhFbGVtZW50V3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBO
U18xN0pTRE9NR2xvYmFsT2JqZWN0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzExSFRNTEVsZW1lbnRF
RUUKIF9fWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlcklOU18yMkpTSFRNTFBhcmFncmFwaEVsZW1l
bnRFTlNfMjBIVE1MUGFyYWdyYXBoRWxlbWVudEVFRVBOU18xMkpTRE9NV3JhcHBlckVQTjNKU0M5
RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBUMF8KQEAgLTI5NDY0LDEyICsyOTQ1
OSwxMCBAQCBfX1pON1dlYkNvcmUxM1NWR1VzZUVsZW1lbnQzMGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcEV2CiBfX1pOSzdXZWJDb3JlMTJTVkdUcmFuc2Zvcm05dHJhbnNsYXRlRXYKIF9f
Wk43V2ViQ29yZTEwRmxvYXRQb2ludDE1bmFycm93UHJlY2lzaW9uRWRkCiBfX1pON1dlYkNvcmUx
NUFmZmluZVRyYW5zZm9ybTlzZXRNYXRyaXhFZGRkZGRkCi1fX1pON1dlYkNvcmUxMFRyZWVTaGFy
ZWRJTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFRTE0cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJD
b3JlMThTVkdFbGVtZW50SW5zdGFuY2VEMEV2CiBfX1pON1dlYkNvcmUxMFNWR0VsZW1lbnQyMXJl
bW92ZUluc3RhbmNlTWFwcGluZ0VQTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFCiBfX1pOSzNXVEY5
SGFzaFRhYmxlSVBON1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUVTM19OU18xN0lkZW50aXR5
RXh0cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVTOV9F
NGZpbmRJUzNfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1MzX1M3X0VFRUVOU18yMkhh
c2hUYWJsZUNvbnN0SXRlcmF0b3JJUzNfUzNfUzVfUzdfUzlfUzlfRUVSS1RfCiBfX1pOM1dURjlI
YXNoVGFibGVJUE43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRlbnRpdHlF
eHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U2
cmVtb3ZlRVBTM18KLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcklO
U18xOFNWR0VsZW1lbnRJbnN0YW5jZUVTMV9FRXZQVDBfCiBfX1pUaG44X043V2ViQ29yZTE0U1ZH
TGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043V2ViQ29yZTE4U1ZHUG9seWxpbmVFbGVtZW50RDBF
dgogX19aVGhuOF9ON1dlYkNvcmUxN1NWR1BvbHlnb25FbGVtZW50RDBFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBlMTk0
OTU0MGIyMjE4ZGYzNDAxNTZmNjBhZGU3ZjgzYmU2ZWQzOTUxLi40YmQyZmJiYTAwNGQ4NGZmNzJi
YTIwMzUzZGNiYjNiYWNiNjI4Njg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtOTM3LDggKzkzNywxMyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKIAogICAgIGlmICghJGhhc1BhcmVudCkgewogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICRpbXBsVHlwZSogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsg
fVxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1w
bCgpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9XG5cbiIpOwotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgcmVsZWFzZUltcGxJZk5vdE51bGwoKSB7IGlmICht
X2ltcGwpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9IH1cblxuIik7CisgICAgICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgbV9pbXBsLT53cmFwcGVyRGVyZWYo
KTsgbV9pbXBsID0gMDsgfVxuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdm9pZCByZWxlYXNlSW1wbElmTm90TnVsbCgpIHsgaWYgKG1faW1wbCkgeyBtX2ltcGwt
PndyYXBwZXJEZXJlZigpOyBtX2ltcGwgPSAwOyB9IH1cblxuIik7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgcmVsZWFzZUltcGwo
KSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfVxuXG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1wbElmTm90TnVsbCgpIHsgaWYg
KG1faW1wbCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH0gfVxuXG4iKTsKKyAgICAg
ICAgfQogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpcbiIpOwogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbXBsVHlwZSogbV9pbXBsO1xuIik7CiAgICAg
fSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNHZW5lcmF0ZVRvTmF0
aXZlT2JqZWN0In0pIHsKQEAgLTE2NjQsOSArMTY2OSwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xh
c3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKVxuIik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05h
bWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICwgbV9pbXBsKGltcGwubGVha1JlZigpKVxuIik7CisgICAgICAgICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGUiKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgLCBtX2ltcGwoaW1wbC5nZXQoKSlcbiIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAsIG1faW1wbChp
bXBsLmxlYWtSZWYoKSlcbiIpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
Tm9kZSIpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwtPndyYXBw
ZXJSZWYoKTtcbiIpOworICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojpm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4IDIyNzYxOWU3OGI5NmQ0MjNm
ZmYwYmQ2NDAwZmE0YzAwMTYxYzI2NGUuLjM2NjhmZmVlNjAzMTNhNGE3NjRiMjZjY2I3ZjMzODZj
ZjY2ZTQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNw
cApAQCAtMTU3LDE1ICsxNTcsMTUgQEAgdm9pZCBET01EYXRhU3RvcmU6OndlYWtOb2RlQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogZG9tT2IKICAgICAgICAg
RE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07CiAgICAgICAgIERPTU5vZGVNYXBwaW5nJiBu
b2RlTWFwID0gbm9kZS0+aXNBY3RpdmVOb2RlKCkgPyBzdG9yZS0+YWN0aXZlRG9tTm9kZU1hcCgp
IDogc3RvcmUtPmRvbU5vZGVNYXAoKTsKICAgICAgICAgaWYgKG5vZGVNYXAucmVtb3ZlSWZQcmVz
ZW50KG5vZGUsIHY4T2JqZWN0KSkgewotICAgICAgICAgICAgbm9kZS0+ZGVyZWYoKTsgLy8gTm9i
b2R5IG92ZXJyaWRlcyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKLSAgICAgICAgICAgIHJldHVy
bjsgLy8gVGhlcmUgbWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4g
d29ybGQncyBtYXBzCisgICAgICAgICAgICBub2RlLT53cmFwcGVyRGVyZWYoKTsKKyAgICAgICAg
ICAgIHJldHVybjsgLy8gVGhlcmUgaXMgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUg
aW4gd29ybGQncyBtYXBzLgogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gSWYgbm90IGZvdW5k
LCBpdCBtZWFucyBtYXAgZm9yIHRoZSB3cmFwcGVyIGhhcyBiZWVuIGFscmVhZHkgZGVzdHJveWVk
LCBqdXN0IGRpc3Bvc2UgdGhlCiAgICAgLy8gaGFuZGxlIGFuZCBkZXJlZiB0aGUgb2JqZWN0IHRv
IGZpZ2h0IG1lbW9yeSBsZWFrLgogICAgIHY4T2JqZWN0LkRpc3Bvc2UoKTsKLSAgICBub2RlLT5k
ZXJlZigpOyAvLyBOb2JvZHkgb3ZlcnJpZGVzIE5vZGU6OmRlcmVmIHNvIGl0J3Mgc2FmZQorICAg
IG5vZGUtPndyYXBwZXJEZXJlZigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCBmNTFiNjdiYmU3
YzcyNjgxMDQwZjc0NjMzNTllZDhiYWU1MWVmMjIxLi42MTAzMzU1MTBiODY3MDk2Y2YxMGE1NGM5
NTIyODVlOTdmNmY2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKQEAgLTczLDcgKzczLDggQEAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gVjhE
T01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBhc3NSZWZQdHI8Tm9kZT4KICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKICAgICBBU1NFUlQobWF5YmVET01XcmFwcGVyKHdy
YXBwZXJIYW5kbGUpKTsKICAgICBBU1NFUlQoIW5vZGUtPmlzQWN0aXZlTm9kZSgpKTsKLSAgICBn
ZXRET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7
CisgICAgbm9kZS0+d3JhcHBlclJlZigpOworICAgIGdldERPTU5vZGVNYXAoaXNvbGF0ZSkuc2V0
KG5vZGUuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwogICAgIHJldHVybiB3cmFwcGVySGFuZGxlOwog
fQogCkBAIC04Miw3ICs4Myw4IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NTm9kZShQYXNzUmVmUHRyCiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+OjpOZXcod3JhcHBlcik7CiAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVy
SGFuZGxlKSk7CiAgICAgQVNTRVJUKG5vZGUtPmlzQWN0aXZlTm9kZSgpKTsKLSAgICBnZXRBY3Rp
dmVET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7
CisgICAgbm9kZS0+d3JhcHBlclJlZigpOworICAgIGdldEFjdGl2ZURPTU5vZGVNYXAoaXNvbGF0
ZSkuc2V0KG5vZGUuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwogICAgIHJldHVybiB3cmFwcGVySGFu
ZGxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggOTVjM2ZlMDUyNmE3NGIzNjVhNGU2ZWQ5Zjhj
MWE1ZDdjMWRmNjZhZS4uODhlYzA0NWFhNjBkYzE3MDBkNDVlNDliMDRjMzJiNDAxYjJkMjgyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmNwcApAQCAtODIsNiArODIsNyBAQCB2b2lkIEF0dHI6OmNyZWF0ZVRleHRD
aGlsZCgpCiAgICAgICAgIC8vIFRoaXMgZG9lcyBldmVyeXRoaW5nIGFwcGVuZENoaWxkKCkgd291
bGQgZG8gaW4gdGhpcyBzaXR1YXRpb24gKGFzc3VtaW5nIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2Vk
IHdhcyBzZXQpLAogICAgICAgICAvLyBidXQgbXVjaCBtb3JlIGVmZmljaWVudGx5LgogICAgICAg
ICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICAgICAgdGV4dE5vZGUt
PnVuc2V0TGlmZXRpbWVPd25lcigpOwogICAgICAgICBzZXRGaXJzdENoaWxkKHRleHROb2RlLmdl
dCgpKTsKICAgICAgICAgc2V0TGFzdENoaWxkKHRleHROb2RlLmdldCgpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYWRhZmViNjE3MDYxNDgwMWJmYzA3NjY3
YTU5MTJhZTkwNmU0ODMzYS4uYjA5NzI1YzQ4YTEwOTIxMTc2YWI2ZmNhNDY5YTQ1N2ViMTRiYTg5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNDIyLDcgKzQyMiw3IEBA
IGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNlLCBwcmV2LCBuZXh0LCAtMSk7
CiAKLSAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgp
KTsKKyAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KGNoaWxkLmdldCgp
LCBmYWxzZSk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogCiAgICAgcmV0
dXJuIGNoaWxkOwpAQCAtNDY4LDcgKzQ2OCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2Vy
UmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQpCiAgICAgcmVtb3ZlQmV0d2VlbihwcmV2LCBuZXh0
LCBvbGRDaGlsZCk7CiAKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1ZSwgcHJldiwgbmV4dCwgLTEp
OwotICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkob2xkQ2hpbGQpOwor
ICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkob2xkQ2hpbGQsIGZhbHNl
KTsKIH0KIAogLy8gdGhpcyBkaWZmZXJzIGZyb20gb3RoZXIgcmVtb3ZlIGZ1bmN0aW9ucyBiZWNh
dXNlIGl0IGZvcmNpYmx5IHJlbW92ZXMgYWxsIHRoZSBjaGlsZHJlbiwKQEAgLTUzMCw3ICs1MzAs
NyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICBjaGlsZHJlbkNo
YW5nZWQoZmFsc2UsIDAsIDAsIC1zdGF0aWNfY2FzdDxpbnQ+KHJlbW92ZWRDaGlsZHJlbkNvdW50
KSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgcmVtb3ZlZENoaWxkcmVuQ291bnQ7ICsraSkKLSAg
ICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVkQ2hpbGRy
ZW5baV0uZ2V0KCkpOworICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90
aWZ5KHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKSwgZmFsc2UpOwogCiAgICAgYWxsb3dFdmVudERp
c3BhdGNoKCk7CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmgKaW5kZXggOGI5MjQ3NzNlN2EyNmRhNThhNWVkODUzODA1MDRiMWMz
M2MyNTMwYi4uODBmYjcxMDM4Zjk2NzZiNjk5ODM1YjdmZmMxZGZkNTkyNjlhZmViOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC0xMTksOSArMTE5LDEwIEBAIHByb3RlY3RlZDoK
IAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRh
aW5lcj4KICAgICBmcmllbmQgdm9pZCBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKEdlbmVyaWNOb2Rl
KiBjaGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsKLQogICAgIHRlbXBsYXRlPGNsYXNzIEdl
bmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KICAgICBmcmllbmQgdm9pZCBQ
cml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlKEdlbmVyaWNOb2RlKiYgaGVhZCwg
R2VuZXJpY05vZGUqJiB0YWlsLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOworICAgIHRlbXBsYXRl
PGNsYXNzIEdlbmVyaWNOb2RlPgorICAgIGZyaWVuZCBib29sIGlzUmVhY2hhYmxlRnJvbVdyYXBw
ZXIoR2VuZXJpY05vZGUqLCBHZW5lcmljTm9kZSoqKTsKIAogICAgIHZvaWQgc2V0Rmlyc3RDaGls
ZChOb2RlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQogICAgIHZvaWQgc2V0TGFz
dENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENoaWxkID0gY2hpbGQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCmluZGV4IDJlZGVhMzBlMGMw
ODZlZTBlY2Y4MzQzZTU5NjVlZjk4MmRlYjMwMmIuLmQxYzUyZTVlMDMxZjBhZTIwZWE3ZTVjYmMy
ZDc4NjY2YTIzZTYxMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlQWxnb3JpdGhtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmNwcApAQCAtNDcsOSArNDcsMTEgQEAgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25O
b3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b0RvY3VtZW50KENvbnRhaW5lck4K
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHRvRWxl
bWVudChub2RlKS0+c2hhZG93KCkpIHsKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aCsrOwogICAg
ICAgICBTaGFkb3dSb290VmVjdG9yIHJvb3RzKHNoYWRvdyk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcm9vdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBub3RpZnlOb2RlSW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQocm9vdHNbaV0uZ2V0KCkpOworICAgICAgICBtX3RyZWVTY29wZURl
cHRoLS07CiAgICAgfQogfQogCkBAIC01OCwxMCArNjAsMTQgQEAgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUoQ29udGFpbmVy
Tm9kZSoKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPmlzQ29u
dGFpbmVyTm9kZSgpKQogICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9D
b250YWluZXJOb2RlKGNoaWxkKSk7CisgICAgICAgIGVsc2UgaWYgKCFtX3RyZWVTY29wZURlcHRo
KQorICAgICAgICAgICAgY2hpbGQtPnVuc2V0TGlmZXRpbWVPd25lcigpOwogICAgIH0KIAorICAg
IG1fdHJlZVNjb3BlRGVwdGgrKzsKICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSBub2RlLT55
b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgp
KQogICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShyb290KTsKKyAgICBtX3RyZWVT
Y29wZURlcHRoLS07CiB9CiAKIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlE
ZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlKiBub2RlKQpAQCAtODIs
OSArODgsMTEgQEAgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRh
bnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUKICAgICAgICAgbm9kZS0+ZG9jdW1l
bnQoKS0+c2V0Q1NTVGFyZ2V0KDApOwogCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9
IHRvRWxlbWVudChub2RlKS0+c2hhZG93KCkpIHsKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aCsr
OwogICAgICAgICBTaGFkb3dSb290VmVjdG9yIHJvb3RzKHNoYWRvdyk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcm9vdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBub3RpZnlO
b2RlUmVtb3ZlZEZyb21Eb2N1bWVudChyb290c1tpXS5nZXQoKSk7CisgICAgICAgIG1fdHJlZVNj
b3BlRGVwdGgtLTsKICAgICB9CiB9CiAKQEAgLTkzLDE1ICsxMDEsMTkgQEAgdm9pZCBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUoQ29udGFp
bmVyTm9kZSogbm8KICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQt
PmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJl
ZSh0b0NvbnRhaW5lck5vZGUoY2hpbGQpKTsKKyAgICAgICAgZWxzZSBpZiAoIW1fdHJlZVNjb3Bl
RGVwdGgpCisgICAgICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihjaGlsZCk7CiAgICAgfQog
CiAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKSB7
CisgICAgICAgIG1fdHJlZVNjb3BlRGVwdGgrKzsKICAgICAgICAgU2hhZG93Um9vdFZlY3RvciBy
b290cyhzaGFkb3cpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3RzLnNpemUo
KTsgKytpKQogICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShyb290c1tpXS5n
ZXQoKSk7CisgICAgICAgIG1fdHJlZVNjb3BlRGVwdGgtLTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKaW5kZXggMTYzMjk1NTQxMzU1
ZTdkMzYyMjhlNDJiMzQxMTk0YzAyMGFjZDExMC4uYTYwOGUyYTM0NzE2ZjhlN2ViNTBmNTBiZTll
Yzg3YjRkM2FmYmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGVBbGdvcml0aG1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmgKQEAgLTMwLDkgKzMwLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihDb250
YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgOiBtX2luc2VydGlvblBvaW50KGlu
c2VydGlvblBvaW50KQorICAgICAgICAsIG1fdHJlZVNjb3BlRGVwdGgoMCkKICAgICB7CiAgICAg
fQogCkBAIC00NiwyNSArNDgsMzYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeU5vZGVJbnNl
cnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIG1faW5z
ZXJ0aW9uUG9pbnQ7Ci0gICAgVmVjdG9yPCBSZWZQdHI8Tm9kZT4gPiBtX3Bvc3RJbnNlcnRpb25O
b3RpZmljYXRpb25UYXJnZXRzOworICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPE5vZGU+ID4gPiBt
X3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzOworICAgIC8vIG1fdHJlZVNjb3BlRGVw
dGggPT0gMCBtZWFucyB0aGF0IHRoZSBOb3RpZmllciBpcyBpbiB0aGUgVHJlZVNjb3BlIG9mIG1f
aW5zZXJ0aW9uUG9pbnQuCisgICAgaW50IG1fdHJlZVNjb3BlRGVwdGg7CiB9OwogCiBjbGFzcyBD
aGlsZE5vZGVSZW1vdmFsTm90aWZpZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGV4cGxpY2l0IENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihDb250YWluZXJO
b2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAgICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlv
blBvaW50KQorICAgICAgICAsIG1fdHJlZVNjb3BlRGVwdGgoMCkKKyAgICAgICAgLCBtX2xpZmV0
aW1lT3duZXJGb3VuZChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBub3RpZnkoTm9k
ZSopOworICAgIHZvaWQgbm90aWZ5KE5vZGUqLCBib29sKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5vZGUqKTsKICAg
ICB2b2lkIG5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOwog
ICAgIHZvaWQgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoTm9kZSopOwogICAgIHZvaWQg
bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKik7CisgICAgdm9pZCBjaGVj
a0lmTGlmZXRpbWVPd25lcihOb2RlKik7CiAKICAgICBDb250YWluZXJOb2RlKiBtX2luc2VydGlv
blBvaW50OworICAgIC8vIG1fdHJlZVNjb3BlRGVwdGggPT0gMCBtZWFucyB0aGF0IHRoZSBOb3Rp
ZmllciBpcyBpbiB0aGUgVHJlZVNjb3BlIG9mIG1faW5zZXJ0aW9uUG9pbnQuCisgICAgaW50IG1f
dHJlZVNjb3BlRGVwdGg7CisgICAgLy8gbV9saWZldGltZU93bmVyRm91bmQgPT0gdHJ1ZSBtZWFu
cyB0aGF0IGEgbGlmZXRpbWUgb3duZXIgaXMgZm91bmQgaW4gdGhlIFRyZWVTY29wZSBvZgorICAg
IC8vIG1faW5zZXJ0aW9uUG9pbnQuCisgICAgYm9vbCBtX2xpZmV0aW1lT3duZXJGb3VuZDsKIH07
CiAKIG5hbWVzcGFjZSBQcml2YXRlIHsKQEAgLTc0LDExICs4Nyw2NiBAQCBuYW1lc3BhY2UgUHJp
dmF0ZSB7CiAKIH0KIAorLy8gSWYgdGhlIFRyZWVTY29wZSBoYXMgYSBOb2RlIHJlZmVyZW5jZWQg
YnkgYSB3cmFwcGVyIG9iamVjdCwgaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpIHNldHMKKy8vIGEg
bGlmZXRpbWUgb3duZXIgb24gdGhlIE5vZGUgYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlLCBp
c1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgc2ltcGx5CisvLyByZXR1cm5zIGZhbHNlIHdpdGhvdXQg
c2V0dGluZyBhIGxpZmV0aW1lIG93bmVyLgordGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGU+Citp
bmxpbmUgYm9vbCBpc1JlYWNoYWJsZUZyb21XcmFwcGVyKEdlbmVyaWNOb2RlKiBzdGFydE5vZGUs
IEdlbmVyaWNOb2RlKiogcm9vdCkKK3sKKyAgICAvLyBBdCB0aGlzIHBvaW50LCB0aGUgVHJlZVNj
b3BlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBubyBsaWZldGltZSBvd25lci4KKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBiZWZvcmVcbiIsIHN0YXJ0
Tm9kZSk7CisgICAgQVNTRVJUKCFzdGFydE5vZGUtPmlzTGlmZXRpbWVPd25lcigpKTsKKworICAg
IC8vIFdlIHRyYXZlcnNlIHRoZSBUcmVlU2NvcGUgaW4gdGhlIERGUyBvcmRlciwgc3RhcnRpbmcg
ZnJvbSBzdGFydE5vZGUuIFRoZSB0cmF2ZXJzYWwKKyAgICAvLyBvcmRlciBkb2VzIG5vdCBtYXR0
ZXIgZm9yIGNvcnJlY3RuZXNzIGJ1dCBtYXR0ZXJzIGZvciBwZXJmb3JtYW5jZS4KKyAgICAvLyBT
ZWUgYSBkZXNpZ24gZG9jdW1lbnQgKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNv
bS9kb2N1bWVudC9kLzE3dWJLNGFvYm00RzNjMkZBRHFFb1hBd1NXYkNJaXBYd3pyR0ZKWV9hdG9R
L2VkaXQpIGZvciBtb3JlIGRldGFpbHMuCisgICAgR2VuZXJpY05vZGUqIG5vZGUgPSBzdGFydE5v
ZGU7CisgICAgYm9vbCB0cmF2ZXJzZVN0YXJ0ZWQgPSBmYWxzZTsKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICBBU1NFUlQobm9kZSk7CisgICAgICAgIEFTU0VSVCghbm9kZS0+aXNMaWZldGlt
ZU93bmVyKCkpOworCisgICAgICAgIGlmICh0cmF2ZXJzZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAg
IC8vIFdlIGNhbWUgYmFjayB0byB0aGUgc3RhcnROb2RlLgorICAgICAgICAgICAgaWYgKG5vZGUg
PT0gc3RhcnROb2RlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IHRyYXZlcnNlU3RhcnRlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKG5vZGUtPndyYXBwZXJSZWZD
b3VudCgpKSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBmaW5kIGEgTm9kZSByZWZlcmVuY2VkIGJ5
IGEgd3JhcHBlciBvYmplY3QsIHdlIHNldCBhIGxpZmV0aW1lIG93bmVyCisgICAgICAgICAgICAv
LyBvbiB0aGUgTm9kZS4KKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+d3Jh
cHBlclJlZkNvdW50KCk+MCAlcCB3cmFwcGVyUmVmQ291bnQ9PSVkXG4iLCBub2RlLCBub2RlLT53
cmFwcGVyUmVmQ291bnQoKSk7CisgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7
CisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIo
KSAlcCBhZnRlclxuIiwgc3RhcnROb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKG5vZGUtPmZpcnN0Q2hpbGQoKSkgeworICAgICAgICAgICAg
bm9kZSA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIHdoaWxlICghbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAgICAg
aWYgKCFub2RlLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAqcm9vdCA9IG5vZGU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICB9CisgICAgICAgIGlmIChub2RlLT5wYXJl
bnROb2RlKCkpCisgICAgICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKKyAgICB9
CisKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBh
ZnRlclxuIiwgc3RhcnROb2RlKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIEhlbHBlciBm
dW5jdGlvbnMgZm9yIFRyZWVTaGFyZWQtZGVyaXZlZCBjbGFzc2VzLCB3aGljaCBoYXZlIGEgJ05v
ZGUnIHN0eWxlIGludGVyZmFjZQogLy8gVGhpcyBhcHBsaWVzIHRvICdDb250YWluZXJOb2RlJyBh
bmQgJ1NWR0VsZW1lbnRJbnN0YW5jZScKIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFz
cyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KIGlubGluZSB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5D
b250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKIHsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgInJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoKSAlcCBiZWZvcmVcbiIs
IGNvbnRhaW5lcik7CiAgICAgLy8gTGlzdCBvZiBub2RlcyB0byBiZSBkZWxldGVkLgogICAgIEdl
bmVyaWNOb2RlKiBoZWFkID0gMDsKICAgICBHZW5lcmljTm9kZSogdGFpbCA9IDA7CkBAIC04OCw4
ICsxNTYsNiBAQCBpbmxpbmUgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVy
aWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiAgICAgR2VuZXJpY05vZGUqIG47CiAgICAgR2Vu
ZXJpY05vZGUqIG5leHQ7CiAgICAgd2hpbGUgKChuID0gaGVhZCkgIT0gMCkgewotICAgICAgICBB
U1NFUlQobi0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKLQogICAgICAgICBuZXh0ID0gbi0+bmV4dFNp
YmxpbmcoKTsKICAgICAgICAgbi0+c2V0TmV4dFNpYmxpbmcoMCk7CiAKQEAgLTEwMCw4ICsxNjYs
MTQgQEAgaW5saW5lIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9k
ZUNvbnRhaW5lciogY29udGFpbmVyKQogICAgICAgICBpZiAobi0+aGFzQ2hpbGROb2RlcygpKQog
ICAgICAgICAgICAgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZTxHZW5lcmlj
Tm9kZSwgR2VuZXJpY05vZGVDb250YWluZXI+KGhlYWQsIHRhaWwsIHN0YXRpY19jYXN0PEdlbmVy
aWNOb2RlQ29udGFpbmVyKj4obikpOwogCisjaWZuZGVmIE5ERUJVRworICAgICAgICBuLT5tX2Rl
bGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiZGVsZXRlKG4pICVwIGJlZm9yZVxuIiwgbik7CiAgICAgICAgIGRlbGV0ZSBuOworICAgICAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZShuKSAlcCBhZnRlclxuIiwgbik7CiAgICAgfQor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAicmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVw
IGFmdGVyXG4iLCBjb250YWluZXIpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwg
Y2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+CkBAIC0xMjQsOSArMTk2LDEwIEBAIG5hbWVzcGFj
ZSBQcml2YXRlIHsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5l
cmljTm9kZUNvbnRhaW5lciwgYm9vbCBkaXNwYXRjaFJlbW92YWxOb3RpZmljYXRpb24+CiAgICAg
c3RydWN0IE5vZGVSZW1vdmFsRGlzcGF0Y2hlciB7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRpc3Bh
dGNoKEdlbmVyaWNOb2RlKiwgR2VuZXJpY05vZGVDb250YWluZXIqKQorICAgICAgICBzdGF0aWMg
dm9pZCBkaXNwYXRjaChHZW5lcmljTm9kZSogbm9kZSwgR2VuZXJpY05vZGVDb250YWluZXIqKQog
ICAgICAgICB7Ci0gICAgICAgICAgICAvLyBuby1vcCwgYnkgZGVmYXVsdAorICAgICAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJSZW1vdmFsRGlzcGF0Y2hlcigpICVwXG4iLCBub2RlKTsKKyAg
ICAgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsKICAgICAgICAgfQogICAgIH07CiAK
QEAgLTEzNyw4ICsyMTAsMTUgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAgICAgICAgICAgLy8g
Q2xlYW4gdXAgYW55IFRyZWVTY29wZSB0byBhIHJlbW92ZWQgdHJlZS4KICAgICAgICAgICAgIGlm
IChEb2N1bWVudCogY29udGFpbmVyRG9jdW1lbnQgPSBjb250YWluZXItPm93bmVyRG9jdW1lbnQo
KSkKICAgICAgICAgICAgICAgICBjb250YWluZXJEb2N1bWVudC0+YWRvcHRJZk5lZWRlZChub2Rl
KTsKLSAgICAgICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKGNvbnRhaW5lcikubm90aWZ5KG5vZGUpOworCisgICAg
ICAgICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpKSB7CisgICAgICAgICAgICAgICAgLy8gbm90
aWZ5KCkgd2lsbCBzZXQgYSBsaWZldGltZSBvd25lciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUu
CisgICAgICAgICAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKGNvbnRhaW5lcikubm90
aWZ5KG5vZGUsIHRydWUpOworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVt
b3ZhbERpc3BhdGNoZXIoKSAlcCBpbkRvY3VtZW50KClcbiIsIG5vZGUpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAg
ICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJSZW1vdmFsRGlzcGF0Y2hlcigpICVwICFp
bkRvY3VtZW50KClcbiIsIG5vZGUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfTsK
IApAQCAtMTY1LDEwICsyNDUsOCBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAgICAgICBu
LT5zZXROZXh0U2libGluZygwKTsKICAgICAgICAgICAgIG4tPnNldFBhcmVudE9ySG9zdE5vZGUo
MCk7CiAKKyAgICAgICAgICAgIEFTU0VSVCghbi0+d3JhcHBlclJlZkNvdW50KCkpOwogICAgICAg
ICAgICAgaWYgKCFuLT5yZWZDb3VudCgpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAg
ICAgIG4tPm1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKICAgICAgICAgICAgICAg
ICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAg
ICAgICAgICAgICAgICAvLyBSZXVzZSB0aGUgbmV4dFNpYmxpbmcgcG9pbnRlciBmb3IgdGhpcyBw
dXJwb3NlLgogICAgICAgICAgICAgICAgIGlmICh0YWlsKQpAQCAtMTc5LDYgKzI1Nyw3IEBAIG5h
bWVzcGFjZSBQcml2YXRlIHsKICAgICAgICAgICAgICAgICB0YWlsID0gbjsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEdlbmVyaWNOb2RlPiBwcm90ZWN0KG4p
OyAvLyByZW1vdmVkRnJvbURvY3VtZW50IG1heSByZW1vdmUgcmVtb3ZlIGFsbCByZWZlcmVuY2Vz
IHRvIHRoaXMgbm9kZS4KKyAgICAgICAgICAgICAgICAvLyBkaXNwYXRjaCgpIHNldHMgYSBsaWZl
dGltZSBvd25lciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUuCiAgICAgICAgICAgICAgICAgTm9k
ZVJlbW92YWxEaXNwYXRjaGVyPEdlbmVyaWNOb2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lciwgU2hv
dWxkRGlzcGF0Y2hSZW1vdmFsTm90aWZpY2F0aW9uPEdlbmVyaWNOb2RlPjo6dmFsdWU+OjpkaXNw
YXRjaChuLCBjb250YWluZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTIsOSAr
MjcxLDE2IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2Vy
dGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kZSkK
IHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCgpICVwIGluc2Vy
dGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0
aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsK
KyAgICBpZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIG5vZGUtPnVuc2V0TGlmZXRpbWVP
d25lcigpOworCiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3Qobm9kZSk7Ci0gICAgaWYgKE5vZGU6
Okluc2VydGlvblNob3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5p
bnNlcnRlZEludG8obV9pbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIG1fcG9zdEluc2VydGlvbk5v
dGlmaWNhdGlvblRhcmdldHMuYXBwZW5kKG5vZGUpOworICAgIGlmIChOb2RlOjpJbnNlcnRpb25T
aG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRv
KG1faW5zZXJ0aW9uUG9pbnQpKSB7CisgICAgICAgIGlmICghbV9wb3N0SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uVGFyZ2V0cykKKyAgICAgICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRh
cmdldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpOworICAgICAgICBt
X3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLT5hcHBlbmQobm9kZSk7CisgICAgfQog
ICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5RGVzY2VuZGFu
dEluc2VydGVkSW50b0RvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CiB9CkBAIC0yMDIs
MTAgKzI4OCwxNyBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90
aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZAogaW5saW5lIHZvaWQgQ2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5l
ck5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50
KCkpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUo
KSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2Rl
LCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9z
dE5vZGUoKSk7CisgICAgaWYgKCFtX3RyZWVTY29wZURlcHRoKQorICAgICAgICBub2RlLT51bnNl
dExpZmV0aW1lT3duZXIoKTsKKwogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKIAotICAgIGlm
IChOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0g
bm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpKQotICAgICAgICBtX3Bvc3RJbnNl
cnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLmFwcGVuZChub2RlKTsKKyAgICBpZiAoTm9kZTo6SW5z
ZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zID09IG5vZGUtPmluc2Vy
dGVkSW50byhtX2luc2VydGlvblBvaW50KSkgeworICAgICAgICBpZiAoIW1fcG9zdEluc2VydGlv
bk5vdGlmaWNhdGlvblRhcmdldHMpCisgICAgICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmlj
YXRpb25UYXJnZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKTsKKyAg
ICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy0+YXBwZW5kKG5vZGUpOwor
ICAgIH0KICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShub2RlKTsKIAogICAg
IGFsbG93RXZlbnREaXNwYXRjaCgpOwpAQCAtMjE4LDggKzMxMSwxMiBAQCBpbmxpbmUgdm9pZCBD
aGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9k
ZSogbm9kZSkKIAogaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlm
eShOb2RlKiBub2RlKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiSW5zZXJ0aW9uTm90aWZp
ZXI6Om5vdGlmeSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9
JXAgYmVmb3JlXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCks
IG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9y
YmlkZGVuKCkpOwogCisgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICBtX3Ry
ZWVTY29wZURlcHRoID0gMTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlKG5vZGUtPmRvY3VtZW50KCksIG5vZGUp
OwogI2VuZGlmCkBAIC0yMzEsMTUgKzMyOCwyMyBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNl
cnRpb25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNl
cnRlZEludG9Eb2N1bWVudChub2RlKTsKICAgICBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5v
ZGUoKSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2Rl
KG5vZGUpKTsKKyAgICBlbHNlIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgbm9kZS0+
dW5zZXRMaWZldGltZU93bmVyKCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9z
dEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcG9z
dEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHNbaV0tPmRpZE5vdGlmeVN1YnRyZWVJbnNlcnRp
b25zKG1faW5zZXJ0aW9uUG9pbnQpOworICAgIGlmIChtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRp
b25UYXJnZXRzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb3N0SW5zZXJ0
aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKm1fcG9z
dEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpW2ldLT5kaWROb3RpZnlTdWJ0cmVlSW5zZXJ0
aW9ucyhtX2luc2VydGlvblBvaW50KTsKKyAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJJ
bnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFyZW50PSVw
IHBhcmVudE9ySG9zdD0lcCBhZnRlclxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+
cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOwogfQogCi0KIGlubGluZSB2
b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1l
bnQoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVu
dCgpKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVSZW1vdmFsRnJvbURvY3Vt
ZW50KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwg
bm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRP
ckhvc3ROb2RlKCkpOworICAgIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgY2hlY2tJ
ZkxpZmV0aW1lT3duZXIobm9kZSk7CisKICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2luc2VydGlv
blBvaW50KTsKIAogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKQEAgLTI0OSw2ICsz
NTQsMTAgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKiBub2RlKQogaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG5v
ZGUpCiB7CiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOworICAg
IC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZVJlbW92YWxGcm9tVHJlZSgpICVwIGluc2Vy
dGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0
aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsK
KyAgICBpZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIGNoZWNrSWZMaWZldGltZU93bmVy
KG5vZGUpOworCiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogCiAgICAgbm9kZS0+cmVtb3Zl
ZEZyb20obV9pbnNlcnRpb25Qb2ludCk7CkBAIC0yNTcsMTMgKzM2Niw0OSBAQCBpbmxpbmUgdm9p
ZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29u
dGFpbmVyTm9kZSogbgogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwogfQogCi1pbmxpbmUgdm9p
ZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShOb2RlKiBub2RlKQoraW5saW5lIHZv
aWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSwgYm9vbCBpbnNl
cnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4pCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJS
ZW1vdmFsTm90aWZpZXI6Om5vdGlmeSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBw
YXJlbnRPckhvc3Q9JXAgYmVmb3JlXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5w
YXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgaWYgKG5vZGUtPmlz
U2hhZG93Um9vdCgpKQorICAgICAgICBtX3RyZWVTY29wZURlcHRoID0gMTsKKwogICAgIGlmIChu
b2RlLT5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1l
bnQobm9kZSk7CiAgICAgICAgIG5vZGUtPmRvY3VtZW50KCktPm5vdGlmeVJlbW92ZVBlbmRpbmdT
aGVldElmTmVlZGVkKCk7CiAgICAgfSBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkK
ICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSkp
OworICAgIGVsc2UgaWYgKCFtX3RyZWVTY29wZURlcHRoKQorICAgICAgICBjaGVja0lmTGlmZXRp
bWVPd25lcihub2RlKTsKKworICAgIGlmICghbV9saWZldGltZU93bmVyRm91bmQgJiYgIW5vZGUt
PmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIC8vIElmIGEgbGlmZXRpbWUgb3duZXIgaXMgbm90
IGZvdW5kIGluIHRoZSByZW1vdmVkIFRyZWVTY29wZSwgaXQKKyAgICAgICAgLy8gaW5kaWNhdGVz
IHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUgbGlmZXRpbWUgb3duZXIgaW4gdGhlIG9yaWdpbmFs
CisgICAgICAgIC8vIFRyZWVTY29wZS4gU28gd2UganVzdCBjYWxsIGdjVHJlZSgpIGZvciB0aGUg
cm9vdCBub2RlIG9mIHRoZSByZW1vdmVkCisgICAgICAgIC8vIFRyZWVTY29wZSwgaW4gb3JkZXIg
dG8gc2V0IGEgbmV3IGxpZmV0aW1lIG93bmVyIG9mIHRoZSByZW1vdmVkIFRyZWVTY29wZS4KKyAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3VuZD1mYWxzZSAlcCBp
bnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2lu
c2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KSk7CisgICAgICAgIEFTU0VSVChub2RlLT5yZWZDb3VudCgpKTsKKyAgICAgICAgbm9kZS0+c2V0
TGlmZXRpbWVPd25lcigpOworICAgIH0gZWxzZSBpZiAobV9saWZldGltZU93bmVyRm91bmQgJiYg
IWluc2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1bikgeworICAgICAgICAvLyBJZiBhIGxpZmV0
aW1lIG93bmVyIGlzIGZvdW5kIGluIHRoZSByZW1vdmVkIFRyZWVTY29wZSwgaXQKKyAgICAgICAg
Ly8gaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlIG9yaWdp
bmFsIFRyZWVTY29wZS4KKyAgICAgICAgLy8gU28gd2UgY2FsbCBnY1RyZWUoKSBmb3IgdGhlIGlu
c2VydGlvbiBwb2ludCBvZiB0aGUgb3JpZ2luYWwKKyAgICAgICAgLy8gVHJlZVNjb3BlLCBpbiBv
cmRlciB0byBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YgdGhlIG9yaWdpbmFsIFRyZWVTY29w
ZS4KKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3VuZD10cnVl
ICFpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4gJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFy
ZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+
cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworICAgICAgICBtX2luc2Vy
dGlvblBvaW50LT5nY1RyZWUoKTsKKyAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJSZW1v
dmFsTm90aWZpZXI6Om5vdGlmeSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJl
bnRPckhvc3Q9JXAgYWZ0ZXJcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVu
dE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKK30KKworaW5saW5lIHZvaWQgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpjaGVja0lmTGlmZXRpbWVPd25lcihOb2RlKiBub2RlKQor
eworICAgIEFTU0VSVCghbV90cmVlU2NvcGVEZXB0aCk7CisgICAgaWYgKFVOTElLRUxZKG5vZGUt
PmlzTGlmZXRpbWVPd25lcigpKSkgeworICAgICAgICAvLyBPbmUgVHJlZVNjb3BlIGlzIGd1YXJh
bnRlZWQgdG8gaGF2ZSBhdCBtb3N0IG9uZSBsaWZldGltZSBvd25lciwKKyAgICAgICAgLy8gc28g
bV9saWZldGltZU93bmVyRm91bmQgc2hvdWxkIG5vdCBiZWNvbWUgdHJ1ZSBtb3JlIHRoYW4gb25j
ZS4KKyAgICAgICAgQVNTRVJUKCFtX2xpZmV0aW1lT3duZXJGb3VuZCk7CisgICAgICAgIG1fbGlm
ZXRpbWVPd25lckZvdW5kID0gdHJ1ZTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJub2Rl
LT5pc0xpZmV0aW1lT3duZXIoKT09dHJ1ZSAlcFxuIiwgbm9kZSk7CisgICAgfQogfQogCiBjbGFz
cyBDaGlsZEZyYW1lRGlzY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMw
MzA0ZGFkZDgwODExYzU0Y2MxNGJmZDFiNjZmZjNlMDYwYjE1NmMuLmJmYWZkZWUwNWQyZjkyZmM4
OWI3YTk0NWQzOTA2NzEyZGY4ZTgwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjg4
LDYgKzY4OCw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiB2b2lkIERvY3VtZW50OjpyZW1v
dmVkTGFzdFJlZigpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJEb2N1bWVudDo6cmVtb3Zl
ZExhc3RSZWYoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgIEFTU0VSVCghbV9kZWxldGlvbkhh
c0JlZ3VuKTsKICAgICBpZiAobV9ndWFyZFJlZkNvdW50KSB7CiAgICAgICAgIC8vIElmIHJlbW92
aW5nIGEgY2hpbGQgcmVtb3ZlcyB0aGUgbGFzdCBzZWxmLW9ubHkgcmVmLCB3ZSBkb24ndApAQCAt
NzE1LDYgKzcxNiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAg
Ly8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywKICAg
ICAgICAgLy8gc28gdGVhciBkb3duIHNjb3BlIGluZm9ybWF0aW9uIHVwZnJvbnQgdG8gYXZvaWQg
aGF2aW5nIHN0YWxlIHJlZmVyZW5jZXMgaW4gdGhlIG1hcC4KICAgICAgICAgZGVzdHJveVRyZWVT
Y29wZURhdGEoKTsKKworICAgICAgICAvLyBGSVhNRTogS2VlcCBhbGwgdGhlIE5vZGVzIGFsaXZl
IHVudGlsIG1fZ3VhcmRSZWZDb3VudCBiZWNvbWVzIDAuCiAgICAgICAgIHJlbW92ZUFsbENoaWxk
cmVuKCk7CiAKICAgICAgICAgbV9tYXJrZXJzLT5kZXRhY2goKTsKQEAgLTcyOCwxNyArNzMxLDE2
IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9zY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY2xlYXIoKTsKICNlbmRpZgogCi0jaWZuZGVmIE5ERUJVRwotICAg
ICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwotI2VuZGlmCi0KICAgICAg
ICAgZ3VhcmREZXJlZigpOwogICAgIH0gZWxzZSB7Ci0jaWZuZGVmIE5ERUJVRyAKLSAgICAgICAg
bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsgCi0jZW5kaWYgCisjaWZuZGVmIE5ERUJVRworICAg
ICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZGVsZXRlKHRoaXMpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAgICAgICAgIGRl
bGV0ZSB0aGlzOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAlcCBh
ZnRlclxuIiwgdGhpcyk7CiAgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6
OnJlbW92ZWRMYXN0UmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiBFbGVtZW50KiBEb2N1
bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYjY1NWRjZTNhZDgzNDAyYTZiOWFmNzZlYzhlNTdjNWY1MWIzNjk2
YS4uNWE0ZTFhZGU4NjVlOWQ1ZmU4ZDljYjk1YmExOGMzYzk4MTI0ZGE0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTIzOCwxMSArMjM4LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgLS1tX2d1YXJkUmVmQ291bnQ7Ci0g
ICAgICAgIGlmICghbV9ndWFyZFJlZkNvdW50ICYmICFyZWZDb3VudCgpKSB7CisgICAgICAgIGlm
IChVTkxJS0VMWSghbV9ndWFyZFJlZkNvdW50ICYmICFyZWZDb3VudCgpKSkgeworICAgICAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJndWFyZERlcmVmKCkgZGVsZXRlKHRoaXMpICVwIGJlZm9y
ZVxuIiwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9kZWxldGlvbkhhc0Jl
Z3VuID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgICAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgImd1YXJkRGVyZWYoKSBkZWxldGUodGhpcykgJXAgYWZ0ZXJc
biIsIHRoaXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTk1LDcgKzExOTcsNyBAQCBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1l
bnRlcjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKLSAgICAKKwogICAgIHZvaWQgZGV0
YWNoUGFyc2VyKCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpBcmd1bWVudHNDYWxsYmFjaykoY29u
c3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3VtZW50
Kiwgdm9pZCogZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYWJjODFkOWNhZmNiYjli
NDY2YjJmNzc2NTY5OTM3MTM3MDU1OTdmOS4uODEyZTYzZDc0YTY4NGViNTNjOWZlNzUyY2JjZGQ2
MjNjYTdhM2JkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTU3NCw2ICsxNTc0LDcgQEAg
Q1NTU3R5bGVEZWNsYXJhdGlvbiAqRWxlbWVudDo6c3R5bGUoKQogCiB2b2lkIEVsZW1lbnQ6OmZv
Y3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQogeworICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAiRWxlbWVudDo6Zm9jdXMoKSAlcFxuIiwgdGhpcyk7CiAgICAgaWYgKCFpbkRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCmlu
ZGV4IGFlYjViNWI0NzViMjE5YmM1N2RjODVlZjJlN2I4MzJhZWU4ODkzZmMuLmIyMzE3YWE4MTgy
M2QxOTMwOGUxZDhlYmRmMWMzNjgwOTIyNzExYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNo
YWRvdy5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dS
b290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAgICBt
X3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5nZXQoKSk7CiAgICAgc2V0VmFsaWRpdHlVbmRl
dGVybWluZWQoKTsKICAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOworICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCgpIHNoYWRv
d1Jvb3Q9JXAgc2hhZG93SG9zdD0lcFxuIiwgc2hhZG93Um9vdC5nZXQoKSwgc2hhZG93SG9zdCk7
CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KHNoYWRv
d1Jvb3QuZ2V0KCkpOwogCiAgICAgLy8gRklYTUUoOTQ5MDUpOiBTaGFkb3dIb3N0IHNob3VsZCBi
ZSByZWF0dGFjaGVkIGR1cmluZyByZWNhbGNTdHlsZS4KQEAgLTk0LDYgKzk1LDkgQEAgdm9pZCBF
bGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQ
dHI8U2hhZG93Um9vdD4gc2gKIAogdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dS
b290cygpCiB7CisgICAgaWYgKG1fc2hhZG93Um9vdHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKICAgICAvLyBEb250IHByb3RlY3QgdGhpcyByZWYgY291bnQuCiAgICAgRWxlbWVudCog
c2hhZG93SG9zdCA9IGhvc3QoKTsKIApAQCAtMTA5LDcgKzExMyw4IEBAIHZvaWQgRWxlbWVudFNo
YWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogICAgICAgICBvbGRSb290LT5zZXRQcmV2KDAp
OwogICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBzaGFkb3dIb3N0LT5kb2N1
bWVudCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwotICAgICAgICBDaGlsZE5vZGVS
ZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCkpOworICAgICAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jvb3Rz
KCkgc2hhZG93Um9vdD0lcCBzaGFkb3dIb3N0PSVwXG4iLCBvbGRSb290LmdldCgpLCBzaGFkb3dI
b3N0KTsKKyAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlm
eShvbGRSb290LmdldCgpLCB0cnVlKTsKICAgICB9CiAKICAgICBpbnZhbGlkYXRlRGlzdHJpYnV0
aW9uKHNoYWRvd0hvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGEyYzlhMWRjMmJmYTY3YzdlYTkz
MGQ5N2I2YWM5ZDcxNGNiMDA4OWIuLmUzN2Y0ZGZlMzA3NjgyNjIyYjkwMzhkMDYyNGRkYTk5ZmU1
ZmFiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJDU1NT
dHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ2hpbGROb2RlTGlzdC5oIgogI2luY2x1ZGUgIkNsYXNz
Tm9kZUxpc3QuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIgogI2luY2x1
ZGUgIkNvbnRleHRNZW51Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiRE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKQEAgLTM5NCw2ICszOTUsNyBA
QCB2b2lkIE5vZGU6OnRyYWNrRm9yRGVidWdnaW5nKCkKIAogTm9kZTo6fk5vZGUoKQogeworICAg
IC8vIGZwcmludGYoc3RkZXJyLCAifk5vZGUoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogI2lmbmRl
ZiBOREVCVUcKICAgICBIYXNoU2V0PE5vZGUqPjo6aXRlcmF0b3IgaXQgPSBpZ25vcmVTZXQuZmlu
ZCh0aGlzKTsKICAgICBpZiAoaXQgIT0gaWdub3JlU2V0LmVuZCgpKQpAQCAtNDI1LDYgKzQyNyw3
IEBAIE5vZGU6On5Ob2RlKCkKICAgICAgICAgZG9jLT5ndWFyZERlcmVmKCk7CiAKICAgICBJbnNw
ZWN0b3JDb3VudGVyczo6ZGVjcmVtZW50Q291bnRlcihJbnNwZWN0b3JDb3VudGVyczo6Tm9kZUNv
dW50ZXIpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAifk5vZGUoKSAlcCBhZnRlclxuIiwgdGhp
cyk7CiB9CiAKIHZvaWQgTm9kZTo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAt
MjgxNyw2ICsyODIwLDggQEAgUGFzc1JlZlB0cjxQcm9wZXJ0eU5vZGVMaXN0PiBOb2RlOjpwcm9w
ZXJ0eU5vZGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKIC8vIGRlbGV0ZSBhIE5vZGUgYXQgZWFj
aCBkZXJlZiBjYWxsIHNpdGUuCiB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKIHsKKyAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYmVmb3JlXG4iLCB0
aGlzKTsKKyAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAgICAgLy8gQW4gZXhwbGlj
aXQgY2hlY2sgZm9yIERvY3VtZW50IGhlcmUgaXMgYmV0dGVyIHRoYW4gYSB2aXJ0dWFsIGZ1bmN0
aW9uIHNpbmNlIGl0IGlzCiAgICAgLy8gZmFzdGVyIGZvciBub24tRG9jdW1lbnQgbm9kZXMsIGFu
ZCBiZWNhdXNlIHRoZSBjYWxsIHRvIHJlbW92ZWRMYXN0UmVmIHRoYXQgaXMgaW5saW5lZAogICAg
IC8vIGF0IGFsbCBkZXJlZiBjYWxsIHNpdGVzIGlzIHNtYWxsZXIgaWYgaXQncyBhIG5vbi12aXJ0
dWFsIGZ1bmN0aW9uLgpAQCAtMjgyNyw3ICsyODMyLDM0IEBAIHZvaWQgTm9kZTo6cmVtb3ZlZExh
c3RSZWYoKQogI2lmbmRlZiBOREVCVUcKICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwog
I2VuZGlmCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUodGhpcykgJXAgYmVmb3JlXG4i
LCB0aGlzKTsKICAgICBkZWxldGUgdGhpczsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0
ZSh0aGlzKSAlcCBhZnRlclxuIiwgdGhpcyk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2Rl
OjpyZW1vdmVkTGFzdFJlZigpICVwIGFmdGVyXG4iLCB0aGlzKTsKK30KKworLy8gV2hlbiBnY1Ry
ZWUoKSBpcyBjYWxsZWQsIHRoZSBUcmVlU2NvcGUgaXMgZ3VhcmFudGVlZCB0byBoYXZlIG5vIGxp
ZmV0aW1lIG93bmVyLgorLy8gZ2NUcmVlKCkgbXVzdCByZWNsYWltIGFsbCBOb2RlcyBpbiB0aGUg
VHJlZVNjb3BlIG9yIHNldCBhIG5ldyBsaWZldGltZSBvd25lciBvZgorLy8gdGhlIFRyZWVTY29w
ZS4KK3ZvaWQgTm9kZTo6Z2NUcmVlKCkKK3sKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6
OmdjVHJlZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgTm9kZSogcm9vdCA9IDA7CisgICAg
aWYgKGlzUmVhY2hhYmxlRnJvbVdyYXBwZXI8Tm9kZT4odGhpcywgJnJvb3QpKSB7CisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVwIHRydWVcbiIs
IHRoaXMpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5vZGU6OmdjVHJlZSgpICVwIGFm
dGVyXG4iLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQocm9vdCk7
CisgICAgaWYgKCFyb290LT5wYXJlbnRPckhvc3ROb2RlKCkgJiYgIXJvb3QtPnJlZkNvdW50KCkp
IHsKKyAgICAgICAgQVNTRVJUKCFyb290LT53cmFwcGVyUmVmQ291bnQoKSk7CisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVwIGZhbHNlICFyb290
LT5wYXJlbnRPckhvc3ROb2RlKCkgJiYgIXJvb3QtPnJlZkNvdW50KClcbiIsIHRoaXMpOworICAg
ICAgICByb290LT5yZW1vdmVkTGFzdFJlZigpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVwIGZhbHNlIG90aGVyd2lz
ZSByb290LT5wYXJlbnRPckhvc3ROb2RlKCk9JXAgcm9vdC0+cmVmQ291bnQoKT0lZFxuIiwgdGhp
cywgcm9vdC0+cGFyZW50T3JIb3N0Tm9kZSgpLCByb290LT5yZWZDb3VudCgpKTsKKyAgICAgICAg
cm9vdC0+c2V0TGlmZXRpbWVPd25lcigpOworICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
Ik5vZGU6OmdjVHJlZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogdm9pZCBOb2RlOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKaW5kZXggMjE0ZGE0MDM5MzM0YzlhY2ExMWI4MWFkMmY2M2QyODEwZjc0NGVkYy4u
ZTY5NWEzODcyYmVkOWU1OWYxZGRiODM5MTgzMDU3NTk4ZTc3NTBlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBA
IC0zNzQsNiArMzc0LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNDb250ZW50RWRpdGFibGUoKTsK
ICAgICBib29sIGlzQ29udGVudFJpY2hseUVkaXRhYmxlKCk7CiAKKyAgICB2b2lkIHJlbW92ZWRM
YXN0UmVmKCk7CisgICAgdm9pZCBnY1RyZWUoKTsKKwogICAgIHZvaWQgaW5zcGVjdCgpOwogCiAg
ICAgYm9vbCByZW5kZXJlcklzRWRpdGFibGUoRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSA9IENv
bnRlbnRJc0VkaXRhYmxlKSBjb25zdApAQCAtNzUyLDggKzc1NSw2IEBAIHByb3RlY3RlZDoKIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTaGFyZWQ8Tm9kZSwgQ29udGFpbmVyTm9kZT47
CiAKLSAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7Ci0KICAgICAvLyBUaGVzZSBBUEkgc2hvdWxk
IGJlIG9ubHkgdXNlZCBmb3IgYSB0cmVlIHNjb3BlIG1pZ3JhdGlvbi4KICAgICAvLyBzZXRUcmVl
U2NvcGUoKSByZXR1cm5zIE5vZGVSYXJlRGF0YSB0byBzYXZlIGV4dHJhIG5vZGVSYXJlRGF0YSgp
IGludm9jYXRpb25zIG9uIHRoZSBjYWxsZXIgc2l0ZS4KICAgICBOb2RlUmFyZURhdGEqIHNldFRy
ZWVTY29wZShUcmVlU2NvcGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RyZWVTaGFyZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaAppbmRl
eCBmYmVmZWIxNTkyMjM3MThiZDEwNjdlYzE5NGJiZjQ0ODFiZjYzY2RjLi5mMThkMjA5NzZhZTY1
Y2U0OTk1NWIyMmY3YjQxNzZiYjY0NTEyY2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UcmVlU2hhcmVkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNo
YXJlZC5oCkBAIC0zMiwyNyArMzIsNDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5
cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkOwogdGVtcGxhdGU8dHlwZW5h
bWUgTm9kZVR5cGUsIHR5cGVuYW1lIFBhcmVudE5vZGVUeXBlPiB2b2lkIGFkb3B0ZWQoVHJlZVNo
YXJlZDxOb2RlVHlwZSwgUGFyZW50Tm9kZVR5cGU+Kik7CiAjZW5kaWYKIAorLy8gVGhlIGFsZ29y
aXRobSBndWFyYW50ZWVzIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50czoKKy8vCisvLyAgICAgLSBP
dXRzaWRlIG9mIGdjVHJlZSgpIChub3JtYWwgY2FzZXMpLCBlYWNoIFRyZWVTY29wZSBoYXMgZXhh
Y3RseSBvbmUKKy8vICAgICAgIGxpZmV0aW1lIG93bmVyLiBUaGUgbGlmZXRpbWUgb3duZXIgaXMg
c2V0IG9uIHRoZSByb290IE5vZGUgb2YgdGhlIFRyZWVTY29wZQorLy8gICAgICAgb3IgYW55IE5v
ZGUgdGhhdCBpcyByZWZlcmVuY2VkIGJ5IGEgd3JhcHBlciBvYmplY3QuCisvLworLy8gICAgIC0g
SW5zaWRlIG9mIGdjVHJlZSgpLCB0aGUgVHJlZVNjb3BlIGhhcyBubyBsaWZldGltZSBvd25lci4g
Z2NUcmVlKCkgcmVjbGFpbXMKKy8vICAgICAgIGFsbCBOb2RlcyBpbiB0aGUgVHJlZVNjb3BlIG9y
IHNldHMgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YgdGhlIFRyZWVTY29wZS4KKy8vCisvLyBTZWUg
YSBkZXNpZ24gZG9jdW1lbnQgKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3Jn
L2RvY3VtZW50L2QvMUhjYWVVLTc1eHVrTVlTVWFza2VEb0hMLUwwRk51Q0RJdWt2UG1PaGVZOFEv
ZWRpdCkgZm9yIG1vcmUgZGV0YWlscy4KKwogdGVtcGxhdGU8dHlwZW5hbWUgTm9kZVR5cGUsIHR5
cGVuYW1lIFBhcmVudE5vZGVUeXBlPiBjbGFzcyBUcmVlU2hhcmVkIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShUcmVlU2hhcmVkKTsKIHByb3RlY3RlZDoKICAgICBUcmVlU2hhcmVkKCkKLSAg
ICAgICAgOiBtX3BhcmVudCgwKQotICAgICAgICAsIG1fcmVmQ291bnQoMSkKKyAgICAgICAgOiBt
X25vbldyYXBwZXJSZWZDb3VudCgxKQorICAgICAgICAsIG1fbGlmZXRpbWVPd25lcigxKQorICAg
ICAgICAvLyBBIG5ld2x5IGNyZWF0ZWQgTm9kZSBiZWNvbWVzIGEgbGlmZXRpbWUgb3duZXIsIGJl
Y2F1c2UgdGhpcyBOb2RlIGlzIHRoZSBvbmx5CisgICAgICAgIC8vIE5vZGUgaW4gdGhlIERPTSB0
cmVlLgorICAgICAgICAsIG1fd3JhcHBlclJlZkNvdW50KDApCisgICAgICAgICwgbV9wYXJlbnQo
MCkKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICwgbV9hZG9wdGlvbklzUmVxdWlyZWQodHJ1ZSkK
ICNlbmRpZgogICAgIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJUcmVlU2hhcmVkKCkg
JXBcbiIsIHRoaXMpOwogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBB
U1NFUlQoaXNMaWZldGltZU93bmVyKCkpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kZWxl
dGlvbkhhc0JlZ3VuID0gZmFsc2U7Ci0gICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9u
ID0gZmFsc2U7CiAjZW5kaWYKICAgICB9CiAKICAgICB+VHJlZVNoYXJlZCgpCiAgICAgeworICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5UcmVlU2hhcmVkKCkgJXBcbiIsIHRoaXMpOwogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQoIW1fcmVmQ291bnQp
OworICAgICAgICBBU1NFUlQoIXJlZkNvdW50KCkpOworICAgICAgICBBU1NFUlQoIXdyYXBwZXJS
ZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0aW1lT3duZXIoKSk7CiAgICAgICAg
IEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25J
c1JlcXVpcmVkKTsKICAgICB9CkBAIC02Miw0MiArODEsOTIgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9u
SGFzQmVndW4pOwotICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsK
ICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7Ci0gICAgICAgICsrbV9yZWZD
b3VudDsKKyAgICAgICAgKyttX25vbldyYXBwZXJSZWZDb3VudDsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJyZWYoKSAlcCByZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291bnQ9JWRcbiIsIHRo
aXMsIG1fbm9uV3JhcHBlclJlZkNvdW50LCBtX3dyYXBwZXJSZWZDb3VudCk7CisgICAgfQorCisg
ICAgdm9pZCB3cmFwcGVyUmVmKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgQVNTRVJU
KCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7CisgICAgICAgICsrbV93cmFwcGVyUmVmQ291bnQ7Cisg
ICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAid3JhcHBlclJlZigpICVwIHJlZkNvdW50PSVkIHdy
YXBwZXJSZWZDb3VudD0lZFxuIiwgdGhpcywgbV9ub25XcmFwcGVyUmVmQ291bnQsIG1fd3JhcHBl
clJlZkNvdW50KTsKICAgICB9CiAKICAgICB2b2lkIGRlcmVmKCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIEFTU0VSVChtX3JlZkNvdW50ID49IDApOwog
ICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7Ci0gICAgICAgIEFTU0VSVCghbV9p
blJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1Jl
cXVpcmVkKTsKLSAgICAgICAgaWYgKC0tbV9yZWZDb3VudCA8PSAwICYmICFtX3BhcmVudCkgewot
I2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0g
dHJ1ZTsKLSNlbmRpZgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+
cmVtb3ZlZExhc3RSZWYoKTsKKyAgICAgICAgLS1tX25vbldyYXBwZXJSZWZDb3VudDsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJkZXJlZigpICVwIHJlZkNvdW50PSVkIHdyYXBwZXJSZWZD
b3VudD0lZFxuIiwgdGhpcywgbV9ub25XcmFwcGVyUmVmQ291bnQsIG1fd3JhcHBlclJlZkNvdW50
KTsKKyAgICAgICAgLy8gVGhlIG9yZGVyIG9mIGNvbmRpdGlvbnMgaXMgaW1wb3J0YW50IGZvciBw
ZXJmb3JtYW5jZSB0byBoaW50IHRvIHRoZSBjb21waWxlciB0aGF0CisgICAgICAgIC8vIHRoZXNl
IHRocmVlIGNvbmRpdGlvbnMgY2FuIGJlIG9wdGltaXplZCB0byBvbmUgMzItYml0IGludGVnZXIg
Y2hlY2suCisgICAgICAgIGlmIChVTkxJS0VMWSghbV9ub25XcmFwcGVyUmVmQ291bnQgJiYgbV9s
aWZldGltZU93bmVyID09IDEgJiYgIW1fd3JhcHBlclJlZkNvdW50KSkgeworICAgICAgICAgICAg
bV9saWZldGltZU93bmVyID0gMDsKKyAgICAgICAgICAgIC8vIGdjVHJlZSgpIHJlY2xhaW1zIGFs
bCBOb2RlcyBpbiB0aGUgVHJlZVNjb3BlIG9yIHNldHMgYSBuZXcgbGlmZXRpbWUKKyAgICAgICAg
ICAgIC8vIG93bmVyIG9mIHRoZSBUcmVlU2NvcGUuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxO
b2RlVHlwZSo+KHRoaXMpLT5nY1RyZWUoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wg
aGFzT25lUmVmKCkgY29uc3QKKyAgICB2b2lkIHdyYXBwZXJEZXJlZigpCiAgICAgeworICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNC
ZWd1bik7Ci0gICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAg
ICAgICByZXR1cm4gbV9yZWZDb3VudCA9PSAxOworICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25J
c1JlcXVpcmVkKTsKKyAgICAgICAgLS1tX3dyYXBwZXJSZWZDb3VudDsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJ3cmFwcGVyRGVyZWYoKSAlcCByZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291
bnQ9JWRcbiIsIHRoaXMsIG1fbm9uV3JhcHBlclJlZkNvdW50LCBtX3dyYXBwZXJSZWZDb3VudCk7
CisgICAgICAgIGlmIChVTkxJS0VMWShtX2xpZmV0aW1lT3duZXIgPT0gMSAmJiAhbV93cmFwcGVy
UmVmQ291bnQpKSB7CisgICAgICAgICAgICBtX2xpZmV0aW1lT3duZXIgPSAwOworICAgICAgICAg
ICAgLy8gZ2NUcmVlKCkgcmVjbGFpbXMgYWxsIE5vZGVzIGluIHRoZSBUcmVlU2NvcGUgb3Igc2V0
cyBhIG5ldyBsaWZldGltZQorICAgICAgICAgICAgLy8gb3duZXIgb2YgdGhlIFRyZWVTY29wZS4K
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyktPmdjVHJlZSgpOworICAg
ICAgICB9CiAgICAgfQogCiAgICAgaW50IHJlZkNvdW50KCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX3JlZkNvdW50OworICAgICAgICByZXR1cm4gbV9ub25XcmFwcGVyUmVmQ291bnQg
KyBtX3dyYXBwZXJSZWZDb3VudDsKKyAgICB9CisKKyAgICBpbnQgd3JhcHBlclJlZkNvdW50KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3dyYXBwZXJSZWZDb3VudDsKKyAgICB9CisK
KyAgICBib29sIGhhc09uZVJlZigpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRpb25IYXNCZWd1bik7CisgICAgICAgIHJldHVybiByZWZDb3VudCgpID09IDE7CisgICAgfQor
CisgICAgdm9pZCBzZXRMaWZldGltZU93bmVyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9s
aWZldGltZU93bmVyKTsKKyAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOworICAg
ICAgICBtX2xpZmV0aW1lT3duZXIgPSAxOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInNl
dExpZmV0aW1lT3duZXIoKSAlcFxuIiwgdGhpcyk7CisgICAgfQorCisgICAgdm9pZCB1bnNldExp
ZmV0aW1lT3duZXIoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4p
OworICAgICAgICBtX2xpZmV0aW1lT3duZXIgPSAwOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgInVuc2V0TGlmZXRpbWVPd25lcigpICVwXG4iLCB0aGlzKTsKKyAgICB9CisKKyAgICBib29s
IGlzTGlmZXRpbWVPd25lcigpCisgICAgeworICAgICAgICByZXR1cm4gbV9saWZldGltZU93bmVy
OwogICAgIH0KIAogICAgIHZvaWQgc2V0UGFyZW50KFBhcmVudE5vZGVUeXBlKiBwYXJlbnQpCiAg
ICAgeyAKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgbV9wYXJlbnQg
PSBwYXJlbnQ7IAorICAgICAgICBtX3BhcmVudCA9IHBhcmVudDsKICAgICB9CiAKICAgICBQYXJl
bnROb2RlVHlwZSogcGFyZW50KCkgY29uc3QKQEAgLTEwOCw3ICsxNzcsNiBAQCBwdWJsaWM6CiAK
ICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2RlbGV0aW9uSGFzQmVndW47Ci0gICAgYm9vbCBt
X2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbjsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdApAQCAtMTIy
LDggKzE5MCwxNCBAQCBwcml2YXRlOgogICAgIGZyaWVuZCB2b2lkIGFkb3B0ZWQ8PihUcmVlU2hh
cmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qKTsKICNlbmRpZgogCisgICAgLy8gVGhlIGJp
dCBmaWVsZCBzaXplcyBhcmUgb3B0aW1pemVkIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHdpbGwgZ2Vu
ZXJhdGUgdGhlIGZhc3Rlc3QKKyAgICAvLyBjb2RlIGZvciByZWYoKSBhbmQgZGVyZWYoKS4KKyAg
ICAvLyBUaGUgb3JkZXIgb2YgdGhlc2UgYml0IGZpZWxkcyBpcyBhbHNvIGltcG9ydGFudC4gV2Ug
cHV0IG1fbm9uV3JhcHBlclJlZkNvdW50IGF0IHRoZQorICAgIC8vIGhlYWQgb2YgdGhlIG9iamVj
dCBiZWNhdXNlIG1fbm9uV3JhcHBlclJlZkNvdW50IGlzIHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNl
ZCBtZW1iZXIuCisgICAgdW5zaWduZWQgbV9ub25XcmFwcGVyUmVmQ291bnQgOiAxNjsgLy8gUmVm
ZXJlbmNlIGNvdW50IGJ5IG5vcm1hbCBSZWZQdHJzIGluIFdlYktpdC4KKyAgICB1bnNpZ25lZCBt
X2xpZmV0aW1lT3duZXIgOiAxOyAvLyBXaGV0aGVyIHRoaXMgTm9kZSBpcyBhIGxpZmV0aW1lIG93
bmVyIG9yIG5vdC4KKyAgICB1bnNpZ25lZCBtX3dyYXBwZXJSZWZDb3VudCA6IDE1OyAvLyBSZWZl
cmVuY2UgY291bnQgYnkgd3JhcHBlciBvYmplY3RzLgogICAgIFBhcmVudE5vZGVUeXBlKiBtX3Bh
cmVudDsKLSAgICBpbnQgbV9yZWZDb3VudDsKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1f
YWRvcHRpb25Jc1JlcXVpcmVkOwpAQCAtMTM3LDcgKzIxMSw2IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gaW5saW5lIHZvaWQgYWRvcHRlZChU
cmVlU2hhCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoIW9i
amVjdC0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBBU1NFUlQoIW9iamVjdC0+bV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgIG9iamVjdC0+bV9hZG9wdGlvbklzUmVxdWlyZWQgPSBm
YWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDFjMDljNjE5YjYxZmQ4
MmU0ODhlYjBkNTE2MjQyOGQ4ZTRhMWYyMzAuLjQ4YTM0NDdjYTIzOWM2ZGVhMGY5ODc2NGE1MTll
NmYzNGNhZGFkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTYxLDYgKzYxLDcg
QEAgUGFzc1JlZlB0cjxTVkdFbGVtZW50PiBTVkdFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKIAogU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQog
eworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnQoKSAlcCBiZWZvcmVcbiIsIHRo
aXMpOwogICAgIGlmICghaGFzU1ZHUmFyZURhdGEoKSkKICAgICAgICAgQVNTRVJUKCFTVkdFbGVt
ZW50UmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnModGhpcykpOwogICAgIGVsc2UgewpA
QCAtODAsNiArODEsNyBAQCBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCgpCiAgICAgfQogICAgIGRv
Y3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlQWxsQW5pbWF0aW9uRWxlbWVu
dHNGcm9tVGFyZ2V0KHRoaXMpOwogICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS0+cmVtb3ZlQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQodGhpcyk7CisgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJ+U1ZHRWxlbWVudCgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogYm9v
bCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAppbmRleCA5ZmUyYWNiZjAwYTVmZWNm
NWYzNDVhNzY5ZDU0MWM3NTQ2MmZlYTE3Li4wZWEwMTAxMDk4ZmZlMjllMTc3MjA5OWY1YjBiMjhm
MzIzMzRlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3Rh
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcApA
QCAtNjIsNiArNjIsOSBAQCBTVkdFbGVtZW50SW5zdGFuY2U6OlNWR0VsZW1lbnRJbnN0YW5jZShT
VkdVc2VFbGVtZW50KiBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCwgUwogCiBTVkdFbGVtZW50SW5z
dGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2UoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
flNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgQVNTRVJUKG1f
ZGVsZXRpb25IYXNCZWd1bik7CisKICAgICAvLyBDYWxsIGRldGFjaCBiZWNhdXNlIHdlIG1heSBi
ZSBkZWxldGVkIGRpcmVjdGx5IGlmIHdlIGFyZSBhIGNoaWxkIG9mIGEgZGV0YWNoZWQgaW5zdGFu
Y2UuCiAgICAgZGV0YWNoKCk7CiAKQEAgLTcwLDE2ICs3Myw0NiBAQCBTVkdFbGVtZW50SW5zdGFu
Y2U6On5TVkdFbGVtZW50SW5zdGFuY2UoKQogI2VuZGlmCiAKICAgICBtX2VsZW1lbnQgPSAwOwor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGFmdGVyXG4i
LCB0aGlzKTsKIH0KIAogLy8gSXQncyBpbXBvcnRhbnQgbm90IHRvIGlubGluZSByZW1vdmVkTGFz
dFJlZiwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0aGUgY29kZSB0bwogLy8gZGVs
ZXRlIGFuIFNWR0VsZW1lbnRJbnN0YW5jZSBhdCBlYWNoIGRlcmVmIGNhbGwgc2l0ZS4KIHZvaWQg
U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZigpCiB7CisgICAgLy8gZnByaW50Zihz
dGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYmVmb3JlXG4i
LCB0aGlzKTsKKyAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAjaWZuZGVmIE5ERUJV
RwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5kaWYKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgIGRlbGV0ZSB0
aGlzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlKHRoaXMpICVwIGFmdGVyXG4iLCB0
aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3Zl
ZExhc3RSZWYoKSAlcCBhZnRlclxuIiwgdGhpcyk7Cit9CisKKy8vIFdoZW4gZ2NUcmVlKCkgaXMg
Y2FsbGVkLCB0aGUgVHJlZVNjb3BlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBubyBsaWZldGltZSBv
d25lci4KKy8vIGdjVHJlZSgpIG11c3QgcmVjbGFpbSBhbGwgTm9kZXMgaW4gdGhlIFRyZWVTY29w
ZSBvciBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YKKy8vIHRoZSBUcmVlU2NvcGUuCit2b2lk
IFNWR0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkKK3sKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
IlNWR0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBT
VkdFbGVtZW50SW5zdGFuY2UqIHJvb3QgPSAwOworICAgIGlmIChpc1JlYWNoYWJsZUZyb21XcmFw
cGVyPFNWR0VsZW1lbnRJbnN0YW5jZT4odGhpcywgJnJvb3QpKSB7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVwIHRydWVcbiIsIHRoaXMpOwor
ICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkg
JXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChy
b290KTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAl
cCBmYWxzZVxuIiwgdGhpcyk7CisgICAgaWYgKHJvb3QtPnJlZkNvdW50KCkpIHsKKyAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJyb290LT5yZWZDb3VudCgpICVwXG4iLCB0aGlzKTsKKyAgICAg
ICAgcm9vdC0+c2V0TGlmZXRpbWVPd25lcigpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiIXJvb3QtPnJlZkNvdW50KCkgJXBcbiIsIHRoaXMpOworICAgICAgICBy
b290LT5yZW1vdmVkTGFzdFJlZigpOworICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNW
R0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lk
IFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKCkKQEAgLTExNCw2ICsxNDcsNyBAQCB2b2lkIFNW
R0VsZW1lbnRJbnN0YW5jZTo6c2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVu
dCkKIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjphcHBlbmRDaGlsZChQYXNzUmVmUHRyPFNWR0Vs
ZW1lbnRJbnN0YW5jZT4gY2hpbGQpCiB7CiAgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxTVkdF
bGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5jZT4oY2hpbGQuZ2V0KCksIHRoaXMpOwor
ICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50SW5z
dGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaAppbmRleCBmOGU0ODliNmJh
NDM1OWVjNzk1OTc5N2Y3MjNjNTI1OTU0NDY0M2M2Li5lYmVjZGJiZTYxNzU3ODk0ZjkwZGE5NDA1
MTg3NDFkNTM1ZDcwMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dEluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5o
CkBAIC0xNTEsNiArMTUxLDcgQEAgcHJpdmF0ZToKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5jZShT
VkdVc2VFbGVtZW50KiwgU1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gb3Jp
Z2luYWxFbGVtZW50KTsKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CisgICAgdm9pZCBnY1Ry
ZWUoKTsKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyByZXR1cm4gc2hhZG93VHJlZUVs
ZW1lbnQoKTsgfQogCkBAIC0xNTgsMTMgKzE1OSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCopOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2Vu
ZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotICAgIGZyaWVuZCB2b2lkIGFw
cGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRh
aW5lciogY29udGFpbmVyKTsKLQorICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxkVG9Db250YWlu
ZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOwogICAgIHRlbXBs
YXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBm
cmllbmQgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2RlQ29udGFp
bmVyKiBjb250YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rl
c1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwg
R2VuZXJpY05vZGVDb250YWluZXIqKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwg
Y2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRk
Q2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2Rl
KiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7CisgICAgZnJpZW5kIHZv
aWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciopOwor
ICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlPgorICAgIGZyaWVuZCBib29sIGlzUmVhY2hh
YmxlRnJvbVdyYXBwZXIoR2VuZXJpY05vZGUqLCBHZW5lcmljTm9kZSoqKTsKIAogICAgIGJvb2wg
aGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlciBiL1NvdXJjZS9XZWJLaXQyL21h
Yy9XZWJLaXQyLm9yZGVyCmluZGV4IDIxY2EyZmY2Y2UzYWJiZTdjZTcxNDYxNDUzZGM2MzVlMjll
MzZlZjAuLmZjZDZhZTBlNDZlMzI3YmY1OWVhNmU3ZmQ4MzRiNGI4ZDgyNTIzOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJLaXQy
L21hYy9XZWJLaXQyLm9yZGVyCkBAIC05NjMsNiArOTYzLDcgQEAgX19aTjNXVEY5UmV0YWluUHRy
STEyTlNVUkxSZXF1ZXN0RUMyRVBTMV8KIF9fWk43V2ViQ29yZTE1UmVzb3VyY2VSZXF1ZXN0YVNF
UktTMF8KIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFzZWFTRVJLUzBfCiBfX1pON1dl
YkNvcmU0S1VSTGFTRVJLUzBfCitfX1pON1dlYkNvcmU0Tm9kZTZnY1RyZWVFdgogX19aTjNXVEYy
Mkhhc2hUYWJsZUNvbnN0SXRlcmF0b3JJTlNfMTJBdG9taWNTdHJpbmdFU3Q0cGFpcklTMV9OU182
U3RyaW5nRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNF9FRU5TXzE1Q2FzZUZvbGRpbmdIYXNo
RU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMxX0VFTlM5X0lTM19FRUVFU0Ff
RTE2c2tpcEVtcHR5QnVja2V0c0V2CiBfX1pOM1dURjZWZWN0b3JJTlNfNlN0cmluZ0VMbTBFRWFT
RVJLUzJfCiBfX1pOU3Q2X19jb3B5SUxiMEVTdDI2cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWdF
NGNvcHlJUEtOM1dURjZTdHJpbmdFUFM0X0VFVDBfVF9TOV9TOF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgppbmRleCBmNTEwMmU2NjdjZDZiYTkwM2Y5N2EzZWRmNDE2MTI0Nzk4MDc0MzYyLi45Y2IwZjM0
YmZlN2FhZGRiMjg1ZDEyNzQyMGQxOTAxNTk2MmZjOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CkBAIC0yMDUsNyArMjA1LDYgQEAgRVhQT1JUUwogICAgICAgICA/cGxhY2Vob2xkZXJTaG91bGRC
ZVZpc2libGVASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWgogICAg
ICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNB
P0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZDb250YWluZXJOb2RlQDJA
SEhfTkBaCiAgICAgICAgID9yZW1vdmVAU3RyaW5nQFdURkBAUUFFWElIQFoKLSAgICAgICAgP3Jl
bW92ZWRMYXN0UmVmQE5vZGVAV2ViQ29yZUBAQUFFWFhaCiAgICAgICAgID9yZXZlcnNlRmluZEBT
dHJpbmdJbXBsQFdURkBAUUFFSV9XSUBaCiAgICAgICAgID9zX2Zyb250ZW5kQ291bnRlckBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAMEhBCiAgICAgICAgID9zYXZlRG9jdW1lbnRB
bmRTY3JvbGxTdGF0ZUBIaXN0b3J5Q29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKQEAgLTI3MSw2
ICsyNzAsNyBAQCBFWFBPUlRTCiAgICAgICAgID92aWV3cG9ydEFyZ3VtZW50c0BQYWdlQFdlYkNv
cmVAQFFCRT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAgICAgP2lzUGFnZUJveFZpc2li
bGVARG9jdW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKICAgICAgICAgP2lzQWN0aXZlQEluc2VydGlv
blBvaW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP2djVHJlZUBOb2RlQFdlYkNvcmVAQFFB
RVhYWgogICAgICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxlckBXZWJD
b3JlQEBRQUVYWFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNAQW5pbWF0aW9uQ29udHJvbGxl
ckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1JvdW5kaW5nSGFja3NAVGV4dFJ1
bkBXZWJDb3JlQEBTQVhfTkBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXgg
YmIxYTBkMjM4MzJlMGY4NDlhZDU4YjQwNGYzYWIyMGQ5OTZhYWU3ZC4uMjg4Y2M0MzZkZTQ0MzY4
Y2RjZmY2ZTM2ZGVmMWZmMGQ4NDYzMzkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRl
LmRlZgpAQCAtMjAyLDcgKzIwMiw2IEBAIEVYUE9SVFMKICAgICAgICAgP3BsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoK
ICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3Jl
QEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWQ29udGFpbmVyTm9k
ZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZAQFFBRVhJSEBaCi0gICAgICAg
ID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmV2ZXJzZUZp
bmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJA
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQogICAgICAgICA/c2F2ZURvY3Vt
ZW50QW5kU2Nyb2xsU3RhdGVASGlzdG9yeUNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCkBAIC0y
MTAsNiArMjA5LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2NyaXB0TmFtZVRvQ29kZUBXZWJDb3Jl
QEBZQT9BVzRVU2NyaXB0Q29kZUBAQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3Njcm9sbEVs
ZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVj
dEAyQEBaCiAgICAgICAgID9zZXRDYW5TdGFydE1lZGlhQFBhZ2VAV2ViQ29yZUBAUUFFWF9OQFoK
KyAgICAgICAgP2djVHJlZUBOb2RlQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2V0Q3Vyc2l2
ZUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0
VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXREZXZpY2VTY2FsZUZhY3RvckBQYWdlQFdlYkNv
cmVAQFFBRVhNQFoKICAgICAgICAgP3NldERPTUV4Y2VwdGlvbkBXZWJDb3JlQEBZQVhQQVZFeGVj
U3RhdGVASlNDQEBIQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDZhOGQxZWM2ZTliYzdl
YzI5MTA4YWY4MDVhOGY1MjVlNTExYjEzZDMuLjFkY2VhNjRmMWYyMWU0MzBiN2Y4OGZmMzBmZWI0
ZjM3OTY1YzQzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
KysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTQ0LDcgKzE0NCw3IEBA
IF9aTjdXZWJDb3JlMjRJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24xOGRpZENhbmNlbEZyYW1lSW1w
bEVQTlNfMTlJbnN0cnVtZW50aW5nQWdlCiBfWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyOHNl
dFNjcm9sbE9mZnNldEZyb21JbnRlcm5hbHNFUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmUx
MFNjcm9sbFZpZXcyM3NldFNjcm9sbGJhcnNTdXBwcmVzc2VkRWJiOwogX1pON1dlYkNvcmUxMFNj
cm9sbFZpZXcyMXNldERlbGVnYXRlc1Njcm9sbGluZ0ViOwotX1pON1dlYkNvcmU0Tm9kZTE0cmVt
b3ZlZExhc3RSZWZFdjsKK19aTjdXZWJDb3JlNE5vZGU2Z2NUcmVlRXY7CiBfWk43V2ViQ29yZThT
ZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3Jp
cHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RG
MTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRD
dXJzaXZlRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAyMGFiNzdlNDRkM2IxN2NkOTAzZDFkZTJkNzY0OWVhMWYyNTA3NGYwLi5iMzA0NGIyZDg3
MDAwOGUyMmJjMDAyNDdiNDkxOWNiNzg5YWQzN2VlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTItMDktMDMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IElmIGEgTm9kZSBYIGlzIHJlYWNoYWJsZSBmcm9tIEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0
aGUgc2FtZSB0cmVlIHNob3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGdjLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwgdGVzdHMg
dGhlIGZvbGxvd2luZ3M6CisKKyAgICAgICAgICAtIElmIGEgTm9kZSBYIGlzIHJlYWNoYWJsZSBm
cm9tIGEgbm9kZSBZIHRoYXQgaGFzIDF+IHJlZmVyZW5jZSBjb3VudCwKKyAgICAgICAgICAgIHRo
ZSBOb2RlIFggaXMgbm90IHJlY2xhaW1lZC4KKyAgICAgICAgICAtIE90aGVyd2lzZSwgdGhlIG5v
ZGUgWCBpcyByZWNsYWltZWQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4
dDogVXBkYXRlZCB0aGUgdGVzdCByZXN1bHQuCisgICAgICAgICogZmFzdC9kb20vZ2MtNS1leHBl
Y3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1l
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlm
ZXRpbWUuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMDIgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2lu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVGVzdHNdIGZhc3QvZm9ybXMvdGltZS1tdWx0aXBs
ZS1maWVsZHMvdGltZS1tdWx0aXBsZS1maWVsZHMtYXBwZWFyYW5jZS0qLmh0bWwgc2hvdWxkIGR1
bXAgdGV4dCBpbnN0ZWFkIG9mIHJlbmRlciB0cmVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhw
ZWN0ZWQudHh0CmluZGV4IDYwZDNhMTcwZjI5YjYzMzQ4NzFjODM5NmRlMGFhYmJiNzZiMGMxOTYu
LjkyZDQxMjE3ZWYzYWUzOTBmNWFhMjAwYzJlZTllZmQxNWE2MTI2ZjggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0CkBAIC00LDUgKzQsNiBAQCBUaGUgb3V0cHV0IHNob3Vs
ZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6
ICJyZXBsYQogCiByZXBsYWNlbWVudCBjb250ZW50CiBCCitwYXJlbnQgbm9kZSBleGlzdHMKIGNo
aWxkIG5vZGUgZXhpc3RzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQKaW5k
ZXggMThjODM0ODhiMGNmNmYwNDAxZmYzNzk3Y2YxNjYzOWRhNTYzZGE2ZS4uNzM4MDljZGE4NTQz
NDg3OWNiOTI2NzZiOTZiNzVkMTlmMDMxN2IwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2MtNS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1l
eHBlY3RlZC50eHQKQEAgLTQsNCArNCw1IEBAIFRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xs
b3dpbmcgcGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhCiAKIHJl
cGxhY2VtZW50IGNvbnRlbnQKIEIKK0QKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4M2VlZGUx
YjQxM2Q2NDdlZTc4MTZlNjVjYWJmMDA5NmM3YTg1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwyMDIgQEAKKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxk
IgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGls
ZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNo
aWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNo
aWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9
PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5
IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGls
ZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFT
UyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlz
ICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hp
bGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYy
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1j
aGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1j
aGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlog
PT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxs
eSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFT
UyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlz
ICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hp
bGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNo
aWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjIt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjIt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZa
ID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVs
bHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjIt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNo
aWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYy
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1j
aGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYw
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0K
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYw
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2
WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1
bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYw
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1j
aGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MS1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRp
dlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3Nm
dWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYw
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09
PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBk
aXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNz
ZnVsbHkgZGVzdHJ1Y3RlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJl
ZS1saWZldGltZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRp
bWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ODAwM2Q1OTdmZTg2NTc2MmJiNWYwNjk4MThmM2YxMmQ4NjVh
MmU0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUt
bGlmZXRpbWUuaHRtbApAQCAtMCwwICsxLDk4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3ZhciB0ZXN0Q2FzZXMgPSBbWyJkaXYw
IiwgImRpdjEiLCAiZGl2MiJdLAorICAgICAgICAgICAgICAgICBbImRpdjAiLCAiZGl2MiIsICJk
aXYxIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MSIsICJkaXYwIiwgImRpdjIiXSwKKyAgICAg
ICAgICAgICAgICAgWyJkaXYxIiwgImRpdjIiLCAiZGl2MCJdLAorICAgICAgICAgICAgICAgICBb
ImRpdjIiLCAiZGl2MCIsICJkaXYxIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MiIsICJkaXYx
IiwgImRpdjAiXV07CisKK3ZhciByb290RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJvb3REaXYpOwordmFyIHRlc3RIdG1sID0g
IjxkaXYgaWQ9J2RpdjAtcGFyZW50Jz48ZGl2IGlkPSdkaXYwJz48ZGl2IGlkPSdkaXYwLWNoaWxk
Jz48L2Rpdj48L2Rpdj48ZGl2IGlkPSdkaXYxLXBhcmVudCc+PGRpdiBpZD0nZGl2MSc+PGRpdiBp
ZD0nZGl2MS1jaGlsZCc+PC9kaXY+PC9kaXY+PGRpdiBpZD0nZGl2Mi1wYXJlbnQnPjxkaXYgaWQ9
J2RpdjInPjxkaXYgaWQ9J2RpdjItY2hpbGQnPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2
PiI7CisKK3Rlc3RDYXNlcy5mb3JFYWNoKGZ1bmN0aW9uICh0ZXN0KSB7CisgICAgdmFyIGRpdlgs
IGRpdlksIGRpdlo7CisgICAgZGVidWcoIj09PSBJbml0aWFsIHN0YXRlID09PSIpOworICAgIHJv
b3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAg
Y2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlgsIHRlc3RbMF0pOworICAgIGNoZWNrUGFyZW50
QW5kQ2hpbGRBbGl2ZShkaXZZLCB0ZXN0WzFdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxp
dmUoZGl2WiwgdGVzdFsyXSk7CisKKyAgICBkZWJ1ZygiPT09IEFmdGVyIGNsZWFyaW5nIGlubmVy
SFRNTCA9PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlgg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRlc3RbMl0pOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gIiI7CisgICAgY2hlY2tQYXJl
bnRBbmRDaGlsZEFsaXZlKGRpdlgsIHRlc3RbMF0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRB
bGl2ZShkaXZZLCB0ZXN0WzFdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2Wiwg
dGVzdFsyXSk7CisKKyAgICBkZWJ1ZygiPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQg
ZGl2WCA9PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlgg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRlc3RbMl0pOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gIiI7CisgICAgZGl2WCA9IG51
bGw7CisgICAgZ2MoKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsx
XSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAg
ZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09Iik7
CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJd
KTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxsOworICAgIGRp
dlkgPSBudWxsOworICAgIGdjKCk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlos
IHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRp
dlgsIGRpdlkgYW5kIGRpdlogPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRt
bDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2
WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgcHJldk5vZGVzID0gd2luZG93LmludGVybmFscy5udW1iZXJPZkxpdmVOb2RlcygpOwor
ICAgIHJvb3REaXYuaW5uZXJIVE1MID0gIiI7CisgICAgZGl2WCA9IG51bGw7CisgICAgZGl2WSA9
IG51bGw7CisgICAgZGl2WiA9IG51bGw7CisgICAgZ2MoKTsKKyAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICAvLyBJZiBhbGwgdGhlIE5vZGUgb2JqZWN0cyBpbiB0ZXN0SHRtbCBh
cmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQsCisgICAgICAgIC8vIGF0IGxlYXN0IDkgPGRpdj5z
IG9iamVjdHMgd2lsbCBiZSByZW1vdmVkLgorICAgICAgICAvLyAoQWN0dWFsbHksIHNpbmNlIHRl
c3RIdG1sIHJlbmRlcmluZyByZXF1aXJlcyBtb3JlIHRoYW4gOSBOb2RlIG9iamVjdHMuKQorICAg
ICAgICBpZiAod2luZG93LmludGVybmFscy5udW1iZXJPZkxpdmVOb2RlcygpIDw9IHByZXZOb2Rl
cyAtIDkpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERP
TSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4iKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBub3Qg
ZGVzdHJ1Y3RlZC4iKTsKKyAgICB9Cit9KTsKKworZnVuY3Rpb24gY2hlY2tQYXJlbnRBbmRDaGls
ZEFsaXZlKGRpdiwgbmFtZSkgeworICAgIGdsb2JhbERpdiA9IGRpdjsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5pZCcsIG5hbWUpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQnLCBuYW1lICsgIi1wYXJlbnQiKTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5maXJzdENoaWxkLmlkJywgbmFtZSArICIt
Y2hpbGQiKTsKKyAgICBnbG9iYWxEaXYgPSBudWxsOworICAgIGdjKCk7Cit9CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxl
YXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1y
ZWxlYXNlLmh0bWwKaW5kZXggYmYxMThiYmU1ZDQyNDc3NWNjZGJkNGQ3NmViYzczOWVkZTBhNjhi
Yy4uY2FmMDM0MmNmYjQ5M2U0OGJkYTUyMDRiZTUyODVjMjYwM2MzM2UzYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubGluZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVh
c2UuaHRtbApAQCAtMTMsNyArMTMsOSBAQCBmdW5jdGlvbiBudW1iZXJPZkxpdmVOb2RlcygpIHsK
IHZhciBiZWZvcmVDb3VudCA9IG51bWJlck9mTGl2ZU5vZGVzKCk7CiAKIHZhciBmID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZm9ybScpOworZi5mb2N1cygpOwogdmFyIGkgPSBmLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpOworaS5mb2N1cygpOwogaS5zZXRB
dHRyaWJ1dGUoJ29uY2xpY2snLCAnJyk7CiBmLnJlbW92ZUNoaWxkKGkpOwogZiA9IG51bGw7CkBA
IC0yNSw0ICsyNyw0IEBAIHZhciBhZnRlckNvdW50ID0gbnVtYmVyT2ZMaXZlTm9kZXMoKTsKIHNo
b3VsZEJlKCdhZnRlckNvdW50IC0gYmVmb3JlQ291bnQnLCAnMCcpOwogCiA8L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggMTBhNGMyYzJjNWYyZTdhNjA3YmRkZGE1MjU0ZmJlYTIyOWQwNmZmNi4uNzRjNGZi
ODg1YTNkNDJkYWM0MGU1YjRjODEyZTliOTFkYWUwZjE2NSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTAzICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBhIE5vZGUgWCBpcyByZWFj
aGFibGUgZnJvbSBKYXZhU2NyaXB0LCBhbGwgTm9kZXMgaW4gdGhlIHNhbWUgdHJlZSBzaG91bGQg
YmUga2VwdCBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTeW1ib2wgY2hhbmdlcy4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9s
cy5maWx0ZXI6CisKIDIwMTItMDgtMzEgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgRU5BQkxFX0NTUzNfRkxFWEJPWCBjb21waWxlIHRpbWUgZmxhZwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161957</attachid>
            <date>2012-09-03 19:17:28 -0700</date>
            <delta_ts>2012-09-06 00:48:14 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>bug-88834-20120904111711.patch</filename>
            <type>text/plain</type>
            <size>77924</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q4YjEzMDZhOWVjZWE5
ZjdhNTdhZWIxYmQ1MTRhNDg2ZWQ0MGI4My4uYjdkY2ExODE3MTE2N2NkYmJhOWM2MGE2ZDg5ZWFi
YTRlYjM3ZGZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NyBAQAorMjAxMi0wOS0wMyAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFgg
aXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBzYW1lIHRyZWUg
c2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmVyZW5jZXNdCisgICAgICAgIEEgZGVzaWduIGRvY3VtZW50OiBodHRw
czovL2RvY3MuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9kb2N1bWVudC9kLzFIY2FlVS03NXh1
a01ZU1Vhc2tlRG9ITC1MMEZOdUNESXVrdlBtT2hlWThRL2VkaXQKKyAgICAgICAgQSB3ZWJraXQt
ZGV2QCB0aHJlYWQ6IGh0dHA6Ly9tYXJrbWFpbC5vcmcvdGhyZWFkL2txdm90ajVpaDRmNG13NG0K
KworICAgICAgICBbT3ZlcnZpZXddCisgICAgICAgIEN1cnJlbnRseSB0aGUgbGlmZXRpbWUgc2Vt
YW50aWNzIG9mIERPTSBOb2RlcyBpcyB1bnByZWRpY3RhYmxlIGZyb20gdGhlIHBlcnNwZWN0aXZl
CisgICAgICAgIG9mIEphdmFTY3JpcHQgcHJvZ3JhbW1lcnMuIEZvciBleGFtcGxlLCBjb25zaWRl
ciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKKyAgICAgICAgICBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgicCIpOworICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgICAgICAgcC5pbm5lckhUTUwgPSc8ZGl2PjxzcGFuIGlkPSJzcGFuIj48YnI+PC9zcGFuPjwv
ZGl2Pic7CisgICAgICAgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7
CisgICAgICAgICAgcC5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgICBhbGVydChzcGFuKTsgIC8v
IDxzcGFuPgorICAgICAgICAgIGFsZXJ0KHNwYW4ucGFyZW50Tm9kZSk7ICAvLyA/Pz8KKyAgICAg
ICAgICBhbGVydChzcGFuLmZpcnN0Q2hpbGQpOyAgLy8gPz8/CisKKyAgICAgICAgVGhlIGN1cnJl
bnQgV2ViS2l0IHJldHVybnMgbnVsbCBmb3Igc3Bhbi5wYXJlbnROb2RlIChpLmUuIDxkaXY+IGlz
IGFscmVhZHkgcmVjbGFpbWVkKQorICAgICAgICBhbmQgPGJyPiBmb3Igc3Bhbi5maXJzdENoaWxk
LgorCisgICAgICAgIFdlIHdhbnQgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBzbyB0aGF0IHNwYW4u
cGFyZW50Tm9kZSByZXR1cm5zIDxkaXY+IGFuZAorICAgICAgICBzcGFuLmZpcnN0Q2hpbGQgcmV0
dXJucyA8YnI+LiBBY2N1cmF0ZWx5IHNwZWFraW5nLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGUK
KyAgICAgICAgZm9sbG93aW5nIGxpZmV0aW1lIHNlbWFudGljczoKKworICAgICAgICAgIC0gSWYg
YSBOb2RlIFggaXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBz
YW1lIHRyZWUKKyAgICAgICAgICAgIGFyZSBrZXB0IGFsaXZlLgorCisgICAgICAgIFtCZW5lZml0
c10KKyAgICAgICAgVGhlIGZpcnN0IGJlbmVmaXQgaXMgdGhhdCB0aGUgbmV3IGxpZmV0aW1lIHNl
bWFudGljcyBpcyBtb3JlIHByZWRpY3RhYmxlIGFuZAorICAgICAgICB1bmRlcnN0YW5kYWJsZSB0
byBKYXZhU2NyaXB0IHByb2dyYW1tZXJzLiBUaGUgc2VtYW50aWNzIGlzIGFsaWduZWQgdG8gdGhl
IHNwZWMuCisgICAgICAgIFRoaXMgd2lsbCBmaXggYSBidW5jaCBvZiBpbmNvbXByZWhlbnNpYmxl
IGJlaGF2aW9ycyBvZiB0aGUgY3VycmVudCBXZWJLaXQKKyAgICAgICAgYXMgZGVzY3JpYmVkIGlu
IHRoZSBkZXNpZ24gZG9jdW1lbnQuCisKKyAgICAgICAgVGhlIHNlY29uZCBiZW5lZml0IGlzIG1v
cmUgZWZmaWNpZW50IFY4J3MgR0MuIFY4IGltcGxlbWVudHMgYSBnZW5lcmF0aW9uYWwgR0MKKyAg
ICAgICAgYnV0IGNhbm5vdCByZWNsYWltIERPTSBub2RlcyBpbiB0aGUgbWlub3IgR0MuIEFsbCBE
T00gd3JhcHBlciBvYmplY3RzIGhhdmUKKyAgICAgICAgdG8gYmUgcHJvbW90ZWQgdG8gdGhlIG9s
ZCBzcGFjZSBhbmQgcmVjbGFpbWVkIGJ5IHRoZSBtYWpvciBHQy4gV2UgYXJlIHBsYW5uaW5nCisg
ICAgICAgIHRvIHJlZGVzaWduIFY4J3MgR0Mgc28gdGhhdCBpdCBjYW4gcmVjbGFpbSBET00gbm9k
ZXMgaW4gdGhlIG1pbm9yIEdDLAorICAgICAgICB3aGljaCByZXF1aXJlcyB0aGUgbmV3IGxpZmV0
aW1lIHNlbWFudGljcyBvZiBET00gbm9kZXMuIEZvciBtb3JlIGRldGFpbHMKKyAgICAgICAgcGxl
YXNlIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVu
dC9kLzFLaThXckdJSGlwSWp6ejVybDNTRzdTTi11bEg5SmdiY1FBT0E0SmEtaFhzL2VkaXQKKwor
ICAgICAgICBbUGVyZm9ybWFuY2UgcmVzdWx0c10KKyAgICAgICAgVGhlIGZvbGxvd2luZyByZXN1
bHRzIGFyZSB0aGUgYXZlcmFuZ2Ugb2YgMTAgcnVuLXBlcmYtdGVzdHM6CisKKyAgICAgICAgICAo
Q2hyb21pdW0vTGludXgpCisgICAgICAgICAgRHJvbWFlby9kb20tYXR0ciAgICAgICAgNjU3MCBy
dW5zL3MgPT4gNjU4NyBydW5zL3MgICAoKzAuMjUlKQorICAgICAgICAgIERyb21hZW8vZG9tLW1v
ZGlmeSAgICAgIDM5MDUgcnVucy9zID0+IDM4NzMgcnVucy9zICAgKC0wLjgxJSkKKyAgICAgICAg
ICBEcm9tYWVvL2RvbS1xdWVyeSAgICAgODIyOTkzIHJ1bnMvcyA9PiA4NjU4NjggcnVucy9zICgr
NS4yMSUpCisgICAgICAgICAgRHJvbWFlby9kb20tdHJhdmVyc2UgICAgMjQ0OCBydW5zL3MgPT4g
MjQ0MiBydW5zL3MgICAoLTAuMjQlKQorCisgICAgICAgICAgKFNhZmFyaS9NYWMpCisgICAgICAg
ICAgRHJvbWFlby9kb20tYXR0ciAgICAgICAgNTc2OSBydW5zL3MgPT4gNTc5MCBydW5zL3MgICAo
KzAuMzYlKQorICAgICAgICAgIERyb21hZW8vZG9tLW1vZGlmeSAgICAgIDQ5MzUgcnVucy9zID0+
IDQ3NzAgcnVucy9zICAgKC0zLjM0JSkKKyAgICAgICAgICBEcm9tYWVvL2RvbS1xdWVyeSAgICAg
OTQ4OTQxIHJ1bnMvcyA9PiA5NTQyMTggcnVucy9zICgrMC41NSUpCisgICAgICAgICAgRHJvbWFl
by9kb20tdHJhdmVyc2UgICAgMzg3MCBydW5zL3MgPT4gMzg1MCBydW5zL3MgICAoLTAuNTElKQor
CisgICAgICAgIFRoZSAtMy4zNCUgcmVncmVzc2lvbiBpbiBkb20tbW9kaWZ5IGluIFNhZmFyaS9N
YWMgaXMgbm90IGFjY2VwdGFibGUsCisgICAgICAgIGJ1dCBJIGhhdmUgYWxyZWFkeSBvcHRpbWl6
ZWQgZG9tLW1vZGlmeSBieSA4LjIlIGluIGFub3RoZXIgcGF0Y2ggKGJ1ZyA5Mjk2NSkKKyAgICAg
ICAgdG8gb2Zmc2V0IHRoZSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLiBTZWUgdGhlIGRlc2lnbiBk
b2N1bWVudCBmb3IKKyAgICAgICAgbW9yZSBkZXRhaWxlZCBkaXNjdXNzaW9uIGFib3V0IHBlcmZv
cm1hbmNlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0
bWwKKyAgICAgICAgICAgICAgZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFz
ZS5odG1sCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFu
Y2VzLW5vQmFzZVZhbFJlZi5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWst
ZWxlbWVudC1pbnN0YW5jZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFr
LWR5bmFtaWNhbGx5LWFkZGVkLWVsZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBh
bmltYXRpb25zL3NtaWwtbGVhay1lbGVtZW50cy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9u
cy9zdmdsZW5ndGgtZWxlbWVudC1yZW1vdmVkLWNyYXNoLnN2ZworICAgICAgICAgICAgICBDb25m
aXJtIHRoYXQgYWxsIHRoZSBvdGhlciBleGlzdGluZyB0ZXN0cyBkbyBub3QgY3Jhc2guCisKKyAg
ICAgICAgTm90ZTogSSB3aWxsIHJlbW92ZSBhbGwgZnByaW50ZigpcyBhbmQgYWRkIHBlci1mdW5j
dGlvbiBjb21tZW50cyBhZnRlcgorICAgICAgICB3ZSBmb3VuZCB0aGF0IHRoaXMgcGF0Y2ggaXMg
T0suCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVy
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAg
ICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckFjdGl2ZURPTU5vZGUpOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkF0dHI6OmNyZWF0ZVRleHRDaGlsZCk6CisgICAgICAgICogZG9tL0NvbnRh
aW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgIChDb250YWluZXJOb2RlKToKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZElu
dG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlm
eURlc2NlbmRhbnRSZW1vdmVkRnJvbVRyZWUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5oOgorICAgICAgICAoQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6OkNoaWxkTm9kZUluc2Vy
dGlvbk5vdGlmaWVyKToKKyAgICAgICAgKENoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OkNoaWxkTm9kZVJlbW92YWxO
b3RpZmllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVhY2hh
YmxlRnJvbVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQWxsQ2hpbGRyZW5JbkNv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlOjpOb2RlUmVtb3ZhbERpc3BhdGNo
ZXI6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGU6OmFkZENoaWxkTm9kZXNU
b0RlbGV0aW9uUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90
aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeSk6
CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVS
ZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxO
b3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNrSWZMaWZldGltZU93bmVyKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZWRMYXN0
UmVmKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpndWFyZERlcmVmKToKKyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICog
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6
YWRkU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjpyZW1vdmVB
bGxTaGFkb3dSb290cyk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6fk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3ZlZExhc3RSZWYp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnY1RyZWUpOgor
ICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9UcmVlU2hhcmVkLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTaGFyZWQ6OlRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6flRy
ZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVmKToKKyAgICAgICAg
KFRyZWVTaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6d3JhcHBlclJlZik6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpkZXJlZik6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2hhcmVkOjp3cmFwcGVyRGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJl
ZDo6cmVmQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6d3JhcHBlclJlZkNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6Omhhc09uZVJlZik6CisgICAgICAg
IChXZWJDb3JlOjpUcmVlU2hhcmVkOjpzZXRMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTaGFyZWQ6OnVuc2V0TGlmZXRpbWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpU
cmVlU2hhcmVkOjppc0xpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJl
ZDo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFkb3B0ZWQpOgorICAgICAgICAqIHN2
Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpnY1RyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjphcHBlbmRDaGlsZCk6Cisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAoU1ZHRWxlbWVudElu
c3RhbmNlKToKKwogMjAxMi0wOS0wMyAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF0gRml4IGVfZGJ1c19zaHV0ZG93bigpIGVycm9yIHdoZW4g
ZXhpdGluZyB0aGUgTWluaWJyb3dzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMzI4MDMwNjA1ZDA3ZDMxMzgx
MjQyMGRkYmU5OTEzNTZiYThiZGJhLi5hNjhmZWM3M2ZlMWY3ZjVjYjA0YjI3YzlkZTQ1NTJlYWYw
MTI3ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMDMgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIGEgTm9kZSBYIGlzIHJl
YWNoYWJsZSBmcm9tIEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3Vs
ZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFN5bWJvbCBjaGFuZ2VzLgorCisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6Cisg
ICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZjoKKwogMjAxMi0wOS0wMyAgS2FuZ2lsIEhhbiAgPGthbmdpbC5oYW5Ac2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW1dLMl1bV1RSXSBJbXBsZW1lbnQgV2ViS2l0RW5hYmxlQ2FyZXRCcm93c2luZyBh
dHRyaWJ1dGUgaW4gdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggYjU3N2U2ZjQ5ZWE0OTI1YmYyYjgzNmViZGQzNTk0YWM1Nzk0NjJjMi4uNzM4NzZj
ZDUyYTBjMWEzMjQ3NGQ2NjQ5OTE5MTk5MmFkZjYzYWEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTY1MSw4ICs2NTEsOCBAQCBfX1pON1dlYkNvcmU0S1VSTEMxRU5TXzE4UGFyc2VkVVJMU3Ry
aW5nVGFnRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlNEtVUkxDMUVQNU5TVVJMCiBfX1pO
N1dlYkNvcmU0S1VSTEMxRVBLN19fQ0ZVUkwKIF9fWk43V2ViQ29yZTRLVVJMQzFFUktTMF9SS04z
V1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTROb2RlNmdjVHJlZUV2CiBfX1pON1dlYkNvcmU0Tm9k
ZTEwcmVuZGVyUmVjdEVQYgotX19aTjdXZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXYKIF9f
Wk43V2ViQ29yZTROb2RlMTdzdG9wSWdub3JpbmdMZWFrc0V2CiBfX1pON1dlYkNvcmU0Tm9kZTE4
c3RhcnRJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2ViQ29yZTROb2RlMTlzZXROZWVkc1N0eWxlUmVj
YWxjRU5TXzE1U3R5bGVDaGFuZ2VUeXBlRQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMGIyYjE3NTgz
Y2I3MDYwNzliNzMyMjg3ZDI4ZmYyNDJjYjM1ZDNmYy4uOWQ4ZTgwYzVjY2I5Mjk2MmFmYjFmOTdl
OWRiMDQzZmQwZTQ5M2JmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRl
cgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xOTIzLDcgKzE5MjMsNiBA
QCBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMTFwYWludEZsb2F0c0VSTlNfOVBhaW50SW5mb0Vp
aWIKIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2sxMHBhaW50Q2FyZXRFUk5TXzlQYWludEluZm9F
aWlOU185Q2FyZXRUeXBlRQogX19aTks3V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb24xM2NhcmV0UmVu
ZGVyZXJFdgogX19aTks3V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbjE3aXNDb250ZW50RWRpdGFi
bGVFdgotX19aTjdXZWJDb3JlMThjYWxsUmVtb3ZlZExhc3RSZWZFUE5TXzEwVHJlZVNoYXJlZElO
U18xM0NvbnRhaW5lck5vZGVFRUUKIF9fWk43V2ViQ29yZTE4aXNFZGl0YWJsZVBvc2l0aW9uRVJL
TlNfOFBvc2l0aW9uRQogX19aTks3V2ViQ29yZTE5RHJhZ0NhcmV0Q29udHJvbGxlcjEzY2FyZXRS
ZW5kZXJlckV2CiBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2NrMjVwYWludENvbnRpbnVhdGlvbk91
dGxpbmVzRVJOU185UGFpbnRJbmZvRWlpCkBAIC0yNDcxLDEzICsyNDcwLDEwIEBAIF9fWk5LM1dU
RjlIYXNoVGFibGVJUHZTMV9OU18xN0lkZW50aXR5RXh0cmFjdG9ySVMxX0VFTlNfN1B0ckhhc2hJ
UzFfRUVOU18xMEhhc2hUCiBfX1pON1dlYkNvcmUxMUpTTm9kZU93bmVyOGZpbmFsaXplRU4zSlND
NkhhbmRsZUlOUzFfN1Vua25vd25FRUVQdgogX19aTjdXZWJDb3JlMTR1bmNhY2hlV3JhcHBlcklO
U180Tm9kZUVFRXZQTlNfMTVET01XcmFwcGVyV29ybGRFUFRfUE5TXzEySlNET01XcmFwcGVyRQog
X19aTjdXZWJDb3JlMTRKU0hUTUxEb2N1bWVudEQxRXYKLV9fWlRobjhfTjdXZWJDb3JlOERvY3Vt
ZW50MTRyZW1vdmVkTGFzdFJlZkV2Ci1fX1pON1dlYkNvcmU4RG9jdW1lbnQxNHJlbW92ZWRMYXN0
UmVmRXYKIF9fWk43V2ViQ29yZTE0U3R5bGVTaGVldExpc3REMUV2CiBfX1pON1dlYkNvcmU5VHJl
ZVNjb3BlMjBkZXN0cm95VHJlZVNjb3BlRGF0YUV2CiBfX1pON1dlYkNvcmUxOERvY3VtZW50T3Jk
ZXJlZE1hcDVjbGVhckV2CiBfX1pON1dlYkNvcmUxM0NvbnRhaW5lck5vZGUxN3JlbW92ZUFsbENo
aWxkcmVuRXYKLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcklOU180
Tm9kZUVOU18xM0NvbnRhaW5lck5vZGVFRUV2UFQwXwogX19aTjdXZWJDb3JlMTVIVE1MSHRtbEVs
ZW1lbnREMEV2CiBfX1pON1dlYkNvcmUxM1N0eWxlZEVsZW1lbnREMkV2CiBfX1pON1dlYkNvcmU3
RWxlbWVudEQyRXYKQEAgLTQxNTEsNyArNDE0Nyw2IEBAIF9fWk43V2ViQ29yZTROb2RlMTVyZW1v
dmVkRnJvbVRyZWVFYgogX19aTjdXZWJDb3JlTDE5bm90aWZ5Q2hpbGRJbnNlcnRlZEVQTlNfNE5v
ZGVFCiBfX1pON1dlYkNvcmU0Tm9kZTE2aW5zZXJ0ZWRJbnRvVHJlZUViCiBfX1pON1dlYkNvcmVM
MjhkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzRVBOU180Tm9kZUUKLV9fWk43V2ViQ29yZTEw
VHJlZVNoYXJlZElOU18xM0NvbnRhaW5lck5vZGVFRTE0cmVtb3ZlZExhc3RSZWZFdgogX19aVGhu
OF9ON1dlYkNvcmUxNkRvY3VtZW50RnJhZ21lbnREMEV2CiBfX1pON1dlYkNvcmVMMzNjcmVhdGVI
VE1MUGFyYWdyYXBoRWxlbWVudFdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVOM1dURjEwUGFzc1JlZlB0cklOU18xMUhUTUxFbGVtZW50RUVFCiBfX1pON1dl
YkNvcmUxM2NyZWF0ZVdyYXBwZXJJTlNfMjJKU0hUTUxQYXJhZ3JhcGhFbGVtZW50RU5TXzIwSFRN
TFBhcmFncmFwaEVsZW1lbnRFRUVQTlNfMTJKU0RPTVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQ
TlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQVDBfCkBAIC0yOTQ2NCwxMiArMjk0NTksMTAgQEAgX19a
TjdXZWJDb3JlMTNTVkdVc2VFbGVtZW50MzBmaWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXBF
dgogX19aTks3V2ViQ29yZTEyU1ZHVHJhbnNmb3JtOXRyYW5zbGF0ZUV2CiBfX1pON1dlYkNvcmUx
MEZsb2F0UG9pbnQxNW5hcnJvd1ByZWNpc2lvbkVkZAogX19aTjdXZWJDb3JlMTVBZmZpbmVUcmFu
c2Zvcm05c2V0TWF0cml4RWRkZGRkZAotX19aTjdXZWJDb3JlMTBUcmVlU2hhcmVkSU5TXzE4U1ZH
RWxlbWVudEluc3RhbmNlRUUxNHJlbW92ZWRMYXN0UmVmRXYKIF9fWk43V2ViQ29yZTE4U1ZHRWxl
bWVudEluc3RhbmNlRDBFdgogX19aTjdXZWJDb3JlMTBTVkdFbGVtZW50MjFyZW1vdmVJbnN0YW5j
ZU1hcHBpbmdFUE5TXzE4U1ZHRWxlbWVudEluc3RhbmNlRQogX19aTkszV1RGOUhhc2hUYWJsZUlQ
TjdXZWJDb3JlMThTVkdFbGVtZW50SW5zdGFuY2VFUzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklT
M19FRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNoVHJhaXRzSVMzX0VFUzlfRTRmaW5kSVMzX05T
XzIySWRlbnRpdHlIYXNoVHJhbnNsYXRvcklTM19TM19TN19FRUVFTlNfMjJIYXNoVGFibGVDb25z
dEl0ZXJhdG9ySVMzX1MzX1M1X1M3X1M5X1M5X0VFUktUXwogX19aTjNXVEY5SGFzaFRhYmxlSVBO
N1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUVTM19OU18xN0lkZW50aXR5RXh0cmFjdG9ySVMz
X0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVTOV9FNnJlbW92ZUVQUzNf
Ci1fX1pON1dlYkNvcmUyOHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXJJTlNfMThTVkdFbGVt
ZW50SW5zdGFuY2VFUzFfRUV2UFQwXwogX19aVGhuOF9ON1dlYkNvcmUxNFNWR0xpbmVFbGVtZW50
RDBFdgogX19aVGhuOF9ON1dlYkNvcmUxOFNWR1BvbHlsaW5lRWxlbWVudEQwRXYKIF9fWlRobjhf
TjdXZWJDb3JlMTdTVkdQb2x5Z29uRWxlbWVudEQwRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZTE5NDk1NDBiMjIxOGRm
MzQwMTU2ZjYwYWRlN2Y4M2JlNmVkMzk1MS4uNGJkMmZiYmEwMDRkODRmZjcyYmEyMDM1M2RjYmIz
YmFjYjYyODY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTkzNyw4ICs5MzcsMTMgQEAgc3ViIEdlbmVyYXRlSGVhZGVy
CiAKICAgICBpZiAoISRoYXNQYXJlbnQpIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAkaW1wbFR5cGUqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGw7IH1cbiIpOwotICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IG1faW1w
bC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfVxuXG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB2b2lkIHJlbGVhc2VJbXBsSWZOb3ROdWxsKCkgeyBpZiAobV9pbXBsKSB7IG1f
aW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfSB9XG5cbiIpOworICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIk5vZGUiKSB7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHZvaWQgcmVsZWFzZUltcGwoKSB7IG1faW1wbC0+d3JhcHBlckRlcmVmKCk7IG1faW1wbCA9
IDA7IH1cblxuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQg
cmVsZWFzZUltcGxJZk5vdE51bGwoKSB7IGlmIChtX2ltcGwpIHsgbV9pbXBsLT53cmFwcGVyRGVy
ZWYoKTsgbV9pbXBsID0gMDsgfSB9XG5cbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBtX2ltcGwt
PmRlcmVmKCk7IG1faW1wbCA9IDA7IH1cblxuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIHZvaWQgcmVsZWFzZUltcGxJZk5vdE51bGwoKSB7IGlmIChtX2ltcGwpIHsg
bV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9IH1cblxuIik7CisgICAgICAgIH0KICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgInByaXZhdGU6XG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAkaW1wbFR5cGUqIG1faW1wbDtcbiIpOwogICAgIH0gZWxzaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCJ9
KSB7CkBAIC0xNjY0LDkgKzE2NjksMTYgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1wbClcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAsIG1faW1wbChpbXBsLmxlYWtSZWYoKSlcbiIpOworICAgICAgICAgICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJOb2RlIikgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICwgbV9pbXBsKGltcGwuZ2V0KCkpXG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLCBtX2ltcGwoaW1wbC5sZWFrUmVm
KCkpXG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIntcbiIpOworICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGUiKSB7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpbXBsLT53cmFwcGVyUmVmKCk7XG4i
KTsKKyAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6ZmluaXNoQ3JlYXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YVN0b3JlLmNwcAppbmRleCAyMjc2MTllNzhiOTZkNDIzZmZmMGJkNjQwMGZh
NGMwMDE2MWMyNjRlLi4zNjY4ZmZlZTYwMzEzYTRhNzY0YjI2Y2NiN2YzMzg2Y2Y2NmU0NzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTE1Nywx
NSArMTU3LDE1IEBAIHZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZvaWQqIGRvbU9iCiAgICAgICAgIERPTURhdGFTdG9y
ZSogc3RvcmUgPSBsaXN0W2ldOwogICAgICAgICBET01Ob2RlTWFwcGluZyYgbm9kZU1hcCA9IG5v
ZGUtPmlzQWN0aXZlTm9kZSgpID8gc3RvcmUtPmFjdGl2ZURvbU5vZGVNYXAoKSA6IHN0b3JlLT5k
b21Ob2RlTWFwKCk7CiAgICAgICAgIGlmIChub2RlTWFwLnJlbW92ZUlmUHJlc2VudChub2RlLCB2
OE9iamVjdCkpIHsKLSAgICAgICAgICAgIG5vZGUtPmRlcmVmKCk7IC8vIE5vYm9keSBvdmVycmlk
ZXMgTm9kZTo6ZGVyZWYgc28gaXQncyBzYWZlCi0gICAgICAgICAgICByZXR1cm47IC8vIFRoZXJl
IG1pZ2h0IGJlIGF0IG1vc3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdvcmxkJ3MgbWFw
cworICAgICAgICAgICAgbm9kZS0+d3JhcHBlckRlcmVmKCk7CisgICAgICAgICAgICByZXR1cm47
IC8vIFRoZXJlIGlzIGF0IG1vc3Qgb25lIHdyYXBwZXIgZm9yIHRoZSBub2RlIGluIHdvcmxkJ3Mg
bWFwcy4KICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIElmIG5vdCBmb3VuZCwgaXQgbWVhbnMg
bWFwIGZvciB0aGUgd3JhcHBlciBoYXMgYmVlbiBhbHJlYWR5IGRlc3Ryb3llZCwganVzdCBkaXNw
b3NlIHRoZQogICAgIC8vIGhhbmRsZSBhbmQgZGVyZWYgdGhlIG9iamVjdCB0byBmaWdodCBtZW1v
cnkgbGVhay4KICAgICB2OE9iamVjdC5EaXNwb3NlKCk7Ci0gICAgbm9kZS0+ZGVyZWYoKTsgLy8g
Tm9ib2R5IG92ZXJyaWRlcyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKKyAgICBub2RlLT53cmFw
cGVyRGVyZWYoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggZjUxYjY3YmJlN2M3MjY4MTA0MGY3
NDYzMzU5ZWQ4YmFlNTFlZjIyMS4uNjEwMzM1NTEwYjg2NzA5NmNmMTBhNTRjOTUyMjg1ZTk3ZjZm
NjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBA
IC03Myw3ICs3Myw4IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShQYXNzUmVmUHRyPE5vZGU+CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
OjpOZXcod3JhcHBlcik7CiAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxl
KSk7CiAgICAgQVNTRVJUKCFub2RlLT5pc0FjdGl2ZU5vZGUoKSk7Ci0gICAgZ2V0RE9NTm9kZU1h
cChpc29sYXRlKS5zZXQobm9kZS5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUpOworICAgIG5vZGUt
PndyYXBwZXJSZWYoKTsKKyAgICBnZXRET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmdldCgp
LCB3cmFwcGVySGFuZGxlKTsKICAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKIH0KIApAQCAtODIs
NyArODMsOCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckFjdGl2ZURPTU5vZGUoUGFzc1JlZlB0cgogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3
KHdyYXBwZXIpOwogICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwog
ICAgIEFTU0VSVChub2RlLT5pc0FjdGl2ZU5vZGUoKSk7Ci0gICAgZ2V0QWN0aXZlRE9NTm9kZU1h
cChpc29sYXRlKS5zZXQobm9kZS5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUpOworICAgIG5vZGUt
PndyYXBwZXJSZWYoKTsKKyAgICBnZXRBY3RpdmVET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2Rl
LmdldCgpLCB3cmFwcGVySGFuZGxlKTsKICAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0F0dHIuY3BwCmluZGV4IDk1YzNmZTA1MjZhNzRiMzY1YTRlNmVkOWY4YzFhNWQ3YzFkZjY2
YWUuLjg4ZWMwNDVhYTYwZGMxNzAwZDQ1ZTQ5YjA0YzMyYjQwMWIyZDI4MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0
ci5jcHAKQEAgLTgyLDYgKzgyLDcgQEAgdm9pZCBBdHRyOjpjcmVhdGVUZXh0Q2hpbGQoKQogICAg
ICAgICAvLyBUaGlzIGRvZXMgZXZlcnl0aGluZyBhcHBlbmRDaGlsZCgpIHdvdWxkIGRvIGluIHRo
aXMgc2l0dWF0aW9uIChhc3N1bWluZyBtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCB3YXMgc2V0KSwK
ICAgICAgICAgLy8gYnV0IG11Y2ggbW9yZSBlZmZpY2llbnRseS4KICAgICAgICAgdGV4dE5vZGUt
PnNldFBhcmVudE9ySG9zdE5vZGUodGhpcyk7CisgICAgICAgIHRleHROb2RlLT51bnNldExpZmV0
aW1lT3duZXIoKTsKICAgICAgICAgc2V0Rmlyc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAg
ICAgIHNldExhc3RDaGlsZCh0ZXh0Tm9kZS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IGFkYWZlYjYxNzA2MTQ4MDFiZmMwNzY2N2E1OTEyYWU5MDZl
NDgzM2EuLmIwOTcyNWM0OGExMDkyMTE3NmFiNmZjYTQ2OWE0NTdlYjE0YmE4OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCBib29sIENvbnRh
aW5lck5vZGU6OnJlbW92ZUNoaWxkKE5vZGUqIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykK
IAogICAgIGNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgcHJldiwgbmV4dCwgLTEpOwogCi0gICAgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZC5nZXQoKSk7CisgICAgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZC5nZXQoKSwgZmFsc2UpOwog
ICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKIAogICAgIHJldHVybiBjaGlsZDsK
QEAgLTQ2OCw3ICs0NjgsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlclJlbW92ZUNoaWxk
KE5vZGUqIG9sZENoaWxkKQogICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgb2xkQ2hpbGQp
OwogCiAgICAgY2hpbGRyZW5DaGFuZ2VkKHRydWUsIHByZXYsIG5leHQsIC0xKTsKLSAgICBDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KG9sZENoaWxkKTsKKyAgICBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KG9sZENoaWxkLCBmYWxzZSk7CiB9CiAKIC8v
IHRoaXMgZGlmZmVycyBmcm9tIG90aGVyIHJlbW92ZSBmdW5jdGlvbnMgYmVjYXVzZSBpdCBmb3Jj
aWJseSByZW1vdmVzIGFsbCB0aGUgY2hpbGRyZW4sCkBAIC01MzAsNyArNTMwLDcgQEAgdm9pZCBD
b250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGZhbHNl
LCAwLCAwLCAtc3RhdGljX2Nhc3Q8aW50PihyZW1vdmVkQ2hpbGRyZW5Db3VudCkpOwogCiAgICAg
Zm9yIChpID0gMDsgaSA8IHJlbW92ZWRDaGlsZHJlbkNvdW50OyArK2kpCi0gICAgICAgIENoaWxk
Tm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkocmVtb3ZlZENoaWxkcmVuW2ldLmdldCgp
KTsKKyAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShyZW1vdmVk
Q2hpbGRyZW5baV0uZ2V0KCksIGZhbHNlKTsKIAogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwog
ICAgIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCmluZGV4IDhiOTI0NzczZTdhMjZkYTU4YTVlZDg1MzgwNTA0YjFjMzNjMjUzMGIuLjgw
ZmI3MTAzOGY5Njc2YjY5OTgzNWI3ZmZjMWRmZDU5MjY5YWZlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaApAQCAtMTE5LDkgKzExOSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB0ZW1w
bGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+CiAgICAg
ZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcihHZW5lcmljTm9kZSogY2hpbGQsIEdl
bmVyaWNOb2RlQ29udGFpbmVyKik7Ci0KICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwg
Y2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRk
Q2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdlbmVyaWNOb2Rl
KiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5l
cmljTm9kZT4KKyAgICBmcmllbmQgYm9vbCBpc1JlYWNoYWJsZUZyb21XcmFwcGVyKEdlbmVyaWNO
b2RlKiwgR2VuZXJpY05vZGUqKik7CiAKICAgICB2b2lkIHNldEZpcnN0Q2hpbGQoTm9kZSogY2hp
bGQpIHsgbV9maXJzdENoaWxkID0gY2hpbGQ7IH0KICAgICB2b2lkIHNldExhc3RDaGlsZChOb2Rl
KiBjaGlsZCkgeyBtX2xhc3RDaGlsZCA9IGNoaWxkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRleCAyZWRlYTMwZTBjMDg2ZWUwZWNmODM0
M2U1OTY1ZWY5ODJkZWIzMDJiLi5kMWM1MmU1ZTAzMWYwYWUyMGVhN2U1Y2JjMmQ3ODY2NmEyM2U2
MTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5j
cHAKQEAgLTQ3LDkgKzQ3LDExIEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudChDb250YWluZXJOCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSkt
PnNoYWRvdygpKSB7CisgICAgICAgIG1fdHJlZVNjb3BlRGVwdGgrKzsKICAgICAgICAgU2hhZG93
Um9vdFZlY3RvciByb290cyhzaGFkb3cpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJvb3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0Rv
Y3VtZW50KHJvb3RzW2ldLmdldCgpKTsKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aC0tOwogICAg
IH0KIH0KIApAQCAtNTgsMTAgKzYwLDE0IEBAIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqCiAgICAg
Zm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc0NvbnRhaW5lck5vZGUo
KSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHRvQ29udGFpbmVyTm9k
ZShjaGlsZCkpOworICAgICAgICBlbHNlIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAg
ICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsKICAgICB9CiAKKyAgICBtX3RyZWVTY29w
ZURlcHRoKys7CiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gbm9kZS0+eW91bmdlc3RTaGFk
b3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKICAgICAgICAg
bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUocm9vdCk7CisgICAgbV90cmVlU2NvcGVEZXB0aC0t
OwogfQogCiB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJl
bW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSogbm9kZSkKQEAgLTgyLDkgKzg4LDExIEBA
IHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZy
b21Eb2N1bWVudChDb250YWluZXJOb2RlCiAgICAgICAgIG5vZGUtPmRvY3VtZW50KCktPnNldENT
U1RhcmdldCgwKTsKIAogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQo
bm9kZSktPnNoYWRvdygpKSB7CisgICAgICAgIG1fdHJlZVNjb3BlRGVwdGgrKzsKICAgICAgICAg
U2hhZG93Um9vdFZlY3RvciByb290cyhzaGFkb3cpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJvb3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRG
cm9tRG9jdW1lbnQocm9vdHNbaV0uZ2V0KCkpOworICAgICAgICBtX3RyZWVTY29wZURlcHRoLS07
CiAgICAgfQogfQogCkBAIC05MywxNSArMTAxLDE5IEBAIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG5v
CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc0NvbnRhaW5l
ck5vZGUoKSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUodG9Db250YWlu
ZXJOb2RlKGNoaWxkKSk7CisgICAgICAgIGVsc2UgaWYgKCFtX3RyZWVTY29wZURlcHRoKQorICAg
ICAgICAgICAgY2hlY2tJZkxpZmV0aW1lT3duZXIoY2hpbGQpOwogICAgIH0KIAogICAgIGlmICgh
bm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRWxlbWVu
dFNoYWRvdyogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3coKSkgeworICAgICAgICBt
X3RyZWVTY29wZURlcHRoKys7CiAgICAgICAgIFNoYWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290cy5zaXplKCk7ICsraSkKICAg
ICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUocm9vdHNbaV0uZ2V0KCkpOworICAg
ICAgICBtX3RyZWVTY29wZURlcHRoLS07CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4IDE2MzI5NTU0MTM1NWU3ZDM2MjI4ZTQy
YjM0MTE5NGMwMjBhY2QxMTAuLmE2MDhlMmEzNDcxNmY4ZTdlYjUwZjUwYmU5ZWM4N2I0ZDNhZmJh
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGht
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBA
IC0zMCw5ICszMCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDaGlsZE5vZGVJ
bnNlcnRpb25Ob3RpZmllciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoQ29udGFpbmVyTm9kZSog
aW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2lu
dCkKKyAgICAgICAgLCBtX3RyZWVTY29wZURlcHRoKDApCiAgICAgewogICAgIH0KIApAQCAtNDYs
MjUgKzQ4LDM2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJl
ZShDb250YWluZXJOb2RlKik7CiAKICAgICBDb250YWluZXJOb2RlKiBtX2luc2VydGlvblBvaW50
OwotICAgIFZlY3RvcjwgUmVmUHRyPE5vZGU+ID4gbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9u
VGFyZ2V0czsKKyAgICBPd25QdHI8VmVjdG9yPFJlZlB0cjxOb2RlPiA+ID4gbV9wb3N0SW5zZXJ0
aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKKyAgICAvLyBtX3RyZWVTY29wZURlcHRoID09IDAgbWVh
bnMgdGhhdCB0aGUgTm90aWZpZXIgaXMgaW4gdGhlIFRyZWVTY29wZSBvZiBtX2luc2VydGlvblBv
aW50LgorICAgIGludCBtX3RyZWVTY29wZURlcHRoOwogfTsKIAogY2xhc3MgQ2hpbGROb2RlUmVt
b3ZhbE5vdGlmaWVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoQ29udGFpbmVyTm9kZSogaW5zZXJ0
aW9uUG9pbnQpCiAgICAgICAgIDogbV9pbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCkKKyAg
ICAgICAgLCBtX3RyZWVTY29wZURlcHRoKDApCisgICAgICAgICwgbV9saWZldGltZU93bmVyRm91
bmQoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIHZvaWQgbm90aWZ5KE5vZGUqKTsKKyAgICB2
b2lkIG5vdGlmeShOb2RlKiwgYm9vbCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlEZXNj
ZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlKik7CiAgICAgdm9pZCBub3Rp
ZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqKTsKICAgICB2b2lkIG5v
dGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqKTsKICAgICB2b2lkIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVyTm9kZSopOworICAgIHZvaWQgY2hlY2tJZkxpZmV0aW1l
T3duZXIoTm9kZSopOwogCiAgICAgQ29udGFpbmVyTm9kZSogbV9pbnNlcnRpb25Qb2ludDsKKyAg
ICAvLyBtX3RyZWVTY29wZURlcHRoID09IDAgbWVhbnMgdGhhdCB0aGUgTm90aWZpZXIgaXMgaW4g
dGhlIFRyZWVTY29wZSBvZiBtX2luc2VydGlvblBvaW50LgorICAgIGludCBtX3RyZWVTY29wZURl
cHRoOworICAgIC8vIG1fbGlmZXRpbWVPd25lckZvdW5kID09IHRydWUgbWVhbnMgdGhhdCBhIGxp
ZmV0aW1lIG93bmVyIGlzIGZvdW5kIGluIHRoZSBUcmVlU2NvcGUgb2YKKyAgICAvLyBtX2luc2Vy
dGlvblBvaW50LgorICAgIGJvb2wgbV9saWZldGltZU93bmVyRm91bmQ7CiB9OwogCiBuYW1lc3Bh
Y2UgUHJpdmF0ZSB7CkBAIC03NCwxMSArODcsNjYgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogCiB9
CiAKKy8vIElmIHRoZSBUcmVlU2NvcGUgaGFzIGEgTm9kZSByZWZlcmVuY2VkIGJ5IGEgd3JhcHBl
ciBvYmplY3QsIGlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSBzZXRzCisvLyBhIGxpZmV0aW1lIG93
bmVyIG9uIHRoZSBOb2RlIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSwgaXNSZWFjaGFibGVG
cm9tV3JhcHBlcigpIHNpbXBseQorLy8gcmV0dXJucyBmYWxzZSB3aXRob3V0IHNldHRpbmcgYSBs
aWZldGltZSBvd25lci4KK3RlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlPgoraW5saW5lIGJvb2wg
aXNSZWFjaGFibGVGcm9tV3JhcHBlcihHZW5lcmljTm9kZSogc3RhcnROb2RlLCBHZW5lcmljTm9k
ZSoqIHJvb3QpCit7CisgICAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIFRyZWVTY29wZSBpcyBndWFy
YW50ZWVkIHRvIGhhdmUgbm8gbGlmZXRpbWUgb3duZXIuCisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgYmVmb3JlXG4iLCBzdGFydE5vZGUpOworICAg
IEFTU0VSVCghc3RhcnROb2RlLT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAvLyBXZSB0cmF2
ZXJzZSB0aGUgVHJlZVNjb3BlIGluIHRoZSBERlMgb3JkZXIsIHN0YXJ0aW5nIGZyb20gc3RhcnRO
b2RlLiBUaGUgdHJhdmVyc2FsCisgICAgLy8gb3JkZXIgZG9lcyBub3QgbWF0dGVyIGZvciBjb3Jy
ZWN0bmVzcyBidXQgbWF0dGVycyBmb3IgcGVyZm9ybWFuY2UuCisgICAgLy8gU2VlIGEgZGVzaWdu
IGRvY3VtZW50IChodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2dvb2dsZS5jb20vZG9jdW1lbnQv
ZC8xN3ViSzRhb2JtNEczYzJGQURxRW9YQXdTV2JDSWlwWHd6ckdGSllfYXRvUS9lZGl0KSBmb3Ig
bW9yZSBkZXRhaWxzLgorICAgIEdlbmVyaWNOb2RlKiBub2RlID0gc3RhcnROb2RlOworICAgIGJv
b2wgdHJhdmVyc2VTdGFydGVkID0gZmFsc2U7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
QVNTRVJUKG5vZGUpOworICAgICAgICBBU1NFUlQoIW5vZGUtPmlzTGlmZXRpbWVPd25lcigpKTsK
KworICAgICAgICBpZiAodHJhdmVyc2VTdGFydGVkKSB7CisgICAgICAgICAgICAvLyBXZSBjYW1l
IGJhY2sgdG8gdGhlIHN0YXJ0Tm9kZS4KKyAgICAgICAgICAgIGlmIChub2RlID09IHN0YXJ0Tm9k
ZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB0cmF2ZXJzZVN0
YXJ0ZWQgPSB0cnVlOworCisgICAgICAgIGlmIChub2RlLT53cmFwcGVyUmVmQ291bnQoKSkgewor
ICAgICAgICAgICAgLy8gSWYgd2UgZmluZCBhIE5vZGUgcmVmZXJlbmNlZCBieSBhIHdyYXBwZXIg
b2JqZWN0LCB3ZSBzZXQgYSBsaWZldGltZSBvd25lcgorICAgICAgICAgICAgLy8gb24gdGhlIE5v
ZGUuCisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vZGUtPndyYXBwZXJSZWZDb3Vu
dCgpPjAgJXAgd3JhcHBlclJlZkNvdW50PT0lZFxuIiwgbm9kZSwgbm9kZS0+d3JhcHBlclJlZkNv
dW50KCkpOworICAgICAgICAgICAgbm9kZS0+c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgYWZ0ZXJc
biIsIHN0YXJ0Tm9kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChub2RlLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAgICAgIG5vZGUgPSBub2Rl
LT5maXJzdENoaWxkKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICB3aGlsZSAoIW5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmICghbm9kZS0+
cGFyZW50Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgKnJvb3QgPSBub2RlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnBh
cmVudE5vZGUoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpKQor
ICAgICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgfQorCisgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgYWZ0ZXJcbiIsIHN0
YXJ0Tm9kZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBIZWxwZXIgZnVuY3Rpb25zIGZv
ciBUcmVlU2hhcmVkLWRlcml2ZWQgY2xhc3Nlcywgd2hpY2ggaGF2ZSBhICdOb2RlJyBzdHlsZSBp
bnRlcmZhY2UKIC8vIFRoaXMgYXBwbGllcyB0byAnQ29udGFpbmVyTm9kZScgYW5kICdTVkdFbGVt
ZW50SW5zdGFuY2UnCiB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05v
ZGVDb250YWluZXI+CiBpbmxpbmUgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdl
bmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJyZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAgYmVmb3JlXG4iLCBjb250YWluZXIp
OwogICAgIC8vIExpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAgICBHZW5lcmljTm9kZSog
aGVhZCA9IDA7CiAgICAgR2VuZXJpY05vZGUqIHRhaWwgPSAwOwpAQCAtODgsOCArMTU2LDYgQEAg
aW5saW5lIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRh
aW5lciogY29udGFpbmVyKQogICAgIEdlbmVyaWNOb2RlKiBuOwogICAgIEdlbmVyaWNOb2RlKiBu
ZXh0OwogICAgIHdoaWxlICgobiA9IGhlYWQpICE9IDApIHsKLSAgICAgICAgQVNTRVJUKG4tPm1f
ZGVsZXRpb25IYXNCZWd1bik7Ci0KICAgICAgICAgbmV4dCA9IG4tPm5leHRTaWJsaW5nKCk7CiAg
ICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwogCkBAIC0xMDAsOCArMTY2LDE0IEBAIGlubGlu
ZSB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIq
IGNvbnRhaW5lcikKICAgICAgICAgaWYgKG4tPmhhc0NoaWxkTm9kZXMoKSkKICAgICAgICAgICAg
IFByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWU8R2VuZXJpY05vZGUsIEdlbmVy
aWNOb2RlQ29udGFpbmVyPihoZWFkLCB0YWlsLCBzdGF0aWNfY2FzdDxHZW5lcmljTm9kZUNvbnRh
aW5lcio+KG4pKTsKIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbi0+bV9kZWxldGlvbkhhc0Jl
Z3VuID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZShu
KSAlcCBiZWZvcmVcbiIsIG4pOwogICAgICAgICBkZWxldGUgbjsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJkZWxldGUobikgJXAgYWZ0ZXJcbiIsIG4pOwogICAgIH0KKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgInJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoKSAlcCBhZnRlclxuIiwg
Y29udGFpbmVyKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVy
aWNOb2RlQ29udGFpbmVyPgpAQCAtMTI0LDkgKzE5NiwxMCBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250
YWluZXIsIGJvb2wgZGlzcGF0Y2hSZW1vdmFsTm90aWZpY2F0aW9uPgogICAgIHN0cnVjdCBOb2Rl
UmVtb3ZhbERpc3BhdGNoZXIgewotICAgICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaChHZW5lcmlj
Tm9kZSosIEdlbmVyaWNOb2RlQ29udGFpbmVyKikKKyAgICAgICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2goR2VuZXJpY05vZGUqIG5vZGUsIEdlbmVyaWNOb2RlQ29udGFpbmVyKikKICAgICAgICAgewot
ICAgICAgICAgICAgLy8gbm8tb3AsIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIC8vIGZwcmludGYo
c3RkZXJyLCAiUmVtb3ZhbERpc3BhdGNoZXIoKSAlcFxuIiwgbm9kZSk7CisgICAgICAgICAgICBu
b2RlLT5zZXRMaWZldGltZU93bmVyKCk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xMzcsOCAr
MjEwLDE1IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKICAgICAgICAgICAgIC8vIENsZWFuIHVwIGFu
eSBUcmVlU2NvcGUgdG8gYSByZW1vdmVkIHRyZWUuCiAgICAgICAgICAgICBpZiAoRG9jdW1lbnQq
IGNvbnRhaW5lckRvY3VtZW50ID0gY29udGFpbmVyLT5vd25lckRvY3VtZW50KCkpCiAgICAgICAg
ICAgICAgICAgY29udGFpbmVyRG9jdW1lbnQtPmFkb3B0SWZOZWVkZWQobm9kZSk7Ci0gICAgICAg
ICAgICBpZiAobm9kZS0+aW5Eb2N1bWVudCgpKQotICAgICAgICAgICAgICAgIENoaWxkTm9kZVJl
bW92YWxOb3RpZmllcihjb250YWluZXIpLm5vdGlmeShub2RlKTsKKworICAgICAgICAgICAgaWYg
KG5vZGUtPmluRG9jdW1lbnQoKSkgeworICAgICAgICAgICAgICAgIC8vIG5vdGlmeSgpIHdpbGwg
c2V0IGEgbGlmZXRpbWUgb3duZXIgb2YgdGhlIHJlbW92ZWQgVHJlZVNjb3BlLgorICAgICAgICAg
ICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihjb250YWluZXIpLm5vdGlmeShub2RlLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlJlbW92YWxEaXNwYXRj
aGVyKCkgJXAgaW5Eb2N1bWVudCgpXG4iLCBub2RlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0TGlmZXRpbWVPd25lcigpOworICAgICAgICAgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbERpc3BhdGNoZXIoKSAlcCAhaW5Eb2N1bWVudCgp
XG4iLCBub2RlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH07CiAKQEAgLTE2NSwx
MCArMjQ1LDggQEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAgICAgICAgICAgbi0+c2V0TmV4dFNp
YmxpbmcoMCk7CiAgICAgICAgICAgICBuLT5zZXRQYXJlbnRPckhvc3ROb2RlKDApOwogCisgICAg
ICAgICAgICBBU1NFUlQoIW4tPndyYXBwZXJSZWZDb3VudCgpKTsKICAgICAgICAgICAgIGlmICgh
bi0+cmVmQ291bnQoKSkgewotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgICAgICAgICBuLT5tX2Rl
bGV0aW9uSGFzQmVndW4gPSB0cnVlOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgLy8gQWRkIHRo
ZSBub2RlIHRvIHRoZSBsaXN0IG9mIG5vZGVzIHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICAg
ICAgLy8gUmV1c2UgdGhlIG5leHRTaWJsaW5nIHBvaW50ZXIgZm9yIHRoaXMgcHVycG9zZS4KICAg
ICAgICAgICAgICAgICBpZiAodGFpbCkKQEAgLTE3OSw2ICsyNTcsNyBAQCBuYW1lc3BhY2UgUHJp
dmF0ZSB7CiAgICAgICAgICAgICAgICAgdGFpbCA9IG47CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxHZW5lcmljTm9kZT4gcHJvdGVjdChuKTsgLy8gcmVtb3Zl
ZEZyb21Eb2N1bWVudCBtYXkgcmVtb3ZlIHJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byB0aGlzIG5v
ZGUuCisgICAgICAgICAgICAgICAgLy8gZGlzcGF0Y2goKSBzZXRzIGEgbGlmZXRpbWUgb3duZXIg
b2YgdGhlIHJlbW92ZWQgVHJlZVNjb3BlLgogICAgICAgICAgICAgICAgIE5vZGVSZW1vdmFsRGlz
cGF0Y2hlcjxHZW5lcmljTm9kZSwgR2VuZXJpY05vZGVDb250YWluZXIsIFNob3VsZERpc3BhdGNo
UmVtb3ZhbE5vdGlmaWNhdGlvbjxHZW5lcmljTm9kZT46OnZhbHVlPjo6ZGlzcGF0Y2gobiwgY29u
dGFpbmVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTkyLDkgKzI3MSwxNiBAQCBu
YW1lc3BhY2UgUHJpdmF0ZSB7CiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmll
cjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZGUpCiB7CiAgICAgQVNT
RVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CisgICAgLy8gZnByaW50ZihzdGRl
cnIsICJub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKSAlcCBpbnNlcnRpb25Qb2ludD0l
cCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBu
b2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgaWYgKCFt
X3RyZWVTY29wZURlcHRoKQorICAgICAgICBub2RlLT51bnNldExpZmV0aW1lT3duZXIoKTsKKwog
ICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0KG5vZGUpOwotICAgIGlmIChOb2RlOjpJbnNlcnRpb25T
aG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRv
KG1faW5zZXJ0aW9uUG9pbnQpKQotICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzLmFwcGVuZChub2RlKTsKKyAgICBpZiAoTm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbERp
ZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zID09IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlv
blBvaW50KSkgeworICAgICAgICBpZiAoIW1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHMpCisgICAgICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzID0gYWRv
cHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKTsKKyAgICAgICAgbV9wb3N0SW5zZXJ0
aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy0+YXBwZW5kKG5vZGUpOworICAgIH0KICAgICBpZiAobm9k
ZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZElu
dG9Eb2N1bWVudCh0b0NvbnRhaW5lck5vZGUobm9kZSkpOwogfQpAQCAtMjAyLDEwICsyODgsMTcg
QEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNl
cnRlZEludG9Eb2N1bWVudChOb2RlKiBub2QKIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlv
bk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJOb2RlKiBub2Rl
KQogewogICAgIEFTU0VSVCghbV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKCkgJXAgaW5zZXJ0
aW9uUG9pbnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRp
b25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOwor
ICAgIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgbm9kZS0+dW5zZXRMaWZldGltZU93
bmVyKCk7CisKICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CiAKLSAgICBpZiAoTm9kZTo6SW5z
ZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zID09IG5vZGUtPmluc2Vy
dGVkSW50byhtX2luc2VydGlvblBvaW50KSkKLSAgICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7CisgICAgaWYgKE5vZGU6Okluc2VydGlvblNob3Vs
ZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZEludG8obV9p
bnNlcnRpb25Qb2ludCkpIHsKKyAgICAgICAgaWYgKCFtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRp
b25UYXJnZXRzKQorICAgICAgICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPE5vZGU+ID4oKSk7CisgICAgICAgIG1fcG9z
dEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMtPmFwcGVuZChub2RlKTsKKyAgICB9CiAgICAg
bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50b1RyZWUobm9kZSk7CiAKICAgICBhbGxvd0V2ZW50
RGlzcGF0Y2goKTsKQEAgLTIxOCw4ICszMTEsMTIgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5z
ZXJ0aW9uTm90aWZpZXI6Om5vdGlmeUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZGUpCiAK
IGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9k
ZSkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkluc2VydGlvbk5vdGlmaWVyOjpub3RpZnko
KSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwIGJlZm9yZVxu
Iiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpOwogICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsK
IAorICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0
aCA9IDE7CisKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZShub2RlLT5kb2N1bWVudCgpLCBub2RlKTsKICNlbmRpZgpA
QCAtMjMxLDE1ICszMjgsMjMgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZp
ZXI6Om5vdGlmeShOb2RlKiBub2RlKQogICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9j
dW1lbnQobm9kZSk7CiAgICAgZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAg
ICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHRvQ29udGFpbmVyTm9kZShub2RlKSk7Cisg
ICAgZWxzZSBpZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIG5vZGUtPnVuc2V0TGlmZXRp
bWVPd25lcigpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Bvc3RJbnNlcnRpb25O
b3RpZmljYXRpb25UYXJnZXRzLnNpemUoKTsgKytpKQotICAgICAgICBtX3Bvc3RJbnNlcnRpb25O
b3RpZmljYXRpb25UYXJnZXRzW2ldLT5kaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyhtX2luc2Vy
dGlvblBvaW50KTsKKyAgICBpZiAobV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cykg
eworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9zdEluc2VydGlvbk5vdGlmaWNh
dGlvblRhcmdldHMtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgKCptX3Bvc3RJbnNlcnRpb25O
b3RpZmljYXRpb25UYXJnZXRzKVtpXS0+ZGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMobV9pbnNl
cnRpb25Qb2ludCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiSW5zZXJ0aW9uTm90
aWZpZXI6Om5vdGlmeSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhv
c3Q9JXAgYWZ0ZXJcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUo
KSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKIH0KIAotCiBpbmxpbmUgdm9pZCBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqIG5v
ZGUpCiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSk7CisgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJub3RpZnlOb2RlUmVtb3ZhbEZyb21Eb2N1bWVudCgpICVwIGlu
c2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5z
ZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
KTsKKyAgICBpZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIGNoZWNrSWZMaWZldGltZU93
bmVyKG5vZGUpOworCiAgICAgbm9kZS0+cmVtb3ZlZEZyb20obV9pbnNlcnRpb25Qb2ludCk7CiAK
ICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCkBAIC0yNDksNiArMzU0LDEwIEBAIGlu
bGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9t
RG9jdW1lbnQoTm9kZSogbm9kZSkKIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmll
cjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBub2RlKQogewogICAg
IEFTU0VSVCghbV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIm5vdGlmeU5vZGVSZW1vdmFsRnJvbVRyZWUoKSAlcCBpbnNlcnRpb25Qb2ludD0l
cCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBu
b2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgaWYgKCFt
X3RyZWVTY29wZURlcHRoKQorICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsKKwog
ICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKIAogICAgIG5vZGUtPnJlbW92ZWRGcm9tKG1faW5z
ZXJ0aW9uUG9pbnQpOwpAQCAtMjU3LDEzICszNjYsNDkgQEAgaW5saW5lIHZvaWQgQ2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUq
IG4KICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKIH0KIAotaW5saW5lIHZvaWQgQ2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKK2lubGluZSB2b2lkIENoaWxkTm9k
ZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUsIGJvb2wgaW5zZXJ0aW9uUG9pbnRE
ZWxldGlvbkhhc0JlZ3VuKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbE5vdGlm
aWVyOjpub3RpZnkoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0
PSVwIGJlZm9yZVxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgp
LCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3Qo
KSkKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aCA9IDE7CisKICAgICBpZiAobm9kZS0+aW5Eb2N1
bWVudCgpKSB7CiAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG5vZGUpOwog
ICAgICAgICBub2RlLT5kb2N1bWVudCgpLT5ub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5lZWRl
ZCgpOwogICAgIH0gZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5v
dGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICBlbHNl
IGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgY2hlY2tJZkxpZmV0aW1lT3duZXIobm9k
ZSk7CisKKyAgICBpZiAoIW1fbGlmZXRpbWVPd25lckZvdW5kICYmICFub2RlLT5pc1NoYWRvd1Jv
b3QoKSkgeworICAgICAgICAvLyBJZiBhIGxpZmV0aW1lIG93bmVyIGlzIG5vdCBmb3VuZCBpbiB0
aGUgcmVtb3ZlZCBUcmVlU2NvcGUsIGl0CisgICAgICAgIC8vIGluZGljYXRlcyB0aGF0IHRoZXJl
IGlzIGV4YWN0bHkgb25lIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcmlnaW5hbAorICAgICAgICAv
LyBUcmVlU2NvcGUuIFNvIHdlIGp1c3QgY2FsbCBnY1RyZWUoKSBmb3IgdGhlIHJvb3Qgbm9kZSBv
ZiB0aGUgcmVtb3ZlZAorICAgICAgICAvLyBUcmVlU2NvcGUsIGluIG9yZGVyIHRvIHNldCBhIG5l
dyBsaWZldGltZSBvd25lciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUuCisgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9ZmFsc2UgJXAgaW5zZXJ0aW9uUG9p
bnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2lu
dCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworICAgICAg
ICBBU1NFUlQobm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3du
ZXIoKTsKKyAgICB9IGVsc2UgaWYgKG1fbGlmZXRpbWVPd25lckZvdW5kICYmICFpbnNlcnRpb25Q
b2ludERlbGV0aW9uSGFzQmVndW4pIHsKKyAgICAgICAgLy8gSWYgYSBsaWZldGltZSBvd25lciBp
cyBmb3VuZCBpbiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUsIGl0CisgICAgICAgIC8vIGluZGljYXRl
cyB0aGF0IHRoZXJlIGlzIG5vIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcmlnaW5hbCBUcmVlU2Nv
cGUuCisgICAgICAgIC8vIFNvIHdlIGNhbGwgZ2NUcmVlKCkgZm9yIHRoZSBpbnNlcnRpb24gcG9p
bnQgb2YgdGhlIG9yaWdpbmFsCisgICAgICAgIC8vIFRyZWVTY29wZSwgaW4gb3JkZXIgdG8gc2V0
IGEgbmV3IGxpZmV0aW1lIG93bmVyIG9mIHRoZSBvcmlnaW5hbCBUcmVlU2NvcGUuCisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9dHJ1ZSAhaW5zZXJ0aW9u
UG9pbnREZWxldGlvbkhhc0JlZ3VuICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJl
bnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUo
KSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICAgICAgbV9pbnNlcnRpb25Qb2ludC0+
Z2NUcmVlKCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbE5vdGlmaWVy
Ojpub3RpZnkoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVw
IGFmdGVyXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5v
ZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7Cit9CisKK2lubGluZSB2b2lkIENoaWxkTm9kZVJlbW92
YWxOb3RpZmllcjo6Y2hlY2tJZkxpZmV0aW1lT3duZXIoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NF
UlQoIW1fdHJlZVNjb3BlRGVwdGgpOworICAgIGlmIChVTkxJS0VMWShub2RlLT5pc0xpZmV0aW1l
T3duZXIoKSkpIHsKKyAgICAgICAgLy8gT25lIFRyZWVTY29wZSBpcyBndWFyYW50ZWVkIHRvIGhh
dmUgYXQgbW9zdCBvbmUgbGlmZXRpbWUgb3duZXIsCisgICAgICAgIC8vIHNvIG1fbGlmZXRpbWVP
d25lckZvdW5kIHNob3VsZCBub3QgYmVjb21lIHRydWUgbW9yZSB0aGFuIG9uY2UuCisgICAgICAg
IEFTU0VSVCghbV9saWZldGltZU93bmVyRm91bmQpOworICAgICAgICBtX2xpZmV0aW1lT3duZXJG
b3VuZCA9IHRydWU7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm9kZS0+aXNMaWZldGlt
ZU93bmVyKCk9PXRydWUgJXBcbiIsIG5vZGUpOworICAgIH0KIH0KIAogY2xhc3MgQ2hpbGRGcmFt
ZURpc2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxM2QwYWUyMDk4NjUz
ODBhNDc1MmRhNGExZTUwZGNjZGE2MjE4Y2YwLi43ZjZkZTI4NjA2MjYzZDllNjJhY2RjMzNkYWVi
ZTlkNzczODdiM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTY4OCw2ICs2ODgsNyBA
QCBEb2N1bWVudDo6fkRvY3VtZW50KCkKIAogdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYo
KQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkg
JXAgYmVmb3JlXG4iLCB0aGlzKTsKICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CiAg
ICAgaWYgKG1fZ3VhcmRSZWZDb3VudCkgewogICAgICAgICAvLyBJZiByZW1vdmluZyBhIGNoaWxk
IHJlbW92ZXMgdGhlIGxhc3Qgc2VsZi1vbmx5IHJlZiwgd2UgZG9uJ3QKQEAgLTcxNSw2ICs3MTYs
OCBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIC8vIHJlbW92ZUFs
bENoaWxkcmVuKCkgZG9lc24ndCBhbHdheXMgdW5yZWdpc3RlciBJRHMsCiAgICAgICAgIC8vIHNv
IHRlYXIgZG93biBzY29wZSBpbmZvcm1hdGlvbiB1cGZyb250IHRvIGF2b2lkIGhhdmluZyBzdGFs
ZSByZWZlcmVuY2VzIGluIHRoZSBtYXAuCiAgICAgICAgIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7
CisKKyAgICAgICAgLy8gRklYTUU6IEtlZXAgYWxsIHRoZSBOb2RlcyBhbGl2ZSB1bnRpbCBtX2d1
YXJkUmVmQ291bnQgYmVjb21lcyAwLgogICAgICAgICByZW1vdmVBbGxDaGlsZHJlbigpOwogCiAg
ICAgICAgIG1fbWFya2Vycy0+ZGV0YWNoKCk7CkBAIC03MjgsMTcgKzczMSwxNiBAQCB2b2lkIERv
Y3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyLmNsZWFyKCk7CiAjZW5kaWYKIAotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgbV9pblJl
bW92ZWRMYXN0UmVmRnVuY3Rpb24gPSBmYWxzZTsKLSNlbmRpZgotCiAgICAgICAgIGd1YXJkRGVy
ZWYoKTsKICAgICB9IGVsc2UgewotI2lmbmRlZiBOREVCVUcgCi0gICAgICAgIG1fZGVsZXRpb25I
YXNCZWd1biA9IHRydWU7IAotI2VuZGlmIAorI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9kZWxl
dGlvbkhhc0JlZ3VuID0gdHJ1ZTsKKyNlbmRpZgorICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgICAgICBkZWxldGUgdGhpczsK
KyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUodGhpcykgJXAgYWZ0ZXJcbiIsIHRo
aXMpOwogICAgIH0KKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkRvY3VtZW50OjpyZW1vdmVkTGFz
dFJlZigpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogRWxlbWVudCogRG9jdW1lbnQ6OmdldEVs
ZW1lbnRCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CmluZGV4IGI2NTVkY2UzYWQ4MzQwMmE2YjlhZjc2ZWM4ZTU3YzVmNTFiMzY5NmEuLjVhNGUxYWRl
ODY1ZTlkNWZlOGQ5Y2I5NWJhMThjM2M5ODEyNGRhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0yMzgsMTEgKzIzOCwxMyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRpb25IYXNCZWd1bik7CiAgICAgICAgIC0tbV9ndWFyZFJlZkNvdW50OwotICAgICAgICBpZiAo
IW1fZ3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkgeworICAgICAgICBpZiAoVU5MSUtFTFko
IW1fZ3VhcmRSZWZDb3VudCAmJiAhcmVmQ291bnQoKSkpIHsKKyAgICAgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZ3VhcmREZXJlZigpIGRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRoaXMp
OwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7
CiAjZW5kaWYKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJndWFyZERlcmVmKCkgZGVsZXRlKHRoaXMpICVwIGFmdGVyXG4iLCB0aGlzKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMTE5NSw3ICsxMTk3LDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKICAg
ICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7Ci0gICAgCisKICAgICB2b2lkIGRldGFjaFBhcnNlcigp
OwogCiAgICAgdHlwZWRlZiB2b2lkICgqQXJndW1lbnRzQ2FsbGJhY2spKGNvbnN0IFN0cmluZyYg
a2V5U3RyaW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBEb2N1bWVudCosIHZvaWQqIGRh
dGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFiYzgxZDljYWZjYmI5YjQ2NmIyZjc3NjU2
OTkzNzEzNzA1NTk3ZjkuLjgxMmU2M2Q3NGE2ODRlYjUzYzlmZTc1MmNiY2RkNjIzY2E3YTNiZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1NzQsNiArMTU3NCw3IEBAIENTU1N0eWxlRGVj
bGFyYXRpb24gKkVsZW1lbnQ6OnN0eWxlKCkKIAogdm9pZCBFbGVtZW50Ojpmb2N1cyhib29sIHJl
c3RvcmVQcmV2aW91c1NlbGVjdGlvbikKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1l
bnQ6OmZvY3VzKCkgJXBcbiIsIHRoaXMpOwogICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAppbmRleCBhZWI1YjVi
NDc1YjIxOWJjNTdkYzg1ZWYyZTdiODMyYWVlODg5M2ZjLi5iMjMxN2FhODE4MjNkMTkzMDhlMWQ4
ZWJkZjFjMzY4MDkyMjcxMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBA
IC04MSw2ICs4MSw3IEBAIHZvaWQgRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdChFbGVtZW50
KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoCiAgICAgbV9zaGFkb3dSb290
cy5wdXNoKHNoYWRvd1Jvb3QuZ2V0KCkpOwogICAgIHNldFZhbGlkaXR5VW5kZXRlcm1pbmVkKCk7
CiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dIb3N0KTsKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoKSBzaGFkb3dSb290PSVwIHNo
YWRvd0hvc3Q9JXBcbiIsIHNoYWRvd1Jvb3QuZ2V0KCksIHNoYWRvd0hvc3QpOwogICAgIENoaWxk
Tm9kZUluc2VydGlvbk5vdGlmaWVyKHNoYWRvd0hvc3QpLm5vdGlmeShzaGFkb3dSb290LmdldCgp
KTsKIAogICAgIC8vIEZJWE1FKDk0OTA1KTogU2hhZG93SG9zdCBzaG91bGQgYmUgcmVhdHRhY2hl
ZCBkdXJpbmcgcmVjYWxjU3R5bGUuCkBAIC05NCw2ICs5NSw5IEBAIHZvaWQgRWxlbWVudFNoYWRv
dzo6YWRkU2hhZG93Um9vdChFbGVtZW50KiBzaGFkb3dIb3N0LCBQYXNzUmVmUHRyPFNoYWRvd1Jv
b3Q+IHNoCiAKIHZvaWQgRWxlbWVudFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogewor
ICAgIGlmIChtX3NoYWRvd1Jvb3RzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
Ly8gRG9udCBwcm90ZWN0IHRoaXMgcmVmIGNvdW50LgogICAgIEVsZW1lbnQqIHNoYWRvd0hvc3Qg
PSBob3N0KCk7CiAKQEAgLTEwOSw3ICsxMTMsOCBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OnJlbW92
ZUFsbFNoYWRvd1Jvb3RzKCkKICAgICAgICAgb2xkUm9vdC0+c2V0UHJldigwKTsKICAgICAgICAg
b2xkUm9vdC0+c2V0TmV4dCgwKTsKICAgICAgICAgc2hhZG93SG9zdC0+ZG9jdW1lbnQoKS0+YWRv
cHRJZk5lZWRlZChvbGRSb290LmdldCgpKTsKLSAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyKHNoYWRvd0hvc3QpLm5vdGlmeShvbGRSb290LmdldCgpKTsKKyAgICAgICAgLy8gZnByaW50
ZihzdGRlcnIsICJFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpIHNoYWRvd1Jv
b3Q9JXAgc2hhZG93SG9zdD0lcFxuIiwgb2xkUm9vdC5nZXQoKSwgc2hhZG93SG9zdCk7CisgICAg
ICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkob2xkUm9vdC5n
ZXQoKSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihzaGFkb3dI
b3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBhMmM5YTFkYzJiZmE2N2M3ZWE5MzBkOTdiNmFjOWQ3
MTRjYjAwODliLi5lMzdmNGRmZTMwNzY4MjYyMmI5MDM4ZDA2MjRkZGE5OWZlNWZhYmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5o
IgogI2luY2x1ZGUgIkNoaWxkTm9kZUxpc3QuaCIKICNpbmNsdWRlICJDbGFzc05vZGVMaXN0Lmgi
CisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCIKICNpbmNsdWRlICJDb250ZXh0
TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkRPTVNldHRhYmxlVG9rZW5MaXN0LmgiCkBAIC0zOTQsNiArMzk1LDcgQEAgdm9pZCBOb2Rl
Ojp0cmFja0ZvckRlYnVnZ2luZygpCiAKIE5vZGU6On5Ob2RlKCkKIHsKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIn5Ob2RlKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAg
ICAgSGFzaFNldDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gaWdub3JlU2V0LmZpbmQodGhpcyk7CiAg
ICAgaWYgKGl0ICE9IGlnbm9yZVNldC5lbmQoKSkKQEAgLTQyNSw2ICs0MjcsNyBAQCBOb2RlOjp+
Tm9kZSgpCiAgICAgICAgIGRvYy0+Z3VhcmREZXJlZigpOwogCiAgICAgSW5zcGVjdG9yQ291bnRl
cnM6OmRlY3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKKyAg
ICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5Ob2RlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2
b2lkIE5vZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTI4MTcsNiArMjgy
MCw4IEBAIFBhc3NSZWZQdHI8UHJvcGVydHlOb2RlTGlzdD4gTm9kZTo6cHJvcGVydHlOb2RlTGlz
dChjb25zdCBTdHJpbmcmIG5hbWUpCiAvLyBkZWxldGUgYSBOb2RlIGF0IGVhY2ggZGVyZWYgY2Fs
bCBzaXRlLgogdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiB7CisgICAgLy8gZnByaW50Zihz
dGRlcnIsICJOb2RlOjpyZW1vdmVkTGFzdFJlZigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAg
QVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIC8vIEFuIGV4cGxpY2l0IGNoZWNrIGZv
ciBEb2N1bWVudCBoZXJlIGlzIGJldHRlciB0aGFuIGEgdmlydHVhbCBmdW5jdGlvbiBzaW5jZSBp
dCBpcwogICAgIC8vIGZhc3RlciBmb3Igbm9uLURvY3VtZW50IG5vZGVzLCBhbmQgYmVjYXVzZSB0
aGUgY2FsbCB0byByZW1vdmVkTGFzdFJlZiB0aGF0IGlzIGlubGluZWQKICAgICAvLyBhdCBhbGwg
ZGVyZWYgY2FsbCBzaXRlcyBpcyBzbWFsbGVyIGlmIGl0J3MgYSBub24tdmlydHVhbCBmdW5jdGlv
bi4KQEAgLTI4MjcsNyArMjgzMiwzNCBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKICNp
Zm5kZWYgTkRFQlVHCiAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgorICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlKHRoaXMpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAg
ICAgZGVsZXRlIHRoaXM7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUodGhpcykgJXAg
YWZ0ZXJcbiIsIHRoaXMpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6cmVtb3ZlZExh
c3RSZWYoKSAlcCBhZnRlclxuIiwgdGhpcyk7Cit9CisKKy8vIFdoZW4gZ2NUcmVlKCkgaXMgY2Fs
bGVkLCB0aGUgVHJlZVNjb3BlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBubyBsaWZldGltZSBvd25l
ci4KKy8vIGdjVHJlZSgpIG11c3QgcmVjbGFpbSBhbGwgTm9kZXMgaW4gdGhlIFRyZWVTY29wZSBv
ciBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YKKy8vIHRoZSBUcmVlU2NvcGUuCit2b2lkIE5v
ZGU6OmdjVHJlZSgpCit7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpnY1RyZWUoKSAl
cCBiZWZvcmVcbiIsIHRoaXMpOworICAgIE5vZGUqIHJvb3QgPSAwOworICAgIGlmIChpc1JlYWNo
YWJsZUZyb21XcmFwcGVyPE5vZGU+KHRoaXMsICZyb290KSkgeworICAgICAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCB0cnVlXG4iLCB0aGlzKTsKKyAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpnY1RyZWUoKSAlcCBhZnRlclxuIiwgdGhp
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKHJvb3QpOworICAgIGlmICgh
cm9vdC0+cGFyZW50T3JIb3N0Tm9kZSgpICYmICFyb290LT5yZWZDb3VudCgpKSB7CisgICAgICAg
IEFTU0VSVCghcm9vdC0+d3JhcHBlclJlZkNvdW50KCkpOworICAgICAgICAvLyBmcHJpbnRmKHN0
ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBmYWxzZSAhcm9vdC0+cGFyZW50T3JI
b3N0Tm9kZSgpICYmICFyb290LT5yZWZDb3VudCgpXG4iLCB0aGlzKTsKKyAgICAgICAgcm9vdC0+
cmVtb3ZlZExhc3RSZWYoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBmYWxzZSBvdGhlcndpc2Ugcm9vdC0+cGFy
ZW50T3JIb3N0Tm9kZSgpPSVwIHJvb3QtPnJlZkNvdW50KCk9JWRcbiIsIHRoaXMsIHJvb3QtPnBh
cmVudE9ySG9zdE5vZGUoKSwgcm9vdC0+cmVmQ291bnQoKSk7CisgICAgICAgIHJvb3QtPnNldExp
ZmV0aW1lT3duZXIoKTsKKyAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpnY1Ry
ZWUoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDIxNGRhNDAzOTMzNGM5YWNhMTFiODFhZDJmNjNkMjgxMGY3NDRlZGMuLmU2OTVhMzg3MmJl
ZDllNTlmMWRkYjgzOTE4MzA1NzU5OGU3NzUwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzc0LDYgKzM3
NCw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCk7CiAgICAgYm9vbCBp
c0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwogCisgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwor
ICAgIHZvaWQgZ2NUcmVlKCk7CisKICAgICB2b2lkIGluc3BlY3QoKTsKIAogICAgIGJvb2wgcmVu
ZGVyZXJJc0VkaXRhYmxlKEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0
YWJsZSkgY29uc3QKQEAgLTc1Miw4ICs3NTUsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OwogCi0gICAgdm9p
ZCByZW1vdmVkTGFzdFJlZigpOwotCiAgICAgLy8gVGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVz
ZWQgZm9yIGEgdHJlZSBzY29wZSBtaWdyYXRpb24uCiAgICAgLy8gc2V0VHJlZVNjb3BlKCkgcmV0
dXJucyBOb2RlUmFyZURhdGEgdG8gc2F2ZSBleHRyYSBub2RlUmFyZURhdGEoKSBpbnZvY2F0aW9u
cyBvbiB0aGUgY2FsbGVyIHNpdGUuCiAgICAgTm9kZVJhcmVEYXRhKiBzZXRUcmVlU2NvcGUoVHJl
ZVNjb3BlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggZmJlZmViMTU5
MjIzNzE4YmQxMDY3ZWMxOTRiYmY0NDgxYmY2M2NkYy4uZjE4ZDIwOTc2YWU2NWNlNDk5NTViMjJm
N2I0MTc2YmI2NDUxMmNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJl
ZVNoYXJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAt
MzIsMjcgKzMyLDQ2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJl
bnROb2RlVHlwZT4gY2xhc3MgVHJlZVNoYXJlZDsKIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBl
LCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gdm9pZCBhZG9wdGVkKFRyZWVTaGFyZWQ8Tm9kZVR5
cGUsIFBhcmVudE5vZGVUeXBlPiopOwogI2VuZGlmCiAKKy8vIFRoZSBhbGdvcml0aG0gZ3VhcmFu
dGVlcyB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6CisvLworLy8gICAgIC0gT3V0c2lkZSBvZiBn
Y1RyZWUoKSAobm9ybWFsIGNhc2VzKSwgZWFjaCBUcmVlU2NvcGUgaGFzIGV4YWN0bHkgb25lCisv
LyAgICAgICBsaWZldGltZSBvd25lci4gVGhlIGxpZmV0aW1lIG93bmVyIGlzIHNldCBvbiB0aGUg
cm9vdCBOb2RlIG9mIHRoZSBUcmVlU2NvcGUKKy8vICAgICAgIG9yIGFueSBOb2RlIHRoYXQgaXMg
cmVmZXJlbmNlZCBieSBhIHdyYXBwZXIgb2JqZWN0LgorLy8KKy8vICAgICAtIEluc2lkZSBvZiBn
Y1RyZWUoKSwgdGhlIFRyZWVTY29wZSBoYXMgbm8gbGlmZXRpbWUgb3duZXIuIGdjVHJlZSgpIHJl
Y2xhaW1zCisvLyAgICAgICBhbGwgTm9kZXMgaW4gdGhlIFRyZWVTY29wZSBvciBzZXRzIGEgbmV3
IGxpZmV0aW1lIG93bmVyIG9mIHRoZSBUcmVlU2NvcGUuCisvLworLy8gU2VlIGEgZGVzaWduIGRv
Y3VtZW50IChodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9kb2N1bWVudC9k
LzFIY2FlVS03NXh1a01ZU1Vhc2tlRG9ITC1MMEZOdUNESXVrdlBtT2hlWThRL2VkaXQpIGZvciBt
b3JlIGRldGFpbHMuCisKIHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJl
bnROb2RlVHlwZT4gY2xhc3MgVHJlZVNoYXJlZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
VHJlZVNoYXJlZCk7CiBwcm90ZWN0ZWQ6CiAgICAgVHJlZVNoYXJlZCgpCi0gICAgICAgIDogbV9w
YXJlbnQoMCkKLSAgICAgICAgLCBtX3JlZkNvdW50KDEpCisgICAgICAgIDogbV9ub25XcmFwcGVy
UmVmQ291bnQoMSkKKyAgICAgICAgLCBtX2xpZmV0aW1lT3duZXIoMSkKKyAgICAgICAgLy8gQSBu
ZXdseSBjcmVhdGVkIE5vZGUgYmVjb21lcyBhIGxpZmV0aW1lIG93bmVyLCBiZWNhdXNlIHRoaXMg
Tm9kZSBpcyB0aGUgb25seQorICAgICAgICAvLyBOb2RlIGluIHRoZSBET00gdHJlZS4KKyAgICAg
ICAgLCBtX3dyYXBwZXJSZWZDb3VudCgwKQorICAgICAgICAsIG1fcGFyZW50KDApCiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVkKHRydWUpCiAjZW5kaWYKICAg
ICB7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiVHJlZVNoYXJlZCgpICVwXG4iLCB0aGlz
KTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKGlzTGlm
ZXRpbWVPd25lcigpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1
biA9IGZhbHNlOwotICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwog
I2VuZGlmCiAgICAgfQogCiAgICAgflRyZWVTaGFyZWQoKQogICAgIHsKKyAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJ+VHJlZVNoYXJlZCgpICVwXG4iLCB0aGlzKTsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3JlZkNvdW50KTsKKyAgICAgICAg
QVNTRVJUKCFyZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCF3cmFwcGVyUmVmQ291bnQoKSk7
CisgICAgICAgIEFTU0VSVCghaXNMaWZldGltZU93bmVyKCkpOwogICAgICAgICBBU1NFUlQobV9k
ZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7
CiAgICAgfQpAQCAtNjIsNDIgKzgxLDkyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsK
LSAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CiAgICAgICAgIEFT
U0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwotICAgICAgICArK21fcmVmQ291bnQ7CisgICAg
ICAgICsrbV9ub25XcmFwcGVyUmVmQ291bnQ7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
cmVmKCkgJXAgcmVmQ291bnQ9JWQgd3JhcHBlclJlZkNvdW50PSVkXG4iLCB0aGlzLCBtX25vbldy
YXBwZXJSZWZDb3VudCwgbV93cmFwcGVyUmVmQ291bnQpOworICAgIH0KKworICAgIHZvaWQgd3Jh
cHBlclJlZigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAg
ICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisgICAgICAgIEFTU0VSVCghbV9hZG9wdGlv
bklzUmVxdWlyZWQpOworICAgICAgICArK21fd3JhcHBlclJlZkNvdW50OworICAgICAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIndyYXBwZXJSZWYoKSAlcCByZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291
bnQ9JWRcbiIsIHRoaXMsIG1fbm9uV3JhcHBlclJlZkNvdW50LCBtX3dyYXBwZXJSZWZDb3VudCk7
CiAgICAgfQogCiAgICAgdm9pZCBkZXJlZigpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgICAgICBBU1NFUlQobV9yZWZDb3VudCA+PSAwKTsKICAgICAgICAgQVNT
RVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFz
dFJlZkZ1bmN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7Ci0g
ICAgICAgIGlmICgtLW1fcmVmQ291bnQgPD0gMCAmJiAhbV9wYXJlbnQpIHsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IHRydWU7Ci0jZW5k
aWYKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBlKj4odGhpcyktPnJlbW92ZWRMYXN0
UmVmKCk7CisgICAgICAgIC0tbV9ub25XcmFwcGVyUmVmQ291bnQ7CisgICAgICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiZGVyZWYoKSAlcCByZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291bnQ9JWRcbiIs
IHRoaXMsIG1fbm9uV3JhcHBlclJlZkNvdW50LCBtX3dyYXBwZXJSZWZDb3VudCk7CisgICAgICAg
IC8vIFRoZSBvcmRlciBvZiBjb25kaXRpb25zIGlzIGltcG9ydGFudCBmb3IgcGVyZm9ybWFuY2Ug
dG8gaGludCB0byB0aGUgY29tcGlsZXIgdGhhdAorICAgICAgICAvLyB0aGVzZSB0aHJlZSBjb25k
aXRpb25zIGNhbiBiZSBvcHRpbWl6ZWQgdG8gb25lIDMyLWJpdCBpbnRlZ2VyIGNoZWNrLgorICAg
ICAgICBpZiAoVU5MSUtFTFkoIW1fbm9uV3JhcHBlclJlZkNvdW50ICYmIG1fbGlmZXRpbWVPd25l
ciA9PSAxICYmICFtX3dyYXBwZXJSZWZDb3VudCkpIHsKKyAgICAgICAgICAgIG1fbGlmZXRpbWVP
d25lciA9IDA7CisgICAgICAgICAgICAvLyBnY1RyZWUoKSByZWNsYWltcyBhbGwgTm9kZXMgaW4g
dGhlIFRyZWVTY29wZSBvciBzZXRzIGEgbmV3IGxpZmV0aW1lCisgICAgICAgICAgICAvLyBvd25l
ciBvZiB0aGUgVHJlZVNjb3BlLgorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0
aGlzKS0+Z2NUcmVlKCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29sIGhhc09uZVJlZigp
IGNvbnN0CisgICAgdm9pZCB3cmFwcGVyRGVyZWYoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAg
ICAgICBBU1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKLSAgICAgICAgcmV0dXJu
IG1fcmVmQ291bnQgPT0gMTsKKyAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJlZCk7
CisgICAgICAgIC0tbV93cmFwcGVyUmVmQ291bnQ7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJy
LCAid3JhcHBlckRlcmVmKCkgJXAgcmVmQ291bnQ9JWQgd3JhcHBlclJlZkNvdW50PSVkXG4iLCB0
aGlzLCBtX25vbldyYXBwZXJSZWZDb3VudCwgbV93cmFwcGVyUmVmQ291bnQpOworICAgICAgICBp
ZiAoVU5MSUtFTFkobV9saWZldGltZU93bmVyID09IDEgJiYgIW1fd3JhcHBlclJlZkNvdW50KSkg
eworICAgICAgICAgICAgbV9saWZldGltZU93bmVyID0gMDsKKyAgICAgICAgICAgIC8vIGdjVHJl
ZSgpIHJlY2xhaW1zIGFsbCBOb2RlcyBpbiB0aGUgVHJlZVNjb3BlIG9yIHNldHMgYSBuZXcgbGlm
ZXRpbWUKKyAgICAgICAgICAgIC8vIG93bmVyIG9mIHRoZSBUcmVlU2NvcGUuCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLT5nY1RyZWUoKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGludCByZWZDb3VudCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV9y
ZWZDb3VudDsKKyAgICAgICAgcmV0dXJuIG1fbm9uV3JhcHBlclJlZkNvdW50ICsgbV93cmFwcGVy
UmVmQ291bnQ7CisgICAgfQorCisgICAgaW50IHdyYXBwZXJSZWZDb3VudCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV93cmFwcGVyUmVmQ291bnQ7CisgICAgfQorCisgICAgYm9vbCBo
YXNPbmVSZWYoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVn
dW4pOworICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOworICAgIH0KKworICAgIHZvaWQg
c2V0TGlmZXRpbWVPd25lcigpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fbGlmZXRpbWVPd25l
cik7CisgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgbV9saWZl
dGltZU93bmVyID0gMTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJzZXRMaWZldGltZU93
bmVyKCkgJXBcbiIsIHRoaXMpOworICAgIH0KKworICAgIHZvaWQgdW5zZXRMaWZldGltZU93bmVy
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAg
bV9saWZldGltZU93bmVyID0gMDsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJ1bnNldExp
ZmV0aW1lT3duZXIoKSAlcFxuIiwgdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBpc0xpZmV0aW1l
T3duZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbGlmZXRpbWVPd25lcjsKICAgICB9CiAK
ICAgICB2b2lkIHNldFBhcmVudChQYXJlbnROb2RlVHlwZSogcGFyZW50KQogICAgIHsgCiAgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIG1fcGFyZW50ID0gcGFyZW50OyAK
KyAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CiAgICAgfQogCiAgICAgUGFyZW50Tm9kZVR5cGUq
IHBhcmVudCgpIGNvbnN0CkBAIC0xMDgsNyArMTc3LDYgQEAgcHVibGljOgogCiAjaWZuZGVmIE5E
RUJVRwogICAgIGJvb2wgbV9kZWxldGlvbkhhc0JlZ3VuOwotICAgIGJvb2wgbV9pblJlbW92ZWRM
YXN0UmVmRnVuY3Rpb247CiAjZW5kaWYKIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKQEAgLTEyMiw4ICsxOTAsMTQg
QEAgcHJpdmF0ZToKICAgICBmcmllbmQgdm9pZCBhZG9wdGVkPD4oVHJlZVNoYXJlZDxOb2RlVHlw
ZSwgUGFyZW50Tm9kZVR5cGU+Kik7CiAjZW5kaWYKIAorICAgIC8vIFRoZSBiaXQgZmllbGQgc2l6
ZXMgYXJlIG9wdGltaXplZCBzbyB0aGF0IHRoZSBjb21waWxlciB3aWxsIGdlbmVyYXRlIHRoZSBm
YXN0ZXN0CisgICAgLy8gY29kZSBmb3IgcmVmKCkgYW5kIGRlcmVmKCkuCisgICAgLy8gVGhlIG9y
ZGVyIG9mIHRoZXNlIGJpdCBmaWVsZHMgaXMgYWxzbyBpbXBvcnRhbnQuIFdlIHB1dCBtX25vbldy
YXBwZXJSZWZDb3VudCBhdCB0aGUKKyAgICAvLyBoZWFkIG9mIHRoZSBvYmplY3QgYmVjYXVzZSBt
X25vbldyYXBwZXJSZWZDb3VudCBpcyB0aGUgbW9zdCBmcmVxdWVudGx5IHVzZWQgbWVtYmVyLgor
ICAgIHVuc2lnbmVkIG1fbm9uV3JhcHBlclJlZkNvdW50IDogMTY7IC8vIFJlZmVyZW5jZSBjb3Vu
dCBieSBub3JtYWwgUmVmUHRycyBpbiBXZWJLaXQuCisgICAgdW5zaWduZWQgbV9saWZldGltZU93
bmVyIDogMTsgLy8gV2hldGhlciB0aGlzIE5vZGUgaXMgYSBsaWZldGltZSBvd25lciBvciBub3Qu
CisgICAgdW5zaWduZWQgbV93cmFwcGVyUmVmQ291bnQgOiAxNTsgLy8gUmVmZXJlbmNlIGNvdW50
IGJ5IHdyYXBwZXIgb2JqZWN0cy4KICAgICBQYXJlbnROb2RlVHlwZSogbV9wYXJlbnQ7Ci0gICAg
aW50IG1fcmVmQ291bnQ7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNS
ZXF1aXJlZDsKQEAgLTEzNyw3ICsyMTEsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwg
dHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IGlubGluZSB2b2lkIGFkb3B0ZWQoVHJlZVNoYQogICAg
IGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFvYmplY3QtPm1fZGVs
ZXRpb25IYXNCZWd1bik7Ci0gICAgQVNTRVJUKCFvYmplY3QtPm1faW5SZW1vdmVkTGFzdFJlZkZ1
bmN0aW9uKTsKICAgICBvYmplY3QtPm1fYWRvcHRpb25Jc1JlcXVpcmVkID0gZmFsc2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAxYzA5YzYxOWI2MWZkODJlNDg4ZWIwZDUx
NjI0MjhkOGU0YTFmMjMwLi40OGEzNDQ3Y2EyMzljNmRlYTBmOTg3NjRhNTE5ZTZmMzRjYWRhZDQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC02MSw2ICs2MSw3IEBAIFBhc3NSZWZQ
dHI8U1ZHRWxlbWVudD4gU1ZHRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50CiAKIFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKIHsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50KCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICAgICBp
ZiAoIWhhc1NWR1JhcmVEYXRhKCkpCiAgICAgICAgIEFTU0VSVCghU1ZHRWxlbWVudFJhcmVEYXRh
OjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBlbHNlIHsKQEAgLTgwLDYgKzgx
LDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogICAgIH0KICAgICBkb2N1bWVudCgpLT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEFuaW1hdGlvbkVsZW1lbnRzRnJvbVRhcmdl
dCh0aGlzKTsKICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFs
bEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KHRoaXMpOworICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiflNWR0VsZW1lbnQoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVu
dDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKaW5kZXggOWZlMmFjYmYwMGE1ZmVjZjVmMzQ1YTc2OWQ1
NDFjNzU0NjJmZWExNy4uMGVhMDEwMTA5OGZmZTI5ZTE3NzIwOTlmNWIwYjI4ZjMyMzM0ZTQzZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKQEAgLTYyLDYgKzYy
LDkgQEAgU1ZHRWxlbWVudEluc3RhbmNlOjpTVkdFbGVtZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVu
dCogY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQsIFMKIAogU1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZH
RWxlbWVudEluc3RhbmNlKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50
SW5zdGFuY2UoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOworICAgIEFTU0VSVChtX2RlbGV0aW9uSGFz
QmVndW4pOworCiAgICAgLy8gQ2FsbCBkZXRhY2ggYmVjYXVzZSB3ZSBtYXkgYmUgZGVsZXRlZCBk
aXJlY3RseSBpZiB3ZSBhcmUgYSBjaGlsZCBvZiBhIGRldGFjaGVkIGluc3RhbmNlLgogICAgIGRl
dGFjaCgpOwogCkBAIC03MCwxNiArNzMsNDYgQEAgU1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxl
bWVudEluc3RhbmNlKCkKICNlbmRpZgogCiAgICAgbV9lbGVtZW50ID0gMDsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50SW5zdGFuY2UoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9
CiAKIC8vIEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxpbmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1
c2Ugd2UgZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNvZGUgdG8KIC8vIGRlbGV0ZSBhbiBTVkdF
bGVtZW50SW5zdGFuY2UgYXQgZWFjaCBkZXJlZiBjYWxsIHNpdGUuCiB2b2lkIFNWR0VsZW1lbnRJ
bnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiU1ZH
RWxlbWVudEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZigpICVwIGJlZm9yZVxuIiwgdGhpcyk7Cisg
ICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogI2lmbmRlZiBOREVCVUcKICAgICBtX2Rl
bGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCisgICAgLy8gZnByaW50ZihzdGRlcnIsICJk
ZWxldGUodGhpcykgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICAgICBkZWxldGUgdGhpczsKKyAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAlcCBhZnRlclxuIiwgdGhpcyk7CisgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKCkg
JXAgYWZ0ZXJcbiIsIHRoaXMpOworfQorCisvLyBXaGVuIGdjVHJlZSgpIGlzIGNhbGxlZCwgdGhl
IFRyZWVTY29wZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgbm8gbGlmZXRpbWUgb3duZXIuCisvLyBn
Y1RyZWUoKSBtdXN0IHJlY2xhaW0gYWxsIE5vZGVzIGluIHRoZSBUcmVlU2NvcGUgb3Igc2V0IGEg
bmV3IGxpZmV0aW1lIG93bmVyIG9mCisvLyB0aGUgVHJlZVNjb3BlLgordm9pZCBTVkdFbGVtZW50
SW5zdGFuY2U6OmdjVHJlZSgpCit7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50
SW5zdGFuY2U6OmdjVHJlZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgU1ZHRWxlbWVudElu
c3RhbmNlKiByb290ID0gMDsKKyAgICBpZiAoaXNSZWFjaGFibGVGcm9tV3JhcHBlcjxTVkdFbGVt
ZW50SW5zdGFuY2U+KHRoaXMsICZyb290KSkgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCB0cnVlXG4iLCB0aGlzKTsKKyAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OmdjVHJlZSgpICVwIGFmdGVyXG4i
LCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQocm9vdCk7CisgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgZmFsc2VcbiIs
IHRoaXMpOworICAgIGlmIChyb290LT5yZWZDb3VudCgpKSB7CisgICAgICAgIC8vIGZwcmludGYo
c3RkZXJyLCAicm9vdC0+cmVmQ291bnQoKSAlcFxuIiwgdGhpcyk7CisgICAgICAgIHJvb3QtPnNl
dExpZmV0aW1lT3duZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIiFyb290LT5yZWZDb3VudCgpICVwXG4iLCB0aGlzKTsKKyAgICAgICAgcm9vdC0+cmVtb3Zl
ZExhc3RSZWYoKTsKKyAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5z
dGFuY2U6OmdjVHJlZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogdm9pZCBTVkdFbGVtZW50
SW5zdGFuY2U6OmRldGFjaCgpCkBAIC0xMTQsNiArMTQ3LDcgQEAgdm9pZCBTVkdFbGVtZW50SW5z
dGFuY2U6OnNldFNoYWRvd1RyZWVFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCiB2b2lkIFNW
R0VsZW1lbnRJbnN0YW5jZTo6YXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxTVkdFbGVtZW50SW5zdGFu
Y2U+IGNoaWxkKQogewogICAgIGFwcGVuZENoaWxkVG9Db250YWluZXI8U1ZHRWxlbWVudEluc3Rh
bmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+KGNoaWxkLmdldCgpLCB0aGlzKTsKKyAgICBjaGlsZC0+
dW5zZXRMaWZldGltZU93bmVyKCk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjppbnZh
bGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKaW5kZXggZjhlNDg5YjZiYTQzNTllYzc5NTk3
OTdmNzIzYzUyNTk1NDQ2NDNjNi4uZWJlY2RiYmU2MTc1Nzg5NGY5MGRhOTQwNTE4NzQxZDUzNWQ3
MDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaApAQCAtMTUxLDYg
KzE1MSw3IEBAIHByaXZhdGU6CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVu
dCosIFNWR1VzZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNWR0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVu
dCk7CiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOworICAgIHZvaWQgZ2NUcmVlKCk7CiAKICAg
ICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpIHsgcmV0dXJuIHNoYWRvd1RyZWVFbGVtZW50KCk7IH0K
IApAQCAtMTU4LDEzICsxNTksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFNoYWRvd1RyZWVF
bGVtZW50KFNWR0VsZW1lbnQqKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBj
bGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBmcmllbmQgdm9pZCBhcHBlbmRDaGlsZFRv
Q29udGFpbmVyKEdlbmVyaWNOb2RlKiBjaGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRh
aW5lcik7Ci0KKyAgICBmcmllbmQgdm9pZCBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKEdlbmVyaWNO
b2RlKiBjaGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBH
ZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQg
cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFp
bmVyKTsKLQorICAgIGZyaWVuZCB2b2lkIFByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9u
UXVldWUoR2VuZXJpY05vZGUqJiBoZWFkLCBHZW5lcmljTm9kZSomIHRhaWwsIEdlbmVyaWNOb2Rl
Q29udGFpbmVyKik7CiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVy
aWNOb2RlQ29udGFpbmVyPgotICAgIGZyaWVuZCB2b2lkIFByaXZhdGU6OmFkZENoaWxkTm9kZXNU
b0RlbGV0aW9uUXVldWUoR2VuZXJpY05vZGUqJiBoZWFkLCBHZW5lcmljTm9kZSomIHRhaWwsIEdl
bmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpOworICAgIGZyaWVuZCB2b2lkIHJlbW92ZUFs
bENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqKTsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBHZW5lcmljTm9kZT4KKyAgICBmcmllbmQgYm9vbCBpc1JlYWNoYWJsZUZyb21XcmFw
cGVyKEdlbmVyaWNOb2RlKiwgR2VuZXJpY05vZGUqKik7CiAKICAgICBib29sIGhhc0NoaWxkTm9k
ZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5v
cmRlcgppbmRleCAyMWNhMmZmNmNlM2FiYmU3Y2U3MTQ2MTQ1M2RjNjM1ZTI5ZTM2ZWYwLi5mY2Q2
YWUwZTQ2ZTMyN2JmNTllYTZlN2ZkODM0YjRiOGQ4MjUyMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0
Mi5vcmRlcgpAQCAtOTYzLDYgKzk2Myw3IEBAIF9fWk4zV1RGOVJldGFpblB0ckkxMk5TVVJMUmVx
dWVzdEVDMkVQUzFfCiBfX1pON1dlYkNvcmUxNVJlc291cmNlUmVxdWVzdGFTRVJLUzBfCiBfX1pO
N1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2VhU0VSS1MwXwogX19aTjdXZWJDb3JlNEtVUkxh
U0VSS1MwXworX19aTjdXZWJDb3JlNE5vZGU2Z2NUcmVlRXYKIF9fWk4zV1RGMjJIYXNoVGFibGVD
b25zdEl0ZXJhdG9ySU5TXzEyQXRvbWljU3RyaW5nRVN0NHBhaXJJUzFfTlNfNlN0cmluZ0VFTlNf
MThQYWlyRmlyc3RFeHRyYWN0b3JJUzRfRUVOU18xNUNhc2VGb2xkaW5nSGFzaEVOU18xNFBhaXJI
YXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTMV9FRU5TOV9JUzNfRUVFRVNBX0UxNnNraXBFbXB0
eUJ1Y2tldHNFdgogX19aTjNXVEY2VmVjdG9ySU5TXzZTdHJpbmdFTG0wRUVhU0VSS1MyXwogX19a
TlN0Nl9fY29weUlMYjBFU3QyNnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnRTRjb3B5SVBLTjNX
VEY2U3RyaW5nRVBTNF9FRVQwX1RfUzlfUzhfCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggZjUx
MDJlNjY3Y2Q2YmE5MDNmOTdhM2VkZjQxNjEyNDc5ODA3NDM2Mi4uOWNiMGYzNGJmZTdhYWRkYjI4
NWQxMjc0MjBkMTkwMTU5NjJmYzk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMjA1LDcg
KzIwNSw2IEBAIEVYUE9SVFMKICAgICAgICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3Jhbmdl
RnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1Jl
ZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAg
ICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZAQFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVkTGFzdFJl
ZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBX
VEZAQFFBRUlfV0lAWgogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQFdlYkNvcmVAQDBIQQogICAgICAgICA/c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3Rh
dGVASGlzdG9yeUNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCkBAIC0yNzEsNiArMjcwLDcgQEAg
RVhQT1JUUwogICAgICAgICA/dmlld3BvcnRBcmd1bWVudHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVW
aWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9pc1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50
QFdlYkNvcmVAQFFBRV9OSEBaCiAgICAgICAgID9pc0FjdGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJD
b3JlQEBRQkVfTlhaCisgICAgICAgID9nY1RyZWVATm9kZUBXZWJDb3JlQEBRQUVYWFoKICAgICAg
ICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFha
CiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1hdGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBA
UUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGluZ0hhY2tzQFRleHRSdW5AV2ViQ29yZUBA
U0FYX05AWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVm
IGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmluZGV4IGJiMWEwZDIzODMy
ZTBmODQ5YWQ1OGI0MDRmM2FiMjBkOTk2YWFlN2QuLjI4OGNjNDM2ZGU0NDM2OGNkY2ZmNmUzNmRl
ZjFmZjBkODQ2MzM5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZM
aXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTIw
Miw3ICsyMDIsNiBAQCBFWFBPUlRTCiAgICAgICAgID9wbGFjZWhvbGRlclNob3VsZEJlVmlzaWJs
ZUBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaCiAgICAgICAgID9y
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRlcmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBh
c3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBBVkNvbnRhaW5lck5vZGVAMkBISF9OQFoK
ICAgICAgICAgP3JlbW92ZUBTdHJpbmdAV1RGQEBRQUVYSUhAWgotICAgICAgICA/cmVtb3ZlZExh
c3RSZWZATm9kZUBXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JldmVyc2VGaW5kQFN0cmluZ0lt
cGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NfZnJvbnRlbmRDb3VudGVyQEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkBXZWJDb3JlQEAwSEEKICAgICAgICAgP3NhdmVEb2N1bWVudEFuZFNjcm9s
bFN0YXRlQEhpc3RvcnlDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWgpAQCAtMjEwLDYgKzIwOSw3
IEBAIEVYUE9SVFMKICAgICAgICAgP3NjcmlwdE5hbWVUb0NvZGVAV2ViQ29yZUBAWUE/QVc0VVNj
cmlwdENvZGVAQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0
QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgogICAg
ICAgICA/c2V0Q2FuU3RhcnRNZWRpYUBQYWdlQFdlYkNvcmVAQFFBRVhfTkBaCisgICAgICAgID9n
Y1RyZWVATm9kZUBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NldEN1cnNpdmVGb250RmFtaWx5
QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2Rl
QEBAWgogICAgICAgICA/c2V0RGV2aWNlU2NhbGVGYWN0b3JAUGFnZUBXZWJDb3JlQEBRQUVYTUBa
CiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BA
SEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA2YThkMWVjNmU5YmM3ZWMyOTEwOGFmODA1
YThmNTI1ZTUxMWIxM2QzLi4xZGNlYTY0ZjFmMjFlNDMwYjdmODhmZjMwZmViNGYzNzk2NWM0M2Yz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJj
ZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE0NCw3ICsxNDQsNyBAQCBfWk43V2ViQ29y
ZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMThkaWRDYW5jZWxGcmFtZUltcGxFUE5TXzE5SW5z
dHJ1bWVudGluZ0FnZQogX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhMjhzZXRTY3JvbGxPZmZz
ZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RTsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3
MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsKIF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFz
ZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKLV9aTjdXZWJDb3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVm
RXY7CitfWk43V2ViQ29yZTROb2RlNmdjVHJlZUV2OwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNl
dEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9a
TjdXZWJDb3JlOFNldHRpbmdzMThzZXRTZXJpZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3Ry
aW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRG
YW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTJkMmIy
MzJmNDM3N2MxMzMwODZhYTIxNDJkZWNjNTlhZDZlMDI2OS4uMTc1YWJkNjVhNzcyNzI3YzJkMzhi
ZDliYTJlMThlYWYyNTVlM2JhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTAzICBL
ZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBhIE5vZGUg
WCBpcyByZWFjaGFibGUgZnJvbSBKYXZhU2NyaXB0LCBhbGwgTm9kZXMgaW4gdGhlIHNhbWUgdHJl
ZSBzaG91bGQgYmUga2VwdCBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODg4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBnYy1kb20tdHJlZS1saWZldGltZS5odG1sIHRlc3RzIHRoZSBmb2xsb3dp
bmdzOgorCisgICAgICAgICAgLSBJZiBhIE5vZGUgWCBpcyByZWFjaGFibGUgZnJvbSBhIG5vZGUg
WSB0aGF0IGhhcyAxfiByZWZlcmVuY2UgY291bnQsCisgICAgICAgICAgICB0aGUgTm9kZSBYIGlz
IG5vdCByZWNsYWltZWQuCisgICAgICAgICAgLSBPdGhlcndpc2UsIHRoZSBub2RlIFggaXMgcmVj
bGFpbWVkLgorCisgICAgICAgICogZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQg
dGhlIHRlc3QgcmVzdWx0LgorICAgICAgICAqIGZhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0OiBE
aXR0by4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA5LTAzICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgdGVzdCBleHBlY3RhdGlvbnMg
dXBkYXRlIGFmdGVyIHIxMjc0MTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2dj
LTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQK
aW5kZXggNjBkM2ExNzBmMjliNjMzNDg3MWM4Mzk2ZGUwYWFiYmI3NmIwYzE5Ni4uOTJkNDEyMTdl
ZjNhZTM5MGY1YWEyMDBjMmVlOWVmZDE1YTYxMjZmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2Mt
My1leHBlY3RlZC50eHQKQEAgLTQsNSArNCw2IEBAIFRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBm
b2xsb3dpbmcgcGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhCiAK
IHJlcGxhY2VtZW50IGNvbnRlbnQKIEIKK3BhcmVudCBub2RlIGV4aXN0cwogY2hpbGQgbm9kZSBl
eGlzdHMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dAppbmRleCAxOGM4MzQ4
OGIwY2Y2ZjA0MDFmZjM3OTdjZjE2NjM5ZGE1NjNkYTZlLi43MzgwOWNkYTg1NDM0ODc5Y2I5MjY3
NmI5NmI3NWQxOWYwMzE3YjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4
dApAQCAtNCw0ICs0LDUgQEAgVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVj
ZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGEKIAogcmVwbGFjZW1lbnQg
Y29udGVudAogQgorRAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20t
dHJlZS1saWZldGltZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20t
dHJlZS1saWZldGltZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgzZWVkZTFiNDEzZDY0N2Vl
NzgxNmU2NWNhYmYwMDk2YzdhODU0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwMiBA
QAorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0
ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2
LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJl
bnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFm
dGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0g
QWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0g
QWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBB
bGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3Rl
ZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2
LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJl
bnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFm
dGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09PSBB
ZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09
IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09
IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1Mg
QWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0
ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBB
ZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0g
QWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjIt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjIt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNT
IEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVj
dGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0g
QWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09
IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYw
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYw
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFT
UyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1
Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09
IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYy
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgor
PT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgor
PT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BB
U1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3Ry
dWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYy
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYw
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
Kz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
Kz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQ
QVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0
cnVjdGVkLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4MDAzZDU5N2ZlODY1NzYyYmI1ZjA2OTgxOGYzZjEyZDg2NWEyZTQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5o
dG1sCkBAIC0wLDAgKzEsOTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIHRlc3RDYXNlcyA9IFtbImRpdjAiLCAiZGl2MSIs
ICJkaXYyIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MCIsICJkaXYyIiwgImRpdjEiXSwKKyAg
ICAgICAgICAgICAgICAgWyJkaXYxIiwgImRpdjAiLCAiZGl2MiJdLAorICAgICAgICAgICAgICAg
ICBbImRpdjEiLCAiZGl2MiIsICJkaXYwIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MiIsICJk
aXYwIiwgImRpdjEiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYyIiwgImRpdjEiLCAiZGl2MCJd
XTsKKwordmFyIHJvb3REaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2RvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQocm9vdERpdik7Cit2YXIgdGVzdEh0bWwgPSAiPGRpdiBpZD0n
ZGl2MC1wYXJlbnQnPjxkaXYgaWQ9J2RpdjAnPjxkaXYgaWQ9J2RpdjAtY2hpbGQnPjwvZGl2Pjwv
ZGl2PjxkaXYgaWQ9J2RpdjEtcGFyZW50Jz48ZGl2IGlkPSdkaXYxJz48ZGl2IGlkPSdkaXYxLWNo
aWxkJz48L2Rpdj48L2Rpdj48ZGl2IGlkPSdkaXYyLXBhcmVudCc+PGRpdiBpZD0nZGl2Mic+PGRp
diBpZD0nZGl2Mi1jaGlsZCc+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+IjsKKwordGVz
dENhc2VzLmZvckVhY2goZnVuY3Rpb24gKHRlc3QpIHsKKyAgICB2YXIgZGl2WCwgZGl2WSwgZGl2
WjsKKyAgICBkZWJ1ZygiPT09IEluaXRpYWwgc3RhdGUgPT09Iik7CisgICAgcm9vdERpdi5pbm5l
ckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVz
dFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAg
IGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICBjaGVja1BhcmVu
dEFuZENoaWxkQWxpdmUoZGl2WCwgdGVzdFswXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFs
aXZlKGRpdlksIHRlc3RbMV0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0
ZXN0WzJdKTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PSIp
OworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsy
XSk7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBjaGVja1BhcmVudEFuZENoaWxk
QWxpdmUoZGl2WCwgdGVzdFswXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlks
IHRlc3RbMV0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsK
KworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PSIp
OworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsy
XSk7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBkaXZYID0gbnVsbDsKKyAgICBn
YygpOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZZLCB0ZXN0WzFdKTsKKyAgICBj
aGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WiwgdGVzdFsyXSk7CisKKyAgICBkZWJ1ZygiPT09
IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0iKTsKKyAgICByb290
RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsx
XSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMl0pOworICAgIHJv
b3REaXYuaW5uZXJIVE1MID0gIiI7CisgICAgZGl2WCA9IG51bGw7CisgICAgZGl2WSA9IG51bGw7
CisgICAgZ2MoKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WiwgdGVzdFsyXSk7
CisKKyAgICBkZWJ1ZygiPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBh
bmQgZGl2WiA9PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRp
dlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMl0pOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBwcmV2
Tm9kZXMgPSB3aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZU5vZGVzKCk7CisgICAgcm9vdERp
di5pbm5lckhUTUwgPSAiIjsKKyAgICBkaXZYID0gbnVsbDsKKyAgICBkaXZZID0gbnVsbDsKKyAg
ICBkaXZaID0gbnVsbDsKKyAgICBnYygpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Cisg
ICAgICAgIC8vIElmIGFsbCB0aGUgTm9kZSBvYmplY3RzIGluIHRlc3RIdG1sIGFyZSBzdWNjZXNz
ZnVsbHkgZGVzdHJ1Y3RlZCwKKyAgICAgICAgLy8gYXQgbGVhc3QgOSA8ZGl2PnMgb2JqZWN0cyB3
aWxsIGJlIHJlbW92ZWQuCisgICAgICAgIC8vIChBY3R1YWxseSwgc2luY2UgdGVzdEh0bWwgcmVu
ZGVyaW5nIHJlcXVpcmVzIG1vcmUgdGhhbiA5IE5vZGUgb2JqZWN0cy4pCisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzLm51bWJlck9mTGl2ZU5vZGVzKCkgPD0gcHJldk5vZGVzIC0gOSkKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJl
IHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
ZXN0RmFpbGVkKCI8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIG5vdCBkZXN0cnVjdGVk
LiIpOworICAgIH0KK30pOworCitmdW5jdGlvbiBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2
LCBuYW1lKSB7CisgICAgZ2xvYmFsRGl2ID0gZGl2OworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnZ2xvYmFsRGl2LmlkJywgbmFtZSk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9i
YWxEaXYucGFyZW50Tm9kZS5pZCcsIG5hbWUgKyAiLXBhcmVudCIpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQnLCBuYW1lICsgIi1jaGlsZCIpOwor
ICAgIGdsb2JhbERpdiA9IG51bGw7CisgICAgZ2MoKTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL2lubGluZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2lubGluZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRt
bAppbmRleCBiZjExOGJiZTVkNDI0Nzc1Y2NkYmQ0ZDc2ZWJjNzM5ZWRlMGE2OGJjLi5jYWYwMzQy
Y2ZiNDkzZTQ4YmRhNTIwNGJlNTI4NWMyNjAzYzMzZTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sCkBA
IC0xMyw3ICsxMyw5IEBAIGZ1bmN0aW9uIG51bWJlck9mTGl2ZU5vZGVzKCkgewogdmFyIGJlZm9y
ZUNvdW50ID0gbnVtYmVyT2ZMaXZlTm9kZXMoKTsKIAogdmFyIGYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdmb3JtJyk7CitmLmZvY3VzKCk7CiB2YXIgaSA9IGYuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7CitpLmZvY3VzKCk7CiBpLnNldEF0dHJpYnV0ZSgn
b25jbGljaycsICcnKTsKIGYucmVtb3ZlQ2hpbGQoaSk7CiBmID0gbnVsbDsKQEAgLTI1LDQgKzI3
LDQgQEAgdmFyIGFmdGVyQ291bnQgPSBudW1iZXJPZkxpdmVOb2RlcygpOwogc2hvdWxkQmUoJ2Fm
dGVyQ291bnQgLSBiZWZvcmVDb3VudCcsICcwJyk7CiAKIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4
ZTJmZGUzMjY1OGU2OGI1NGQ4MGRlYjhiZmM4NGM0MzdhYjE3ZTgwLi40NDQwMDg2MjFiMTE0ZmEz
NmEyMzkwYzMwNjFlNzViY2VmOGI2YzYwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMDMgIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIGEgTm9kZSBYIGlzIHJlYWNoYWJsZSBmcm9t
IEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3VsZCBiZSBrZXB0IGFs
aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODgz
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN5bWJv
bCBjaGFuZ2VzLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoK
KwogMjAxMi0wOS0wMyAgSmlud29vIFNvbmcgIDxqaW53b283LnNvbmdAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF0gVXNlIFdlYktpdFZlcnNpb24uaCB0byBnZXQgdmVyc2lvbiBpbmZvcm1h
dGlvbgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162440</attachid>
            <date>2012-09-06 00:48:21 -0700</date>
            <delta_ts>2012-09-27 23:19:45 -0700</delta_ts>
            <desc>overall comments are appreciated before serious review</desc>
            <filename>bug-88834-20120906164801.patch</filename>
            <type>text/plain</type>
            <size>77631</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ0YWQ1ZDZlZDY3NTVh
YTNhNDgzY2Q0MzBhMzBlYWQ5MWI3ZjhkNi4uMmM0MmExZjdkNmM2ZTBmNDM5ZjA4MDg5OWYwZWQ5
ZTM1MTQyOWRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MSBAQAorMjAxMi0wOS0wNCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFgg
aXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBzYW1lIHRyZWUg
c2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmVyZW5jZXNdCisgICAgICAgIEEgZGVzaWduIGRvY3VtZW50OiBodHRw
czovL2RvY3MuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9kb2N1bWVudC9kLzFIY2FlVS03NXh1
a01ZU1Vhc2tlRG9ITC1MMEZOdUNESXVrdlBtT2hlWThRL2VkaXQKKyAgICAgICAgQSB3ZWJraXQt
ZGV2QCB0aHJlYWQ6IGh0dHA6Ly9tYXJrbWFpbC5vcmcvdGhyZWFkL2txdm90ajVpaDRmNG13NG0K
KworICAgICAgICBbT3ZlcnZpZXddCisgICAgICAgIEN1cnJlbnRseSB0aGUgbGlmZXRpbWUgc2Vt
YW50aWNzIG9mIERPTSBOb2RlcyBpcyB1bnByZWRpY3RhYmxlIGZyb20gdGhlIHBlcnNwZWN0aXZl
CisgICAgICAgIG9mIEphdmFTY3JpcHQgcHJvZ3JhbW1lcnMuIEZvciBleGFtcGxlLCBjb25zaWRl
ciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKKyAgICAgICAgICBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgicCIpOworICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgICAgICAgcC5pbm5lckhUTUwgPSc8ZGl2PjxzcGFuIGlkPSJzcGFuIj48YnI+PC9zcGFuPjwv
ZGl2Pic7CisgICAgICAgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7
CisgICAgICAgICAgcC5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgICBhbGVydChzcGFuKTsgIC8v
IDxzcGFuPgorICAgICAgICAgIGFsZXJ0KHNwYW4ucGFyZW50Tm9kZSk7ICAvLyA/Pz8KKyAgICAg
ICAgICBhbGVydChzcGFuLmZpcnN0Q2hpbGQpOyAgLy8gPz8/CisKKyAgICAgICAgVGhlIGN1cnJl
bnQgV2ViS2l0IHJldHVybnMgbnVsbCBmb3Igc3Bhbi5wYXJlbnROb2RlIChpLmUuIDxkaXY+IGlz
IGFscmVhZHkgcmVjbGFpbWVkKQorICAgICAgICBhbmQgPGJyPiBmb3Igc3Bhbi5maXJzdENoaWxk
LgorCisgICAgICAgIFdlIHdhbnQgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBzbyB0aGF0IHNwYW4u
cGFyZW50Tm9kZSByZXR1cm5zIDxkaXY+IGFuZAorICAgICAgICBzcGFuLmZpcnN0Q2hpbGQgcmV0
dXJucyA8YnI+LiBBY2N1cmF0ZWx5IHNwZWFraW5nLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGUK
KyAgICAgICAgZm9sbG93aW5nIGxpZmV0aW1lIHNlbWFudGljczoKKworICAgICAgICAgIC0gSWYg
YSBOb2RlIFggaXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBz
YW1lIHRyZWUKKyAgICAgICAgICAgIGFyZSBrZXB0IGFsaXZlLgorCisgICAgICAgIFtCZW5lZml0
c10KKyAgICAgICAgVGhlIGZpcnN0IGJlbmVmaXQgaXMgdGhhdCB0aGUgbmV3IGxpZmV0aW1lIHNl
bWFudGljcyBpcyBtb3JlIHByZWRpY3RhYmxlIGFuZAorICAgICAgICB1bmRlcnN0YW5kYWJsZSB0
byBKYXZhU2NyaXB0IHByb2dyYW1tZXJzLiBUaGUgc2VtYW50aWNzIGlzIGFsaWduZWQgdG8gdGhl
IHNwZWMuCisgICAgICAgIFRoaXMgd2lsbCBmaXggYSBidW5jaCBvZiBpbmNvbXByZWhlbnNpYmxl
IGJlaGF2aW9ycyBvZiB0aGUgY3VycmVudCBXZWJLaXQKKyAgICAgICAgYXMgZGVzY3JpYmVkIGlu
IHRoZSBkZXNpZ24gZG9jdW1lbnQuCisKKyAgICAgICAgVGhlIHNlY29uZCBiZW5lZml0IGlzIG1v
cmUgZWZmaWNpZW50IFY4J3MgR0MuIFY4IGltcGxlbWVudHMgYSBnZW5lcmF0aW9uYWwgR0MKKyAg
ICAgICAgYnV0IGNhbm5vdCByZWNsYWltIERPTSBub2RlcyBpbiB0aGUgbWlub3IgR0MuIEFsbCBE
T00gd3JhcHBlciBvYmplY3RzIGhhdmUKKyAgICAgICAgdG8gYmUgcHJvbW90ZWQgdG8gdGhlIG9s
ZCBzcGFjZSBhbmQgcmVjbGFpbWVkIGJ5IHRoZSBtYWpvciBHQy4gV2UgYXJlIHBsYW5uaW5nCisg
ICAgICAgIHRvIHJlZGVzaWduIFY4J3MgR0Mgc28gdGhhdCBpdCBjYW4gcmVjbGFpbSBET00gbm9k
ZXMgaW4gdGhlIG1pbm9yIEdDLAorICAgICAgICB3aGljaCByZXF1aXJlcyB0aGUgbmV3IGxpZmV0
aW1lIHNlbWFudGljcyBvZiBET00gbm9kZXMuIEZvciBtb3JlIGRldGFpbHMKKyAgICAgICAgcGxl
YXNlIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVu
dC9kLzFLaThXckdJSGlwSWp6ejVybDNTRzdTTi11bEg5SmdiY1FBT0E0SmEtaFhzL2VkaXQKKwor
ICAgICAgICBbUGVyZm9ybWFuY2UgcmVzdWx0c10KKyAgICAgICAgVGhlIGZvbGxvd2luZyByZXN1
bHRzIGFyZSB0aGUgYXZlcmFuZ2Ugb2YgMTAgcnVuLXBlcmYtdGVzdHM6CisKKyAgICAgICAgICAo
Q2hyb21pdW0vTGludXgpCisgICAgICAgICAgRHJvbWFlby9kb20tYXR0ciAgICAgICAgNjU3MCBy
dW5zL3MgPT4gNjU4NyBydW5zL3MgICAoKzAuMjUlKQorICAgICAgICAgIERyb21hZW8vZG9tLW1v
ZGlmeSAgICAgIDM5MDUgcnVucy9zID0+IDM4NzMgcnVucy9zICAgKC0wLjgxJSkKKyAgICAgICAg
ICBEcm9tYWVvL2RvbS1xdWVyeSAgICAgODIyOTkzIHJ1bnMvcyA9PiA4NjU4NjggcnVucy9zICgr
NS4yMSUpCisgICAgICAgICAgRHJvbWFlby9kb20tdHJhdmVyc2UgICAgMjQ0OCBydW5zL3MgPT4g
MjQyMCBydW5zL3MgICAoLTEuMTQlKQorCisgICAgICAgICAgKFNhZmFyaS9NYWMpCisgICAgICAg
ICAgRHJvbWFlby9kb20tYXR0ciAgICAgICAgNTc2OSBydW5zL3MgPT4gNTY1NiBydW5zL3MgICAo
LTEuOTUlKQorICAgICAgICAgIERyb21hZW8vZG9tLW1vZGlmeSAgICAgIDQ5MzUgcnVucy9zID0+
IDQ3NzAgcnVucy9zICAgKC0zLjM0JSkKKyAgICAgICAgICBEcm9tYWVvL2RvbS1xdWVyeSAgICAg
OTQ4OTQxIHJ1bnMvcyA9PiA5NTQyMTggcnVucy9zICgrMC41NSUpCisgICAgICAgICAgRHJvbWFl
by9kb20tdHJhdmVyc2UgICAgMzg3MCBydW5zL3MgPT4gMzgxMCBydW5zL3MgICAoLTEuMDMlKQor
CisgICAgICAgIFRoZSAtMy4zNCUgcmVncmVzc2lvbiBpbiBkb20tbW9kaWZ5IChTYWZhcmkvTWFj
KSBpcyBub3QgYWNjZXB0YWJsZSwKKyAgICAgICAgYnV0IEkgaGF2ZSBhbHJlYWR5IG9wdGltaXpl
ZCBkb20tbW9kaWZ5IGJ5IDguMiUgaW4gYW5vdGhlciBwYXRjaCAoYnVnIDkyOTY1KQorICAgICAg
ICB0byBvZmZzZXQgdGhlIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCisKKyAgICAgICAgSWYgLTEu
OTUlIHJlZ3Jlc3Npb24gaW4gZG9tLWF0dHIgKFNhZmFyaS9NYWMpLCAtMS4wMyUgcmVncmVzc2lv
bgorICAgICAgICBpbiBkb20tdHJhdmVyc2UgKFNhZmFyaS9NYWMpLCBhbmQgLTEuMTQlIHJlZ3Jl
c3Npb24gaW4gZG9tLXRyYXZlcnNlCisgICAgICAgIChDaHJvbWl1bS9MaW51eCkgYXJlIHVuYWNj
ZXB0YWJsZSwgSSB3aWxsIHdvcmsgb24gdGhlIG9wdGltaXphdGlvbgorICAgICAgICB0byBvZmZz
ZXQgdGhlIHJlZ3Jlc3Npb25zLCBiZWZvcmUgbGFuZGluZyB0aGlzIHBhdGNoLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwKKyAgICAgICAgICAgICAg
ZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sCisgICAgICAgICAg
ICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWVsZW1lbnQtaW5zdGFuY2VzLW5vQmFzZVZhbFJlZi5z
dmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMu
c3ZnCisgICAgICAgICAgICAgIGFuaW1hdGlvbnMvc21pbC1sZWFrLWR5bmFtaWNhbGx5LWFkZGVk
LWVsZW1lbnQtaW5zdGFuY2VzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwtbGVh
ay1lbGVtZW50cy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zdmdsZW5ndGgtZWxlbWVu
dC1yZW1vdmVkLWNyYXNoLnN2ZworICAgICAgICAgICAgICBDb25maXJtIHRoYXQgYWxsIHRoZSBv
dGhlciBleGlzdGluZyB0ZXN0cyBkbyBub3QgY3Jhc2guCisKKyAgICAgICAgTm90ZTogSSB3aWxs
IHJlbW92ZSBhbGwgZnByaW50ZigpcyBhbmQgYWRkIHBlci1mdW5jdGlvbiBjb21tZW50cyBhZnRl
cgorICAgICAgICB3ZSBmb3VuZCB0aGF0IHRoaXMgcGF0Y2ggaXMgT0suCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIp
OgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vh
a05vZGVDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckFjdGl2ZURP
TU5vZGUpOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF0dHI6
OmNyZWF0ZVRleHRDaGlsZCk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyUmVtb3ZlQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4pOgorICAgICAgICAqIGRvbS9Db250YWlu
ZXJOb2RlLmg6CisgICAgICAgIChDb250YWluZXJOb2RlKToKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFu
dEluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVk
RnJvbVRyZWUpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oOgorICAg
ICAgICAoQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2hp
bGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyKToKKyAg
ICAgICAgKENoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcik6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzUmVhY2hhYmxlRnJvbVdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlOjpOb2RlUmVtb3ZhbERpc3BhdGNoZXI6OmRpc3BhdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJ
bnNlcnRlZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9k
ZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXI6OmNoZWNrSWZMaWZldGltZU93bmVyKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpndWFyZERlcmVmKToK
KyAgICAgICAgKERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50Ojpmb2N1cyk6CisgICAgICAgICogZG9tL0VsZW1lbnRTaGFkb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cyk6Cisg
ICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6fk5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnY1RyZWUpOgorICAgICAgICAqIGRvbS9Ob2Rl
Lmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9UcmVlU2hhcmVkLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OlRyZWVTaGFy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6flRyZWVTaGFyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVmKToKKyAgICAgICAgKFRyZWVTaGFyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6d3JhcHBlclJlZik6CisgICAgICAgIChXZWJDb3Jl
OjpUcmVlU2hhcmVkOjpkZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp3cmFw
cGVyRGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6cmVmQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6d3JhcHBlclJlZkNvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlRyZWVTaGFyZWQ6Omhhc09uZVJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hh
cmVkOjpzZXRMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnVu
c2V0TGlmZXRpbWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjppc0xpZmV0
aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6c2V0UGFyZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OmFkb3B0ZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJ
bnN0YW5jZTo6flNWR0VsZW1lbnRJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0UmVmKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjpnY1RyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudEluc3RhbmNlOjphcHBlbmRDaGlsZCk6CisgICAgICAgICogc3ZnL1NWR0Vs
ZW1lbnRJbnN0YW5jZS5oOgorICAgICAgICAoU1ZHRWxlbWVudEluc3RhbmNlKToKKwogMjAxMi0w
OS0wNCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBGaXggaW5jb25zaXN0ZW5jaWVzIGluIE5ldHdvcmtVSVNvdXJjZUNvZGVQ
cm92aWRlciBpbXBsZW1lbnRhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmNTZkMWQyZDU2ZTQyZWVmODdm
MDY0NTU3NGY2MDdmY2QyYTAwMzEyLi5hZTRmODkzYmUxMDE3YTYyNDdkMmJjOWQwN2I5N2FhMTZm
YjJlODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMDMgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIGEgTm9kZSBYIGlzIHJl
YWNoYWJsZSBmcm9tIEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3Vs
ZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFN5bWJvbCBjaGFuZ2VzLgorCisgICAgICAgICogbWFjL1dlYktpdDIub3JkZXI6Cisg
ICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZjoKKwogMjAxMi0wOS0wNSAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgW0VGTF1bV0syXSBJbXBsZW1lbnQgbWlzc2luZyBmZWF0dXJlIHRvIHN1cHBvcnQg
PHNlbGVjdD4gdGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGE2NWQ1ZDU1NGJjNGU3MjE3MTA0
NzQxNTE0OGM4MmNmMDA0OWMzNDMuLjA2M2M3MWNkZDVkNGNiMWMxZTViNzQ2NDYzYzM3NTlmODUw
MGQ4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02NTEsOCArNjUxLDggQEAgX19aTjdXZWJD
b3JlNEtVUkxDMUVOU18xOFBhcnNlZFVSTFN0cmluZ1RhZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43
V2ViQ29yZTRLVVJMQzFFUDVOU1VSTAogX19aTjdXZWJDb3JlNEtVUkxDMUVQSzdfX0NGVVJMCiBf
X1pON1dlYkNvcmU0S1VSTEMxRVJLUzBfUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmU0Tm9k
ZTZnY1RyZWVFdgogX19aTjdXZWJDb3JlNE5vZGUxMHJlbmRlclJlY3RFUGIKLV9fWk43V2ViQ29y
ZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmU0Tm9kZTE3c3RvcElnbm9yaW5n
TGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOHN0YXJ0SWdub3JpbmdMZWFrc0V2CiBfX1pON1dl
YkNvcmU0Tm9kZTE5c2V0TmVlZHNTdHlsZVJlY2FsY0VOU18xNVN0eWxlQ2hhbmdlVHlwZUUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCmluZGV4IDM1YWJmZTYzNWI5M2RhNDRiNDcyNWE1NGZiMjIzZDE4MTY3Mzhj
MWMuLjE5NjRjMjdjYWMzNTU4NDQ2NzM5YzQxNjgxMjczYTI4NjRkZjQ1ODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgpAQCAtMTkyMyw3ICsxOTIzLDYgQEAgX19aTjdXZWJDb3JlMTFSZW5kZXJCbG9jazEx
cGFpbnRGbG9hdHNFUk5TXzlQYWludEluZm9FaWliCiBfX1pON1dlYkNvcmUxMVJlbmRlckJsb2Nr
MTBwYWludENhcmV0RVJOU185UGFpbnRJbmZvRWlpTlNfOUNhcmV0VHlwZUUKIF9fWk5LN1dlYkNv
cmUxNEZyYW1lU2VsZWN0aW9uMTNjYXJldFJlbmRlcmVyRXYKIF9fWk5LN1dlYkNvcmUxNlZpc2li
bGVTZWxlY3Rpb24xN2lzQ29udGVudEVkaXRhYmxlRXYKLV9fWk43V2ViQ29yZTE4Y2FsbFJlbW92
ZWRMYXN0UmVmRVBOU18xMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2RlRUVFCiBfX1pON1dl
YkNvcmUxOGlzRWRpdGFibGVQb3NpdGlvbkVSS05TXzhQb3NpdGlvbkUKIF9fWk5LN1dlYkNvcmUx
OURyYWdDYXJldENvbnRyb2xsZXIxM2NhcmV0UmVuZGVyZXJFdgogX19aTjdXZWJDb3JlMTFSZW5k
ZXJCbG9jazI1cGFpbnRDb250aW51YXRpb25PdXRsaW5lc0VSTlNfOVBhaW50SW5mb0VpaQpAQCAt
MjQ3MSwxMyArMjQ3MCwxMCBAQCBfX1pOSzNXVEY5SGFzaFRhYmxlSVB2UzFfTlNfMTdJZGVudGl0
eUV4dHJhY3RvcklTMV9FRU5TXzdQdHJIYXNoSVMxX0VFTlNfMTBIYXNoVAogX19aTjdXZWJDb3Jl
MTFKU05vZGVPd25lcjhmaW5hbGl6ZUVOM0pTQzZIYW5kbGVJTlMxXzdVbmtub3duRUVFUHYKIF9f
Wk43V2ViQ29yZTE0dW5jYWNoZVdyYXBwZXJJTlNfNE5vZGVFRUV2UE5TXzE1RE9NV3JhcHBlcldv
cmxkRVBUX1BOU18xMkpTRE9NV3JhcHBlckUKIF9fWk43V2ViQ29yZTE0SlNIVE1MRG9jdW1lbnRE
MUV2Ci1fX1pUaG44X043V2ViQ29yZThEb2N1bWVudDE0cmVtb3ZlZExhc3RSZWZFdgotX19aTjdX
ZWJDb3JlOERvY3VtZW50MTRyZW1vdmVkTGFzdFJlZkV2CiBfX1pON1dlYkNvcmUxNFN0eWxlU2hl
ZXRMaXN0RDFFdgogX19aTjdXZWJDb3JlOVRyZWVTY29wZTIwZGVzdHJveVRyZWVTY29wZURhdGFF
dgogX19aTjdXZWJDb3JlMThEb2N1bWVudE9yZGVyZWRNYXA1Y2xlYXJFdgogX19aTjdXZWJDb3Jl
MTNDb250YWluZXJOb2RlMTdyZW1vdmVBbGxDaGlsZHJlbkV2Ci1fX1pON1dlYkNvcmUyOHJlbW92
ZUFsbENoaWxkcmVuSW5Db250YWluZXJJTlNfNE5vZGVFTlNfMTNDb250YWluZXJOb2RlRUVFdlBU
MF8KIF9fWk43V2ViQ29yZTE1SFRNTEh0bWxFbGVtZW50RDBFdgogX19aTjdXZWJDb3JlMTNTdHls
ZWRFbGVtZW50RDJFdgogX19aTjdXZWJDb3JlN0VsZW1lbnREMkV2CkBAIC00MTUxLDcgKzQxNDcs
NiBAQCBfX1pON1dlYkNvcmU0Tm9kZTE1cmVtb3ZlZEZyb21UcmVlRWIKIF9fWk43V2ViQ29yZUwx
OW5vdGlmeUNoaWxkSW5zZXJ0ZWRFUE5TXzROb2RlRQogX19aTjdXZWJDb3JlNE5vZGUxNmluc2Vy
dGVkSW50b1RyZWVFYgogX19aTjdXZWJDb3JlTDI4ZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50
c0VQTlNfNE5vZGVFCi1fX1pON1dlYkNvcmUxMFRyZWVTaGFyZWRJTlNfMTNDb250YWluZXJOb2Rl
RUUxNHJlbW92ZWRMYXN0UmVmRXYKIF9fWlRobjhfTjdXZWJDb3JlMTZEb2N1bWVudEZyYWdtZW50
RDBFdgogX19aTjdXZWJDb3JlTDMzY3JlYXRlSFRNTFBhcmFncmFwaEVsZW1lbnRXcmFwcGVyRVBO
M0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfMTFIVE1MRWxlbWVudEVFRQogX19aTjdXZWJDb3JlMTNjcmVhdGVXcmFwcGVySU5TXzIySlNI
VE1MUGFyYWdyYXBoRWxlbWVudEVOU18yMEhUTUxQYXJhZ3JhcGhFbGVtZW50RUVFUE5TXzEySlNE
T01XcmFwcGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUFQwXwpA
QCAtMjk0NjQsMTIgKzI5NDU5LDEwIEBAIF9fWk43V2ViQ29yZTEzU1ZHVXNlRWxlbWVudDMwZmls
bEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwRXYKIF9fWk5LN1dlYkNvcmUxMlNWR1RyYW5zZm9y
bTl0cmFuc2xhdGVFdgogX19aTjdXZWJDb3JlMTBGbG9hdFBvaW50MTVuYXJyb3dQcmVjaXNpb25F
ZGQKIF9fWk43V2ViQ29yZTE1QWZmaW5lVHJhbnNmb3JtOXNldE1hdHJpeEVkZGRkZGQKLV9fWk43
V2ViQ29yZTEwVHJlZVNoYXJlZElOU18xOFNWR0VsZW1lbnRJbnN0YW5jZUVFMTRyZW1vdmVkTGFz
dFJlZkV2CiBfX1pON1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUQwRXYKIF9fWk43V2ViQ29y
ZTEwU1ZHRWxlbWVudDIxcmVtb3ZlSW5zdGFuY2VNYXBwaW5nRVBOU18xOFNWR0VsZW1lbnRJbnN0
YW5jZUUKIF9fWk5LM1dURjlIYXNoVGFibGVJUE43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNl
RVMzX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFz
aFRyYWl0c0lTM19FRVM5X0U0ZmluZElTM19OU18yMklkZW50aXR5SGFzaFRyYW5zbGF0b3JJUzNf
UzNfUzdfRUVFRU5TXzIySGFzaFRhYmxlQ29uc3RJdGVyYXRvcklTM19TM19TNV9TN19TOV9TOV9F
RVJLVF8KIF9fWk4zV1RGOUhhc2hUYWJsZUlQTjdXZWJDb3JlMThTVkdFbGVtZW50SW5zdGFuY2VF
UzNfTlNfMTdJZGVudGl0eUV4dHJhY3RvcklTM19FRU5TXzdQdHJIYXNoSVMzX0VFTlNfMTBIYXNo
VHJhaXRzSVMzX0VFUzlfRTZyZW1vdmVFUFMzXwotX19aTjdXZWJDb3JlMjhyZW1vdmVBbGxDaGls
ZHJlbkluQ29udGFpbmVySU5TXzE4U1ZHRWxlbWVudEluc3RhbmNlRVMxX0VFdlBUMF8KIF9fWlRo
bjhfTjdXZWJDb3JlMTRTVkdMaW5lRWxlbWVudEQwRXYKIF9fWlRobjhfTjdXZWJDb3JlMThTVkdQ
b2x5bGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043V2ViQ29yZTE3U1ZHUG9seWdvbkVsZW1lbnRE
MEV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IGUxOTQ5NTQwYjIyMThkZjM0MDE1NmY2MGFkZTdmODNiZTZlZDM5NTEuLjRi
ZDJmYmJhMDA0ZDg0ZmY3MmJhMjAzNTNkY2JiM2JhY2I2Mjg2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC05MzcsOCAr
OTM3LDEzIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgaWYgKCEkaGFzUGFyZW50KSB7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXBsKCkgY29uc3Qg
eyByZXR1cm4gbV9pbXBsOyB9XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH1cblxu
Iik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1wbElm
Tm90TnVsbCgpIHsgaWYgKG1faW1wbCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH0g
fVxuXG4iKTsKKyAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJOb2RlIikgeworICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHJlbGVhc2VJbXBsKCkgeyBtX2lt
cGwtPndyYXBwZXJEZXJlZigpOyBtX2ltcGwgPSAwOyB9XG5cbiIpOworICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHJlbGVhc2VJbXBsSWZOb3ROdWxsKCkgeyBpZiAo
bV9pbXBsKSB7IG1faW1wbC0+d3JhcHBlckRlcmVmKCk7IG1faW1wbCA9IDA7IH0gfVxuXG4iKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
dm9pZCByZWxlYXNlSW1wbCgpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9XG5cbiIp
OworICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHJlbGVhc2VJbXBs
SWZOb3ROdWxsKCkgeyBpZiAobV9pbXBsKSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsg
fSB9XG5cbiIpOworICAgICAgICB9CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwcml2
YXRlOlxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGltcGxUeXBlKiBt
X2ltcGw7XG4iKTsKICAgICB9IGVsc2lmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QifSkgewpAQCAtMTY2NCw5ICsxNjY5LDE2IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICA6ICRwYXJlbnRDbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpXG4i
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdClcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLCBtX2ltcGwoaW1wbC5sZWFrUmVmKCkpXG4i
KTsKKyAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAsIG1faW1wbChpbXBsLmdldCgpKVxuIik7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICwgbV9pbXBsKGltcGwubGVha1JlZigpKVxuIik7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgaWYgKCRp
bnRlcmZhY2VOYW1lIGVxICJOb2RlIikgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaW1wbC0+d3JhcHBlclJlZigpO1xuIik7CisgICAgICAgIH0KICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9p
ZCAke2NsYXNzTmFtZX06OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSlc
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXgg
NjM3Mzk0M2YyNWNlYTc3NzVlMGI0MGExNjU1ZjQwMThiZjViYjQ3ZC4uZGY5NDg4Y2MyN2RmMmNh
YTJmMzMwMGVjYmMyM2RmMWU4MjMzOThmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuY3BwCkBAIC0xNTcsMTUgKzE1NywxNSBAQCB2b2lkIERPTURhdGFTdG9y
ZTo6d2Vha05vZGVDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lk
KiBkb21PYgogICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gbGlzdFtpXTsKICAgICAgICAg
RE9NTm9kZU1hcHBpbmcmIG5vZGVNYXAgPSBub2RlLT5pc0FjdGl2ZU5vZGUoKSA/IHN0b3JlLT5h
Y3RpdmVEb21Ob2RlTWFwKCkgOiBzdG9yZS0+ZG9tTm9kZU1hcCgpOwogICAgICAgICBpZiAobm9k
ZU1hcC5yZW1vdmVJZlByZXNlbnQobm9kZSwgdjhPYmplY3QpKSB7Ci0gICAgICAgICAgICBub2Rl
LT5kZXJlZigpOyAvLyBOb2JvZHkgb3ZlcnJpZGVzIE5vZGU6OmRlcmVmIHNvIGl0J3Mgc2FmZQot
ICAgICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSBtaWdodCBiZSBhdCBtb3N0IG9uZSB3cmFwcGVy
IGZvciB0aGUgbm9kZSBpbiB3b3JsZCdzIG1hcHMKKyAgICAgICAgICAgIG5vZGUtPndyYXBwZXJE
ZXJlZigpOworICAgICAgICAgICAgcmV0dXJuOyAvLyBUaGVyZSBpcyBhdCBtb3N0IG9uZSB3cmFw
cGVyIGZvciB0aGUgbm9kZSBpbiB3b3JsZCdzIG1hcHMuCiAgICAgICAgIH0KICAgICB9CiAKICAg
ICAvLyBJZiBub3QgZm91bmQsIGl0IG1lYW5zIG1hcCBmb3IgdGhlIHdyYXBwZXIgaGFzIGJlZW4g
YWxyZWFkeSBkZXN0cm95ZWQsIGp1c3QgZGlzcG9zZSB0aGUKICAgICAvLyBoYW5kbGUgYW5kIGRl
cmVmIHRoZSBvYmplY3QgdG8gZmlnaHQgbWVtb3J5IGxlYWsuCiAgICAgdjhPYmplY3QuRGlzcG9z
ZSgpOwotICAgIG5vZGUtPmRlcmVmKCk7IC8vIE5vYm9keSBvdmVycmlkZXMgTm9kZTo6ZGVyZWYg
c28gaXQncyBzYWZlCisgICAgbm9kZS0+d3JhcHBlckRlcmVmKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3Bw
CmluZGV4IGUzYjhlZDNhOTcyNjI1YjFhZDdlYzM1Y2Q5MmYyYzZiYzFlZTAyYWIuLmFhY2I5NDJk
ZWY4ODQ4YzQxZjU4MmE0YTY3MmE4NGEyZjE1OTc5YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNzMsNyArNzMsOCBAQCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoUGFzc1Jl
ZlB0cjxOb2RlPgogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUg
PSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwogICAgIEFTU0VSVCht
YXliZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwogICAgIEFTU0VSVCghbm9kZS0+aXNBY3Rp
dmVOb2RlKCkpOwotICAgIGdldERPTU5vZGVNYXAoaXNvbGF0ZSkuc2V0KG5vZGUubGVha1JlZigp
LCB3cmFwcGVySGFuZGxlKTsKKyAgICBub2RlLT53cmFwcGVyUmVmKCk7CisgICAgZ2V0RE9NTm9k
ZU1hcChpc29sYXRlKS5zZXQobm9kZS5nZXQoKSwgd3JhcHBlckhhbmRsZSk7CiAgICAgcmV0dXJu
IHdyYXBwZXJIYW5kbGU7CiB9CiAKQEAgLTgyLDcgKzgzLDggQEAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01Ob2RlKFBhc3NS
ZWZQdHIKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKICAgICBBU1NFUlQobWF5YmVE
T01XcmFwcGVyKHdyYXBwZXJIYW5kbGUpKTsKICAgICBBU1NFUlQobm9kZS0+aXNBY3RpdmVOb2Rl
KCkpOwotICAgIGdldEFjdGl2ZURPTU5vZGVNYXAoaXNvbGF0ZSkuc2V0KG5vZGUubGVha1JlZigp
LCB3cmFwcGVySGFuZGxlKTsKKyAgICBub2RlLT53cmFwcGVyUmVmKCk7CisgICAgZ2V0QWN0aXZl
RE9NTm9kZU1hcChpc29sYXRlKS5zZXQobm9kZS5nZXQoKSwgd3JhcHBlckhhbmRsZSk7CiAgICAg
cmV0dXJuIHdyYXBwZXJIYW5kbGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BdHRyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCA5NWMzZmUwNTI2
YTc0YjM2NWE0ZTZlZDlmOGMxYTVkN2MxZGY2NmFlLi44OGVjMDQ1YWE2MGRjMTcwMGQ0NWU0OWIw
NGMzMmI0MDFiMmQyODJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC04Miw2ICs4Miw3IEBAIHZvaWQg
QXR0cjo6Y3JlYXRlVGV4dENoaWxkKCkKICAgICAgICAgLy8gVGhpcyBkb2VzIGV2ZXJ5dGhpbmcg
YXBwZW5kQ2hpbGQoKSB3b3VsZCBkbyBpbiB0aGlzIHNpdHVhdGlvbiAoYXNzdW1pbmcgbV9pZ25v
cmVDaGlsZHJlbkNoYW5nZWQgd2FzIHNldCksCiAgICAgICAgIC8vIGJ1dCBtdWNoIG1vcmUgZWZm
aWNpZW50bHkuCiAgICAgICAgIHRleHROb2RlLT5zZXRQYXJlbnRPckhvc3ROb2RlKHRoaXMpOwor
ICAgICAgICB0ZXh0Tm9kZS0+dW5zZXRMaWZldGltZU93bmVyKCk7CiAgICAgICAgIHNldEZpcnN0
Q2hpbGQodGV4dE5vZGUuZ2V0KCkpOwogICAgICAgICBzZXRMYXN0Q2hpbGQodGV4dE5vZGUuZ2V0
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAzM2Q2YmYy
ZGQzYzliNTBhMGI0ZTAwODdiZjFiZDY0ODU3NWMwZjU0Li5mMzIyYjFmMTBjM2E3MWM2OWNiMTY5
YjJiMjBhMjBkZDZlMmY3NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBA
IC00MjQsNyArNDI0LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlKiBv
bGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2Us
IHByZXYsIG5leHQsIC0xKTsKIAotICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5u
b3RpZnkoY2hpbGQuZ2V0KCkpOworICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5u
b3RpZnkoY2hpbGQuZ2V0KCksIGZhbHNlKTsKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2
ZW50KCk7CiAKICAgICByZXR1cm4gY2hpbGQ7CkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBDb250
YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCkKICAgICByZW1vdmVC
ZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxkKTsKIAogICAgIGNoaWxkcmVuQ2hhbmdlZCh0cnVl
LCBwcmV2LCBuZXh0LCAtMSk7Ci0gICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5v
dGlmeShvbGRDaGlsZCk7CisgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlm
eShvbGRDaGlsZCwgZmFsc2UpOwogfQogCiAvLyB0aGlzIGRpZmZlcnMgZnJvbSBvdGhlciByZW1v
dmUgZnVuY3Rpb25zIGJlY2F1c2UgaXQgZm9yY2libHkgcmVtb3ZlcyBhbGwgdGhlIGNoaWxkcmVu
LApAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4o
KQogICAgIGNoaWxkcmVuQ2hhbmdlZChmYWxzZSwgMCwgMCwgLXN0YXRpY19jYXN0PGludD4ocmVt
b3ZlZENoaWxkcmVuQ291bnQpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCByZW1vdmVkQ2hpbGRy
ZW5Db3VudDsgKytpKQotICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90
aWZ5KHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKSk7CisgICAgICAgIENoaWxkTm9kZVJlbW92YWxO
b3RpZmllcih0aGlzKS5ub3RpZnkocmVtb3ZlZENoaWxkcmVuW2ldLmdldCgpLCBmYWxzZSk7CiAK
ICAgICBhbGxvd0V2ZW50RGlzcGF0Y2goKTsKICAgICBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCA2MzEyNzE0NjQ1ZmYyZmMy
ZmM3NDg3NWZmYTYyOWM4Mjk4NjA1YTlkLi5mNDFhMDkyODdmNjhjNzA5NjgwZDJkNTBkODQyMmUx
ZjFjYWUxYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTExOSw5ICsxMTks
MTAgQEAgcHJvdGVjdGVkOgogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNz
IEdlbmVyaWNOb2RlQ29udGFpbmVyPgogICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxkVG9Db250
YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRhaW5lciopOwotCiAgICAg
dGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgog
ICAgIGZyaWVuZCB2b2lkIFByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUoR2Vu
ZXJpY05vZGUqJiBoZWFkLCBHZW5lcmljTm9kZSomIHRhaWwsIEdlbmVyaWNOb2RlQ29udGFpbmVy
Kik7CisgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGU+CisgICAgZnJpZW5kIGJvb2wgaXNS
ZWFjaGFibGVGcm9tV3JhcHBlcihHZW5lcmljTm9kZSosIEdlbmVyaWNOb2RlKiopOwogCiAgICAg
dm9pZCBzZXRGaXJzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fZmlyc3RDaGlsZCA9IGNoaWxkOyB9
CiAgICAgdm9pZCBzZXRMYXN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGls
ZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0
aG1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAK
aW5kZXggZjU2NWFkYjRkNDI2ZjMyOTBjYmVhZTEwZDJmY2ZlNmM4MGRkNDgzNi4uODFhODg3MDEx
YmQ0YWU2ODM0ODhhZTEyMjVlODQxYzQ5NzZkOWE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCkBAIC00Nyw5ICs0NywxMSBAQCB2b2lkIENo
aWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoQ29udGFpbmVyTgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRWxlbWVudFNoYWRv
dyogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3coKSkgeworICAgICAgICBtX3RyZWVT
Y29wZURlcHRoKys7CiAgICAgICAgIFNoYWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290cy5zaXplKCk7ICsraSkKICAgICAgICAg
ICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChyb290c1tpXS5nZXQoKSk7CisgICAg
ICAgIG1fdHJlZVNjb3BlRGVwdGgtLTsKICAgICB9CiB9CiAKQEAgLTU4LDEwICs2MCwxNCBAQCB2
b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJ
bnRvVHJlZShDb250YWluZXJOb2RlKgogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5maXJz
dENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAg
IGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBub3RpZnlOb2RlSW5z
ZXJ0ZWRJbnRvVHJlZSh0b0NvbnRhaW5lck5vZGUoY2hpbGQpKTsKKyAgICAgICAgZWxzZSBpZiAo
IW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgICAgICBjaGlsZC0+dW5zZXRMaWZldGltZU93bmVy
KCk7CiAgICAgfQogCisgICAgbV90cmVlU2NvcGVEZXB0aCsrOwogICAgIGZvciAoU2hhZG93Um9v
dCogcm9vdCA9IG5vZGUtPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+
b2xkZXJTaGFkb3dSb290KCkpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHJv
b3QpOworICAgIG1fdHJlZVNjb3BlRGVwdGgtLTsKIH0KIAogdm9pZCBDaGlsZE5vZGVSZW1vdmFs
Tm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3VtZW50KENvbnRhaW5lck5v
ZGUqIG5vZGUpCkBAIC04Miw5ICs4OCwxMSBAQCB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmll
cjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZQogICAg
ICAgICBub2RlLT5kb2N1bWVudCgpLT5zZXRDU1NUYXJnZXQoMCk7CiAKICAgICBpZiAoRWxlbWVu
dFNoYWRvdyogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUpLT5zaGFkb3coKSkgeworICAgICAgICBt
X3RyZWVTY29wZURlcHRoKys7CiAgICAgICAgIFNoYWRvd1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByb290cy5zaXplKCk7ICsraSkKICAg
ICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KHJvb3RzW2ldLmdldCgpKTsK
KyAgICAgICAgbV90cmVlU2NvcGVEZXB0aC0tOwogICAgIH0KIH0KIApAQCAtOTMsMTUgKzEwMSwx
OSBAQCB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92
ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBubwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2Rl
LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgIGlmIChjaGlsZC0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBub3RpZnlO
b2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICBlbHNl
IGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgICAgIGNoZWNrSWZMaWZldGltZU93bmVy
KGNoaWxkKTsKICAgICB9CiAKICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHRvRWxlbWVudChu
b2RlKS0+c2hhZG93KCkpIHsKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aCsrOwogICAgICAgICBT
aGFkb3dSb290VmVjdG9yIHJvb3RzKHNoYWRvdyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcm9vdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZy
b21UcmVlKHJvb3RzW2ldLmdldCgpKTsKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aC0tOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApp
bmRleCAxMzU4YjA1ZWI4M2ExYzBkYzU5OGZmZTI3YTZmOGU4NGUwMDdhNzRiLi5jZWJmZmVmZjQ1
YzMwYWJhZTM1ODMzZjFjZjc3N2U4ZWUyMTc5MWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaApAQCAtMzAsOSArMzAsMTEgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IENoaWxkTm9kZUluc2Vy
dGlvbk5vdGlmaWVyKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICA6IG1f
aW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICwgbV90cmVlU2NvcGVEZXB0
aCgwKQogICAgIHsKICAgICB9CiAKQEAgLTQ2LDI1ICs0OCwzNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZSopOwogCiAgICAgQ29u
dGFpbmVyTm9kZSogbV9pbnNlcnRpb25Qb2ludDsKLSAgICBWZWN0b3I8IFJlZlB0cjxOb2RlPiA+
IG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7CisgICAgT3duUHRyPFZlY3RvcjxS
ZWZQdHI8Tm9kZT4gPiA+IG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7CisgICAg
Ly8gbV90cmVlU2NvcGVEZXB0aCA9PSAwIG1lYW5zIHRoYXQgdGhlIE5vdGlmaWVyIGlzIGluIHRo
ZSBUcmVlU2NvcGUgb2YgbV9pbnNlcnRpb25Qb2ludC4KKyAgICBpbnQgbV90cmVlU2NvcGVEZXB0
aDsKIH07CiAKIGNsYXNzIENoaWxkTm9kZVJlbW92YWxOb3RpZmllciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQogICAgICAgICA6IG1faW5zZXJ0
aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpCisgICAgICAgICwgbV90cmVlU2NvcGVEZXB0aCgwKQor
ICAgICAgICAsIG1fbGlmZXRpbWVPd25lckZvdW5kKGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAg
ICB2b2lkIG5vdGlmeShOb2RlKik7CisgICAgdm9pZCBub3RpZnkoTm9kZSosIGJvb2wpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoQ29u
dGFpbmVyTm9kZSopOwogICAgIHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZShD
b250YWluZXJOb2RlKik7CiAgICAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChO
b2RlKik7CiAgICAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUq
KTsKKyAgICB2b2lkIGNoZWNrSWZMaWZldGltZU93bmVyKE5vZGUqKTsKIAogICAgIENvbnRhaW5l
ck5vZGUqIG1faW5zZXJ0aW9uUG9pbnQ7CisgICAgLy8gbV90cmVlU2NvcGVEZXB0aCA9PSAwIG1l
YW5zIHRoYXQgdGhlIE5vdGlmaWVyIGlzIGluIHRoZSBUcmVlU2NvcGUgb2YgbV9pbnNlcnRpb25Q
b2ludC4KKyAgICBpbnQgbV90cmVlU2NvcGVEZXB0aDsKKyAgICAvLyBtX2xpZmV0aW1lT3duZXJG
b3VuZCA9PSB0cnVlIG1lYW5zIHRoYXQgYSBsaWZldGltZSBvd25lciBpcyBmb3VuZCBpbiB0aGUg
VHJlZVNjb3BlIG9mCisgICAgLy8gbV9pbnNlcnRpb25Qb2ludC4KKyAgICBib29sIG1fbGlmZXRp
bWVPd25lckZvdW5kOwogfTsKIAogbmFtZXNwYWNlIFByaXZhdGUgewpAQCAtNzQsMTEgKzg3LDY2
IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKIAogfQogCisvLyBJZiB0aGUgVHJlZVNjb3BlIGhhcyBh
IE5vZGUgcmVmZXJlbmNlZCBieSBhIHdyYXBwZXIgb2JqZWN0LCBpc1JlYWNoYWJsZUZyb21XcmFw
cGVyKCkgc2V0cworLy8gYSBsaWZldGltZSBvd25lciBvbiB0aGUgTm9kZSBhbmQgcmV0dXJucyB0
cnVlLiBPdGhlcndpc2UsIGlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSBzaW1wbHkKKy8vIHJldHVy
bnMgZmFsc2Ugd2l0aG91dCBzZXR0aW5nIGEgbGlmZXRpbWUgb3duZXIuCit0ZW1wbGF0ZTxjbGFz
cyBHZW5lcmljTm9kZT4KK2lubGluZSBib29sIGlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoR2VuZXJp
Y05vZGUqIHN0YXJ0Tm9kZSwgR2VuZXJpY05vZGUqKiByb290KQoreworICAgIC8vIEF0IHRoaXMg
cG9pbnQsIHRoZSBUcmVlU2NvcGUgaXMgZ3VhcmFudGVlZCB0byBoYXZlIG5vIGxpZmV0aW1lIG93
bmVyLgorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVw
IGJlZm9yZVxuIiwgc3RhcnROb2RlKTsKKyAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+aXNMaWZldGlt
ZU93bmVyKCkpOworCisgICAgLy8gV2UgdHJhdmVyc2UgdGhlIFRyZWVTY29wZSBpbiB0aGUgREZT
IG9yZGVyLCBzdGFydGluZyBmcm9tIHN0YXJ0Tm9kZS4gVGhlIHRyYXZlcnNhbAorICAgIC8vIG9y
ZGVyIGRvZXMgbm90IG1hdHRlciBmb3IgY29ycmVjdG5lc3MgYnV0IG1hdHRlcnMgZm9yIHBlcmZv
cm1hbmNlLgorICAgIC8vIFNlZSBhIGRlc2lnbiBkb2N1bWVudCAoaHR0cHM6Ly9kb2NzLmdvb2ds
ZS5jb20vYS9nb29nbGUuY29tL2RvY3VtZW50L2QvMTd1Yks0YW9ibTRHM2MyRkFEcUVvWEF3U1di
Q0lpcFh3enJHRkpZX2F0b1EvZWRpdCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICBHZW5lcmljTm9k
ZSogbm9kZSA9IHN0YXJ0Tm9kZTsKKyAgICBib29sIHRyYXZlcnNlU3RhcnRlZCA9IGZhbHNlOwor
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIEFTU0VSVChub2RlKTsKKyAgICAgICAgQVNTRVJU
KCFub2RlLT5pc0xpZmV0aW1lT3duZXIoKSk7CisKKyAgICAgICAgaWYgKHRyYXZlcnNlU3RhcnRl
ZCkgeworICAgICAgICAgICAgLy8gV2UgY2FtZSBiYWNrIHRvIHRoZSBzdGFydE5vZGUuCisgICAg
ICAgICAgICBpZiAobm9kZSA9PSBzdGFydE5vZGUpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgdHJhdmVyc2VTdGFydGVkID0gdHJ1ZTsKKworICAgICAgICBpZiAo
bm9kZS0+d3JhcHBlclJlZkNvdW50KCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBO
b2RlIHJlZmVyZW5jZWQgYnkgYSB3cmFwcGVyIG9iamVjdCwgd2Ugc2V0IGEgbGlmZXRpbWUgb3du
ZXIKKyAgICAgICAgICAgIC8vIG9uIHRoZSBOb2RlLgorICAgICAgICAgICAgLy8gZnByaW50Zihz
dGRlcnIsICJub2RlLT53cmFwcGVyUmVmQ291bnQoKT4wICVwIHdyYXBwZXJSZWZDb3VudD09JWRc
biIsIG5vZGUsIG5vZGUtPndyYXBwZXJSZWZDb3VudCgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNl
dExpZmV0aW1lT3duZXIoKTsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaXNSZWFj
aGFibGVGcm9tV3JhcHBlcigpICVwIGFmdGVyXG4iLCBzdGFydE5vZGUpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgp
KSB7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygp
KSB7CisgICAgICAgICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICAgICAg
ICAgICpyb290ID0gbm9kZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0
U2libGluZygpOworICAgIH0KKworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVG
cm9tV3JhcHBlcigpICVwIGFmdGVyXG4iLCBzdGFydE5vZGUpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwogLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgVHJlZVNoYXJlZC1kZXJpdmVkIGNsYXNzZXMs
IHdoaWNoIGhhdmUgYSAnTm9kZScgc3R5bGUgaW50ZXJmYWNlCiAvLyBUaGlzIGFwcGxpZXMgdG8g
J0NvbnRhaW5lck5vZGUnIGFuZCAnU1ZHRWxlbWVudEluc3RhbmNlJwogdGVtcGxhdGU8Y2xhc3Mg
R2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgogaW5saW5lIHZvaWQgcmVt
b3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVy
KQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAicmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5l
cigpICVwIGJlZm9yZVxuIiwgY29udGFpbmVyKTsKICAgICAvLyBMaXN0IG9mIG5vZGVzIHRvIGJl
IGRlbGV0ZWQuCiAgICAgR2VuZXJpY05vZGUqIGhlYWQgPSAwOwogICAgIEdlbmVyaWNOb2RlKiB0
YWlsID0gMDsKQEAgLTg4LDggKzE1Niw2IEBAIGlubGluZSB2b2lkIHJlbW92ZUFsbENoaWxkcmVu
SW5Db250YWluZXIoR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKICAgICBHZW5lcmlj
Tm9kZSogbjsKICAgICBHZW5lcmljTm9kZSogbmV4dDsKICAgICB3aGlsZSAoKG4gPSBoZWFkKSAh
PSAwKSB7Ci0gICAgICAgIEFTU0VSVChuLT5tX2RlbGV0aW9uSGFzQmVndW4pOwotCiAgICAgICAg
IG5leHQgPSBuLT5uZXh0U2libGluZygpOwogICAgICAgICBuLT5zZXROZXh0U2libGluZygwKTsK
IApAQCAtMTAwLDggKzE2NiwxNCBAQCBpbmxpbmUgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29u
dGFpbmVyKEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpCiAgICAgICAgIGlmIChuLT5o
YXNDaGlsZE5vZGVzKCkpCiAgICAgICAgICAgICBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxl
dGlvblF1ZXVlPEdlbmVyaWNOb2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lcj4oaGVhZCwgdGFpbCwg
c3RhdGljX2Nhc3Q8R2VuZXJpY05vZGVDb250YWluZXIqPihuKSk7CiAKKyNpZm5kZWYgTkRFQlVH
CisgICAgICAgIG4tPm1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYKKyAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJkZWxldGUobikgJXAgYmVmb3JlXG4iLCBuKTsKICAgICAgICAg
ZGVsZXRlIG47CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlKG4pICVwIGFmdGVy
XG4iLCBuKTsKICAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJyZW1vdmVBbGxDaGlsZHJl
bkluQ29udGFpbmVyKCkgJXAgYWZ0ZXJcbiIsIGNvbnRhaW5lcik7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KQEAgLTEyNCw5ICsx
OTYsMTAgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJp
Y05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyLCBib29sIGRpc3BhdGNoUmVtb3ZhbE5v
dGlmaWNhdGlvbj4KICAgICBzdHJ1Y3QgTm9kZVJlbW92YWxEaXNwYXRjaGVyIHsKLSAgICAgICAg
c3RhdGljIHZvaWQgZGlzcGF0Y2goR2VuZXJpY05vZGUqLCBHZW5lcmljTm9kZUNvbnRhaW5lciop
CisgICAgICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoKEdlbmVyaWNOb2RlKiBub2RlLCBHZW5lcmlj
Tm9kZUNvbnRhaW5lciopCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIG5vLW9wLCBieSBkZWZh
dWx0CisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlJlbW92YWxEaXNwYXRjaGVyKCkg
JXBcbiIsIG5vZGUpOworICAgICAgICAgICAgbm9kZS0+c2V0TGlmZXRpbWVPd25lcigpOwogICAg
ICAgICB9CiAgICAgfTsKIApAQCAtMTM3LDggKzIxMCwxNSBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7
CiAgICAgICAgICAgICAvLyBDbGVhbiB1cCBhbnkgVHJlZVNjb3BlIHRvIGEgcmVtb3ZlZCB0cmVl
LgogICAgICAgICAgICAgaWYgKERvY3VtZW50KiBjb250YWluZXJEb2N1bWVudCA9IGNvbnRhaW5l
ci0+b3duZXJEb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5lckRvY3VtZW50LT5h
ZG9wdElmTmVlZGVkKG5vZGUpOwotICAgICAgICAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkK
LSAgICAgICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoY29udGFpbmVyKS5ub3Rp
Znkobm9kZSk7CisKKyAgICAgICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBub3RpZnkoKSB3aWxsIHNldCBhIGxpZmV0aW1lIG93bmVyIG9mIHRoZSBy
ZW1vdmVkIFRyZWVTY29wZS4KKyAgICAgICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZp
ZXIoY29udGFpbmVyKS5ub3RpZnkobm9kZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJSZW1vdmFsRGlzcGF0Y2hlcigpICVwIGluRG9jdW1lbnQoKVxuIiwgbm9k
ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5vZGUtPnNldExpZmV0
aW1lT3duZXIoKTsKKyAgICAgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlJlbW92YWxE
aXNwYXRjaGVyKCkgJXAgIWluRG9jdW1lbnQoKVxuIiwgbm9kZSk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9OwogCkBAIC0xNjUsMTAgKzI0NSw4IEBAIG5hbWVzcGFjZSBQcml2YXRl
IHsKICAgICAgICAgICAgIG4tPnNldE5leHRTaWJsaW5nKDApOwogICAgICAgICAgICAgbi0+c2V0
UGFyZW50T3JIb3N0Tm9kZSgwKTsKIAorICAgICAgICAgICAgQVNTRVJUKCFuLT53cmFwcGVyUmVm
Q291bnQoKSk7CiAgICAgICAgICAgICBpZiAoIW4tPnJlZkNvdW50KCkpIHsKLSNpZm5kZWYgTkRF
QlVHCi0gICAgICAgICAgICAgICAgbi0+bV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKLSNlbmRp
ZgogICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgbGlzdCBvZiBub2RlcyB0
byBiZSBkZWxldGVkLgogICAgICAgICAgICAgICAgIC8vIFJldXNlIHRoZSBuZXh0U2libGluZyBw
b2ludGVyIGZvciB0aGlzIHB1cnBvc2UuCiAgICAgICAgICAgICAgICAgaWYgKHRhaWwpCkBAIC0x
NzksNiArMjU3LDcgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogICAgICAgICAgICAgICAgIHRhaWwg
PSBuOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8R2VuZXJp
Y05vZGU+IHByb3RlY3Qobik7IC8vIHJlbW92ZWRGcm9tRG9jdW1lbnQgbWF5IHJlbW92ZSByZW1v
dmUgYWxsIHJlZmVyZW5jZXMgdG8gdGhpcyBub2RlLgorICAgICAgICAgICAgICAgIC8vIGRpc3Bh
dGNoKCkgc2V0cyBhIGxpZmV0aW1lIG93bmVyIG9mIHRoZSByZW1vdmVkIFRyZWVTY29wZS4KICAg
ICAgICAgICAgICAgICBOb2RlUmVtb3ZhbERpc3BhdGNoZXI8R2VuZXJpY05vZGUsIEdlbmVyaWNO
b2RlQ29udGFpbmVyLCBTaG91bGREaXNwYXRjaFJlbW92YWxOb3RpZmljYXRpb248R2VuZXJpY05v
ZGU+Ojp2YWx1ZT46OmRpc3BhdGNoKG4sIGNvbnRhaW5lcik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTE5Miw5ICsyNzEsMTYgQEAgbmFtZXNwYWNlIFByaXZhdGUgewogaW5saW5lIHZv
aWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1
bWVudChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChtX2luc2VydGlvblBvaW50LT5pbkRvY3Vt
ZW50KCkpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZUluc2VydGVkSW50b0Rv
Y3VtZW50KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxu
Iiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpOworICAgIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgbm9k
ZS0+dW5zZXRMaWZldGltZU93bmVyKCk7CisKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdChub2Rl
KTsKLSAgICBpZiAoTm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeVN1YnRyZWVJbnNl
cnRpb25zID09IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlvblBvaW50KSkKLSAgICAgICAg
bV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7CisgICAgaWYg
KE5vZGU6Okluc2VydGlvblNob3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBu
b2RlLT5pbnNlcnRlZEludG8obV9pbnNlcnRpb25Qb2ludCkpIHsKKyAgICAgICAgaWYgKCFtX3Bv
c3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQorICAgICAgICAgICAgbV9wb3N0SW5zZXJ0
aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPE5vZGU+
ID4oKSk7CisgICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMtPmFwcGVu
ZChub2RlKTsKKyAgICB9CiAgICAgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAg
ICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvRG9jdW1lbnQodG9Db250YWluZXJOb2RlKG5v
ZGUpKTsKIH0KQEAgLTIwMiwxMCArMjg4LDE3IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2Vy
dGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kCiBp
bmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9kZUluc2VydGVk
SW50b1RyZWUoQ29udGFpbmVyTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIW1faW5zZXJ0aW9u
UG9pbnQtPmluRG9jdW1lbnQoKSk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJub3RpZnlOb2Rl
SW5zZXJ0ZWRJbnRvVHJlZSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRP
ckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwg
bm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBpZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisg
ICAgICAgIG5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigpOworCiAgICAgZm9yYmlkRXZlbnREaXNw
YXRjaCgpOwogCi0gICAgaWYgKE5vZGU6Okluc2VydGlvblNob3VsZENhbGxEaWROb3RpZnlTdWJ0
cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZEludG8obV9pbnNlcnRpb25Qb2ludCkpCi0g
ICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMuYXBwZW5kKG5vZGUpOwor
ICAgIGlmIChOb2RlOjpJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlv
bnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpKSB7CisgICAgICAgIGlm
ICghbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cykKKyAgICAgICAgICAgIG1fcG9z
dEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+KCkpOworICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
LT5hcHBlbmQobm9kZSk7CisgICAgfQogICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9U
cmVlKG5vZGUpOwogCiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CkBAIC0yMTgsOCArMzExLDEy
IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlJbnNlcnRl
ZEludG9Eb2N1bWVudChOb2RlKiBub2RlKQogCiBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFyZW50
PSVwIHBhcmVudE9ySG9zdD0lcCBiZWZvcmVcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5v
ZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKICAgICBBU1NFUlQo
IWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAKKyAgICBpZiAobm9kZS0+aXNTaGFkb3dSb290
KCkpCisgICAgICAgIG1fdHJlZVNjb3BlRGVwdGggPSAxOworCiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUobm9kZS0+
ZG9jdW1lbnQoKSwgbm9kZSk7CiAjZW5kaWYKQEAgLTIzMSwxNSArMzI4LDIzIEBAIGlubGluZSB2
b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKICAgICAg
ICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KG5vZGUpOwogICAgIGVsc2UgaWYgKG5v
ZGUtPmlzQ29udGFpbmVyTm9kZSgpKQogICAgICAgICBub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJl
ZSh0b0NvbnRhaW5lck5vZGUobm9kZSkpOworICAgIGVsc2UgaWYgKCFtX3RyZWVTY29wZURlcHRo
KQorICAgICAgICBub2RlLT51bnNldExpZmV0aW1lT3duZXIoKTsKIAotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5zaXplKCk7ICsr
aSkKLSAgICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0c1tpXS0+ZGlkTm90
aWZ5U3VidHJlZUluc2VydGlvbnMobV9pbnNlcnRpb25Qb2ludCk7CisgICAgaWYgKG1fcG9zdElu
c2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLT5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgICgqbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cylbaV0tPmRpZE5v
dGlmeVN1YnRyZWVJbnNlcnRpb25zKG1faW5zZXJ0aW9uUG9pbnQpOworICAgIH0KKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIkluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkoKSAlcCBpbnNlcnRpb25Q
b2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwIGFmdGVyXG4iLCBub2RlLCBtX2luc2Vy
dGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7
CiB9CiAKLQogaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChtX2luc2VydGlv
blBvaW50LT5pbkRvY3VtZW50KCkpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9k
ZVJlbW92YWxGcm9tRG9jdW1lbnQoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFy
ZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2Rl
KCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7CisgICAgaWYgKCFtX3RyZWVTY29wZURlcHRo
KQorICAgICAgICBjaGVja0lmTGlmZXRpbWVPd25lcihub2RlKTsKKwogICAgIG5vZGUtPnJlbW92
ZWRGcm9tKG1faW5zZXJ0aW9uUG9pbnQpOwogCiAgICAgaWYgKG5vZGUtPmlzQ29udGFpbmVyTm9k
ZSgpKQpAQCAtMjQ5LDYgKzM1NCwxMCBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90
aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KE5vZGUqIG5vZGUpCiBpbmxpbmUg
dm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUo
Q29udGFpbmVyTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQtPmlu
RG9jdW1lbnQoKSk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJub3RpZnlOb2RlUmVtb3ZhbEZy
b21UcmVlKCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxu
Iiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJl
bnRPckhvc3ROb2RlKCkpOworICAgIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgY2hl
Y2tJZkxpZmV0aW1lT3duZXIobm9kZSk7CisKICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CiAK
ICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2luc2VydGlvblBvaW50KTsKQEAgLTI1NywxMyArMzY2
LDQ5IEBAIGlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJl
bW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKiBuCiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7
CiB9CiAKLWlubGluZSB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KE5vZGUq
IG5vZGUpCitpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShOb2Rl
KiBub2RlLCBib29sIGluc2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1bikKIHsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIlJlbW92YWxOb3RpZmllcjo6bm90aWZ5KCkgJXAgaW5zZXJ0aW9uUG9p
bnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcCBiZWZvcmVcbiIsIG5vZGUsIG1faW5zZXJ0
aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsK
KyAgICBpZiAobm9kZS0+aXNTaGFkb3dSb290KCkpCisgICAgICAgIG1fdHJlZVNjb3BlRGVwdGgg
PSAxOworCiAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkgewogICAgICAgICBub3RpZnlOb2Rl
UmVtb3ZlZEZyb21Eb2N1bWVudChub2RlKTsKICAgICAgICAgbm9kZS0+ZG9jdW1lbnQoKS0+bm90
aWZ5UmVtb3ZlUGVuZGluZ1NoZWV0SWZOZWVkZWQoKTsKICAgICB9IGVsc2UgaWYgKG5vZGUtPmlz
Q29udGFpbmVyTm9kZSgpKQogICAgICAgICBub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKHRvQ29u
dGFpbmVyTm9kZShub2RlKSk7CisgICAgZWxzZSBpZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAg
ICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUpOworCisgICAgaWYgKCFtX2xpZmV0aW1lT3du
ZXJGb3VuZCAmJiAhbm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgLy8gSWYgYSBsaWZl
dGltZSBvd25lciBpcyBub3QgZm91bmQgaW4gdGhlIHJlbW92ZWQgVHJlZVNjb3BlLCBpdAorICAg
ICAgICAvLyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZSBsaWZldGltZSBvd25l
ciBpbiB0aGUgb3JpZ2luYWwKKyAgICAgICAgLy8gVHJlZVNjb3BlLiBTbyB3ZSBqdXN0IGNhbGwg
Z2NUcmVlKCkgZm9yIHRoZSByb290IG5vZGUgb2YgdGhlIHJlbW92ZWQKKyAgICAgICAgLy8gVHJl
ZVNjb3BlLCBpbiBvcmRlciB0byBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YgdGhlIHJlbW92
ZWQgVHJlZVNjb3BlLgorICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fbGlmZXRpbWVPd25l
ckZvdW5kPWZhbHNlICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9
JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+
cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICAgICAgQVNTRVJUKG5vZGUtPnJlZkNvdW50KCkpOwor
ICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgfSBlbHNlIGlmIChtX2xpZmV0
aW1lT3duZXJGb3VuZCAmJiAhaW5zZXJ0aW9uUG9pbnREZWxldGlvbkhhc0JlZ3VuKSB7CisgICAg
ICAgIC8vIElmIGEgbGlmZXRpbWUgb3duZXIgaXMgZm91bmQgaW4gdGhlIHJlbW92ZWQgVHJlZVNj
b3BlLCBpdAorICAgICAgICAvLyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBubyBsaWZldGltZSBv
d25lciBpbiB0aGUgb3JpZ2luYWwgVHJlZVNjb3BlLgorICAgICAgICAvLyBTbyB3ZSBjYWxsIGdj
VHJlZSgpIGZvciB0aGUgaW5zZXJ0aW9uIHBvaW50IG9mIHRoZSBvcmlnaW5hbAorICAgICAgICAv
LyBUcmVlU2NvcGUsIGluIG9yZGVyIHRvIHNldCBhIG5ldyBsaWZldGltZSBvd25lciBvZiB0aGUg
b3JpZ2luYWwgVHJlZVNjb3BlLgorICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm1fbGlmZXRp
bWVPd25lckZvdW5kPXRydWUgIWluc2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1biAlcCBpbnNl
cnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2luc2Vy
dGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSk7
CisgICAgICAgIG1faW5zZXJ0aW9uUG9pbnQtPmdjVHJlZSgpOworICAgIH0KKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgIlJlbW92YWxOb3RpZmllcjo6bm90aWZ5KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9
JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcCBhZnRlclxuIiwgbm9kZSwgbV9pbnNlcnRpb25Q
b2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworfQor
CitpbmxpbmUgdm9pZCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6OmNoZWNrSWZMaWZldGltZU93
bmVyKE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFtX3RyZWVTY29wZURlcHRoKTsKKyAgICBp
ZiAoVU5MSUtFTFkobm9kZS0+aXNMaWZldGltZU93bmVyKCkpKSB7CisgICAgICAgIC8vIE9uZSBU
cmVlU2NvcGUgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0IG1vc3Qgb25lIGxpZmV0aW1lIG93bmVy
LAorICAgICAgICAvLyBzbyBtX2xpZmV0aW1lT3duZXJGb3VuZCBzaG91bGQgbm90IGJlY29tZSB0
cnVlIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBBU1NFUlQoIW1fbGlmZXRpbWVPd25lckZvdW5k
KTsKKyAgICAgICAgbV9saWZldGltZU93bmVyRm91bmQgPSB0cnVlOworICAgICAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgIm5vZGUtPmlzTGlmZXRpbWVPd25lcigpPT10cnVlICVwXG4iLCBub2RlKTsK
KyAgICB9CiB9CiAKIGNsYXNzIENoaWxkRnJhbWVEaXNjb25uZWN0b3IgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggNDlkMDBjNWJhYmYwNTM0MWFmYjViNTYwZGE4MDA0M2FiZThhNzczYi4u
NzczYmYxNzhiN2FiMTAwYjg5ZmEyZWVkYzc4ZWU3YzNlZjlhNGRmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC02ODgsNiArNjg4LDcgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAKIHZv
aWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
IkRvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAgICAgQVNT
RVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIGlmIChtX2d1YXJkUmVmQ291bnQpIHsKICAg
ICAgICAgLy8gSWYgcmVtb3ZpbmcgYSBjaGlsZCByZW1vdmVzIHRoZSBsYXN0IHNlbGYtb25seSBy
ZWYsIHdlIGRvbid0CkBAIC03MTUsNiArNzE2LDggQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExh
c3RSZWYoKQogICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbigpIGRvZXNuJ3QgYWx3YXlzIHVu
cmVnaXN0ZXIgSURzLAogICAgICAgICAvLyBzbyB0ZWFyIGRvd24gc2NvcGUgaW5mb3JtYXRpb24g
dXBmcm9udCB0byBhdm9pZCBoYXZpbmcgc3RhbGUgcmVmZXJlbmNlcyBpbiB0aGUgbWFwLgogICAg
ICAgICBkZXN0cm95VHJlZVNjb3BlRGF0YSgpOworCisgICAgICAgIC8vIEZJWE1FOiBLZWVwIGFs
bCB0aGUgTm9kZXMgYWxpdmUgdW50aWwgbV9ndWFyZFJlZkNvdW50IGJlY29tZXMgMC4KICAgICAg
ICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAogICAgICAgICBtX21hcmtlcnMtPmRldGFjaCgpOwpA
QCAtNzI4LDE3ICs3MzEsMTYgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAg
ICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jbGVhcigpOwogI2VuZGlmCiAKLSNp
Zm5kZWYgTkRFQlVHCi0gICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7
Ci0jZW5kaWYKLQogICAgICAgICBndWFyZERlcmVmKCk7CiAgICAgfSBlbHNlIHsKLSNpZm5kZWYg
TkRFQlVHIAotICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOyAKLSNlbmRpZiAKKyNp
Zm5kZWYgTkRFQlVHCisgICAgICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYK
KyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUodGhpcykgJXAgYmVmb3JlXG4iLCB0
aGlzKTsKICAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAi
ZGVsZXRlKHRoaXMpICVwIGFmdGVyXG4iLCB0aGlzKTsKICAgICB9CisgICAgLy8gZnByaW50Zihz
dGRlcnIsICJEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9
CiAKIEVsZW1lbnQqIERvY3VtZW50OjpnZXRFbGVtZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcm
IGlkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAyODcyZTVjMmFhOWIzNjI5YTU0NjBj
MTZiMjhhNGRjZmE0ZmZmZDk4Li5jYzVlN2I5ZTY0YTcxNDM5YjZmOWYzNDhmM2RlNDdmYmRiYWIy
MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjQyLDExICsyNDIsMTMgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICAtLW1f
Z3VhcmRSZWZDb3VudDsKLSAgICAgICAgaWYgKCFtX2d1YXJkUmVmQ291bnQgJiYgIXJlZkNvdW50
KCkpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX2d1YXJkUmVmQ291bnQgJiYgIXJlZkNvdW50
KCkpKSB7CisgICAgICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImd1YXJkRGVyZWYoKSBkZWxl
dGUodGhpcykgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAg
ICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCiAgICAgICAgICAgICBkZWxldGUg
dGhpczsKKyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZ3VhcmREZXJlZigpIGRlbGV0
ZSh0aGlzKSAlcCBhZnRlclxuIiwgdGhpcyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyMDIs
NyArMTIwNCw3IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZl
V3JpdGVDb3VudEluY3JlbWVudGVyOwogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwotICAg
IAorCiAgICAgdm9pZCBkZXRhY2hQYXJzZXIoKTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKkFyZ3Vt
ZW50c0NhbGxiYWNrKShjb25zdCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1
ZVN0cmluZywgRG9jdW1lbnQqLCB2b2lkKiBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRl
eCA3MzA1MmFhZTM2MWUxZTQ0NTk3YmUxNmQwZWNjMWU0Y2I1MDdkYmRkLi45ZDA4YzY5NzBiM2U2
NGJlNGNiOTA0MWE2MmE5MGM4MWRmYTg3NDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0x
NTgyLDYgKzE1ODIsNyBAQCBDU1NTdHlsZURlY2xhcmF0aW9uICpFbGVtZW50OjpzdHlsZSgpCiAK
IHZvaWQgRWxlbWVudDo6Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pCiB7Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50Ojpmb2N1cygpICVwXG4iLCB0aGlzKTsKICAg
ICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFNoYWRvdy5jcHAKaW5kZXggYWViNWI1YjQ3NWIyMTliYzU3ZGM4NWVmMmU3YjgzMmFlZTg4
OTNmYy4uYjIzMTdhYTgxODIzZDE5MzA4ZTFkOGViZGYxYzM2ODA5MjI3MTFiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcApAQCAtODEsNiArODEsNyBAQCB2b2lkIEVsZW1lbnRT
aGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hhZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFk
b3dSb290PiBzaAogICAgIG1fc2hhZG93Um9vdHMucHVzaChzaGFkb3dSb290LmdldCgpKTsKICAg
ICBzZXRWYWxpZGl0eVVuZGV0ZXJtaW5lZCgpOwogICAgIGludmFsaWRhdGVEaXN0cmlidXRpb24o
c2hhZG93SG9zdCk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJFbGVtZW50U2hhZG93OjphZGRT
aGFkb3dSb290KCkgc2hhZG93Um9vdD0lcCBzaGFkb3dIb3N0PSVwXG4iLCBzaGFkb3dSb290Lmdl
dCgpLCBzaGFkb3dIb3N0KTsKICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcihzaGFkb3dI
b3N0KS5ub3RpZnkoc2hhZG93Um9vdC5nZXQoKSk7CiAKICAgICAvLyBGSVhNRSg5NDkwNSk6IFNo
YWRvd0hvc3Qgc2hvdWxkIGJlIHJlYXR0YWNoZWQgZHVyaW5nIHJlY2FsY1N0eWxlLgpAQCAtOTQs
NiArOTUsOSBAQCB2b2lkIEVsZW1lbnRTaGFkb3c6OmFkZFNoYWRvd1Jvb3QoRWxlbWVudCogc2hh
ZG93SG9zdCwgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaAogCiB2b2lkIEVsZW1lbnRTaGFkb3c6
OnJlbW92ZUFsbFNoYWRvd1Jvb3RzKCkKIHsKKyAgICBpZiAobV9zaGFkb3dSb290cy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIC8vIERvbnQgcHJvdGVjdCB0aGlzIHJlZiBjb3Vu
dC4KICAgICBFbGVtZW50KiBzaGFkb3dIb3N0ID0gaG9zdCgpOwogCkBAIC0xMDksNyArMTEzLDgg
QEAgdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFkb3dSb290cygpCiAgICAgICAgIG9s
ZFJvb3QtPnNldFByZXYoMCk7CiAgICAgICAgIG9sZFJvb3QtPnNldE5leHQoMCk7CiAgICAgICAg
IHNoYWRvd0hvc3QtPmRvY3VtZW50KCktPmFkb3B0SWZOZWVkZWQob2xkUm9vdC5nZXQoKSk7Ci0g
ICAgICAgIENoaWxkTm9kZVJlbW92YWxOb3RpZmllcihzaGFkb3dIb3N0KS5ub3RpZnkob2xkUm9v
dC5nZXQoKSk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRvdzo6cmVt
b3ZlQWxsU2hhZG93Um9vdHMoKSBzaGFkb3dSb290PSVwIHNoYWRvd0hvc3Q9JXBcbiIsIG9sZFJv
b3QuZ2V0KCksIHNoYWRvd0hvc3QpOworICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIo
c2hhZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCksIHRydWUpOwogICAgIH0KIAogICAgIGlu
dmFsaWRhdGVEaXN0cmlidXRpb24oc2hhZG93SG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNzY3
NWIxNzM1NGVjMDNlNTU3NTQ1MWE5ZjM0M2Y1M2NjYTMwYmUyNS4uM2I3Njk0MDdkMGNmNzZjMzI5
YmZlNGY1ZTFhYTU2YzE4NWQzNTBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzk1LDYgKzM5NSw3
IEBAIHZvaWQgTm9kZTo6dHJhY2tGb3JEZWJ1Z2dpbmcoKQogCiBOb2RlOjp+Tm9kZSgpCiB7Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJ+Tm9kZSgpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAjaWZu
ZGVmIE5ERUJVRwogICAgIEhhc2hTZXQ8Tm9kZSo+OjppdGVyYXRvciBpdCA9IGlnbm9yZVNldC5m
aW5kKHRoaXMpOwogICAgIGlmIChpdCAhPSBpZ25vcmVTZXQuZW5kKCkpCkBAIC00MjYsNiArNDI3
LDcgQEAgTm9kZTo6fk5vZGUoKQogICAgICAgICBkb2MtPmd1YXJkRGVyZWYoKTsKIAogICAgIElu
c3BlY3RvckNvdW50ZXJzOjpkZWNyZW1lbnRDb3VudGVyKEluc3BlY3RvckNvdW50ZXJzOjpOb2Rl
Q291bnRlcik7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+Tm9kZSgpICVwIGFmdGVyXG4iLCB0
aGlzKTsKIH0KIAogdm9pZCBOb2RlOjpzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCkBA
IC0yODIzLDYgKzI4MjUsOCBAQCBQYXNzUmVmUHRyPFByb3BlcnR5Tm9kZUxpc3Q+IE5vZGU6OnBy
b3BlcnR5Tm9kZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogLy8gZGVsZXRlIGEgTm9kZSBhdCBl
YWNoIGRlcmVmIGNhbGwgc2l0ZS4KIHZvaWQgTm9kZTo6cmVtb3ZlZExhc3RSZWYoKQogeworICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6cmVtb3ZlZExhc3RSZWYoKSAlcCBiZWZvcmVcbiIs
IHRoaXMpOworICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAvLyBBbiBleHBs
aWNpdCBjaGVjayBmb3IgRG9jdW1lbnQgaGVyZSBpcyBiZXR0ZXIgdGhhbiBhIHZpcnR1YWwgZnVu
Y3Rpb24gc2luY2UgaXQgaXMKICAgICAvLyBmYXN0ZXIgZm9yIG5vbi1Eb2N1bWVudCBub2Rlcywg
YW5kIGJlY2F1c2UgdGhlIGNhbGwgdG8gcmVtb3ZlZExhc3RSZWYgdGhhdCBpcyBpbmxpbmVkCiAg
ICAgLy8gYXQgYWxsIGRlcmVmIGNhbGwgc2l0ZXMgaXMgc21hbGxlciBpZiBpdCdzIGEgbm9uLXZp
cnR1YWwgZnVuY3Rpb24uCkBAIC0yODMzLDcgKzI4MzcsMzQgQEAgdm9pZCBOb2RlOjpyZW1vdmVk
TGFzdFJlZigpCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7
CiAjZW5kaWYKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVc
biIsIHRoaXMpOwogICAgIGRlbGV0ZSB0aGlzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVs
ZXRlKHRoaXMpICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIk5v
ZGU6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworfQorCisvLyBXaGVuIGdj
VHJlZSgpIGlzIGNhbGxlZCwgdGhlIFRyZWVTY29wZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgbm8g
bGlmZXRpbWUgb3duZXIuCisvLyBnY1RyZWUoKSBtdXN0IHJlY2xhaW0gYWxsIE5vZGVzIGluIHRo
ZSBUcmVlU2NvcGUgb3Igc2V0IGEgbmV3IGxpZmV0aW1lIG93bmVyIG9mCisvLyB0aGUgVHJlZVNj
b3BlLgordm9pZCBOb2RlOjpnY1RyZWUoKQoreworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9k
ZTo6Z2NUcmVlKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBOb2RlKiByb290ID0gMDsKKyAg
ICBpZiAoaXNSZWFjaGFibGVGcm9tV3JhcHBlcjxOb2RlPih0aGlzLCAmcm9vdCkpIHsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgdHJ1ZVxu
IiwgdGhpcyk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6Z2NUcmVlKCkgJXAg
YWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVChyb290
KTsKKyAgICBpZiAoIXJvb3QtPnBhcmVudE9ySG9zdE5vZGUoKSAmJiAhcm9vdC0+cmVmQ291bnQo
KSkgeworICAgICAgICBBU1NFUlQoIXJvb3QtPndyYXBwZXJSZWZDb3VudCgpKTsKKyAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgZmFsc2UgIXJv
b3QtPnBhcmVudE9ySG9zdE5vZGUoKSAmJiAhcm9vdC0+cmVmQ291bnQoKVxuIiwgdGhpcyk7Cisg
ICAgICAgIHJvb3QtPnJlbW92ZWRMYXN0UmVmKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgJXAgZmFsc2Ugb3RoZXJ3
aXNlIHJvb3QtPnBhcmVudE9ySG9zdE5vZGUoKT0lcCByb290LT5yZWZDb3VudCgpPSVkXG4iLCB0
aGlzLCByb290LT5wYXJlbnRPckhvc3ROb2RlKCksIHJvb3QtPnJlZkNvdW50KCkpOworICAgICAg
ICByb290LT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJy
LCAiTm9kZTo6Z2NUcmVlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIE5vZGU6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCAyMTRkYTQwMzkzMzRjOWFjYTExYjgxYWQyZjYzZDI4MTBmNzQ0ZWRj
Li5lNjk1YTM4NzJiZWQ5ZTU5ZjFkZGI4MzkxODMwNTc1OThlNzc1MGVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTM3NCw2ICszNzQsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSgp
OwogICAgIGJvb2wgaXNDb250ZW50UmljaGx5RWRpdGFibGUoKTsKIAorICAgIHZvaWQgcmVtb3Zl
ZExhc3RSZWYoKTsKKyAgICB2b2lkIGdjVHJlZSgpOworCiAgICAgdm9pZCBpbnNwZWN0KCk7CiAK
ICAgICBib29sIHJlbmRlcmVySXNFZGl0YWJsZShFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlID0g
Q29udGVudElzRWRpdGFibGUpIGNvbnN0CkBAIC03NTIsOCArNzU1LDYgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVNoYXJlZDxOb2RlLCBDb250YWluZXJOb2Rl
PjsKIAotICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKLQogICAgIC8vIFRoZXNlIEFQSSBzaG91
bGQgYmUgb25seSB1c2VkIGZvciBhIHRyZWUgc2NvcGUgbWlncmF0aW9uLgogICAgIC8vIHNldFRy
ZWVTY29wZSgpIHJldHVybnMgTm9kZVJhcmVEYXRhIHRvIHNhdmUgZXh0cmEgbm9kZVJhcmVEYXRh
KCkgaW52b2NhdGlvbnMgb24gdGhlIGNhbGxlciBzaXRlLgogICAgIE5vZGVSYXJlRGF0YSogc2V0
VHJlZVNjb3BlKFRyZWVTY29wZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVHJlZVNoYXJlZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJlZC5oCmlu
ZGV4IDZmNjUyZGI2NDk3ZGJmNWQ5ZDQ2YmI1OGIzOWIzMzJkNDMxYTYwMjEuLjljMjIyZmY3ZGQ1
NWEzMzM4MGU1NjcwNmI4YzRkOGY1MzJhNmQ1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RyZWVTaGFyZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVl
U2hhcmVkLmgKQEAgLTMyLDI3ICszMiw0NiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwg
dHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQ7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IHZvaWQgYWRvcHRlZChUcmVl
U2hhcmVkPE5vZGVUeXBlLCBQYXJlbnROb2RlVHlwZT4qKTsKICNlbmRpZgogCisvLyBUaGUgYWxn
b3JpdGhtIGd1YXJhbnRlZXMgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOgorLy8KKy8vICAgICAt
IE91dHNpZGUgb2YgZ2NUcmVlKCkgKG5vcm1hbCBjYXNlcyksIGVhY2ggVHJlZVNjb3BlIGhhcyBl
eGFjdGx5IG9uZQorLy8gICAgICAgbGlmZXRpbWUgb3duZXIuIFRoZSBsaWZldGltZSBvd25lciBp
cyBzZXQgb24gdGhlIHJvb3QgTm9kZSBvZiB0aGUgVHJlZVNjb3BlCisvLyAgICAgICBvciBhbnkg
Tm9kZSB0aGF0IGlzIHJlZmVyZW5jZWQgYnkgYSB3cmFwcGVyIG9iamVjdC4KKy8vCisvLyAgICAg
LSBJbnNpZGUgb2YgZ2NUcmVlKCksIHRoZSBUcmVlU2NvcGUgaGFzIG5vIGxpZmV0aW1lIG93bmVy
LiBnY1RyZWUoKSByZWNsYWltcworLy8gICAgICAgYWxsIE5vZGVzIGluIHRoZSBUcmVlU2NvcGUg
b3Igc2V0cyBhIG5ldyBsaWZldGltZSBvd25lciBvZiB0aGUgVHJlZVNjb3BlLgorLy8KKy8vIFNl
ZSBhIGRlc2lnbiBkb2N1bWVudCAoaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5v
cmcvZG9jdW1lbnQvZC8xSGNhZVUtNzV4dWtNWVNVYXNrZURvSEwtTDBGTnVDREl1a3ZQbU9oZVk4
US9lZGl0KSBmb3IgbW9yZSBkZXRhaWxzLgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwg
dHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFRyZWVTaGFyZWQpOwogcHJvdGVjdGVkOgogICAgIFRyZWVTaGFyZWQoKQog
ICAgICAgICA6IG1fcGFyZW50KDApCi0gICAgICAgICwgbV9yZWZDb3VudCgxKQorICAgICAgICAs
IG1fbm9uV3JhcHBlclJlZkNvdW50KDEpCisgICAgICAgICwgbV9saWZldGltZU93bmVyKDEpCisg
ICAgICAgIC8vIEEgbmV3bHkgY3JlYXRlZCBOb2RlIGJlY29tZXMgYSBsaWZldGltZSBvd25lciwg
YmVjYXVzZSB0aGlzIE5vZGUgaXMgdGhlIG9ubHkKKyAgICAgICAgLy8gTm9kZSBpbiB0aGUgRE9N
IHRyZWUuCisgICAgICAgICwgbV93cmFwcGVyUmVmQ291bnQoMCkKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgICwgbV9hZG9wdGlvbklzUmVxdWlyZWQodHJ1ZSkKICNlbmRpZgogICAgIHsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJUcmVlU2hhcmVkKCkgJXBcbiIsIHRoaXMpOwogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoaXNMaWZldGltZU93bmVy
KCkpOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gZmFsc2U7
Ci0gICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gZmFsc2U7CiAjZW5kaWYKICAg
ICB9CiAKICAgICB+VHJlZVNoYXJlZCgpCiAgICAgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIn5UcmVlU2hhcmVkKCkgJXBcbiIsIHRoaXMpOwogICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgICAgICBBU1NFUlQoIW1fcmVmQ291bnQpOworICAgICAgICBBU1NFUlQoIXJl
ZkNvdW50KCkpOworICAgICAgICBBU1NFUlQoIXdyYXBwZXJSZWZDb3VudCgpKTsKKyAgICAgICAg
QVNTRVJUKCFpc0xpZmV0aW1lT3duZXIoKSk7CiAgICAgICAgIEFTU0VSVChtX2RlbGV0aW9uSGFz
QmVndW4pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKICAgICB9CkBA
IC02Miw0MiArODEsOTIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwotICAgICAgICBB
U1NFUlQoIW1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICAgICAgQVNTRVJUKCFtX2Fk
b3B0aW9uSXNSZXF1aXJlZCk7Ci0gICAgICAgICsrbV9yZWZDb3VudDsKKyAgICAgICAgKyttX25v
bldyYXBwZXJSZWZDb3VudDsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJyZWYoKSAlcCBy
ZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291bnQ9JWRcbiIsIHRoaXMsIG1fbm9uV3JhcHBlclJlZkNv
dW50LCBtX3dyYXBwZXJSZWZDb3VudCk7CisgICAgfQorCisgICAgdm9pZCB3cmFwcGVyUmVmKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVCgh
bV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgQVNTRVJUKCFtX2Fkb3B0aW9uSXNSZXF1aXJl
ZCk7CisgICAgICAgICsrbV93cmFwcGVyUmVmQ291bnQ7CisgICAgICAgIC8vIGZwcmludGYoc3Rk
ZXJyLCAid3JhcHBlclJlZigpICVwIHJlZkNvdW50PSVkIHdyYXBwZXJSZWZDb3VudD0lZFxuIiwg
dGhpcywgbV9ub25XcmFwcGVyUmVmQ291bnQsIG1fd3JhcHBlclJlZkNvdW50KTsKICAgICB9CiAK
ICAgICB2b2lkIGRlcmVmKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgICAgIEFTU0VSVChtX3JlZkNvdW50ID49IDApOwogICAgICAgICBBU1NFUlQoIW1fZGVs
ZXRpb25IYXNCZWd1bik7Ci0gICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rp
b24pOwogICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKLSAgICAgICAgaWYg
KC0tbV9yZWZDb3VudCA8PSAwICYmICFtX3BhcmVudCkgewotI2lmbmRlZiBOREVCVUcKLSAgICAg
ICAgICAgIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uID0gdHJ1ZTsKLSNlbmRpZgotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Tm9kZVR5cGUqPih0aGlzKS0+cmVtb3ZlZExhc3RSZWYoKTsKKyAg
ICAgICAgLS1tX25vbldyYXBwZXJSZWZDb3VudDsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJkZXJlZigpICVwIHJlZkNvdW50PSVkIHdyYXBwZXJSZWZDb3VudD0lZFxuIiwgdGhpcywgbV9u
b25XcmFwcGVyUmVmQ291bnQsIG1fd3JhcHBlclJlZkNvdW50KTsKKyAgICAgICAgLy8gVGhlIG9y
ZGVyIG9mIGNvbmRpdGlvbnMgaXMgaW1wb3J0YW50IGZvciBwZXJmb3JtYW5jZSB0byBoaW50IHRv
IHRoZSBjb21waWxlciB0aGF0CisgICAgICAgIC8vIHRoZXNlIHRocmVlIGNvbmRpdGlvbnMgY2Fu
IGJlIG9wdGltaXplZCB0byBvbmUgMzItYml0IGludGVnZXIgY2hlY2suCisgICAgICAgIGlmIChV
TkxJS0VMWSghbV9ub25XcmFwcGVyUmVmQ291bnQgJiYgbV9saWZldGltZU93bmVyID09IDEgJiYg
IW1fd3JhcHBlclJlZkNvdW50KSkgeworICAgICAgICAgICAgbV9saWZldGltZU93bmVyID0gMDsK
KyAgICAgICAgICAgIC8vIGdjVHJlZSgpIHJlY2xhaW1zIGFsbCBOb2RlcyBpbiB0aGUgVHJlZVNj
b3BlIG9yIHNldHMgYSBuZXcgbGlmZXRpbWUKKyAgICAgICAgICAgIC8vIG93bmVyIG9mIHRoZSBU
cmVlU2NvcGUuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+KHRoaXMpLT5nY1Ry
ZWUoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaGFzT25lUmVmKCkgY29uc3QKKyAg
ICB2b2lkIHdyYXBwZXJEZXJlZigpCiAgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7Ci0gICAgICAgIEFTU0VS
VCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gbV9yZWZDb3Vu
dCA9PSAxOworICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKKyAgICAgICAg
LS1tX3dyYXBwZXJSZWZDb3VudDsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJ3cmFwcGVy
RGVyZWYoKSAlcCByZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291bnQ9JWRcbiIsIHRoaXMsIG1fbm9u
V3JhcHBlclJlZkNvdW50LCBtX3dyYXBwZXJSZWZDb3VudCk7CisgICAgICAgIGlmIChVTkxJS0VM
WShtX2xpZmV0aW1lT3duZXIgPT0gMSAmJiAhbV93cmFwcGVyUmVmQ291bnQpKSB7CisgICAgICAg
ICAgICBtX2xpZmV0aW1lT3duZXIgPSAwOworICAgICAgICAgICAgLy8gZ2NUcmVlKCkgcmVjbGFp
bXMgYWxsIE5vZGVzIGluIHRoZSBUcmVlU2NvcGUgb3Igc2V0cyBhIG5ldyBsaWZldGltZQorICAg
ICAgICAgICAgLy8gb3duZXIgb2YgdGhlIFRyZWVTY29wZS4KKyAgICAgICAgICAgIHN0YXRpY19j
YXN0PE5vZGVUeXBlKj4odGhpcyktPmdjVHJlZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aW50IHJlZkNvdW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50Owor
ICAgICAgICByZXR1cm4gbV9ub25XcmFwcGVyUmVmQ291bnQgKyBtX3dyYXBwZXJSZWZDb3VudDsK
KyAgICB9CisKKyAgICBpbnQgd3JhcHBlclJlZkNvdW50KCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3dyYXBwZXJSZWZDb3VudDsKKyAgICB9CisKKyAgICBib29sIGhhc09uZVJlZigp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7CisgICAg
ICAgIHJldHVybiByZWZDb3VudCgpID09IDE7CisgICAgfQorCisgICAgdm9pZCBzZXRMaWZldGlt
ZU93bmVyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9saWZldGltZU93bmVyKTsKKyAgICAg
ICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOworICAgICAgICBtX2xpZmV0aW1lT3duZXIg
PSAxOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInNldExpZmV0aW1lT3duZXIoKSAlcFxu
IiwgdGhpcyk7CisgICAgfQorCisgICAgdm9pZCB1bnNldExpZmV0aW1lT3duZXIoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOworICAgICAgICBtX2xpZmV0aW1l
T3duZXIgPSAwOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgInVuc2V0TGlmZXRpbWVPd25l
cigpICVwXG4iLCB0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGlzTGlmZXRpbWVPd25lcigpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9saWZldGltZU93bmVyOwogICAgIH0KIAogICAgIHZvaWQg
c2V0UGFyZW50KFBhcmVudE5vZGVUeXBlKiBwYXJlbnQpCiAgICAgeyAKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7IAorICAgICAgICBt
X3BhcmVudCA9IHBhcmVudDsKICAgICB9CiAKICAgICBQYXJlbnROb2RlVHlwZSogcGFyZW50KCkg
Y29uc3QKQEAgLTEwOCw3ICsxNzcsNiBAQCBwdWJsaWM6CiAKICNpZm5kZWYgTkRFQlVHCiAgICAg
Ym9vbCBtX2RlbGV0aW9uSGFzQmVndW47Ci0gICAgYm9vbCBtX2luUmVtb3ZlZExhc3RSZWZGdW5j
dGlvbjsKICNlbmRpZgogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdApAQCAtMTIzLDcgKzE5MSwxMSBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICBQYXJlbnROb2RlVHlwZSogbV9wYXJlbnQ7Ci0gICAgaW50IG1fcmVm
Q291bnQ7CisgICAgLy8gVGhlIGJpdCBmaWVsZCBzaXplcyBhcmUgb3B0aW1pemVkIHNvIHRoYXQg
dGhlIGNvbXBpbGVyIHdpbGwgZ2VuZXJhdGUgdGhlIGZhc3Rlc3QKKyAgICAvLyBjb2RlIGZvciBy
ZWYoKSBhbmQgZGVyZWYoKS4KKyAgICB1bnNpZ25lZCBtX25vbldyYXBwZXJSZWZDb3VudCA6IDE2
OyAvLyBSZWZlcmVuY2UgY291bnQgYnkgbm9ybWFsIFJlZlB0cnMgaW4gV2ViS2l0LgorICAgIHVu
c2lnbmVkIG1fbGlmZXRpbWVPd25lciA6IDE7IC8vIFdoZXRoZXIgdGhpcyBOb2RlIGlzIGEgbGlm
ZXRpbWUgb3duZXIgb3Igbm90LgorICAgIHVuc2lnbmVkIG1fd3JhcHBlclJlZkNvdW50IDogMTU7
IC8vIFJlZmVyZW5jZSBjb3VudCBieSB3cmFwcGVyIG9iamVjdHMuCiAKICNpZm5kZWYgTkRFQlVH
CiAgICAgYm9vbCBtX2Fkb3B0aW9uSXNSZXF1aXJlZDsKQEAgLTEzNyw3ICsyMDksNiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9kZVR5cGU+IGlubGluZSB2
b2lkIGFkb3B0ZWQoVHJlZVNoYQogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47CiAg
ICAgQVNTRVJUKCFvYmplY3QtPm1fZGVsZXRpb25IYXNCZWd1bik7Ci0gICAgQVNTRVJUKCFvYmpl
Y3QtPm1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uKTsKICAgICBvYmplY3QtPm1fYWRvcHRpb25J
c1JlcXVpcmVkID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCAx
YzA5YzYxOWI2MWZkODJlNDg4ZWIwZDUxNjI0MjhkOGU0YTFmMjMwLi40OGEzNDQ3Y2EyMzljNmRl
YTBmOTg3NjRhNTE5ZTZmMzRjYWRhZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBA
IC02MSw2ICs2MSw3IEBAIFBhc3NSZWZQdHI8U1ZHRWxlbWVudD4gU1ZHRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50CiAKIFNWR0VsZW1lbnQ6On5T
VkdFbGVtZW50KCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50KCkgJXAg
YmVmb3JlXG4iLCB0aGlzKTsKICAgICBpZiAoIWhhc1NWR1JhcmVEYXRhKCkpCiAgICAgICAgIEFT
U0VSVCghU1ZHRWxlbWVudFJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsK
ICAgICBlbHNlIHsKQEAgLTgwLDYgKzgxLDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQog
ICAgIH0KICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEFu
aW1hdGlvbkVsZW1lbnRzRnJvbVRhcmdldCh0aGlzKTsKICAgICBkb2N1bWVudCgpLT5hY2Nlc3NT
VkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KHRoaXMp
OworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnQoKSAlcCBhZnRlclxuIiwgdGhp
cyk7CiB9CiAKIGJvb2wgU1ZHRWxlbWVudDo6d2lsbFJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNo
YW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5jcHAKaW5kZXggOWZl
MmFjYmYwMGE1ZmVjZjVmMzQ1YTc2OWQ1NDFjNzU0NjJmZWExNy4uMGVhMDEwMTA5OGZmZTI5ZTE3
NzIwOTlmNWIwYjI4ZjMyMzM0ZTQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bnN0YW5jZS5jcHAKQEAgLTYyLDYgKzYyLDkgQEAgU1ZHRWxlbWVudEluc3RhbmNlOjpTVkdFbGVt
ZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVudCogY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQsIFMKIAog
U1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudEluc3RhbmNlKCkKIHsKKyAgICAvLyBmcHJp
bnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50SW5zdGFuY2UoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwor
ICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOworCiAgICAgLy8gQ2FsbCBkZXRhY2ggYmVj
YXVzZSB3ZSBtYXkgYmUgZGVsZXRlZCBkaXJlY3RseSBpZiB3ZSBhcmUgYSBjaGlsZCBvZiBhIGRl
dGFjaGVkIGluc3RhbmNlLgogICAgIGRldGFjaCgpOwogCkBAIC03MCwxNiArNzMsNDYgQEAgU1ZH
RWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudEluc3RhbmNlKCkKICNlbmRpZgogCiAgICAgbV9l
bGVtZW50ID0gMDsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIn5TVkdFbGVtZW50SW5zdGFuY2Uo
KSAlcCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIC8vIEl0J3MgaW1wb3J0YW50IG5vdCB0byBpbmxp
bmUgcmVtb3ZlZExhc3RSZWYsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBpbmxpbmUgdGhlIGNv
ZGUgdG8KIC8vIGRlbGV0ZSBhbiBTVkdFbGVtZW50SW5zdGFuY2UgYXQgZWFjaCBkZXJlZiBjYWxs
IHNpdGUuCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYoKQogeworICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZigp
ICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOwog
I2lmbmRlZiBOREVCVUcKICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOwogI2VuZGlmCisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUodGhpcykgJXAgYmVmb3JlXG4iLCB0aGlzKTsK
ICAgICBkZWxldGUgdGhpczsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAl
cCBhZnRlclxuIiwgdGhpcyk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5z
dGFuY2U6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworfQorCisvLyBXaGVu
IGdjVHJlZSgpIGlzIGNhbGxlZCwgdGhlIFRyZWVTY29wZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUg
bm8gbGlmZXRpbWUgb3duZXIuCisvLyBnY1RyZWUoKSBtdXN0IHJlY2xhaW0gYWxsIE5vZGVzIGlu
IHRoZSBUcmVlU2NvcGUgb3Igc2V0IGEgbmV3IGxpZmV0aW1lIG93bmVyIG9mCisvLyB0aGUgVHJl
ZVNjb3BlLgordm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmdjVHJlZSgpCit7CisgICAgLy8gZnBy
aW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OmdjVHJlZSgpICVwIGJlZm9yZVxuIiwg
dGhpcyk7CisgICAgU1ZHRWxlbWVudEluc3RhbmNlKiByb290ID0gMDsKKyAgICBpZiAoaXNSZWFj
aGFibGVGcm9tV3JhcHBlcjxTVkdFbGVtZW50SW5zdGFuY2U+KHRoaXMsICZyb290KSkgeworICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCB0cnVl
XG4iLCB0aGlzKTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFu
Y2U6OmdjVHJlZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBBU1NFUlQocm9vdCk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJpc1JlYWNoYWJsZUZy
b21XcmFwcGVyKCkgJXAgZmFsc2VcbiIsIHRoaXMpOworICAgIGlmIChyb290LT5yZWZDb3VudCgp
KSB7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAicm9vdC0+cmVmQ291bnQoKSAlcFxuIiwg
dGhpcyk7CisgICAgICAgIHJvb3QtPnNldExpZmV0aW1lT3duZXIoKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIiFyb290LT5yZWZDb3VudCgpICVwXG4iLCB0aGlz
KTsKKyAgICAgICAgcm9vdC0+cmVtb3ZlZExhc3RSZWYoKTsKKyAgICB9CisgICAgLy8gZnByaW50
ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OmdjVHJlZSgpICVwIGFmdGVyXG4iLCB0aGlz
KTsKIH0KIAogdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmRldGFjaCgpCkBAIC0xMTQsNiArMTQ3
LDcgQEAgdm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OnNldFNoYWRvd1RyZWVFbGVtZW50KFNWR0Vs
ZW1lbnQqIGVsZW1lbnQpCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6YXBwZW5kQ2hpbGQoUGFz
c1JlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IGNoaWxkKQogewogICAgIGFwcGVuZENoaWxkVG9D
b250YWluZXI8U1ZHRWxlbWVudEluc3RhbmNlLCBTVkdFbGVtZW50SW5zdGFuY2U+KGNoaWxkLmdl
dCgpLCB0aGlzKTsKKyAgICBjaGlsZC0+dW5zZXRMaWZldGltZU93bmVyKCk7CiB9CiAKIHZvaWQg
U1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2VzT2ZFbGVtZW50KFNWR0Vs
ZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dEluc3RhbmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKaW5k
ZXggZjhlNDg5YjZiYTQzNTllYzc5NTk3OTdmNzIzYzUyNTk1NDQ2NDNjNi4uZWJlY2RiYmU2MTc1
Nzg5NGY5MGRhOTQwNTE4NzQxZDUzNWQ3MDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50SW5zdGFuY2UuaApAQCAtMTUxLDYgKzE1MSw3IEBAIHByaXZhdGU6CiAKICAgICBTVkdFbGVt
ZW50SW5zdGFuY2UoU1ZHVXNlRWxlbWVudCosIFNWR1VzZUVsZW1lbnQqLCBQYXNzUmVmUHRyPFNW
R0VsZW1lbnQ+IG9yaWdpbmFsRWxlbWVudCk7CiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwor
ICAgIHZvaWQgZ2NUcmVlKCk7CiAKICAgICB2aXJ0dWFsIE5vZGUqIHRvTm9kZSgpIHsgcmV0dXJu
IHNoYWRvd1RyZWVFbGVtZW50KCk7IH0KIApAQCAtMTU4LDEzICsxNTksMTMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHNldFNoYWRvd1RyZWVFbGVtZW50KFNWR0VsZW1lbnQqKTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KLSAgICBm
cmllbmQgdm9pZCBhcHBlbmRDaGlsZFRvQ29udGFpbmVyKEdlbmVyaWNOb2RlKiBjaGlsZCwgR2Vu
ZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5lcik7Ci0KKyAgICBmcmllbmQgdm9pZCBhcHBlbmRD
aGlsZFRvQ29udGFpbmVyKEdlbmVyaWNOb2RlKiBjaGlsZCwgR2VuZXJpY05vZGVDb250YWluZXIq
KTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250
YWluZXI+Ci0gICAgZnJpZW5kIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5l
cmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKTsKLQorICAgIGZyaWVuZCB2b2lkIFByaXZhdGU6
OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUoR2VuZXJpY05vZGUqJiBoZWFkLCBHZW5lcmlj
Tm9kZSomIHRhaWwsIEdlbmVyaWNOb2RlQ29udGFpbmVyKik7CiAgICAgdGVtcGxhdGU8Y2xhc3Mg
R2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgotICAgIGZyaWVuZCB2b2lk
IFByaXZhdGU6OmFkZENoaWxkTm9kZXNUb0RlbGV0aW9uUXVldWUoR2VuZXJpY05vZGUqJiBoZWFk
LCBHZW5lcmljTm9kZSomIHRhaWwsIEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpOwor
ICAgIGZyaWVuZCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJpY05vZGVD
b250YWluZXIqKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZT4KKyAgICBmcmllbmQg
Ym9vbCBpc1JlYWNoYWJsZUZyb21XcmFwcGVyKEdlbmVyaWNOb2RlKiwgR2VuZXJpY05vZGUqKik7
CiAKICAgICBib29sIGhhc0NoaWxkTm9kZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3Vy
Y2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRleCAyMWNhMmZmNmNlM2FiYmU3Y2U3MTQ2
MTQ1M2RjNjM1ZTI5ZTM2ZWYwLi5mY2Q2YWUwZTQ2ZTMyN2JmNTllYTZlN2ZkODM0YjRiOGQ4MjUy
MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgpAQCAtOTYzLDYgKzk2Myw3IEBAIF9fWk4z
V1RGOVJldGFpblB0ckkxMk5TVVJMUmVxdWVzdEVDMkVQUzFfCiBfX1pON1dlYkNvcmUxNVJlc291
cmNlUmVxdWVzdGFTRVJLUzBfCiBfX1pON1dlYkNvcmUxOVJlc291cmNlUmVxdWVzdEJhc2VhU0VS
S1MwXwogX19aTjdXZWJDb3JlNEtVUkxhU0VSS1MwXworX19aTjdXZWJDb3JlNE5vZGU2Z2NUcmVl
RXYKIF9fWk4zV1RGMjJIYXNoVGFibGVDb25zdEl0ZXJhdG9ySU5TXzEyQXRvbWljU3RyaW5nRVN0
NHBhaXJJUzFfTlNfNlN0cmluZ0VFTlNfMThQYWlyRmlyc3RFeHRyYWN0b3JJUzRfRUVOU18xNUNh
c2VGb2xkaW5nSGFzaEVOU18xNFBhaXJIYXNoVHJhaXRzSU5TXzEwSGFzaFRyYWl0c0lTMV9FRU5T
OV9JUzNfRUVFRVNBX0UxNnNraXBFbXB0eUJ1Y2tldHNFdgogX19aTjNXVEY2VmVjdG9ySU5TXzZT
dHJpbmdFTG0wRUVhU0VSS1MyXwogX19aTlN0Nl9fY29weUlMYjBFU3QyNnJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3JfdGFnRTRjb3B5SVBLTjNXVEY2U3RyaW5nRVBTNF9FRVQwX1RfUzlfUzhfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93
aW4vV2ViS2l0Mi5kZWYKaW5kZXggOTc1YTczZDM4NzZlYjQzNmViNGJlYjkyMDk4NjVmMTk4ZWIw
NWJjMS4uYTA2NjU3ZjgxMzdjMjA0YjM2NWIzMjIyYzkzODkzOTUzMGUxM2Q0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyLmRlZgpAQCAtMjA1LDcgKzIwNSw2IEBAIEVYUE9SVFMKICAgICAgICAgP3BsYWNl
aG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVA
QFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRv
ckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAUEFWQ29u
dGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZAQFFBRVhJSEBa
Ci0gICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/
cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAgICA/c19mcm9udGVu
ZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQogICAgICAgICA/
c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVASGlzdG9yeUNvbnRyb2xsZXJAV2ViQ29yZUBAUUFF
WFhaCkBAIC0yNzEsNiArMjcwLDcgQEAgRVhQT1JUUwogICAgICAgICA/dmlld3BvcnRBcmd1bWVu
dHNAUGFnZUBXZWJDb3JlQEBRQkU/QVVWaWV3cG9ydEFyZ3VtZW50c0AyQFhaCiAgICAgICAgID9p
c1BhZ2VCb3hWaXNpYmxlQERvY3VtZW50QFdlYkNvcmVAQFFBRV9OSEBaCiAgICAgICAgID9pc0Fj
dGl2ZUBJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBRQkVfTlhaCisgICAgICAgID9nY1RyZWVATm9k
ZUBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3N1c3BlbmRBbmltYXRpb25zQEFuaW1hdGlvbkNv
bnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9yZXN1bWVBbmltYXRpb25zQEFuaW1h
dGlvbkNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9zZXRBbGxvd3NSb3VuZGlu
Z0hhY2tzQFRleHRSdW5AV2ViQ29yZUBAU0FYX05AWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxp
dGUuZGVmCmluZGV4IDMzZThkZWI4MDc4MzlkMzRhYWFjYjQ1NTE5ZjA4M2RkMzlhNmE2Y2EuLmY3
NDU1YWE5ZTA4NDlhNThhZGNjM2Y5YjI0ZTZlYjVjMDAxOTEwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTIwMiw3ICsyMDIsNiBAQCBFWFBPUlRTCiAgICAgICAgID9w
bGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZUBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJD
b3JlQEBRQkVfTlhaCiAgICAgICAgID9yYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEBUZXh0SXRl
cmF0b3JAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFBB
VkNvbnRhaW5lck5vZGVAMkBISF9OQFoKICAgICAgICAgP3JlbW92ZUBTdHJpbmdAV1RGQEBRQUVY
SUhAWgotICAgICAgICA/cmVtb3ZlZExhc3RSZWZATm9kZUBXZWJDb3JlQEBBQUVYWFoKICAgICAg
ICAgP3JldmVyc2VGaW5kQFN0cmluZ0ltcGxAV1RGQEBRQUVJX1dJQFoKICAgICAgICAgP3NfZnJv
bnRlbmRDb3VudGVyQEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkBXZWJDb3JlQEAwSEEKICAgICAg
ICAgP3NhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlQEhpc3RvcnlDb250cm9sbGVyQFdlYkNvcmVA
QFFBRVhYWgpAQCAtMjEwLDYgKzIwOSw3IEBAIEVYUE9SVFMKICAgICAgICAgP3NjcmlwdE5hbWVU
b0NvZGVAV2ViQ29yZUBAWUE/QVc0VVNjcmlwdENvZGVAQEFCVlN0cmluZ0BXVEZAQEBaCiAgICAg
ICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVu
dEAyQEFCVkludFJlY3RAMkBAWgogICAgICAgICA/c2V0Q2FuU3RhcnRNZWRpYUBQYWdlQFdlYkNv
cmVAQFFBRVhfTkBaCisgICAgICAgID9nY1RyZWVATm9kZUBXZWJDb3JlQEBRQUVYWFoKICAgICAg
ICAgP3NldEN1cnNpdmVGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNT
dHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAgICAgICA/c2V0RGV2aWNlU2NhbGVGYWN0
b3JAUGFnZUBXZWJDb3JlQEBRQUVYTUBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29y
ZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCAx
YTIxZWY5ZWY2MTkxMTg2NDg4Zjc4ZWNiZmZmNDZjNWNjMzA2YmFmLi5hNmM3M2NhZjY3NTc2MDdh
NjIyMGJmNmM0YzA3ODM3OWE3YzllMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE0
NCw3ICsxNDQsNyBAQCBfWk43V2ViQ29yZTI0SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uMThkaWRD
YW5jZWxGcmFtZUltcGxFUE5TXzE5SW5zdHJ1bWVudGluZ0FnZQogX1pON1dlYkNvcmUxNFNjcm9s
bGFibGVBcmVhMjhzZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzRVJLTlNfOEludFBvaW50RTsK
IF9aTjdXZWJDb3JlMTBTY3JvbGxWaWV3MjNzZXRTY3JvbGxiYXJzU3VwcHJlc3NlZEViYjsKIF9a
TjdXZWJDb3JlMTBTY3JvbGxWaWV3MjFzZXREZWxlZ2F0ZXNTY3JvbGxpbmdFYjsKLV9aTjdXZWJD
b3JlNE5vZGUxNHJlbW92ZWRMYXN0UmVmRXY7CitfWk43V2ViQ29yZTROb2RlNmdjVHJlZUV2Owog
X1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldEZpeGVkRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRTZXJpZkZvbnRG
YW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThT
ZXR0aW5nczIwc2V0Q3Vyc2l2ZUZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNj
cmlwdENvZGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggOTc3MTViZWRiMmU5MWY4NmI1NWEyZWFlMGUwM2ViODVlZmNkYzJh
OC4uNTcxMTYxNmZiOWE2YmQyMmI3ZTVhMGUzOWJhNTc1MGFlZDg4ZTEzNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA5LTAzICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJZiBhIE5vZGUgWCBpcyByZWFjaGFibGUgZnJvbSBKYXZhU2NyaXB0LCBh
bGwgTm9kZXMgaW4gdGhlIHNhbWUgdHJlZSBzaG91bGQgYmUga2VwdCBhbGl2ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg4MzQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBnYy1kb20tdHJlZS1saWZldGlt
ZS5odG1sIHRlc3RzIHRoZSBmb2xsb3dpbmdzOgorCisgICAgICAgICAgLSBJZiBhIE5vZGUgWCBp
cyByZWFjaGFibGUgZnJvbSBhIG5vZGUgWSB0aGF0IGhhcyAxfiByZWZlcmVuY2UgY291bnQsCisg
ICAgICAgICAgICB0aGUgTm9kZSBYIGlzIG5vdCByZWNsYWltZWQuCisgICAgICAgICAgLSBPdGhl
cndpc2UsIHRoZSBub2RlIFggaXMgcmVjbGFpbWVkLgorCisgICAgICAgICogZmFzdC9kb20vZ2Mt
My1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgdGhlIHRlc3QgcmVzdWx0LgorICAgICAgICAqIGZhc3Qv
ZG9tL2djLTUtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy1kb20t
dHJlZS1saWZldGltZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dj
LWRvbS10cmVlLWxpZmV0aW1lLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA5LTA0ICBWc2V2b2xvZCBW
bGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZp
eCBpbmNvbnNpc3RlbmNpZXMgaW4gTmV0d29ya1VJU291cmNlQ29kZVByb3ZpZGVyIGltcGxlbWVu
dGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dAppbmRleCA2MGQzYTE3
MGYyOWI2MzM0ODcxYzgzOTZkZTBhYWJiYjc2YjBjMTk2Li45MmQ0MTIxN2VmM2FlMzkwZjVhYTIw
MGMyZWU5ZWZkMTVhNjEyNmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0z
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4
dApAQCAtNCw1ICs0LDYgQEAgVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVj
ZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGEKIAogcmVwbGFjZW1lbnQg
Y29udGVudAogQgorcGFyZW50IG5vZGUgZXhpc3RzCiBjaGlsZCBub2RlIGV4aXN0cwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CmluZGV4IDE4YzgzNDg4YjBjZjZmMDQwMWZm
Mzc5N2NmMTY2MzlkYTU2M2RhNmUuLjczODA5Y2RhODU0MzQ4NzljYjkyNjc2Yjk2Yjc1ZDE5ZjAz
MTdiMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CkBAIC00LDQgKzQs
NSBAQCBUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9u
IGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYQogCiByZXBsYWNlbWVudCBjb250ZW50CiBCCitE
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1l
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1l
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODNlZWRlMWI0MTNkNjQ3ZWU3ODE2ZTY1Y2FiZjAw
OTZjN2E4NTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9t
LXRyZWUtbGlmZXRpbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjAyIEBACis9PT0gSW5pdGlh
bCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGds
b2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZp
cnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2
LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGls
ZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBn
bG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5m
aXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmpl
Y3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRp
YWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2
LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGls
ZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBn
bG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5m
aXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERp
di5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hp
bGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYx
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2Jq
ZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0
aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERp
di5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hp
bGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYy
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9i
amVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5p
dGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmlu
ZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFs
RGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RD
aGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVh
cmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVh
cmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBv
YmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IElu
aXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFs
RGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RD
aGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xl
YXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4g
b2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJ
bml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFy
aW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9i
YWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJz
dENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAi
ZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFT
UyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVh
cmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNs
ZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNs
ZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+
IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgw
MDNkNTk3ZmU4NjU3NjJiYjVmMDY5ODE4ZjNmMTJkODY1YTJlNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwKQEAgLTAsMCAr
MSw5OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxzY3JpcHQ+Cit2YXIgdGVzdENhc2VzID0gW1siZGl2MCIsICJkaXYxIiwgImRpdjIiXSwKKyAg
ICAgICAgICAgICAgICAgWyJkaXYwIiwgImRpdjIiLCAiZGl2MSJdLAorICAgICAgICAgICAgICAg
ICBbImRpdjEiLCAiZGl2MCIsICJkaXYyIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MSIsICJk
aXYyIiwgImRpdjAiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYyIiwgImRpdjAiLCAiZGl2MSJd
LAorICAgICAgICAgICAgICAgICBbImRpdjIiLCAiZGl2MSIsICJkaXYwIl1dOworCit2YXIgcm9v
dERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChyb290RGl2KTsKK3ZhciB0ZXN0SHRtbCA9ICI8ZGl2IGlkPSdkaXYwLXBhcmVudCc+
PGRpdiBpZD0nZGl2MCc+PGRpdiBpZD0nZGl2MC1jaGlsZCc+PC9kaXY+PC9kaXY+PGRpdiBpZD0n
ZGl2MS1wYXJlbnQnPjxkaXYgaWQ9J2RpdjEnPjxkaXYgaWQ9J2RpdjEtY2hpbGQnPjwvZGl2Pjwv
ZGl2PjxkaXYgaWQ9J2RpdjItcGFyZW50Jz48ZGl2IGlkPSdkaXYyJz48ZGl2IGlkPSdkaXYyLWNo
aWxkJz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4iOworCit0ZXN0Q2FzZXMuZm9yRWFj
aChmdW5jdGlvbiAodGVzdCkgeworICAgIHZhciBkaXZYLCBkaXZZLCBkaXZaOworICAgIGRlYnVn
KCI9PT0gSW5pdGlhbCBzdGF0ZSA9PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RI
dG1sOworICAgIGRpdlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBk
aXZZID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMl0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2
ZShkaXZYLCB0ZXN0WzBdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVz
dFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisg
ICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09Iik7CisgICAgcm9vdERp
di5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0p
OworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290
RGl2LmlubmVySFRNTCA9ICIiOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0
ZXN0WzBdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7Cisg
ICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWco
Ij09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09Iik7CisgICAgcm9vdERp
di5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0p
OworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290
RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxsOworICAgIGdjKCk7CisgICAgY2hl
Y2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlksIHRlc3RbMV0pOworICAgIGNoZWNrUGFyZW50QW5k
Q2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJp
bmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PSIpOworICAgIHJvb3REaXYuaW5uZXJIVE1M
ID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0p
OworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZa
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAgcm9vdERpdi5pbm5lckhU
TUwgPSAiIjsKKyAgICBkaXZYID0gbnVsbDsKKyAgICBkaXZZID0gbnVsbDsKKyAgICBnYygpOwor
ICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsKKworICAgIGRlYnVn
KCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PSIp
OworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsy
XSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHByZXZOb2RlcyA9IHdpbmRv
dy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMoKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9
ICIiOworICAgIGRpdlggPSBudWxsOworICAgIGRpdlkgPSBudWxsOworICAgIGRpdlogPSBudWxs
OworICAgIGdjKCk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gSWYg
YWxsIHRoZSBOb2RlIG9iamVjdHMgaW4gdGVzdEh0bWwgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVj
dGVkLAorICAgICAgICAvLyBhdCBsZWFzdCA5IDxkaXY+cyBvYmplY3RzIHdpbGwgYmUgcmVtb3Zl
ZC4KKyAgICAgICAgLy8gKEFjdHVhbGx5LCBzaW5jZSB0ZXN0SHRtbCByZW5kZXJpbmcgcmVxdWly
ZXMgbW9yZSB0aGFuIDkgTm9kZSBvYmplY3RzLikKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMubnVtYmVyT2ZMaXZlTm9kZXMoKSA8PSBwcmV2Tm9kZXMgLSA5KQorICAgICAgICAgICAgdGVz
dFBhc3NlZCgiQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5
IGRlc3RydWN0ZWQuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIjxk
aXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgbm90IGRlc3RydWN0ZWQuIik7CisgICAgfQor
fSk7CisKK2Z1bmN0aW9uIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXYsIG5hbWUpIHsKKyAg
ICBnbG9iYWxEaXYgPSBkaXY7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYu
aWQnLCBuYW1lKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5wYXJlbnRO
b2RlLmlkJywgbmFtZSArICItcGFyZW50Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCcsIG5hbWUgKyAiLWNoaWxkIik7CisgICAgZ2xvYmFsRGl2
ID0gbnVsbDsKKyAgICBnYygpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vaW5saW5lLWV2ZW50LWF0dHJpYnV0ZXMtcmVsZWFzZS5odG1sCmluZGV4IGJmMTE4
YmJlNWQ0MjQ3NzVjY2RiZDRkNzZlYmM3MzllZGUwYTY4YmMuLmNhZjAzNDJjZmI0OTNlNDhiZGE1
MjA0YmU1Mjg1YzI2MDNjMzNlM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2lu
bGluZS1ldmVudC1hdHRyaWJ1dGVzLXJlbGVhc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0bWwKQEAgLTEzLDcgKzEzLDkg
QEAgZnVuY3Rpb24gbnVtYmVyT2ZMaXZlTm9kZXMoKSB7CiB2YXIgYmVmb3JlQ291bnQgPSBudW1i
ZXJPZkxpdmVOb2RlcygpOwogCiB2YXIgZiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0n
KTsKK2YuZm9jdXMoKTsKIHZhciBpID0gZi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdpbnB1dCcpKTsKK2kuZm9jdXMoKTsKIGkuc2V0QXR0cmlidXRlKCdvbmNsaWNrJywgJycp
OwogZi5yZW1vdmVDaGlsZChpKTsKIGYgPSBudWxsOwpAQCAtMjUsNCArMjcsNCBAQCB2YXIgYWZ0
ZXJDb3VudCA9IG51bWJlck9mTGl2ZU5vZGVzKCk7CiBzaG91bGRCZSgnYWZ0ZXJDb3VudCAtIGJl
Zm9yZUNvdW50JywgJzAnKTsKIAogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGY1ZjBmMWY5ZWI5NmFk
NDg4MGFhYThiOTA0YWE5MWNkMDYxYzlmMmQuLjc2OGY2Yjg2ZjdkY2RmNDQyMmVhODI0ZWU0ZDA0
YjI3NmQyZGJmYWYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0wMyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFggaXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwg
YWxsIE5vZGVzIGluIHRoZSBzYW1lIHRyZWUgc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3ltYm9sIGNoYW5nZXMuCisK
KyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA5LTA1
ICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQmxhY2tC
ZXJyeV0gTWF0Y2ggdGggZWJ1aWxkIGZsYWdzIGZyb20gdGhlIHBsYXRmb3JtIGxpYnJhcnkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>165523</attachid>
            <date>2012-09-24 22:46:03 -0700</date>
            <delta_ts>2012-09-24 22:46:03 -0700</delta_ts>
            <desc>Pathological test case 1</desc>
            <filename>pathological_mutation.html</filename>
            <type>text/html</type>
            <size>1777</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CjxzY3Jp
cHQ+CmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKCmZ1bmN0aW9uIHJ1bih0aXRsZSwgcmVwZWF0TnVtLCBy
b3VuZHMsIGZ1bmMpIHsKICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpOwoKICB2YXIgdGltZXMgPSBbXTsKICBmb3IgKHZhciByID0gMDsgciA8IHJvdW5kczsg
cisrKSB7CiAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOwogICAgZnVuYyhyZXBlYXROdW0pOwog
ICAgdmFyIHRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnQ7CiAgICB0aW1lcy5wdXNoKHRpbWUpOwog
ICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpbWUpKTsKICAg
IHJlc3VsdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKICB9Cgog
IHRpbWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKICB2YXIgbWVk
aWFuID0gdGltZXNbTWF0aC5mbG9vcih0aW1lcy5sZW5ndGggLyAyKV07CiAgdmFyIG1pbiA9IHRp
bWVzWzBdOwogIHZhciBtYXggPSB0aW1lc1t0aW1lcy5sZW5ndGggLSAxXTsKICB2YXIgc3VtID0g
MDsKICB2YXIgc3VtMiA9IDA7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aW1lcy5sZW5ndGg7IGkr
KykgewogICAgc3VtICs9IHRpbWVzW2ldOwogICAgc3VtMiArPSB0aW1lc1tpXSAqIHRpbWVzW2ld
OwogIH0KICB2YXIgbWVhbiA9IHN1bSAvIHJvdW5kczsKCiAgcmVzdWx0LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlICsgIiA6IG1lYW49IiArIG1lYW4udG9GaXhlZCgy
KSArICJtcywgbWluPSIgKyBtaW4gKyAibXMsIG1lZGlhbj0iICsgbWVkaWFuICsgIm1zLCBtYXg9
IiArIG1heCArICJtcywgc3RkZXY9IiArIE1hdGguc3FydChzdW0yIC8gcm91bmRzIC0gbWVhbiAq
IG1lYW4pLnRvRml4ZWQoMikpKTsKICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiYnIiKSk7Cn0KCmZ1bmN0aW9uIGdlbmVyYXRlQmluRE9NVHJlZShkZXB0aCkgewog
IHJldHVybiBkZXB0aCA9PSAwID8gIiIgOiAoIjxkaXY+IiArIGdlbmVyYXRlQmluRE9NVHJlZShk
ZXB0aCAtIDEpICsgZ2VuZXJhdGVCaW5ET01UcmVlKGRlcHRoIC0gMSkgKyAiPC9kaXY+Iik7Cn0K
CnZhciB0b3BEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZCh0b3BEaXYpOwp0b3BEaXYuaW5uZXJIVE1MID0gZ2VuZXJhdGVCaW5ET01U
cmVlKDEwKTsKdmFyIG5vZGVzID0gdG9wRGl2LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdiIpOwoKd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICBydW4oIm11dGF0aW9uIiwgMTAwMCwgMTAsIGZ1
bmN0aW9uKHJlcGVhdE51bSkgewogICAgdmFyIGxvY2FsVG9wRGl2ID0gdG9wRGl2OwogICAgdmFy
IGxvY2FsTm9kZXMgPSBub2RlczsKICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVwZWF0TnVtOyBq
KyspIHsKICAgICAgdmFyIGxlbmd0aCA9IGxvY2FsTm9kZXMubGVuZ3RoOwogICAgICBmb3IgKHZh
ciBrID0gMDsgayA8IGxlbmd0aDsgaysrKSB7CiAgICAgICAgbG9jYWxUb3BEaXYuYXBwZW5kQ2hp
bGQobG9jYWxOb2Rlc1trXSk7CiAgICAgIH0KICAgIH0KICB9KTsKfQo8L3NjcmlwdD4KPC9ib2R5
Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>165524</attachid>
            <date>2012-09-24 22:48:02 -0700</date>
            <delta_ts>2012-09-24 22:48:02 -0700</delta_ts>
            <desc>Pathological test case 2</desc>
            <filename>pathological_gc.html</filename>
            <type>text/html</type>
            <size>1614</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPjwvaGVhZD4KPGJvZHk+CjxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CjxzY3Jp
cHQ+CmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKCmZ1bmN0aW9uIHJ1bih0aXRsZSwgcmVwZWF0TnVtLCBy
b3VuZHMsIGZ1bmMpIHsKICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpOwoKICB2YXIgdGltZXMgPSBbXTsKICBmb3IgKHZhciByID0gMDsgciA8IHJvdW5kczsg
cisrKSB7CiAgICBjb25zb2xlLmxvZyhyKTsKICAgIHZhciBzdGFydCA9IERhdGUubm93KCk7CiAg
ICBmdW5jKHJlcGVhdE51bSk7CiAgICB2YXIgdGltZSA9IERhdGUubm93KCkgLSBzdGFydDsKICAg
IHRpbWVzLnB1c2godGltZSk7CiAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUodGltZSkpOwogICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJyIikpOwogIH0KCiAgdGltZXMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4g
YSAtIGI7IH0pOwogIHZhciBtZWRpYW4gPSB0aW1lc1tNYXRoLmZsb29yKHRpbWVzLmxlbmd0aCAv
IDIpXTsKICB2YXIgbWluID0gdGltZXNbMF07CiAgdmFyIG1heCA9IHRpbWVzW3RpbWVzLmxlbmd0
aCAtIDFdOwogIHZhciBzdW0gPSAwOwogIHZhciBzdW0yID0gMDsKICBmb3IgKHZhciBpID0gMDsg
aSA8IHRpbWVzLmxlbmd0aDsgaSsrKSB7CiAgICBzdW0gKz0gdGltZXNbaV07CiAgICBzdW0yICs9
IHRpbWVzW2ldICogdGltZXNbaV07CiAgfQogIHZhciBtZWFuID0gc3VtIC8gcm91bmRzOwoKICBy
ZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGl0bGUgKyAiIDogbWVh
bj0iICsgbWVhbi50b0ZpeGVkKDIpICsgIm1zLCBtaW49IiArIG1pbiArICJtcywgbWVkaWFuPSIg
KyBtZWRpYW4gKyAibXMsIG1heD0iICsgbWF4ICsgIm1zLCBzdGRldj0iICsgTWF0aC5zcXJ0KHN1
bTIgLyByb3VuZHMgLSBtZWFuICogbWVhbikudG9GaXhlZCgyKSkpOwogIHJlc3VsdC5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKfQoKZnVuY3Rpb24gZ2VuZXJhdGVC
aW5ET01UcmVlKGRlcHRoKSB7CiAgcmV0dXJuIGRlcHRoID09IDAgPyAiIiA6ICgiPGRpdj4iICsg
Z2VuZXJhdGVCaW5ET01UcmVlKGRlcHRoIC0gMSkgKyBnZW5lcmF0ZUJpbkRPTVRyZWUoZGVwdGgg
LSAxKSArICI8L2Rpdj4iKTsKfQoKd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAg
ICAgICAgICAgICAgICAgIHJ1bigiZ2MiLCAxMDAwMCwgNTAwLCBmdW5jdGlvbihyZXBlYXROdW0p
IHsKICAgIHZhciBwcmV2RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICBm
b3IgKHZhciBqID0gMDsgaiA8IHJlcGVhdE51bTsgaisrKSB7CiAgICAgIHZhciBjdXJyRGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgIHByZXZEaXYuYXBwZW5kQ2hpbGQo
Y3VyckRpdik7CiAgICAgIHByZXZEaXYgPSBjdXJyRGl2OwogICAgfQogIH0pOwp9Cjwvc2NyaXB0
Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166147</attachid>
            <date>2012-09-27 23:19:53 -0700</date>
            <delta_ts>2012-10-04 21:08:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88834-20120928151910.patch</filename>
            <type>text/plain</type>
            <size>78140</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4OTJlM2RiNDU0MTRl
YjMzYWEwYmJiOTk0NGE5YjljMGM2MGU5My4uZTg5Y2YzMDFkZGViMjI2M2JmMTMzYTcyZDE1NTZk
MmQ0NmQyNTllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxMi0wOS0yNyAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSWYgYSBOb2RlIFgg
aXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBzYW1lIHRyZWUg
c2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW1JlZmVyZW5jZXNdCisgICAgICAgIEEgZGVzaWduIGRvY3VtZW50OiBodHRw
czovL2RvY3MuZ29vZ2xlLmNvbS9hL2Nocm9taXVtLm9yZy9kb2N1bWVudC9kLzFIY2FlVS03NXh1
a01ZU1Vhc2tlRG9ITC1MMEZOdUNESXVrdlBtT2hlWThRL2VkaXQKKyAgICAgICAgQSB3ZWJraXQt
ZGV2QCB0aHJlYWQ6IGh0dHA6Ly9tYXJrbWFpbC5vcmcvdGhyZWFkL2txdm90ajVpaDRmNG13NG0K
KworICAgICAgICBbT3ZlcnZpZXddCisgICAgICAgIEN1cnJlbnRseSB0aGUgbGlmZXRpbWUgc2Vt
YW50aWNzIG9mIERPTSBOb2RlcyBpcyB1bnByZWRpY3RhYmxlIGZyb20gdGhlIHBlcnNwZWN0aXZl
CisgICAgICAgIG9mIEphdmFTY3JpcHQgcHJvZ3JhbW1lcnMuIEZvciBleGFtcGxlLCBjb25zaWRl
ciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CisKKyAgICAgICAgICBwID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgicCIpOworICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocCk7Cisg
ICAgICAgICAgcC5pbm5lckhUTUwgPSc8ZGl2PjxzcGFuIGlkPSJzcGFuIj48YnI+PC9zcGFuPjwv
ZGl2Pic7CisgICAgICAgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzcGFuIik7
CisgICAgICAgICAgcC5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgICBhbGVydChzcGFuKTsgIC8v
IDxzcGFuPgorICAgICAgICAgIGFsZXJ0KHNwYW4ucGFyZW50Tm9kZSk7ICAvLyA/Pz8KKyAgICAg
ICAgICBhbGVydChzcGFuLmZpcnN0Q2hpbGQpOyAgLy8gPz8/CisKKyAgICAgICAgVGhlIGN1cnJl
bnQgV2ViS2l0IHJldHVybnMgbnVsbCBmb3Igc3Bhbi5wYXJlbnROb2RlIChpLmUuIDxkaXY+IGlz
IGFscmVhZHkgcmVjbGFpbWVkKQorICAgICAgICBhbmQgPGJyPiBmb3Igc3Bhbi5maXJzdENoaWxk
LgorCisgICAgICAgIFdlIHdhbnQgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBzbyB0aGF0IHNwYW4u
cGFyZW50Tm9kZSByZXR1cm5zIDxkaXY+IGFuZAorICAgICAgICBzcGFuLmZpcnN0Q2hpbGQgcmV0
dXJucyA8YnI+LiBBY2N1cmF0ZWx5IHNwZWFraW5nLCB3ZSB3YW50IHRvIGd1YXJhbnRlZSB0aGUK
KyAgICAgICAgZm9sbG93aW5nIGxpZmV0aW1lIHNlbWFudGljczoKKworICAgICAgICAgIC0gSWYg
YSBOb2RlIFggaXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxsIE5vZGVzIGluIHRoZSBz
YW1lIHRyZWUKKyAgICAgICAgICAgIGFyZSBrZXB0IGFsaXZlLgorCisgICAgICAgIFtCZW5lZml0
c10KKyAgICAgICAgVGhlIGZpcnN0IGJlbmVmaXQgaXMgdGhhdCB0aGUgbmV3IGxpZmV0aW1lIHNl
bWFudGljcyBpcyBtb3JlIHByZWRpY3RhYmxlIGFuZAorICAgICAgICB1bmRlcnN0YW5kYWJsZSB0
byBKYXZhU2NyaXB0IHByb2dyYW1tZXJzLiBUaGUgc2VtYW50aWNzIGlzIGFsaWduZWQgdG8gdGhl
IHNwZWMuCisgICAgICAgIFRoaXMgd2lsbCBmaXggYSBidW5jaCBvZiBpbmNvbXByZWhlbnNpYmxl
IGJlaGF2aW9ycyBvZiB0aGUgY3VycmVudCBXZWJLaXQKKyAgICAgICAgYXMgZGVzY3JpYmVkIGlu
IHRoZSBkZXNpZ24gZG9jdW1lbnQuCisKKyAgICAgICAgVGhlIHNlY29uZCBiZW5lZml0IGlzIG1v
cmUgZWZmaWNpZW50IFY4J3MgR0MuIFY4IGltcGxlbWVudHMgYSBnZW5lcmF0aW9uYWwgR0MKKyAg
ICAgICAgYnV0IGNhbm5vdCByZWNsYWltIERPTSBub2RlcyBpbiB0aGUgbWlub3IgR0MuIEFsbCBE
T00gd3JhcHBlciBvYmplY3RzIGhhdmUKKyAgICAgICAgdG8gYmUgcHJvbW90ZWQgdG8gdGhlIG9s
ZCBzcGFjZSBhbmQgcmVjbGFpbWVkIGJ5IHRoZSBtYWpvciBHQy4gV2UgYXJlIHBsYW5uaW5nCisg
ICAgICAgIHRvIHJlZGVzaWduIFY4J3MgR0Mgc28gdGhhdCBpdCBjYW4gcmVjbGFpbSBET00gbm9k
ZXMgaW4gdGhlIG1pbm9yIEdDLAorICAgICAgICB3aGljaCByZXF1aXJlcyB0aGUgbmV3IGxpZmV0
aW1lIHNlbWFudGljcyBvZiBET00gbm9kZXMuIEZvciBtb3JlIGRldGFpbHMKKyAgICAgICAgcGxl
YXNlIHJlZmVyIHRvIGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvZ29vZ2xlLmNvbS9kb2N1bWVu
dC9kLzFLaThXckdJSGlwSWp6ejVybDNTRzdTTi11bEg5SmdiY1FBT0E0SmEtaFhzL2VkaXQKKwor
ICAgICAgICBbUGVyZm9ybWFuY2UgcmVzdWx0c10KKyAgICAgICAgT3ZlcmFsbCwgbm8gcGVyZm9y
bWFuY2UgcmVncmVzc2lvbi4KKworICAgICAgICBCZW5jaG1hcmsgcmVzdWx0czogaHR0cHM6Ly9k
b2NzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvc3ByZWFkc2hlZXQvY2NjP2tleT0wQWxvYkNP
eXZUblBLZERKaVpYaDVYMHRXZVZaWE1uUTBaRjlZVUhaR2RYYyNnaWQ9MAorICAgICAgICBEZXRh
aWxlZCBleHBsYW5hdGlvbjogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcv
ZG9jdW1lbnQvZC8xY0dQU1NXTkVOUzg5MUd1aHZZVFU3cEtzbmNXVXd6dG9WaEdOZTBZVmxSay9l
ZGl0CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbAor
ICAgICAgICAgICAgICBmYXN0L2RvbS9pbmxpbmUtZXZlbnQtYXR0cmlidXRlcy1yZWxlYXNlLmh0
bWwKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZWxlbWVudC1pbnN0YW5jZXMt
bm9CYXNlVmFsUmVmLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3NtaWwtbGVhay1lbGVt
ZW50LWluc3RhbmNlcy5zdmcKKyAgICAgICAgICAgICAgYW5pbWF0aW9ucy9zbWlsLWxlYWstZHlu
YW1pY2FsbHktYWRkZWQtZWxlbWVudC1pbnN0YW5jZXMuc3ZnCisgICAgICAgICAgICAgIGFuaW1h
dGlvbnMvc21pbC1sZWFrLWVsZW1lbnRzLnN2ZworICAgICAgICAgICAgICBhbmltYXRpb25zL3N2
Z2xlbmd0aC1lbGVtZW50LXJlbW92ZWQtY3Jhc2guc3ZnCisgICAgICAgICAgICAgIENvbmZpcm0g
dGhhdCBhbGwgdGhlIG90aGVyIGV4aXN0aW5nIHRlc3RzIGRvIG5vdCBjcmFzaC4KKworICAgICAg
ICBOb3RlOiBJIHdpbGwgcmVtb3ZlIGFsbCBmcHJpbnRmKClzIGFuZCBhZGQgcGVyLWZ1bmN0aW9u
IGNvbW1lbnRzIGFmdGVyCisgICAgICAgIHdlIGZvdW5kIHRoYXQgdGhpcyBwYXRjaCBsb29rcyBP
Sy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUub3JkZXI6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NRGF0YVN0b3JlOjp3ZWFrTm9kZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0SlNX
cmFwcGVyRm9yQWN0aXZlRE9NTm9kZSk6CisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXR0cjo6Y3JlYXRlVGV4dENoaWxkKToKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbik6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDoKKyAgICAgICAgKENvbnRhaW5lck5vZGUpOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50
b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVy
Ojpub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpD
aGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRSZW1vdmVkRnJvbURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5
RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmg6CisgICAgICAgIChDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6Q2hpbGROb2RlSW5zZXJ0
aW9uTm90aWZpZXIpOgorICAgICAgICAoQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6Q2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aXNSZWFjaGFi
bGVGcm9tV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVBbGxDaGlsZHJlbkluQ29u
dGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGU6Ok5vZGVSZW1vdmFsRGlzcGF0Y2hl
cjo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1Rv
RGVsZXRpb25RdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3Rp
Zmllcjo6bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJl
bW92ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
aWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxk
Tm9kZVJlbW92YWxOb3RpZmllcjo6Y2hlY2tJZkxpZmV0aW1lT3duZXIpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlZExhc3RS
ZWYpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Omd1YXJkRGVyZWYpOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZvY3VzKToKKyAgICAgICAgKiBk
b20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50U2hhZG93Ojph
ZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6OnJlbW92ZUFs
bFNoYWRvd1Jvb3RzKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjp+Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW1vdmVkTGFzdFJlZik6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmdjVHJlZSk6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L1RyZWVTaGFyZWQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VHJl
ZVNoYXJlZDo6VHJlZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp+VHJl
ZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjpyZWYpOgorICAgICAgICAo
VHJlZVNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp3cmFwcGVyUmVmKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTaGFyZWQ6OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6
OlRyZWVTaGFyZWQ6OndyYXBwZXJEZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVk
OjpyZWZDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVkOjp3cmFwcGVyUmVmQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNoYXJlZDo6aGFzT25lUmVmKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyZWVTaGFyZWQ6OnNldExpZmV0aW1lT3duZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VHJlZVNoYXJlZDo6dW5zZXRMaWZldGltZU93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTaGFyZWQ6OmlzTGlmZXRpbWVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2hhcmVk
OjpzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6YWRvcHRlZCk6CisgICAgICAgICogc3Zn
L1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6flNWR0VsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5zdGFuY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudEluc3RhbmNlOjp+U1ZHRWxlbWVudEluc3RhbmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmdjVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50SW5zdGFuY2U6OmFwcGVuZENoaWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudEluc3RhbmNlLmg6CisgICAgICAgIChTVkdFbGVtZW50SW5z
dGFuY2UpOgorCiAyMDEyLTA4LTA5ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBNb3ZlIElETCBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIHRoZSBsb2NhdGlv
biBzcGVjaWZpZWQgaW4gV2ViSURMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOGY1YTZmYTY2ZDFlNWVhYmZkOTRl
NGFlZDE2OTc3NWUyZDFmYjBjYi4uNmE0N2MwZjI0MjA1NzAyOTJjMjZhZmMxOTU0MzRlOWUwNzdi
MjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTI3ICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJZiBhIE5vZGUgWCBpcyByZWFj
aGFibGUgZnJvbSBKYXZhU2NyaXB0LCBhbGwgTm9kZXMgaW4gdGhlIHNhbWUgdHJlZSBzaG91bGQg
YmUga2VwdCBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODg4MzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBTeW1ib2wgY2hhbmdlcy4KKworICAgICAgICAqIG1hYy9XZWJLaXQyLm9yZGVyOgorICAg
ICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4vV2ViS2l0MkNGTGl0ZS5kZWY6
CisKIDIwMTItMDktMjYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBG
aXggWFBDU2VydmljZXMgc3ltbGluayB0byBub3QgYmUgdG8gYW4gYWJzb2x1dGUgcGF0aApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCBkMTU4ZmMwNTkxMzAwY2IyYjJjZWY1OWU5ZGJiZjJjZThmMGRk
MWUwLi4xNmQ3YzVkMzViMzllNTk4ZTIwMjAyMzliYzA5MWYyZDBhYjg2MzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtNjU4LDggKzY1OCw4IEBAIF9fWk43V2ViQ29yZTRLVVJMQzFFTlNfMThQ
YXJzZWRVUkxTdHJpbmdUYWdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU0S1VSTEMxRVA1
TlNVUkwKIF9fWk43V2ViQ29yZTRLVVJMQzFFUEs3X19DRlVSTAogX19aTjdXZWJDb3JlNEtVUkxD
MUVSS1MwX1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlNE5vZGU2Z2NUcmVlRXYKIF9fWk43
V2ViQ29yZTROb2RlMTByZW5kZXJSZWN0RVBiCi1fX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExh
c3RSZWZFdgogX19aTjdXZWJDb3JlNE5vZGUxN3N0b3BJZ25vcmluZ0xlYWtzRXYKIF9fWk43V2Vi
Q29yZTROb2RlMThzdGFydElnbm9yaW5nTGVha3NFdgogX19aTjdXZWJDb3JlNE5vZGUxOXNldE5l
ZWRzU3R5bGVSZWNhbGNFTlNfMTVTdHlsZUNoYW5nZVR5cGVFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5vcmRlcgppbmRl
eCA3NjhhN2ZhMzUwYzMzOGY5MTQxMjljMzhkMmY4ZmM2YTRiMjI5ZTg3Li5kMjliZWJlYzI1OGY0
YzNhNmMwMTAzMTUxZjkzNGU0ZjhiOTI2NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLm9yZGVyCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKQEAgLTE5MjQs
NyArMTkyNCw2IEBAIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2sxMXBhaW50RmxvYXRzRVJOU185
UGFpbnRJbmZvRWlpYgogX19aTjdXZWJDb3JlMTFSZW5kZXJCbG9jazEwcGFpbnRDYXJldEVSTlNf
OVBhaW50SW5mb0VpaU5TXzlDYXJldFR5cGVFCiBfX1pOSzdXZWJDb3JlMTRGcmFtZVNlbGVjdGlv
bjEzY2FyZXRSZW5kZXJlckV2CiBfX1pOSzdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uMTdpc0Nv
bnRlbnRFZGl0YWJsZUV2Ci1fX1pON1dlYkNvcmUxOGNhbGxSZW1vdmVkTGFzdFJlZkVQTlNfMTBU
cmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFRQogX19aTjdXZWJDb3JlMThpc0VkaXRhYmxl
UG9zaXRpb25FUktOU184UG9zaXRpb25FCiBfX1pOSzdXZWJDb3JlMTlEcmFnQ2FyZXRDb250cm9s
bGVyMTNjYXJldFJlbmRlcmVyRXYKIF9fWk43V2ViQ29yZTExUmVuZGVyQmxvY2syNXBhaW50Q29u
dGludWF0aW9uT3V0bGluZXNFUk5TXzlQYWludEluZm9FaWkKQEAgLTI0NzIsMTMgKzI0NzEsMTAg
QEAgX19aTkszV1RGOUhhc2hUYWJsZUlQdlMxX05TXzE3SWRlbnRpdHlFeHRyYWN0b3JJUzFfRUVO
U183UHRySGFzaElTMV9FRU5TXzEwSGFzaFQKIF9fWk43V2ViQ29yZTExSlNOb2RlT3duZXI4Zmlu
YWxpemVFTjNKU0M2SGFuZGxlSU5TMV83VW5rbm93bkVFRVB2CiBfX1pON1dlYkNvcmUxNHVuY2Fj
aGVXcmFwcGVySU5TXzROb2RlRUVFdlBOU18xNURPTVdyYXBwZXJXb3JsZEVQVF9QTlNfMTJKU0RP
TVdyYXBwZXJFCiBfX1pON1dlYkNvcmUxNEpTSFRNTERvY3VtZW50RDFFdgotX19aVGhuOF9ON1dl
YkNvcmU4RG9jdW1lbnQxNHJlbW92ZWRMYXN0UmVmRXYKLV9fWk43V2ViQ29yZThEb2N1bWVudDE0
cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJDb3JlMTRTdHlsZVNoZWV0TGlzdEQxRXYKIF9fWk43
V2ViQ29yZTlUcmVlU2NvcGUyMGRlc3Ryb3lUcmVlU2NvcGVEYXRhRXYKIF9fWk43V2ViQ29yZTE4
RG9jdW1lbnRPcmRlcmVkTWFwNWNsZWFyRXYKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9kZTE3
cmVtb3ZlQWxsQ2hpbGRyZW5FdgotX19aTjdXZWJDb3JlMjhyZW1vdmVBbGxDaGlsZHJlbkluQ29u
dGFpbmVySU5TXzROb2RlRU5TXzEzQ29udGFpbmVyTm9kZUVFRXZQVDBfCiBfX1pON1dlYkNvcmUx
NUhUTUxIdG1sRWxlbWVudEQwRXYKIF9fWk43V2ViQ29yZTEzU3R5bGVkRWxlbWVudEQyRXYKIF9f
Wk43V2ViQ29yZTdFbGVtZW50RDJFdgpAQCAtNDE1Miw3ICs0MTQ4LDYgQEAgX19aTjdXZWJDb3Jl
NE5vZGUxNXJlbW92ZWRGcm9tVHJlZUViCiBfX1pON1dlYkNvcmVMMTlub3RpZnlDaGlsZEluc2Vy
dGVkRVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTROb2RlMTZpbnNlcnRlZEludG9UcmVlRWIKIF9f
Wk43V2ViQ29yZUwyOGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHNFUE5TXzROb2RlRQotX19a
TjdXZWJDb3JlMTBUcmVlU2hhcmVkSU5TXzEzQ29udGFpbmVyTm9kZUVFMTRyZW1vdmVkTGFzdFJl
ZkV2CiBfX1pUaG44X043V2ViQ29yZTE2RG9jdW1lbnRGcmFnbWVudEQwRXYKIF9fWk43V2ViQ29y
ZUwzM2NyZWF0ZUhUTUxQYXJhZ3JhcGhFbGVtZW50V3JhcHBlckVQTjNKU0M5RXhlY1N0YXRlRVBO
U18xN0pTRE9NR2xvYmFsT2JqZWN0RU4zV1RGMTBQYXNzUmVmUHRySU5TXzExSFRNTEVsZW1lbnRF
RUUKIF9fWk43V2ViQ29yZTEzY3JlYXRlV3JhcHBlcklOU18yMkpTSFRNTFBhcmFncmFwaEVsZW1l
bnRFTlNfMjBIVE1MUGFyYWdyYXBoRWxlbWVudEVFRVBOU18xMkpTRE9NV3JhcHBlckVQTjNKU0M5
RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBUMF8KQEAgLTI5NDY1LDEyICsyOTQ2
MCwxMCBAQCBfX1pON1dlYkNvcmUxM1NWR1VzZUVsZW1lbnQzMGZpbGxBdHRyaWJ1dGVUb1Byb3Bl
cnR5VHlwZU1hcEV2CiBfX1pOSzdXZWJDb3JlMTJTVkdUcmFuc2Zvcm05dHJhbnNsYXRlRXYKIF9f
Wk43V2ViQ29yZTEwRmxvYXRQb2ludDE1bmFycm93UHJlY2lzaW9uRWRkCiBfX1pON1dlYkNvcmUx
NUFmZmluZVRyYW5zZm9ybTlzZXRNYXRyaXhFZGRkZGRkCi1fX1pON1dlYkNvcmUxMFRyZWVTaGFy
ZWRJTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFRTE0cmVtb3ZlZExhc3RSZWZFdgogX19aTjdXZWJD
b3JlMThTVkdFbGVtZW50SW5zdGFuY2VEMEV2CiBfX1pON1dlYkNvcmUxMFNWR0VsZW1lbnQyMXJl
bW92ZUluc3RhbmNlTWFwcGluZ0VQTlNfMThTVkdFbGVtZW50SW5zdGFuY2VFCiBfX1pOSzNXVEY5
SGFzaFRhYmxlSVBON1dlYkNvcmUxOFNWR0VsZW1lbnRJbnN0YW5jZUVTM19OU18xN0lkZW50aXR5
RXh0cmFjdG9ySVMzX0VFTlNfN1B0ckhhc2hJUzNfRUVOU18xMEhhc2hUcmFpdHNJUzNfRUVTOV9F
NGZpbmRJUzNfTlNfMjJJZGVudGl0eUhhc2hUcmFuc2xhdG9ySVMzX1MzX1M3X0VFRUVOU18yMkhh
c2hUYWJsZUNvbnN0SXRlcmF0b3JJUzNfUzNfUzVfUzdfUzlfUzlfRUVSS1RfCiBfX1pOM1dURjlI
YXNoVGFibGVJUE43V2ViQ29yZTE4U1ZHRWxlbWVudEluc3RhbmNlRVMzX05TXzE3SWRlbnRpdHlF
eHRyYWN0b3JJUzNfRUVOU183UHRySGFzaElTM19FRU5TXzEwSGFzaFRyYWl0c0lTM19FRVM5X0U2
cmVtb3ZlRVBTM18KLV9fWk43V2ViQ29yZTI4cmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcklO
U18xOFNWR0VsZW1lbnRJbnN0YW5jZUVTMV9FRXZQVDBfCiBfX1pUaG44X043V2ViQ29yZTE0U1ZH
TGluZUVsZW1lbnREMEV2CiBfX1pUaG44X043V2ViQ29yZTE4U1ZHUG9seWxpbmVFbGVtZW50RDBF
dgogX19aVGhuOF9ON1dlYkNvcmUxN1NWR1BvbHlnb25FbGVtZW50RDBFdgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBlMzc2
NmQzYmE3NjQ0ZmMyMjAxZjA0NjFmODI3ODRiNTY3NTliMTZlLi5iNWFlZDJiNWEyOGM5MTIwNjA0
NThjODc3Yjg2OTAwOWU2OTdiYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtOTQyLDggKzk0MiwxMyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKIAogICAgIGlmICghJGhhc1BhcmVudCkgewogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICRpbXBsVHlwZSogaW1wbCgpIGNvbnN0IHsgcmV0dXJuIG1faW1wbDsg
fVxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1w
bCgpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9XG5cbiIpOwotICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgcmVsZWFzZUltcGxJZk5vdE51bGwoKSB7IGlmICht
X2ltcGwpIHsgbV9pbXBsLT5kZXJlZigpOyBtX2ltcGwgPSAwOyB9IH1cblxuIik7CisgICAgICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiTm9kZSIpIHsKKyAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1wbCgpIHsgbV9pbXBsLT53cmFwcGVyRGVyZWYo
KTsgbV9pbXBsID0gMDsgfVxuXG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdm9pZCByZWxlYXNlSW1wbElmTm90TnVsbCgpIHsgaWYgKG1faW1wbCkgeyBtX2ltcGwt
PndyYXBwZXJEZXJlZigpOyBtX2ltcGwgPSAwOyB9IH1cblxuIik7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZvaWQgcmVsZWFzZUltcGwo
KSB7IG1faW1wbC0+ZGVyZWYoKTsgbV9pbXBsID0gMDsgfVxuXG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCByZWxlYXNlSW1wbElmTm90TnVsbCgpIHsgaWYg
KG1faW1wbCkgeyBtX2ltcGwtPmRlcmVmKCk7IG1faW1wbCA9IDA7IH0gfVxuXG4iKTsKKyAgICAg
ICAgfQogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpcbiIpOwogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRpbXBsVHlwZSogbV9pbXBsO1xuIik7CiAgICAg
fSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNHZW5lcmF0ZVRvTmF0
aXZlT2JqZWN0In0pIHsKQEAgLTE2NjksOSArMTY3NCwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xh
c3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKVxuIik7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05h
bWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICwgbV9pbXBsKGltcGwubGVha1JlZigpKVxuIik7CisgICAgICAgICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIk5vZGUiKSB7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgLCBtX2ltcGwoaW1wbC5nZXQoKSlcbiIpOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAsIG1faW1wbChp
bXBsLmxlYWtSZWYoKSlcbiIpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
Tm9kZSIpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGltcGwtPndyYXBw
ZXJSZWYoKTtcbiIpOworICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFzc05hbWV9Ojpm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpXG4iKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCmluZGV4IGRjMDg5NmNmM2I3MDIwN2Zm
ZjcxMzFkZTcxOGIyMWZiN2Q5ZjIxZjMuLmY2NTYwYjVmNGIwNDhhMTkxMTBlNTY5YmM0MThmNzVk
ZDk0M2JhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNw
cApAQCAtMTU3LDE1ICsxNTcsMTUgQEAgdm9pZCBET01EYXRhU3RvcmU6OndlYWtOb2RlQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogZG9tT2IKICAgICAgICAg
RE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3RbaV07CiAgICAgICAgIERPTU5vZGVNYXBwaW5nJiBu
b2RlTWFwID0gbm9kZS0+aXNBY3RpdmVOb2RlKCkgPyBzdG9yZS0+YWN0aXZlRG9tTm9kZU1hcCgp
IDogc3RvcmUtPmRvbU5vZGVNYXAoKTsKICAgICAgICAgaWYgKG5vZGVNYXAucmVtb3ZlSWZQcmVz
ZW50KG5vZGUsIHY4T2JqZWN0KSkgewotICAgICAgICAgICAgbm9kZS0+ZGVyZWYoKTsgLy8gTm9i
b2R5IG92ZXJyaWRlcyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKLSAgICAgICAgICAgIHJldHVy
bjsgLy8gVGhlcmUgbWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4g
d29ybGQncyBtYXBzCisgICAgICAgICAgICBub2RlLT53cmFwcGVyRGVyZWYoKTsKKyAgICAgICAg
ICAgIHJldHVybjsgLy8gVGhlcmUgaXMgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUg
aW4gd29ybGQncyBtYXBzLgogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gSWYgbm90IGZvdW5k
LCBpdCBtZWFucyBtYXAgZm9yIHRoZSB3cmFwcGVyIGhhcyBiZWVuIGFscmVhZHkgZGVzdHJveWVk
LCBqdXN0IGRpc3Bvc2UgdGhlCiAgICAgLy8gaGFuZGxlIGFuZCBkZXJlZiB0aGUgb2JqZWN0IHRv
IGZpZ2h0IG1lbW9yeSBsZWFrLgogICAgIHY4T2JqZWN0LkRpc3Bvc2UoKTsKLSAgICBub2RlLT5k
ZXJlZigpOyAvLyBOb2JvZHkgb3ZlcnJpZGVzIE5vZGU6OmRlcmVmIHNvIGl0J3Mgc2FmZQorICAg
IG5vZGUtPndyYXBwZXJEZXJlZigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCBmZWJhZTc1YTFh
ZjNmNTY2ZmEzNjM0OTUxMzA1ZWRmMzJhYTBjZWEwLi5iYWE0ZGY0MmEzNDE0NDM0OWYzZmQ1ZTMz
OGUyMjhjZWE3YTU4ZDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKQEAgLTczLDcgKzczLDggQEAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gVjhE
T01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBhc3NSZWZQdHI8Tm9kZT4KICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKICAgICBBU1NFUlQobWF5YmVET01XcmFwcGVyKHdy
YXBwZXJIYW5kbGUpKTsKICAgICBBU1NFUlQoIW5vZGUtPmlzQWN0aXZlTm9kZSgpKTsKLSAgICBn
ZXRET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7
CisgICAgbm9kZS0+d3JhcHBlclJlZigpOworICAgIGdldERPTU5vZGVNYXAoaXNvbGF0ZSkuc2V0
KG5vZGUuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwogICAgIHJldHVybiB3cmFwcGVySGFuZGxlOwog
fQogCkBAIC04Miw3ICs4Myw4IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZlRE9NTm9kZShQYXNzUmVmUHRyCiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+OjpOZXcod3JhcHBlcik7CiAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVy
SGFuZGxlKSk7CiAgICAgQVNTRVJUKG5vZGUtPmlzQWN0aXZlTm9kZSgpKTsKLSAgICBnZXRBY3Rp
dmVET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7
CisgICAgbm9kZS0+d3JhcHBlclJlZigpOworICAgIGdldEFjdGl2ZURPTU5vZGVNYXAoaXNvbGF0
ZSkuc2V0KG5vZGUuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwogICAgIHJldHVybiB3cmFwcGVySGFu
ZGxlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggOTVjM2ZlMDUyNmE3NGIzNjVhNGU2ZWQ5Zjhj
MWE1ZDdjMWRmNjZhZS4uODhlYzA0NWFhNjBkYzE3MDBkNDVlNDliMDRjMzJiNDAxYjJkMjgyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmNwcApAQCAtODIsNiArODIsNyBAQCB2b2lkIEF0dHI6OmNyZWF0ZVRleHRD
aGlsZCgpCiAgICAgICAgIC8vIFRoaXMgZG9lcyBldmVyeXRoaW5nIGFwcGVuZENoaWxkKCkgd291
bGQgZG8gaW4gdGhpcyBzaXR1YXRpb24gKGFzc3VtaW5nIG1faWdub3JlQ2hpbGRyZW5DaGFuZ2Vk
IHdhcyBzZXQpLAogICAgICAgICAvLyBidXQgbXVjaCBtb3JlIGVmZmljaWVudGx5LgogICAgICAg
ICB0ZXh0Tm9kZS0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlzKTsKKyAgICAgICAgdGV4dE5vZGUt
PnVuc2V0TGlmZXRpbWVPd25lcigpOwogICAgICAgICBzZXRGaXJzdENoaWxkKHRleHROb2RlLmdl
dCgpKTsKICAgICAgICAgc2V0TGFzdENoaWxkKHRleHROb2RlLmdldCgpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggZGFmZWU2MDc3YzI5MGNjZGRhN2JmY2Zh
ZmZiYTJhOTVkNjE0NGNmMy4uY2Y3NDdiMWI0NmViOTUzZmE4NzNhMWE4NzgyNjljZjJiNzc2Nzhl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNDI2LDcgKzQyNiw3IEBA
IGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSogb2xkQ2hpbGQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgICAgICBOb2RlKiBuZXh0ID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7CiAg
ICAgICAgIHJlbW92ZUJldHdlZW4ocHJldiwgbmV4dCwgY2hpbGQuZ2V0KCkpOwogICAgICAgICBj
aGlsZHJlbkNoYW5nZWQoZmFsc2UsIHByZXYsIG5leHQsIC0xKTsKLSAgICAgICAgQ2hpbGROb2Rl
UmVtb3ZhbE5vdGlmaWVyKHRoaXMpLm5vdGlmeShjaGlsZC5nZXQoKSk7CisgICAgICAgIENoaWxk
Tm9kZVJlbW92YWxOb3RpZmllcih0aGlzKS5ub3RpZnkoY2hpbGQuZ2V0KCksIENoaWxkTm9kZVJl
bW92YWxOb3RpZmllcjo6SW5zZXJ0aW9uUG9pbnREZWxldGlvbkhhc05vdEJlZ3VuKTsKICAgICB9
CiAgICAgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogCkBAIC00NzMsNyArNDczLDcg
QEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJSZW1vdmVDaGlsZChOb2RlKiBvbGRDaGlsZCkK
ICAgICByZW1vdmVCZXR3ZWVuKHByZXYsIG5leHQsIG9sZENoaWxkKTsKIAogICAgIGNoaWxkcmVu
Q2hhbmdlZCh0cnVlLCBwcmV2LCBuZXh0LCAtMSk7Ci0gICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlm
aWVyKHRoaXMpLm5vdGlmeShvbGRDaGlsZCk7CisgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVy
KHRoaXMpLm5vdGlmeShvbGRDaGlsZCwgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpJbnNlcnRp
b25Qb2ludERlbGV0aW9uSGFzTm90QmVndW4pOwogfQogCiAvLyB0aGlzIGRpZmZlcnMgZnJvbSBv
dGhlciByZW1vdmUgZnVuY3Rpb25zIGJlY2F1c2UgaXQgZm9yY2libHkgcmVtb3ZlcyBhbGwgdGhl
IGNoaWxkcmVuLApAQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3Zl
Q2hpbGRyZW4oKQogICAgICAgICBjaGlsZHJlbkNoYW5nZWQoZmFsc2UsIDAsIDAsIC1zdGF0aWNf
Y2FzdDxpbnQ+KHJlbW92ZWRDaGlsZHJlbkNvdW50KSk7CiAKICAgICAgICAgZm9yIChpID0gMDsg
aSA8IHJlbW92ZWRDaGlsZHJlbkNvdW50OyArK2kpCi0gICAgICAgICAgICBDaGlsZE5vZGVSZW1v
dmFsTm90aWZpZXIodGhpcykubm90aWZ5KHJlbW92ZWRDaGlsZHJlbltpXS5nZXQoKSk7CisgICAg
ICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIodGhpcykubm90aWZ5KHJlbW92ZWRDaGls
ZHJlbltpXS5nZXQoKSwgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpJbnNlcnRpb25Qb2ludERl
bGV0aW9uSGFzTm90QmVndW4pOwogCiAgICAgICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IGMxNDdkMDE1NTBlZDUxMjQ2OTk2
NjAzYzFhNTQ5NzlkNzM5OWQyYTEuLjBiNWQzYWM3YmE2Yjc1YWRiZTg3MTc0ZjFmZjZhZWU5NTk1
M2ExZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtMTE5LDkgKzExOSwxMCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2Vu
ZXJpY05vZGVDb250YWluZXI+CiAgICAgZnJpZW5kIHZvaWQgYXBwZW5kQ2hpbGRUb0NvbnRhaW5l
cihHZW5lcmljTm9kZSogY2hpbGQsIEdlbmVyaWNOb2RlQ29udGFpbmVyKik7Ci0KICAgICB0ZW1w
bGF0ZTxjbGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+CiAgICAg
ZnJpZW5kIHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmlj
Tm9kZSomIGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZT4KKyAgICBmcmllbmQgYm9vbCBpc1JlYWNo
YWJsZUZyb21XcmFwcGVyKEdlbmVyaWNOb2RlKiwgR2VuZXJpY05vZGUqKik7CiAKICAgICB2b2lk
IHNldEZpcnN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9maXJzdENoaWxkID0gY2hpbGQ7IH0KICAg
ICB2b2lkIHNldExhc3RDaGlsZChOb2RlKiBjaGlsZCkgeyBtX2xhc3RDaGlsZCA9IGNoaWxkOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAppbmRl
eCBmNTY1YWRiNGQ0MjZmMzI5MGNiZWFlMTBkMmZjZmU2YzgwZGQ0ODM2Li44MWE4ODcwMTFiZDRh
ZTY4MzQ4OGFlMTIyNWU4NDFjNDk3NmQ5YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAKQEAgLTQ3LDkgKzQ3LDExIEBAIHZvaWQgQ2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9Eb2N1bWVu
dChDb250YWluZXJOCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChFbGVtZW50U2hhZG93KiBz
aGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKSB7CisgICAgICAgIG1fdHJlZVNjb3Bl
RGVwdGgrKzsKICAgICAgICAgU2hhZG93Um9vdFZlY3RvciByb290cyhzaGFkb3cpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3RzLnNpemUoKTsgKytpKQogICAgICAgICAgICAg
bm90aWZ5Tm9kZUluc2VydGVkSW50b0RvY3VtZW50KHJvb3RzW2ldLmdldCgpKTsKKyAgICAgICAg
bV90cmVlU2NvcGVEZXB0aC0tOwogICAgIH0KIH0KIApAQCAtNTgsMTAgKzYwLDE0IEBAIHZvaWQg
Q2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9U
cmVlKENvbnRhaW5lck5vZGUqCiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYg
KGNoaWxkLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRl
ZEludG9UcmVlKHRvQ29udGFpbmVyTm9kZShjaGlsZCkpOworICAgICAgICBlbHNlIGlmICghbV90
cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsK
ICAgICB9CiAKKyAgICBtX3RyZWVTY29wZURlcHRoKys7CiAgICAgZm9yIChTaGFkb3dSb290KiBy
b290ID0gbm9kZS0+eW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRl
clNoYWRvd1Jvb3QoKSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUocm9vdCk7
CisgICAgbV90cmVlU2NvcGVEZXB0aC0tOwogfQogCiB2b2lkIENoaWxkTm9kZVJlbW92YWxOb3Rp
Zmllcjo6bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSog
bm9kZSkKQEAgLTgyLDkgKzg4LDExIEBAIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpu
b3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZyb21Eb2N1bWVudChDb250YWluZXJOb2RlCiAgICAgICAg
IG5vZGUtPmRvY3VtZW50KCktPnNldENTU1RhcmdldCgwKTsKIAogICAgIGlmIChFbGVtZW50U2hh
ZG93KiBzaGFkb3cgPSB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpKSB7CisgICAgICAgIG1fdHJl
ZVNjb3BlRGVwdGgrKzsKICAgICAgICAgU2hhZG93Um9vdFZlY3RvciByb290cyhzaGFkb3cpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJvb3RzLnNpemUoKTsgKytpKQogICAgICAg
ICAgICAgbm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQocm9vdHNbaV0uZ2V0KCkpOworICAg
ICAgICBtX3RyZWVTY29wZURlcHRoLS07CiAgICAgfQogfQogCkBAIC05MywxNSArMTAxLDE5IEBA
IHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlEZXNjZW5kYW50UmVtb3ZlZEZy
b21UcmVlKENvbnRhaW5lck5vZGUqIG5vCiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG5vZGUtPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgaWYgKGNoaWxkLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVS
ZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKGNoaWxkKSk7CisgICAgICAgIGVsc2UgaWYg
KCFtX3RyZWVTY29wZURlcHRoKQorICAgICAgICAgICAgY2hlY2tJZkxpZmV0aW1lT3duZXIoY2hp
bGQpOwogICAgIH0KIAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gdG9FbGVtZW50KG5vZGUp
LT5zaGFkb3coKSkgeworICAgICAgICBtX3RyZWVTY29wZURlcHRoKys7CiAgICAgICAgIFNoYWRv
d1Jvb3RWZWN0b3Igcm9vdHMoc2hhZG93KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByb290cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRy
ZWUocm9vdHNbaV0uZ2V0KCkpOworICAgICAgICBtX3RyZWVTY29wZURlcHRoLS07CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29yaXRo
bXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCmluZGV4
IDEzNThiMDVlYjgzYTFjMGRjNTk4ZmZlMjdhNmY4ZTg0ZTAwN2E3NGIuLjI4ZTMwYzA1Nzg1NTFl
YTIxNjZjYzc1ZTA0Zjc0ODVhZGY0NDFlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlQWxnb3JpdGhtcy5oCkBAIC0zMCw5ICszMCwxMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ2hpbGROb2RlSW5zZXJ0aW9u
Tm90aWZpZXIoQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAgICAgIDogbV9pbnNl
cnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCkKKyAgICAgICAgLCBtX3RyZWVTY29wZURlcHRoKDAp
CiAgICAgewogICAgIH0KIApAQCAtNDYsMjUgKzQ4LDQxIEBAIHByaXZhdGU6CiAgICAgdm9pZCBu
b3RpZnlOb2RlSW5zZXJ0ZWRJbnRvVHJlZShDb250YWluZXJOb2RlKik7CiAKICAgICBDb250YWlu
ZXJOb2RlKiBtX2luc2VydGlvblBvaW50OwotICAgIFZlY3RvcjwgUmVmUHRyPE5vZGU+ID4gbV9w
b3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKKyAgICBPd25QdHI8VmVjdG9yPFJlZlB0
cjxOb2RlPiA+ID4gbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKKyAgICAvLyBt
X3RyZWVTY29wZURlcHRoID09IDAgbWVhbnMgdGhhdCB0aGUgTm90aWZpZXIgaXMgaW4gdGhlIFRy
ZWVTY29wZSBvZiBtX2luc2VydGlvblBvaW50LgorICAgIGludCBtX3RyZWVTY29wZURlcHRoOwog
fTsKIAogY2xhc3MgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKKyAgICBlbnVtIEluc2VydGlvblBvaW50RGVsZXRpb25TdGF0
ZSB7CisgICAgICAgIEluc2VydGlvblBvaW50RGVsZXRpb25IYXNCZWd1biwKKyAgICAgICAgSW5z
ZXJ0aW9uUG9pbnREZWxldGlvbkhhc05vdEJlZ3VuCisgICAgfTsKKwogICAgIGV4cGxpY2l0IENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcihDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAg
ICAgICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KQorICAgICAgICAsIG1fdHJl
ZVNjb3BlRGVwdGgoMCkKKyAgICAgICAgLCBtX2xpZmV0aW1lT3duZXJGb3VuZChmYWxzZSkKICAg
ICB7CiAgICAgfQogCi0gICAgdm9pZCBub3RpZnkoTm9kZSopOworICAgIHZvaWQgbm90aWZ5KE5v
ZGUqLCBJbnNlcnRpb25Qb2ludERlbGV0aW9uU3RhdGUpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
bm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tRG9jdW1lbnQoQ29udGFpbmVyTm9kZSopOwogICAg
IHZvaWQgbm90aWZ5RGVzY2VuZGFudFJlbW92ZWRGcm9tVHJlZShDb250YWluZXJOb2RlKik7CiAg
ICAgdm9pZCBub3RpZnlOb2RlUmVtb3ZlZEZyb21Eb2N1bWVudChOb2RlKik7CiAgICAgdm9pZCBu
b3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqKTsKKyAgICB2b2lkIGNoZWNr
SWZMaWZldGltZU93bmVyKE5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIG1faW5zZXJ0aW9u
UG9pbnQ7CisgICAgLy8gbV90cmVlU2NvcGVEZXB0aCA9PSAwIG1lYW5zIHRoYXQgdGhlIE5vdGlm
aWVyIGlzIGluIHRoZSBUcmVlU2NvcGUgb2YgbV9pbnNlcnRpb25Qb2ludC4KKyAgICBpbnQgbV90
cmVlU2NvcGVEZXB0aDsKKyAgICAvLyBtX2xpZmV0aW1lT3duZXJGb3VuZCA9PSB0cnVlIG1lYW5z
IHRoYXQgYSBsaWZldGltZSBvd25lciBpcyBmb3VuZCBpbiB0aGUgVHJlZVNjb3BlIG9mCisgICAg
Ly8gbV9pbnNlcnRpb25Qb2ludC4KKyAgICBib29sIG1fbGlmZXRpbWVPd25lckZvdW5kOwogfTsK
IAogbmFtZXNwYWNlIFByaXZhdGUgewpAQCAtNzQsMTEgKzkyLDY2IEBAIG5hbWVzcGFjZSBQcml2
YXRlIHsKIAogfQogCisvLyBJZiB0aGUgVHJlZVNjb3BlIGhhcyBhIE5vZGUgcmVmZXJlbmNlZCBi
eSBhIHdyYXBwZXIgb2JqZWN0LCBpc1JlYWNoYWJsZUZyb21XcmFwcGVyKCkgc2V0cworLy8gYSBs
aWZldGltZSBvd25lciBvbiB0aGUgTm9kZSBhbmQgcmV0dXJucyB0cnVlLiBPdGhlcndpc2UsIGlz
UmVhY2hhYmxlRnJvbVdyYXBwZXIoKSBzaW1wbHkKKy8vIHJldHVybnMgZmFsc2Ugd2l0aG91dCBz
ZXR0aW5nIGEgbGlmZXRpbWUgb3duZXIuCit0ZW1wbGF0ZTxjbGFzcyBHZW5lcmljTm9kZT4KK2lu
bGluZSBib29sIGlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoR2VuZXJpY05vZGUqIHN0YXJ0Tm9kZSwg
R2VuZXJpY05vZGUqKiByb290KQoreworICAgIC8vIEF0IHRoaXMgcG9pbnQsIHRoZSBUcmVlU2Nv
cGUgaXMgZ3VhcmFudGVlZCB0byBoYXZlIG5vIGxpZmV0aW1lIG93bmVyLgorICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVwIGJlZm9yZVxuIiwgc3RhcnRO
b2RlKTsKKyAgICBBU1NFUlQoIXN0YXJ0Tm9kZS0+aXNMaWZldGltZU93bmVyKCkpOworCisgICAg
Ly8gV2UgdHJhdmVyc2UgdGhlIFRyZWVTY29wZSBpbiB0aGUgREZTIG9yZGVyLCBzdGFydGluZyBm
cm9tIHN0YXJ0Tm9kZS4gVGhlIHRyYXZlcnNhbAorICAgIC8vIG9yZGVyIGRvZXMgbm90IG1hdHRl
ciBmb3IgY29ycmVjdG5lc3MgYnV0IG1hdHRlcnMgZm9yIHBlcmZvcm1hbmNlLgorICAgIC8vIFNl
ZSBhIGRlc2lnbiBkb2N1bWVudCAoaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9nb29nbGUuY29t
L2RvY3VtZW50L2QvMTd1Yks0YW9ibTRHM2MyRkFEcUVvWEF3U1diQ0lpcFh3enJHRkpZX2F0b1Ev
ZWRpdCkgZm9yIG1vcmUgZGV0YWlscy4KKyAgICBHZW5lcmljTm9kZSogbm9kZSA9IHN0YXJ0Tm9k
ZTsKKyAgICBib29sIHRyYXZlcnNlU3RhcnRlZCA9IGZhbHNlOworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIEFTU0VSVChub2RlKTsKKyAgICAgICAgQVNTRVJUKCFub2RlLT5pc0xpZmV0aW1l
T3duZXIoKSk7CisKKyAgICAgICAgaWYgKHRyYXZlcnNlU3RhcnRlZCkgeworICAgICAgICAgICAg
Ly8gV2UgY2FtZSBiYWNrIHRvIHRoZSBzdGFydE5vZGUuCisgICAgICAgICAgICBpZiAobm9kZSA9
PSBzdGFydE5vZGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
dHJhdmVyc2VTdGFydGVkID0gdHJ1ZTsKKworICAgICAgICBpZiAobm9kZS0+d3JhcHBlclJlZkNv
dW50KCkpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGZpbmQgYSBOb2RlIHJlZmVyZW5jZWQgYnkg
YSB3cmFwcGVyIG9iamVjdCwgd2Ugc2V0IGEgbGlmZXRpbWUgb3duZXIKKyAgICAgICAgICAgIC8v
IG9uIHRoZSBOb2RlLgorICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJub2RlLT53cmFw
cGVyUmVmQ291bnQoKT4wICVwIHdyYXBwZXJSZWZDb3VudD09JWRcbiIsIG5vZGUsIG5vZGUtPndy
YXBwZXJSZWZDb3VudCgpKTsKKyAgICAgICAgICAgIG5vZGUtPnNldExpZmV0aW1lT3duZXIoKTsK
KyAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigp
ICVwIGFmdGVyXG4iLCBzdGFydE5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAobm9kZS0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgICAgICBu
b2RlID0gbm9kZS0+Zmlyc3RDaGlsZCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgd2hpbGUgKCFub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBp
ZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkgeworICAgICAgICAgICAgICAgICpyb290ID0gbm9kZTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vZGUg
PSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGUtPnBhcmVu
dE5vZGUoKSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOworICAgIH0K
KworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVwIGFm
dGVyXG4iLCBzdGFydE5vZGUpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8gSGVscGVyIGZ1
bmN0aW9ucyBmb3IgVHJlZVNoYXJlZC1kZXJpdmVkIGNsYXNzZXMsIHdoaWNoIGhhdmUgYSAnTm9k
ZScgc3R5bGUgaW50ZXJmYWNlCiAvLyBUaGlzIGFwcGxpZXMgdG8gJ0NvbnRhaW5lck5vZGUnIGFu
ZCAnU1ZHRWxlbWVudEluc3RhbmNlJwogdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNz
IEdlbmVyaWNOb2RlQ29udGFpbmVyPgogaW5saW5lIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNv
bnRhaW5lcihHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKQogeworICAgIC8vIGZwcmlu
dGYoc3RkZXJyLCAicmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcigpICVwIGJlZm9yZVxuIiwg
Y29udGFpbmVyKTsKICAgICAvLyBMaXN0IG9mIG5vZGVzIHRvIGJlIGRlbGV0ZWQuCiAgICAgR2Vu
ZXJpY05vZGUqIGhlYWQgPSAwOwogICAgIEdlbmVyaWNOb2RlKiB0YWlsID0gMDsKQEAgLTg4LDgg
KzE2MSw2IEBAIGlubGluZSB2b2lkIHJlbW92ZUFsbENoaWxkcmVuSW5Db250YWluZXIoR2VuZXJp
Y05vZGVDb250YWluZXIqIGNvbnRhaW5lcikKICAgICBHZW5lcmljTm9kZSogbjsKICAgICBHZW5l
cmljTm9kZSogbmV4dDsKICAgICB3aGlsZSAoKG4gPSBoZWFkKSAhPSAwKSB7Ci0gICAgICAgIEFT
U0VSVChuLT5tX2RlbGV0aW9uSGFzQmVndW4pOwotCiAgICAgICAgIG5leHQgPSBuLT5uZXh0U2li
bGluZygpOwogICAgICAgICBuLT5zZXROZXh0U2libGluZygwKTsKIApAQCAtMTAwLDggKzE3MSwx
NCBAQCBpbmxpbmUgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKEdlbmVyaWNOb2Rl
Q29udGFpbmVyKiBjb250YWluZXIpCiAgICAgICAgIGlmIChuLT5oYXNDaGlsZE5vZGVzKCkpCiAg
ICAgICAgICAgICBQcml2YXRlOjphZGRDaGlsZE5vZGVzVG9EZWxldGlvblF1ZXVlPEdlbmVyaWNO
b2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lcj4oaGVhZCwgdGFpbCwgc3RhdGljX2Nhc3Q8R2VuZXJp
Y05vZGVDb250YWluZXIqPihuKSk7CiAKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG4tPm1fZGVs
ZXRpb25IYXNCZWd1biA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJkZWxldGUobikgJXAgYmVmb3JlXG4iLCBuKTsKICAgICAgICAgZGVsZXRlIG47CisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlKG4pICVwIGFmdGVyXG4iLCBuKTsKICAgICB9Cisg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJyZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVyKCkgJXAg
YWZ0ZXJcbiIsIGNvbnRhaW5lcik7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBj
bGFzcyBHZW5lcmljTm9kZUNvbnRhaW5lcj4KQEAgLTEyNCw5ICsyMDEsMTAgQEAgbmFtZXNwYWNl
IFByaXZhdGUgewogCiAgICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVy
aWNOb2RlQ29udGFpbmVyLCBib29sIGRpc3BhdGNoUmVtb3ZhbE5vdGlmaWNhdGlvbj4KICAgICBz
dHJ1Y3QgTm9kZVJlbW92YWxEaXNwYXRjaGVyIHsKLSAgICAgICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2goR2VuZXJpY05vZGUqLCBHZW5lcmljTm9kZUNvbnRhaW5lciopCisgICAgICAgIHN0YXRpYyB2
b2lkIGRpc3BhdGNoKEdlbmVyaWNOb2RlKiBub2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lciopCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIG5vLW9wLCBieSBkZWZhdWx0CisgICAgICAgICAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIlJlbW92YWxEaXNwYXRjaGVyKCkgJXBcbiIsIG5vZGUpOworICAg
ICAgICAgICAgbm9kZS0+c2V0TGlmZXRpbWVPd25lcigpOwogICAgICAgICB9CiAgICAgfTsKIApA
QCAtMTM3LDggKzIxNSwxNSBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAgICAgICAvLyBD
bGVhbiB1cCBhbnkgVHJlZVNjb3BlIHRvIGEgcmVtb3ZlZCB0cmVlLgogICAgICAgICAgICAgaWYg
KERvY3VtZW50KiBjb250YWluZXJEb2N1bWVudCA9IGNvbnRhaW5lci0+b3duZXJEb2N1bWVudCgp
KQogICAgICAgICAgICAgICAgIGNvbnRhaW5lckRvY3VtZW50LT5hZG9wdElmTmVlZGVkKG5vZGUp
OwotICAgICAgICAgICAgaWYgKG5vZGUtPmluRG9jdW1lbnQoKSkKLSAgICAgICAgICAgICAgICBD
aGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoY29udGFpbmVyKS5ub3RpZnkobm9kZSk7CisKKyAgICAg
ICAgICAgIGlmIChub2RlLT5pbkRvY3VtZW50KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBub3Rp
ZnkoKSB3aWxsIHNldCBhIGxpZmV0aW1lIG93bmVyIG9mIHRoZSByZW1vdmVkIFRyZWVTY29wZS4K
KyAgICAgICAgICAgICAgICBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXIoY29udGFpbmVyKS5ub3Rp
Znkobm9kZSwgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpJbnNlcnRpb25Qb2ludERlbGV0aW9u
SGFzQmVndW4pOworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbERp
c3BhdGNoZXIoKSAlcCBpbkRvY3VtZW50KClcbiIsIG5vZGUpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBub2RlLT5zZXRMaWZldGltZU93bmVyKCk7CisgICAgICAgICAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJSZW1vdmFsRGlzcGF0Y2hlcigpICVwICFpbkRvY3Vt
ZW50KClcbiIsIG5vZGUpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfTsKIApAQCAt
MTY1LDEwICsyNTAsOCBAQCBuYW1lc3BhY2UgUHJpdmF0ZSB7CiAgICAgICAgICAgICBuLT5zZXRO
ZXh0U2libGluZygwKTsKICAgICAgICAgICAgIG4tPnNldFBhcmVudE9ySG9zdE5vZGUoMCk7CiAK
KyAgICAgICAgICAgIEFTU0VSVCghbi0+d3JhcHBlclJlZkNvdW50KCkpOwogICAgICAgICAgICAg
aWYgKCFuLT5yZWZDb3VudCgpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgICAgIG4t
Pm1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7Ci0jZW5kaWYKICAgICAgICAgICAgICAgICAvLyBB
ZGQgdGhlIG5vZGUgdG8gdGhlIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgZGVsZXRlZC4KICAgICAgICAg
ICAgICAgICAvLyBSZXVzZSB0aGUgbmV4dFNpYmxpbmcgcG9pbnRlciBmb3IgdGhpcyBwdXJwb3Nl
LgogICAgICAgICAgICAgICAgIGlmICh0YWlsKQpAQCAtMTc5LDYgKzI2Miw3IEBAIG5hbWVzcGFj
ZSBQcml2YXRlIHsKICAgICAgICAgICAgICAgICB0YWlsID0gbjsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEdlbmVyaWNOb2RlPiBwcm90ZWN0KG4pOyAvLyBy
ZW1vdmVkRnJvbURvY3VtZW50IG1heSByZW1vdmUgcmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIHRo
aXMgbm9kZS4KKyAgICAgICAgICAgICAgICAvLyBkaXNwYXRjaCgpIHNldHMgYSBsaWZldGltZSBv
d25lciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUuCiAgICAgICAgICAgICAgICAgTm9kZVJlbW92
YWxEaXNwYXRjaGVyPEdlbmVyaWNOb2RlLCBHZW5lcmljTm9kZUNvbnRhaW5lciwgU2hvdWxkRGlz
cGF0Y2hSZW1vdmFsTm90aWZpY2F0aW9uPEdlbmVyaWNOb2RlPjo6dmFsdWU+OjpkaXNwYXRjaChu
LCBjb250YWluZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTIsOSArMjc2LDE2
IEBAIG5hbWVzcGFjZSBQcml2YXRlIHsKIGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5v
dGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9kZSkKIHsKICAg
ICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsKKyAgICAvLyBmcHJpbnRm
KHN0ZGVyciwgIm5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCgpICVwIGluc2VydGlvblBv
aW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9p
bnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBp
ZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIG5vZGUtPnVuc2V0TGlmZXRpbWVPd25lcigp
OworCiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3Qobm9kZSk7Ci0gICAgaWYgKE5vZGU6Okluc2Vy
dGlvblNob3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRl
ZEludG8obV9pbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNh
dGlvblRhcmdldHMuYXBwZW5kKG5vZGUpOworICAgIGlmIChOb2RlOjpJbnNlcnRpb25TaG91bGRD
YWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5z
ZXJ0aW9uUG9pbnQpKSB7CisgICAgICAgIGlmICghbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9u
VGFyZ2V0cykKKyAgICAgICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMg
PSBhZG9wdFB0cihuZXcgVmVjdG9yPFJlZlB0cjxOb2RlPiA+KCkpOworICAgICAgICBtX3Bvc3RJ
bnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLT5hcHBlbmQobm9kZSk7CisgICAgfQogICAgIGlm
IChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5RGVzY2VuZGFudEluc2Vy
dGVkSW50b0RvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CiB9CkBAIC0yMDIsMTAgKzI5
MywxNyBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5Tm9k
ZUluc2VydGVkSW50b0RvY3VtZW50KE5vZGUqIG5vZAogaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5z
ZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUq
IG5vZGUpCiB7CiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoKSAlcCBp
bnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JIb3N0PSVwXG4iLCBub2RlLCBtX2lu
c2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUtPnBhcmVudE9ySG9zdE5vZGUo
KSk7CisgICAgaWYgKCFtX3RyZWVTY29wZURlcHRoKQorICAgICAgICBub2RlLT51bnNldExpZmV0
aW1lT3duZXIoKTsKKwogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKIAotICAgIGlmIChOb2Rl
OjpJbnNlcnRpb25TaG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+
aW5zZXJ0ZWRJbnRvKG1faW5zZXJ0aW9uUG9pbnQpKQotICAgICAgICBtX3Bvc3RJbnNlcnRpb25O
b3RpZmljYXRpb25UYXJnZXRzLmFwcGVuZChub2RlKTsKKyAgICBpZiAoTm9kZTo6SW5zZXJ0aW9u
U2hvdWxkQ2FsbERpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zID09IG5vZGUtPmluc2VydGVkSW50
byhtX2luc2VydGlvblBvaW50KSkgeworICAgICAgICBpZiAoIW1fcG9zdEluc2VydGlvbk5vdGlm
aWNhdGlvblRhcmdldHMpCisgICAgICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKTsKKyAgICAgICAg
bV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy0+YXBwZW5kKG5vZGUpOworICAgIH0K
ICAgICBub3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShub2RlKTsKIAogICAgIGFsbG93
RXZlbnREaXNwYXRjaCgpOwpAQCAtMjE4LDggKzMxNiwxMiBAQCBpbmxpbmUgdm9pZCBDaGlsZE5v
ZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5SW5zZXJ0ZWRJbnRvRG9jdW1lbnQoTm9kZSogbm9k
ZSkKIAogaW5saW5lIHZvaWQgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeShOb2Rl
KiBub2RlKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiSW5zZXJ0aW9uTm90aWZpZXI6Om5v
dGlmeSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXAgYmVm
b3JlXG4iLCBub2RlLCBtX2luc2VydGlvblBvaW50LCBub2RlLT5wYXJlbnROb2RlKCksIG5vZGUt
PnBhcmVudE9ySG9zdE5vZGUoKSk7CiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVu
KCkpOwogCisgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICBtX3RyZWVTY29w
ZURlcHRoID0gMTsKKwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlKG5vZGUtPmRvY3VtZW50KCksIG5vZGUpOwogI2Vu
ZGlmCkBAIC0yMzEsMTUgKzMzMywyMyBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25O
b3RpZmllcjo6bm90aWZ5KE5vZGUqIG5vZGUpCiAgICAgICAgIG5vdGlmeU5vZGVJbnNlcnRlZElu
dG9Eb2N1bWVudChub2RlKTsKICAgICBlbHNlIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkK
ICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUodG9Db250YWluZXJOb2RlKG5vZGUp
KTsKKyAgICBlbHNlIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgbm9kZS0+dW5zZXRM
aWZldGltZU93bmVyKCk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9zdEluc2Vy
dGlvbk5vdGlmaWNhdGlvblRhcmdldHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcG9zdEluc2Vy
dGlvbk5vdGlmaWNhdGlvblRhcmdldHNbaV0tPmRpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zKG1f
aW5zZXJ0aW9uUG9pbnQpOworICAgIGlmIChtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJn
ZXRzKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wb3N0SW5zZXJ0aW9uTm90
aWZpY2F0aW9uVGFyZ2V0cy0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAoKm1fcG9zdEluc2Vy
dGlvbk5vdGlmaWNhdGlvblRhcmdldHMpW2ldLT5kaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyht
X2luc2VydGlvblBvaW50KTsKKyAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJJbnNlcnRp
b25Ob3RpZmllcjo6bm90aWZ5KCkgJXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFyZW50PSVwIHBhcmVu
dE9ySG9zdD0lcCBhZnRlclxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50
Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOwogfQogCi0KIGlubGluZSB2b2lkIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllcjo6bm90aWZ5Tm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQoTm9k
ZSogbm9kZSkKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsK
KyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIm5vdGlmeU5vZGVSZW1vdmFsRnJvbURvY3VtZW50KCkg
JXAgaW5zZXJ0aW9uUG9pbnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwgbm9kZSwg
bV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3RO
b2RlKCkpOworICAgIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgY2hlY2tJZkxpZmV0
aW1lT3duZXIobm9kZSk7CisKICAgICBub2RlLT5yZW1vdmVkRnJvbShtX2luc2VydGlvblBvaW50
KTsKIAogICAgIGlmIChub2RlLT5pc0NvbnRhaW5lck5vZGUoKSkKQEAgLTI0OSw2ICszNTksMTAg
QEAgaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnlOb2RlUmVtb3Zl
ZEZyb21Eb2N1bWVudChOb2RlKiBub2RlKQogaW5saW5lIHZvaWQgQ2hpbGROb2RlUmVtb3ZhbE5v
dGlmaWVyOjpub3RpZnlOb2RlUmVtb3ZlZEZyb21UcmVlKENvbnRhaW5lck5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUKCFtX2luc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpOworICAgIC8vIGZw
cmludGYoc3RkZXJyLCAibm90aWZ5Tm9kZVJlbW92YWxGcm9tVHJlZSgpICVwIGluc2VydGlvblBv
aW50PSVwIHBhcmVudD0lcCBwYXJlbnRPckhvc3Q9JXBcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9p
bnQsIG5vZGUtPnBhcmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKKyAgICBp
ZiAoIW1fdHJlZVNjb3BlRGVwdGgpCisgICAgICAgIGNoZWNrSWZMaWZldGltZU93bmVyKG5vZGUp
OworCiAgICAgZm9yYmlkRXZlbnREaXNwYXRjaCgpOwogCiAgICAgbm9kZS0+cmVtb3ZlZEZyb20o
bV9pbnNlcnRpb25Qb2ludCk7CkBAIC0yNTcsMTMgKzM3MSw0OSBAQCBpbmxpbmUgdm9pZCBDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUoQ29udGFpbmVy
Tm9kZSogbgogICAgIGFsbG93RXZlbnREaXNwYXRjaCgpOwogfQogCi1pbmxpbmUgdm9pZCBDaGls
ZE5vZGVSZW1vdmFsTm90aWZpZXI6Om5vdGlmeShOb2RlKiBub2RlKQoraW5saW5lIHZvaWQgQ2hp
bGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSwgSW5zZXJ0aW9uUG9pbnRE
ZWxldGlvblN0YXRlIHN0YXRlKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiUmVtb3ZhbE5v
dGlmaWVyOjpub3RpZnkoKSAlcCBpbnNlcnRpb25Qb2ludD0lcCBwYXJlbnQ9JXAgcGFyZW50T3JI
b3N0PSVwIGJlZm9yZVxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9kZS0+cGFyZW50Tm9k
ZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworICAgIGlmIChub2RlLT5pc1NoYWRvd1Jv
b3QoKSkKKyAgICAgICAgbV90cmVlU2NvcGVEZXB0aCA9IDE7CisKICAgICBpZiAobm9kZS0+aW5E
b2N1bWVudCgpKSB7CiAgICAgICAgIG5vdGlmeU5vZGVSZW1vdmVkRnJvbURvY3VtZW50KG5vZGUp
OwogICAgICAgICBub2RlLT5kb2N1bWVudCgpLT5ub3RpZnlSZW1vdmVQZW5kaW5nU2hlZXRJZk5l
ZWRlZCgpOwogICAgIH0gZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAg
IG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUodG9Db250YWluZXJOb2RlKG5vZGUpKTsKKyAgICBl
bHNlIGlmICghbV90cmVlU2NvcGVEZXB0aCkKKyAgICAgICAgY2hlY2tJZkxpZmV0aW1lT3duZXIo
bm9kZSk7CisKKyAgICBpZiAoIW1fbGlmZXRpbWVPd25lckZvdW5kICYmICFub2RlLT5pc1NoYWRv
d1Jvb3QoKSkgeworICAgICAgICAvLyBJZiBhIGxpZmV0aW1lIG93bmVyIGlzIG5vdCBmb3VuZCBp
biB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUsIGl0CisgICAgICAgIC8vIGluZGljYXRlcyB0aGF0IHRo
ZXJlIGlzIGV4YWN0bHkgb25lIGxpZmV0aW1lIG93bmVyIGluIHRoZSBvcmlnaW5hbAorICAgICAg
ICAvLyBUcmVlU2NvcGUuIFNvIHdlIGp1c3QgY2FsbCBnY1RyZWUoKSBmb3IgdGhlIHJvb3Qgbm9k
ZSBvZiB0aGUgcmVtb3ZlZAorICAgICAgICAvLyBUcmVlU2NvcGUsIGluIG9yZGVyIHRvIHNldCBh
IG5ldyBsaWZldGltZSBvd25lciBvZiB0aGUgcmVtb3ZlZCBUcmVlU2NvcGUuCisgICAgICAgIC8v
IGZwcmludGYoc3RkZXJyLCAibV9saWZldGltZU93bmVyRm91bmQ9ZmFsc2UgJXAgaW5zZXJ0aW9u
UG9pbnQ9JXAgcGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Q
b2ludCwgbm9kZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworICAg
ICAgICBBU1NFUlQobm9kZS0+cmVmQ291bnQoKSk7CisgICAgICAgIG5vZGUtPnNldExpZmV0aW1l
T3duZXIoKTsKKyAgICB9IGVsc2UgaWYgKG1fbGlmZXRpbWVPd25lckZvdW5kICYmIHN0YXRlID09
IEluc2VydGlvblBvaW50RGVsZXRpb25IYXNOb3RCZWd1bikgeworICAgICAgICAvLyBJZiBhIGxp
ZmV0aW1lIG93bmVyIGlzIGZvdW5kIGluIHRoZSByZW1vdmVkIFRyZWVTY29wZSwgaXQKKyAgICAg
ICAgLy8gaW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbm8gbGlmZXRpbWUgb3duZXIgaW4gdGhlIG9y
aWdpbmFsIFRyZWVTY29wZS4KKyAgICAgICAgLy8gU28gd2UgY2FsbCBnY1RyZWUoKSBmb3IgdGhl
IGluc2VydGlvbiBwb2ludCBvZiB0aGUgb3JpZ2luYWwKKyAgICAgICAgLy8gVHJlZVNjb3BlLCBp
biBvcmRlciB0byBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YgdGhlIG9yaWdpbmFsIFRyZWVT
Y29wZS4KKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJtX2xpZmV0aW1lT3duZXJGb3VuZD10
cnVlICFpbnNlcnRpb25Qb2ludERlbGV0aW9uSGFzQmVndW4gJXAgaW5zZXJ0aW9uUG9pbnQ9JXAg
cGFyZW50PSVwIHBhcmVudE9ySG9zdD0lcFxuIiwgbm9kZSwgbV9pbnNlcnRpb25Qb2ludCwgbm9k
ZS0+cGFyZW50Tm9kZSgpLCBub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkpOworICAgICAgICBtX2lu
c2VydGlvblBvaW50LT5nY1RyZWUoKTsKKyAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJS
ZW1vdmFsTm90aWZpZXI6Om5vdGlmeSgpICVwIGluc2VydGlvblBvaW50PSVwIHBhcmVudD0lcCBw
YXJlbnRPckhvc3Q9JXAgYWZ0ZXJcbiIsIG5vZGUsIG1faW5zZXJ0aW9uUG9pbnQsIG5vZGUtPnBh
cmVudE5vZGUoKSwgbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpKTsKK30KKworaW5saW5lIHZvaWQg
Q2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyOjpjaGVja0lmTGlmZXRpbWVPd25lcihOb2RlKiBub2Rl
KQoreworICAgIEFTU0VSVCghbV90cmVlU2NvcGVEZXB0aCk7CisgICAgaWYgKFVOTElLRUxZKG5v
ZGUtPmlzTGlmZXRpbWVPd25lcigpKSkgeworICAgICAgICAvLyBPbmUgVHJlZVNjb3BlIGlzIGd1
YXJhbnRlZWQgdG8gaGF2ZSBhdCBtb3N0IG9uZSBsaWZldGltZSBvd25lciwKKyAgICAgICAgLy8g
c28gbV9saWZldGltZU93bmVyRm91bmQgc2hvdWxkIG5vdCBiZWNvbWUgdHJ1ZSBtb3JlIHRoYW4g
b25jZS4KKyAgICAgICAgQVNTRVJUKCFtX2xpZmV0aW1lT3duZXJGb3VuZCk7CisgICAgICAgIG1f
bGlmZXRpbWVPd25lckZvdW5kID0gdHJ1ZTsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJu
b2RlLT5pc0xpZmV0aW1lT3duZXIoKT09dHJ1ZSAlcFxuIiwgbm9kZSk7CisgICAgfQogfQogCiBj
bGFzcyBDaGlsZEZyYW1lRGlzY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDAwZGUwZTc2ODM4OGVjOTM4MDBiNGY3YWU2ODg0NTgzM2JhMjIxZTcuLjYyMzBlNWE2MTFjYTgx
MTAxYjM2MDkwZDY0YTRlNDczYWJjMzE2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
Njc0LDYgKzY3NCw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogCiB2b2lkIERvY3VtZW50Ojpy
ZW1vdmVkTGFzdFJlZigpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJEb2N1bWVudDo6cmVt
b3ZlZExhc3RSZWYoKSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgIEFTU0VSVCghbV9kZWxldGlv
bkhhc0JlZ3VuKTsKICAgICBpZiAobV9ndWFyZFJlZkNvdW50KSB7CiAgICAgICAgIC8vIElmIHJl
bW92aW5nIGEgY2hpbGQgcmVtb3ZlcyB0aGUgbGFzdCBzZWxmLW9ubHkgcmVmLCB3ZSBkb24ndApA
QCAtNzAxLDYgKzcwMiw4IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAg
ICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywK
ICAgICAgICAgLy8gc28gdGVhciBkb3duIHNjb3BlIGluZm9ybWF0aW9uIHVwZnJvbnQgdG8gYXZv
aWQgaGF2aW5nIHN0YWxlIHJlZmVyZW5jZXMgaW4gdGhlIG1hcC4KICAgICAgICAgZGVzdHJveVRy
ZWVTY29wZURhdGEoKTsKKworICAgICAgICAvLyBGSVhNRTogS2VlcCBhbGwgdGhlIE5vZGVzIGFs
aXZlIHVudGlsIG1fZ3VhcmRSZWZDb3VudCBiZWNvbWVzIDAuCiAgICAgICAgIHJlbW92ZUFsbENo
aWxkcmVuKCk7CiAKICAgICAgICAgbV9tYXJrZXJzLT5kZXRhY2goKTsKQEAgLTcxNCwxNyArNzE3
LDE2IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9zY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY2xlYXIoKTsKICNlbmRpZgogCi0jaWZuZGVmIE5ERUJVRwot
ICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9IGZhbHNlOwotI2VuZGlmCi0KICAg
ICAgICAgZ3VhcmREZXJlZigpOwogICAgIH0gZWxzZSB7Ci0jaWZuZGVmIE5ERUJVRyAKLSAgICAg
ICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsgCi0jZW5kaWYgCisjaWZuZGVmIE5ERUJVRwor
ICAgICAgICBtX2RlbGV0aW9uSGFzQmVndW4gPSB0cnVlOworI2VuZGlmCisgICAgICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiZGVsZXRlKHRoaXMpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAgICAgICAg
IGRlbGV0ZSB0aGlzOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAl
cCBhZnRlclxuIiwgdGhpcyk7CiAgICAgfQorICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRG9jdW1l
bnQ6OnJlbW92ZWRMYXN0UmVmKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiBFbGVtZW50KiBE
b2N1bWVudDo6Z2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggNjRiOWYwYWRkYjc5NGMxMTk3M2U4OGVkNGM0MjRkYjMzMjhl
MjA5NC4uNjE3NWM1YjJmYjdmOGQxODk4YzVlZGU0ZGJlNmI5ZGY4ZTg1ZGFlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKQEAgLTI0NCwxMSArMjQ0LDEzIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKICAgICAgICAgLS1tX2d1YXJkUmVmQ291bnQ7
Ci0gICAgICAgIGlmICghbV9ndWFyZFJlZkNvdW50ICYmICFyZWZDb3VudCgpKSB7CisgICAgICAg
IGlmIChVTkxJS0VMWSghbV9ndWFyZFJlZkNvdW50ICYmICFyZWZDb3VudCgpKSkgeworICAgICAg
ICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJndWFyZERlcmVmKCkgZGVsZXRlKHRoaXMpICVwIGJl
Zm9yZVxuIiwgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAgICAgbV9kZWxldGlvbkhh
c0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImd1YXJkRGVyZWYoKSBkZWxldGUodGhpcykgJXAgYWZ0
ZXJcbiIsIHRoaXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTczLDcgKzExNzUsNyBAQCBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNy
ZW1lbnRlcjsKIAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKLSAgICAKKwogICAgIHZvaWQg
ZGV0YWNoUGFyc2VyKCk7CiAKICAgICB0eXBlZGVmIHZvaWQgKCpBcmd1bWVudHNDYWxsYmFjayko
Y29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWVTdHJpbmcsIERvY3Vt
ZW50Kiwgdm9pZCogZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTE3NmY4OTc3NTUx
ODI4YWY5Y2UyZTM3N2MwODNlYjRjZmEyODliYy4uMzQ1NjFhMGQ2MzlhYThiOTIzODhkZTEyZGFi
MmI1NWU2ODgyMWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTU5Miw2ICsxNTkyLDcg
QEAgQ1NTU3R5bGVEZWNsYXJhdGlvbiAqRWxlbWVudDo6c3R5bGUoKQogCiB2b2lkIEVsZW1lbnQ6
OmZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKQogeworICAgIC8vIGZwcmludGYo
c3RkZXJyLCAiRWxlbWVudDo6Zm9jdXMoKSAlcFxuIiwgdGhpcyk7CiAgICAgaWYgKCFpbkRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRTaGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cuY3Bw
CmluZGV4IGFlYjViNWI0NzViMjE5YmM1N2RjODVlZjJlN2I4MzJhZWU4ODkzZmMuLmY0NTAyODA1
MGRkYTY2N2YyNzgwNmY2NGIwYzE0ZTFiNTc3MTI5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFNoYWRvdy5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgdm9pZCBFbGVtZW50U2hhZG93OjphZGRTaGFk
b3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2gKICAg
ICBtX3NoYWRvd1Jvb3RzLnB1c2goc2hhZG93Um9vdC5nZXQoKSk7CiAgICAgc2V0VmFsaWRpdHlV
bmRldGVybWluZWQoKTsKICAgICBpbnZhbGlkYXRlRGlzdHJpYnV0aW9uKHNoYWRvd0hvc3QpOwor
ICAgIC8vIGZwcmludGYoc3RkZXJyLCAiRWxlbWVudFNoYWRvdzo6YWRkU2hhZG93Um9vdCgpIHNo
YWRvd1Jvb3Q9JXAgc2hhZG93SG9zdD0lcFxuIiwgc2hhZG93Um9vdC5nZXQoKSwgc2hhZG93SG9z
dCk7CiAgICAgQ2hpbGROb2RlSW5zZXJ0aW9uTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KHNo
YWRvd1Jvb3QuZ2V0KCkpOwogCiAgICAgLy8gRklYTUUoOTQ5MDUpOiBTaGFkb3dIb3N0IHNob3Vs
ZCBiZSByZWF0dGFjaGVkIGR1cmluZyByZWNhbGNTdHlsZS4KQEAgLTk0LDYgKzk1LDkgQEAgdm9p
ZCBFbGVtZW50U2hhZG93OjphZGRTaGFkb3dSb290KEVsZW1lbnQqIHNoYWRvd0hvc3QsIFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4gc2gKIAogdm9pZCBFbGVtZW50U2hhZG93OjpyZW1vdmVBbGxTaGFk
b3dSb290cygpCiB7CisgICAgaWYgKG1fc2hhZG93Um9vdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKICAgICAvLyBEb250IHByb3RlY3QgdGhpcyByZWYgY291bnQuCiAgICAgRWxlbWVu
dCogc2hhZG93SG9zdCA9IGhvc3QoKTsKIApAQCAtMTA5LDcgKzExMyw4IEBAIHZvaWQgRWxlbWVu
dFNoYWRvdzo6cmVtb3ZlQWxsU2hhZG93Um9vdHMoKQogICAgICAgICBvbGRSb290LT5zZXRQcmV2
KDApOwogICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBzaGFkb3dIb3N0LT5k
b2N1bWVudCgpLT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwotICAgICAgICBDaGlsZE5v
ZGVSZW1vdmFsTm90aWZpZXIoc2hhZG93SG9zdCkubm90aWZ5KG9sZFJvb3QuZ2V0KCkpOworICAg
ICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIkVsZW1lbnRTaGFkb3c6OnJlbW92ZUFsbFNoYWRvd1Jv
b3RzKCkgc2hhZG93Um9vdD0lcCBzaGFkb3dIb3N0PSVwXG4iLCBvbGRSb290LmdldCgpLCBzaGFk
b3dIb3N0KTsKKyAgICAgICAgQ2hpbGROb2RlUmVtb3ZhbE5vdGlmaWVyKHNoYWRvd0hvc3QpLm5v
dGlmeShvbGRSb290LmdldCgpLCBDaGlsZE5vZGVSZW1vdmFsTm90aWZpZXI6Okluc2VydGlvblBv
aW50RGVsZXRpb25IYXNCZWd1bik7CiAgICAgfQogCiAgICAgaW52YWxpZGF0ZURpc3RyaWJ1dGlv
bihzaGFkb3dIb3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA4YWIzMzUyZjYyYWMyMTVmNjc2YTZl
N2YyODRjZjY3MDMwNWE0YmIxLi43Mjg4M2JiZWMxMDM1MzkwZjJlMTg3OTkwMjBlZDI4MGRjZGE4
ZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0zOTUsNiArMzk1LDcgQEAgdm9pZCBOb2RlOjp0cmFj
a0ZvckRlYnVnZ2luZygpCiAKIE5vZGU6On5Ob2RlKCkKIHsKKyAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgIn5Ob2RlKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgSGFz
aFNldDxOb2RlKj46Oml0ZXJhdG9yIGl0ID0gaWdub3JlU2V0LmZpbmQodGhpcyk7CiAgICAgaWYg
KGl0ICE9IGlnbm9yZVNldC5lbmQoKSkKQEAgLTQyNiw2ICs0MjcsNyBAQCBOb2RlOjp+Tm9kZSgp
CiAgICAgICAgIGRvYy0+Z3VhcmREZXJlZigpOwogCiAgICAgSW5zcGVjdG9yQ291bnRlcnM6OmRl
Y3JlbWVudENvdW50ZXIoSW5zcGVjdG9yQ291bnRlcnM6Ok5vZGVDb3VudGVyKTsKKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIn5Ob2RlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOwogfQogCiB2b2lkIE5v
ZGU6OnNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTI3OTEsNiArMjc5Myw4IEBA
IFBhc3NSZWZQdHI8UHJvcGVydHlOb2RlTGlzdD4gTm9kZTo6cHJvcGVydHlOb2RlTGlzdChjb25z
dCBTdHJpbmcmIG5hbWUpCiAvLyBkZWxldGUgYSBOb2RlIGF0IGVhY2ggZGVyZWYgY2FsbCBzaXRl
Lgogdm9pZCBOb2RlOjpyZW1vdmVkTGFzdFJlZigpCiB7CisgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJOb2RlOjpyZW1vdmVkTGFzdFJlZigpICVwIGJlZm9yZVxuIiwgdGhpcyk7CisgICAgQVNTRVJU
KCFtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgIC8vIEFuIGV4cGxpY2l0IGNoZWNrIGZvciBEb2N1
bWVudCBoZXJlIGlzIGJldHRlciB0aGFuIGEgdmlydHVhbCBmdW5jdGlvbiBzaW5jZSBpdCBpcwog
ICAgIC8vIGZhc3RlciBmb3Igbm9uLURvY3VtZW50IG5vZGVzLCBhbmQgYmVjYXVzZSB0aGUgY2Fs
bCB0byByZW1vdmVkTGFzdFJlZiB0aGF0IGlzIGlubGluZWQKICAgICAvLyBhdCBhbGwgZGVyZWYg
Y2FsbCBzaXRlcyBpcyBzbWFsbGVyIGlmIGl0J3MgYSBub24tdmlydHVhbCBmdW5jdGlvbi4KQEAg
LTI4MDEsNyArMjgwNSwzNCBAQCB2b2lkIE5vZGU6OnJlbW92ZWRMYXN0UmVmKCkKICNpZm5kZWYg
TkRFQlVHCiAgICAgbV9kZWxldGlvbkhhc0JlZ3VuID0gdHJ1ZTsKICNlbmRpZgorICAgIC8vIGZw
cmludGYoc3RkZXJyLCAiZGVsZXRlKHRoaXMpICVwIGJlZm9yZVxuIiwgdGhpcyk7CiAgICAgZGVs
ZXRlIHRoaXM7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJkZWxldGUodGhpcykgJXAgYWZ0ZXJc
biIsIHRoaXMpOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiTm9kZTo6cmVtb3ZlZExhc3RSZWYo
KSAlcCBhZnRlclxuIiwgdGhpcyk7Cit9CisKKy8vIFdoZW4gZ2NUcmVlKCkgaXMgY2FsbGVkLCB0
aGUgVHJlZVNjb3BlIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBubyBsaWZldGltZSBvd25lci4KKy8v
IGdjVHJlZSgpIG11c3QgcmVjbGFpbSBhbGwgTm9kZXMgaW4gdGhlIFRyZWVTY29wZSBvciBzZXQg
YSBuZXcgbGlmZXRpbWUgb3duZXIgb2YKKy8vIHRoZSBUcmVlU2NvcGUuCit2b2lkIE5vZGU6Omdj
VHJlZSgpCit7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpnY1RyZWUoKSAlcCBiZWZv
cmVcbiIsIHRoaXMpOworICAgIE5vZGUqIHJvb3QgPSAwOworICAgIGlmIChpc1JlYWNoYWJsZUZy
b21XcmFwcGVyPE5vZGU+KHRoaXMsICZyb290KSkgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVy
ciwgImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCB0cnVlXG4iLCB0aGlzKTsKKyAgICAgICAg
Ly8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpnY1RyZWUoKSAlcCBhZnRlclxuIiwgdGhpcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUKHJvb3QpOworICAgIGlmICghcm9vdC0+
cGFyZW50T3JIb3N0Tm9kZSgpICYmICFyb290LT5yZWZDb3VudCgpKSB7CisgICAgICAgIEFTU0VS
VCghcm9vdC0+d3JhcHBlclJlZkNvdW50KCkpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwg
ImlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBmYWxzZSAhcm9vdC0+cGFyZW50T3JIb3N0Tm9k
ZSgpICYmICFyb290LT5yZWZDb3VudCgpXG4iLCB0aGlzKTsKKyAgICAgICAgcm9vdC0+cmVtb3Zl
ZExhc3RSZWYoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImlz
UmVhY2hhYmxlRnJvbVdyYXBwZXIoKSAlcCBmYWxzZSBvdGhlcndpc2Ugcm9vdC0+cGFyZW50T3JI
b3N0Tm9kZSgpPSVwIHJvb3QtPnJlZkNvdW50KCk9JWRcbiIsIHRoaXMsIHJvb3QtPnBhcmVudE9y
SG9zdE5vZGUoKSwgcm9vdC0+cmVmQ291bnQoKSk7CisgICAgICAgIHJvb3QtPnNldExpZmV0aW1l
T3duZXIoKTsKKyAgICB9CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJOb2RlOjpnY1RyZWUoKSAl
cCBhZnRlclxuIiwgdGhpcyk7CiB9CiAKIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDgy
MTRkOTg4ZDc2MDAwMzE0MTNlZjBjNjc0M2YxMDFlMjNjYzU1MzkuLmY0NGU2ZWExMmI0YzU5MTY4
NjMxZTQwNDFlOGZlY2I4MjRiNGVlNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMzc2LDYgKzM3Niw5IEBA
IHB1YmxpYzoKICAgICBib29sIGlzQ29udGVudEVkaXRhYmxlKCk7CiAgICAgYm9vbCBpc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpOwogCisgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOworICAgIHZv
aWQgZ2NUcmVlKCk7CisKICAgICB2b2lkIGluc3BlY3QoKTsKIAogICAgIGJvb2wgcmVuZGVyZXJJ
c0VkaXRhYmxlKEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0YWJsZSkg
Y29uc3QKQEAgLTc1Miw4ICs3NTUsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+OwogCi0gICAgdm9pZCByZW1v
dmVkTGFzdFJlZigpOwotCiAgICAgLy8gVGhlc2UgQVBJIHNob3VsZCBiZSBvbmx5IHVzZWQgZm9y
IGEgdHJlZSBzY29wZSBtaWdyYXRpb24uCiAgICAgLy8gc2V0VHJlZVNjb3BlKCkgcmV0dXJucyBO
b2RlUmFyZURhdGEgdG8gc2F2ZSBleHRyYSBub2RlUmFyZURhdGEoKSBpbnZvY2F0aW9ucyBvbiB0
aGUgY2FsbGVyIHNpdGUuCiAgICAgTm9kZVJhcmVEYXRhKiBzZXRUcmVlU2NvcGUoVHJlZVNjb3Bl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UcmVlU2hhcmVkLmgKaW5kZXggMDk3MzdmODk3MDU3ZGZk
ZGRlYTgxZTdjZTllYTNlYWFjZTk1ZTQ5Zi4uODk2MTE4MjJlOGZiYThhYmQ0NGYxNTVlYThkNWMx
MjNhMGQzZTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVHJlZVNoYXJl
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RyZWVTaGFyZWQuaApAQCAtMzIsNzIg
KzMyLDE2NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgUGFyZW50Tm9k
ZVR5cGU+IGNsYXNzIFRyZWVTaGFyZWQ7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBOb2RlVHlwZSwgdHlw
ZW5hbWUgUGFyZW50Tm9kZVR5cGU+IHZvaWQgYWRvcHRlZChUcmVlU2hhcmVkPE5vZGVUeXBlLCBQ
YXJlbnROb2RlVHlwZT4qKTsKICNlbmRpZgogCisvLyBUaGUgYWxnb3JpdGhtIGd1YXJhbnRlZXMg
dGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOgorLy8KKy8vICAgICAtIE91dHNpZGUgb2YgZ2NUcmVl
KCkgKG5vcm1hbCBjYXNlcyksIGVhY2ggVHJlZVNjb3BlIGhhcyBleGFjdGx5IG9uZQorLy8gICAg
ICAgbGlmZXRpbWUgb3duZXIuIFRoZSBsaWZldGltZSBvd25lciBpcyBzZXQgb24gdGhlIHJvb3Qg
Tm9kZSBvZiB0aGUgVHJlZVNjb3BlCisvLyAgICAgICBvciBhbnkgTm9kZSB0aGF0IGlzIHJlZmVy
ZW5jZWQgYnkgYSB3cmFwcGVyIG9iamVjdC4KKy8vCisvLyAgICAgLSBJbnNpZGUgb2YgZ2NUcmVl
KCksIHRoZSBUcmVlU2NvcGUgaGFzIG5vIGxpZmV0aW1lIG93bmVyLiBnY1RyZWUoKSByZWNsYWlt
cworLy8gICAgICAgYWxsIE5vZGVzIGluIHRoZSBUcmVlU2NvcGUgb3Igc2V0cyBhIG5ldyBsaWZl
dGltZSBvd25lciBvZiB0aGUgVHJlZVNjb3BlLgorLy8KKy8vIFNlZSBhIGRlc2lnbiBkb2N1bWVu
dCAoaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZG9jdW1lbnQvZC8xSGNh
ZVUtNzV4dWtNWVNVYXNrZURvSEwtTDBGTnVDREl1a3ZQbU9oZVk4US9lZGl0KSBmb3IgbW9yZSBk
ZXRhaWxzLgorCisjZGVmaW5lIFdyYXBwZXJSZWZjb3VudFdlaWdodCAoMSA8PCAxNikKKyNkZWZp
bmUgTGlmZXRpbWVPd25lckJpdE1hc2sgKDB4ODAwMDAwMDApCisKIHRlbXBsYXRlPHR5cGVuYW1l
IE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gY2xhc3MgVHJlZVNoYXJlZCB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJlZVNoYXJlZCk7CiBwcm90ZWN0ZWQ6CiAgICAgVHJl
ZVNoYXJlZCgpCiAgICAgICAgIDogbV9wYXJlbnQoMCkKLSAgICAgICAgLCBtX3JlZkNvdW50KDEp
CisgICAgICAgIC8vIEEgbmV3bHkgY3JlYXRlZCBOb2RlIGJlY29tZXMgYSBsaWZldGltZSBvd25l
ciwgYmVjYXVzZSB0aGlzIE5vZGUgaXMgdGhlIG9ubHkKKyAgICAgICAgLy8gTm9kZSBpbiB0aGUg
RE9NIHRyZWUuCisgICAgICAgICwgbV9yZWZDb3VudChMaWZldGltZU93bmVyQml0TWFzayB8IDEp
CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAsIG1fYWRvcHRpb25Jc1JlcXVpcmVkKHRydWUpCiAj
ZW5kaWYKICAgICB7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiVHJlZVNoYXJlZCgpICVw
XG4iLCB0aGlzKTsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNT
RVJUKGlzTGlmZXRpbWVPd25lcigpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIG1fZGVsZXRp
b25IYXNCZWd1biA9IGZhbHNlOwotICAgICAgICBtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbiA9
IGZhbHNlOwogI2VuZGlmCiAgICAgfQogCiAgICAgflRyZWVTaGFyZWQoKQogICAgIHsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJ+VHJlZVNoYXJlZCgpICVwXG4iLCB0aGlzKTsKICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJUKCFtX3JlZkNvdW50KTsK
KyAgICAgICAgQVNTRVJUKCFyZWZDb3VudCgpKTsKKyAgICAgICAgQVNTRVJUKCFpc0xpZmV0aW1l
T3duZXIoKSk7CiAgICAgICAgIEFTU0VSVChtX2RlbGV0aW9uSGFzQmVndW4pOwogICAgICAgICBB
U1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVkKTsKICAgICB9CiAKIHB1YmxpYzoKKyAgICAvLyBU
aGUgcGVyZm9ybWFuY2UgaXMgc3VwZXIgc2FjcmVkLgogICAgIHZvaWQgcmVmKCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlv
bkhhc0JlZ3VuKTsKLSAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7
CiAgICAgICAgIEFTU0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwogICAgICAgICArK21fcmVm
Q291bnQ7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAicmVmKCkgJXAgbGlmZXRpbWVPd25l
cj0lZCByZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291bnQ9JWRcbiIsIHRoaXMsIGlzTGlmZXRpbWVP
d25lcigpLCByZWZDb3VudCgpLCB3cmFwcGVyUmVmQ291bnQoKSk7CiAgICAgfQogCisgICAgdm9p
ZCB3cmFwcGVyUmVmKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Cisg
ICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsKKyAgICAgICAgQVNTRVJUKCFtX2Fk
b3B0aW9uSXNSZXF1aXJlZCk7CisgICAgICAgIG1fcmVmQ291bnQgKz0gV3JhcHBlclJlZmNvdW50
V2VpZ2h0OworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIndyYXBwZXJSZWYoKSAlcCBsaWZl
dGltZU93bmVyPSVkIHJlZkNvdW50PSVkIHdyYXBwZXJSZWZDb3VudD0lZFxuIiwgdGhpcywgaXNM
aWZldGltZU93bmVyKCksIHJlZkNvdW50KCksIHdyYXBwZXJSZWZDb3VudCgpKTsKKyAgICB9CisK
KyAgICAvLyBUaGUgcGVyZm9ybWFuY2UgaXMgc3VwZXIgc2FjcmVkLgogICAgIHZvaWQgZGVyZWYo
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQVNTRVJU
KG1fcmVmQ291bnQgPj0gMCk7CiAgICAgICAgIEFTU0VSVCghbV9kZWxldGlvbkhhc0JlZ3VuKTsK
LSAgICAgICAgQVNTRVJUKCFtX2luUmVtb3ZlZExhc3RSZWZGdW5jdGlvbik7CiAgICAgICAgIEFT
U0VSVCghbV9hZG9wdGlvbklzUmVxdWlyZWQpOwotICAgICAgICBpZiAoLS1tX3JlZkNvdW50IDw9
IDAgJiYgIW1fcGFyZW50KSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgbV9pblJlbW92
ZWRMYXN0UmVmRnVuY3Rpb24gPSB0cnVlOwotI2VuZGlmCi0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDxOb2RlVHlwZSo+KHRoaXMpLT5yZW1vdmVkTGFzdFJlZigpOworICAgICAgICB1bnNpZ25lZCBw
cmV2UmVmQ291bnQgPSBtX3JlZkNvdW50OworICAgICAgICAtLW1fcmVmQ291bnQ7CisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAiZGVyZWYoKSAlcCBsaWZldGltZU93bmVyPSVkIHJlZkNvdW50
PSVkIHdyYXBwZXJSZWZDb3VudD0lZFxuIiwgdGhpcywgaXNMaWZldGltZU93bmVyKCksIHJlZkNv
dW50KCksIHdyYXBwZXJSZWZDb3VudCgpKTsKKyAgICAgICAgLy8gRXF1aXZhbGVudCB0byAnaWYg
KGlzTGlmZXRpbWVPd25lcigpICYmICghcmVmQ291bnQoKSB8fCByZWZDb3VudCgpID09IFdyYXBw
ZXJSZWZjb3VudFdlaWdodCkpJworICAgICAgICBpZiAoVU5MSUtFTFkoKChwcmV2UmVmQ291bnQg
KyBMaWZldGltZU93bmVyQml0TWFzaykgJiAoTGlmZXRpbWVPd25lckJpdE1hc2sgfCAoV3JhcHBl
clJlZmNvdW50V2VpZ2h0IC0gMSkpKSA8PSAweDEpKSB7CisgICAgICAgICAgICB1bnNldExpZmV0
aW1lT3duZXIoKTsKKyAgICAgICAgICAgIC8vIGdjVHJlZSgpIHJlY2xhaW1zIGFsbCBOb2RlcyBp
biB0aGUgVHJlZVNjb3BlIG9yIHNldHMgYSBuZXcgbGlmZXRpbWUKKyAgICAgICAgICAgIC8vIG93
bmVyIG9mIHRoZSBUcmVlU2NvcGUuCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxOb2RlVHlwZSo+
KHRoaXMpLT5nY1RyZWUoKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgaGFzT25lUmVm
KCkgY29uc3QKKyAgICB2b2lkIHdyYXBwZXJEZXJlZigpCiAgICAgeworICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7Ci0g
ICAgICAgIEFTU0VSVCghbV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwotICAgICAgICByZXR1
cm4gbV9yZWZDb3VudCA9PSAxOworICAgICAgICBBU1NFUlQoIW1fYWRvcHRpb25Jc1JlcXVpcmVk
KTsKKyAgICAgICAgbV9yZWZDb3VudCAtPSBXcmFwcGVyUmVmY291bnRXZWlnaHQ7CisgICAgICAg
IC8vIGZwcmludGYoc3RkZXJyLCAid3JhcHBlckRlcmVmKCkgJXAgbGlmZXRpbWVPd25lcj0lZCBy
ZWZDb3VudD0lZCB3cmFwcGVyUmVmQ291bnQ9JWRcbiIsIHRoaXMsIGlzTGlmZXRpbWVPd25lcigp
LCByZWZDb3VudCgpLCB3cmFwcGVyUmVmQ291bnQoKSk7CisgICAgICAgIC8vIEVxdWl2YWxlbnQg
dG8gJ2lmIChpc0xpZmV0aW1lT3duZXIoKSAmJiByZWZDb3VudCgpIDwgV3JhcHBlclJlZmNvdW50
V2VpZ2h0KScKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fcmVmQ291bnQgLSBMaWZldGltZU93bmVy
Qml0TWFzayA8IFdyYXBwZXJSZWZjb3VudFdlaWdodCkpIHsKKyAgICAgICAgICAgIHVuc2V0TGlm
ZXRpbWVPd25lcigpOworICAgICAgICAgICAgLy8gZ2NUcmVlKCkgcmVjbGFpbXMgYWxsIE5vZGVz
IGluIHRoZSBUcmVlU2NvcGUgb3Igc2V0cyBhIG5ldyBsaWZldGltZQorICAgICAgICAgICAgLy8g
b3duZXIgb2YgdGhlIFRyZWVTY29wZS4KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PE5vZGVUeXBl
Kj4odGhpcyktPmdjVHJlZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaW50IHJlZkNvdW50
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3JlZkNvdW50OworICAgICAgICAvLyBH
aXZlbiA2NTUzOCwgd2UgY2Fubm90IGRpc3Rpbmd1aXNoIHRoZSB0d28gY2FzZXM6CisgICAgICAg
IC8vIAorICAgICAgICAvLyAgIFsxXSA2NTUzNiArIDIgPSAxIHdyYXBwZXIgcmVmZXJlbmNlIGNv
dW50ICsgMiBub3JtYWwgcmVmZXJlbmNlIGNvdW50cworICAgICAgICAvLyAgIFsyXSAwICsgNjU1
MzggPSAwIHdyYXBwZXIgcmVmZXJlbmNlIGNvdW50ICsgNjU1Mzggbm9ybWFsIHJlZmVyZW5jZSBj
b3VudHMKKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2UgYWx3YXlzIHRyZWF0IDY1NTM4IGFzIFsx
XS4gVGhpcyB0cmVhdG1lbnQgd29uJ3QgY2F1c2UgYW55IHByb2JsZW0uCisgICAgICAgIC8vIE9u
bHkgaWYgdGhlIHNpdHVhdGlvbiBpcyBhY3R1YWxseSBbMl0gYW5kIHRoZXJlIGV4aXN0IDY1NTM2
IG9yIG1vcmUgcmVmZXJlbmNlcworICAgICAgICAvLyB0aGF0IG9yaWdpbmF0ZSBmcm9tIGFueSBO
b2RlIGluIHRoZSBET00gdHJlZSB3aGljaCB0aGlzIE5vZGUgYmVsb25ncyB0bywKKyAgICAgICAg
Ly8gdGhpcyB0cmVhdG1lbnQgY2FuIGxlYWsgbWVtb3J5LiBCdXQgSSBiZWxpZXZlIHN1Y2ggYSBz
aXR1YXRpb24gY2Fubm90IGhhcHBlbgorICAgICAgICAvLyBpbiBXZWJLaXQuIElmIGl0IGhhcHBl
bmVkLCBpdCBqdXN0IGxlYWtzIG1lbW9yeS4gU2VlIHRoZSBkZXNpZ24gZG9jdW1lbnQKKyAgICAg
ICAgLy8gKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL2EvY2hyb21pdW0ub3JnL2RvY3VtZW50L2Qv
MUhjYWVVLTc1eHVrTVlTVWFza2VEb0hMLUwwRk51Q0RJdWt2UG1PaGVZOFEvZWRpdCkKKyAgICAg
ICAgLy8gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgICAgaW50IGJpdEZpZWxkID0gbV9yZWZDb3Vu
dCAmIH5MaWZldGltZU93bmVyQml0TWFzazsKKyAgICAgICAgcmV0dXJuIGJpdEZpZWxkIC8gV3Jh
cHBlclJlZmNvdW50V2VpZ2h0ICsgYml0RmllbGQgJSBXcmFwcGVyUmVmY291bnRXZWlnaHQ7Cisg
ICAgfQorCisgICAgaW50IHdyYXBwZXJSZWZDb3VudCgpIGNvbnN0CisgICAgeworICAgICAgICBp
bnQgYml0RmllbGQgPSBtX3JlZkNvdW50ICYgfkxpZmV0aW1lT3duZXJCaXRNYXNrOworICAgICAg
ICByZXR1cm4gYml0RmllbGQgLyBXcmFwcGVyUmVmY291bnRXZWlnaHQ7CisgICAgfQorCisgICAg
Ym9vbCBoYXNPbmVSZWYoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9u
SGFzQmVndW4pOworICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOworICAgIH0KKworICAg
IHZvaWQgc2V0TGlmZXRpbWVPd25lcigpCisgICAgeworICAgICAgICBBU1NFUlQoIWlzTGlmZXRp
bWVPd25lcigpKTsKKyAgICAgICAgQVNTRVJUKCFtX2RlbGV0aW9uSGFzQmVndW4pOworICAgICAg
ICAvLyBTZXQgdGhlIGxpZmV0aW1lIG93bmVyIGJpdC4KKyAgICAgICAgLy8gZS5nLiAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMSA9PiAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MTEwMQorICAgICAgICAvLyBlLmcuIDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxID0+
IDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxCisgICAgICAgIG1fcmVmQ291bnQgfD0g
TGlmZXRpbWVPd25lckJpdE1hc2s7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAic2V0TGlm
ZXRpbWVPd25lcigpICVwXG4iLCB0aGlzKTsKKyAgICB9CisKKyAgICB2b2lkIHVuc2V0TGlmZXRp
bWVPd25lcigpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1bik7Cisg
ICAgICAgIC8vIFVuc2V0IHRoZSBsaWZldGltZSBvd25lciBiaXQuCisgICAgICAgIC8vIGUuZy4g
MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMDEgPT4gMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDExMDEKKyAgICAgICAgLy8gZS5nLiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MTEwMSA9PiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMQorICAgICAgICBtX3JlZkNv
dW50ICY9IH5MaWZldGltZU93bmVyQml0TWFzazsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIs
ICJ1bnNldExpZmV0aW1lT3duZXIoKSAlcFxuIiwgdGhpcyk7CisgICAgfQorCisgICAgYm9vbCBp
c0xpZmV0aW1lT3duZXIoKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGxpZmV0aW1l
IG93bmVyIGJpdCBpcyBzZXQuCisgICAgICAgIC8vIGUuZy4gMTAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDExMDEgPT4gdHJ1ZQorICAgICAgICAvLyBlLmcuIDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAxMTAxID0+IGZhbHNlCisgICAgICAgIHJldHVybiBtX3JlZkNvdW50ICYgTGlmZXRp
bWVPd25lckJpdE1hc2s7CiAgICAgfQogCiAgICAgdm9pZCBzZXRQYXJlbnQoUGFyZW50Tm9kZVR5
cGUqIHBhcmVudCkKICAgICB7IAogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
ICAgICBtX3BhcmVudCA9IHBhcmVudDsgCisgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OwogICAg
IH0KIAogICAgIFBhcmVudE5vZGVUeXBlKiBwYXJlbnQoKSBjb25zdApAQCAtMTA4LDcgKzIwMyw2
IEBAIHB1YmxpYzoKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1fZGVsZXRpb25IYXNCZWd1
bjsKLSAgICBib29sIG1faW5SZW1vdmVkTGFzdFJlZkZ1bmN0aW9uOwogI2VuZGlmCiAKICAgICB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CkBAIC0xMjMsNyArMjE3LDEzIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFBhcmVu
dE5vZGVUeXBlKiBtX3BhcmVudDsKLSAgICBpbnQgbV9yZWZDb3VudDsKKworICAgIC8vIFRoZSBt
b3N0IHNpZ25pZmljYW50IGJpdCBvZiBtX3JlZkNvdW50IHJlcHJlc2VudHMgd2hldGhlciB0aGlz
IE5vZGUgaXMKKyAgICAvLyBhIGxpZmV0aW1lIG93bmVyLiBUaGUgZm9sbG93aW5nIDMxIGJpdCBy
ZXByZXNlbnRzIGEgcmVmZXJlbmNlIGNvdW50ZXIuCisgICAgLy8gV2UgZG9uJ3QgdXNlIGJpdCBm
aWVsZHMgYmVjYXVzZSBhdCBsZWFzdCBjbGFuZyBhbmQgeGNvZGUgY2Fubm90IGdlbmVyYXRlCisg
ICAgLy8gZnVsbHkgb3B0aW1pemVkIGFzc2VtYmx5IGZvciBiaXQgZmllbGQgb3BlcmF0aW9ucyBp
biByZWYoKSBhbmQgZGVyZWYoKSwKKyAgICAvLyB3aGljaCBhcmUgc3VwZXIgcGVyZm9ybWFuY2Ut
c2Vuc2l0aXZlIG1ldGhvZHMuCisgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKIAogI2lmbmRlZiBO
REVCVUcKICAgICBib29sIG1fYWRvcHRpb25Jc1JlcXVpcmVkOwpAQCAtMTM3LDcgKzIzNyw2IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBQYXJlbnROb2RlVHlwZT4gaW5s
aW5lIHZvaWQgYWRvcHRlZChUcmVlU2hhCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVy
bjsKICAgICBBU1NFUlQoIW9iamVjdC0+bV9kZWxldGlvbkhhc0JlZ3VuKTsKLSAgICBBU1NFUlQo
IW9iamVjdC0+bV9pblJlbW92ZWRMYXN0UmVmRnVuY3Rpb24pOwogICAgIG9iamVjdC0+bV9hZG9w
dGlvbklzUmVxdWlyZWQgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmlu
ZGV4IDg2ZWE4MTVlZWY2MzEwNzIxNWY0NmIxMGY5ZDhkNWViZTI1YTlkYjcuLmVkZTlmMDdkOTNj
N2JhMmQwYzIyYWJkMzA0MWQyMTc3YWU1MjU2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKQEAgLTYxLDYgKzYxLDcgQEAgUGFzc1JlZlB0cjxTVkdFbGVtZW50PiBTVkdFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQKIAogU1ZHRWxlbWVu
dDo6flNWR0VsZW1lbnQoKQogeworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnQo
KSAlcCBiZWZvcmVcbiIsIHRoaXMpOwogICAgIGlmICghaGFzU1ZHUmFyZURhdGEoKSkKICAgICAg
ICAgQVNTRVJUKCFTVkdFbGVtZW50UmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnModGhp
cykpOwogICAgIGVsc2UgewpAQCAtODAsNiArODEsNyBAQCBTVkdFbGVtZW50Ojp+U1ZHRWxlbWVu
dCgpCiAgICAgfQogICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3Zl
QWxsQW5pbWF0aW9uRWxlbWVudHNGcm9tVGFyZ2V0KHRoaXMpOwogICAgIGRvY3VtZW50KCktPmFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQo
dGhpcyk7CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJ+U1ZHRWxlbWVudCgpICVwIGFmdGVyXG4i
LCB0aGlzKTsKIH0KIAogYm9vbCBTVkdFbGVtZW50Ojp3aWxsUmVjYWxjU3R5bGUoU3R5bGVDaGFu
Z2UgY2hhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAppbmRl
eCA5ZmUyYWNiZjAwYTVmZWNmNWYzNDVhNzY5ZDU0MWM3NTQ2MmZlYTE3Li4wZWEwMTAxMDk4ZmZl
MjllMTc3MjA5OWY1YjBiMjhmMzIzMzRlNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudEluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudEluc3RhbmNlLmNwcApAQCAtNjIsNiArNjIsOSBAQCBTVkdFbGVtZW50SW5zdGFuY2U6OlNW
R0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiBjb3JyZXNwb25kaW5nVXNlRWxlbWVudCwg
UwogCiBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2UoKQogeworICAgIC8v
IGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0YW5jZSgpICVwIGJlZm9yZVxuIiwgdGhp
cyk7CisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1bik7CisKICAgICAvLyBDYWxsIGRldGFj
aCBiZWNhdXNlIHdlIG1heSBiZSBkZWxldGVkIGRpcmVjdGx5IGlmIHdlIGFyZSBhIGNoaWxkIG9m
IGEgZGV0YWNoZWQgaW5zdGFuY2UuCiAgICAgZGV0YWNoKCk7CiAKQEAgLTcwLDE2ICs3Myw0NiBA
QCBTVkdFbGVtZW50SW5zdGFuY2U6On5TVkdFbGVtZW50SW5zdGFuY2UoKQogI2VuZGlmCiAKICAg
ICBtX2VsZW1lbnQgPSAwOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiflNWR0VsZW1lbnRJbnN0
YW5jZSgpICVwIGFmdGVyXG4iLCB0aGlzKTsKIH0KIAogLy8gSXQncyBpbXBvcnRhbnQgbm90IHRv
IGlubGluZSByZW1vdmVkTGFzdFJlZiwgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGlubGluZSB0
aGUgY29kZSB0bwogLy8gZGVsZXRlIGFuIFNWR0VsZW1lbnRJbnN0YW5jZSBhdCBlYWNoIGRlcmVm
IGNhbGwgc2l0ZS4KIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVkTGFzdFJlZigpCiB7
CisgICAgLy8gZnByaW50ZihzdGRlcnIsICJTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZWRMYXN0
UmVmKCkgJXAgYmVmb3JlXG4iLCB0aGlzKTsKKyAgICBBU1NFUlQoIW1fZGVsZXRpb25IYXNCZWd1
bik7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fZGVsZXRpb25IYXNCZWd1biA9IHRydWU7CiAjZW5k
aWYKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImRlbGV0ZSh0aGlzKSAlcCBiZWZvcmVcbiIsIHRo
aXMpOwogICAgIGRlbGV0ZSB0aGlzOworICAgIC8vIGZwcmludGYoc3RkZXJyLCAiZGVsZXRlKHRo
aXMpICVwIGFmdGVyXG4iLCB0aGlzKTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1l
bnRJbnN0YW5jZTo6cmVtb3ZlZExhc3RSZWYoKSAlcCBhZnRlclxuIiwgdGhpcyk7Cit9CisKKy8v
IFdoZW4gZ2NUcmVlKCkgaXMgY2FsbGVkLCB0aGUgVHJlZVNjb3BlIGlzIGd1YXJhbnRlZWQgdG8g
aGF2ZSBubyBsaWZldGltZSBvd25lci4KKy8vIGdjVHJlZSgpIG11c3QgcmVjbGFpbSBhbGwgTm9k
ZXMgaW4gdGhlIFRyZWVTY29wZSBvciBzZXQgYSBuZXcgbGlmZXRpbWUgb3duZXIgb2YKKy8vIHRo
ZSBUcmVlU2NvcGUuCit2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkKK3sKKyAgICAv
LyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkgJXAgYmVmb3Jl
XG4iLCB0aGlzKTsKKyAgICBTVkdFbGVtZW50SW5zdGFuY2UqIHJvb3QgPSAwOworICAgIGlmIChp
c1JlYWNoYWJsZUZyb21XcmFwcGVyPFNWR0VsZW1lbnRJbnN0YW5jZT4odGhpcywgJnJvb3QpKSB7
CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaXNSZWFjaGFibGVGcm9tV3JhcHBlcigpICVw
IHRydWVcbiIsIHRoaXMpOworICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJ
bnN0YW5jZTo6Z2NUcmVlKCkgJXAgYWZ0ZXJcbiIsIHRoaXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIEFTU0VSVChyb290KTsKKyAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImlzUmVhY2hh
YmxlRnJvbVdyYXBwZXIoKSAlcCBmYWxzZVxuIiwgdGhpcyk7CisgICAgaWYgKHJvb3QtPnJlZkNv
dW50KCkpIHsKKyAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJyb290LT5yZWZDb3VudCgpICVw
XG4iLCB0aGlzKTsKKyAgICAgICAgcm9vdC0+c2V0TGlmZXRpbWVPd25lcigpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiIXJvb3QtPnJlZkNvdW50KCkgJXBcbiIs
IHRoaXMpOworICAgICAgICByb290LT5yZW1vdmVkTGFzdFJlZigpOworICAgIH0KKyAgICAvLyBm
cHJpbnRmKHN0ZGVyciwgIlNWR0VsZW1lbnRJbnN0YW5jZTo6Z2NUcmVlKCkgJXAgYWZ0ZXJcbiIs
IHRoaXMpOwogfQogCiB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGV0YWNoKCkKQEAgLTExNCw2
ICsxNDcsNyBAQCB2b2lkIFNWR0VsZW1lbnRJbnN0YW5jZTo6c2V0U2hhZG93VHJlZUVsZW1lbnQo
U1ZHRWxlbWVudCogZWxlbWVudCkKIHZvaWQgU1ZHRWxlbWVudEluc3RhbmNlOjphcHBlbmRDaGls
ZChQYXNzUmVmUHRyPFNWR0VsZW1lbnRJbnN0YW5jZT4gY2hpbGQpCiB7CiAgICAgYXBwZW5kQ2hp
bGRUb0NvbnRhaW5lcjxTVkdFbGVtZW50SW5zdGFuY2UsIFNWR0VsZW1lbnRJbnN0YW5jZT4oY2hp
bGQuZ2V0KCksIHRoaXMpOworICAgIGNoaWxkLT51bnNldExpZmV0aW1lT3duZXIoKTsKIH0KIAog
dm9pZCBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRhdGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQo
U1ZHRWxlbWVudCogZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2Uu
aAppbmRleCBmOGU0ODliNmJhNDM1OWVjNzk1OTc5N2Y3MjNjNTI1OTU0NDY0M2M2Li5lYmVjZGJi
ZTYxNzU3ODk0ZjkwZGE5NDA1MTg3NDFkNTM1ZDcwMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudEluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbnN0YW5jZS5oCkBAIC0xNTEsNiArMTUxLDcgQEAgcHJpdmF0ZToKIAogICAgIFNW
R0VsZW1lbnRJbnN0YW5jZShTVkdVc2VFbGVtZW50KiwgU1ZHVXNlRWxlbWVudCosIFBhc3NSZWZQ
dHI8U1ZHRWxlbWVudD4gb3JpZ2luYWxFbGVtZW50KTsKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVm
KCk7CisgICAgdm9pZCBnY1RyZWUoKTsKIAogICAgIHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgeyBy
ZXR1cm4gc2hhZG93VHJlZUVsZW1lbnQoKTsgfQogCkBAIC0xNTgsMTMgKzE1OSwxMyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0U2hhZG93VHJlZUVsZW1lbnQoU1ZHRWxlbWVudCopOwogCiAgICAg
dGVtcGxhdGU8Y2xhc3MgR2VuZXJpY05vZGUsIGNsYXNzIEdlbmVyaWNOb2RlQ29udGFpbmVyPgot
ICAgIGZyaWVuZCB2b2lkIGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxk
LCBHZW5lcmljTm9kZUNvbnRhaW5lciogY29udGFpbmVyKTsKLQorICAgIGZyaWVuZCB2b2lkIGFw
cGVuZENoaWxkVG9Db250YWluZXIoR2VuZXJpY05vZGUqIGNoaWxkLCBHZW5lcmljTm9kZUNvbnRh
aW5lciopOwogICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlLCBjbGFzcyBHZW5lcmljTm9k
ZUNvbnRhaW5lcj4KLSAgICBmcmllbmQgdm9pZCByZW1vdmVBbGxDaGlsZHJlbkluQ29udGFpbmVy
KEdlbmVyaWNOb2RlQ29udGFpbmVyKiBjb250YWluZXIpOwotCisgICAgZnJpZW5kIHZvaWQgUHJp
dmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSomIGhlYWQsIEdl
bmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqKTsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBHZW5lcmljTm9kZSwgY2xhc3MgR2VuZXJpY05vZGVDb250YWluZXI+Ci0gICAgZnJpZW5k
IHZvaWQgUHJpdmF0ZTo6YWRkQ2hpbGROb2Rlc1RvRGVsZXRpb25RdWV1ZShHZW5lcmljTm9kZSom
IGhlYWQsIEdlbmVyaWNOb2RlKiYgdGFpbCwgR2VuZXJpY05vZGVDb250YWluZXIqIGNvbnRhaW5l
cik7CisgICAgZnJpZW5kIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW5JbkNvbnRhaW5lcihHZW5lcmlj
Tm9kZUNvbnRhaW5lciopOworICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyaWNOb2RlPgorICAgIGZy
aWVuZCBib29sIGlzUmVhY2hhYmxlRnJvbVdyYXBwZXIoR2VuZXJpY05vZGUqLCBHZW5lcmljTm9k
ZSoqKTsKIAogICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RD
aGlsZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlciBi
L1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCmluZGV4IDIxY2EyZmY2Y2UzYWJiZTdj
ZTcxNDYxNDUzZGM2MzVlMjllMzZlZjAuLmZjZDZhZTBlNDZlMzI3YmY1OWVhNmU3ZmQ4MzRiNGI4
ZDgyNTIzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCisr
KyBiL1NvdXJjZS9XZWJLaXQyL21hYy9XZWJLaXQyLm9yZGVyCkBAIC05NjMsNiArOTYzLDcgQEAg
X19aTjNXVEY5UmV0YWluUHRySTEyTlNVUkxSZXF1ZXN0RUMyRVBTMV8KIF9fWk43V2ViQ29yZTE1
UmVzb3VyY2VSZXF1ZXN0YVNFUktTMF8KIF9fWk43V2ViQ29yZTE5UmVzb3VyY2VSZXF1ZXN0QmFz
ZWFTRVJLUzBfCiBfX1pON1dlYkNvcmU0S1VSTGFTRVJLUzBfCitfX1pON1dlYkNvcmU0Tm9kZTZn
Y1RyZWVFdgogX19aTjNXVEYyMkhhc2hUYWJsZUNvbnN0SXRlcmF0b3JJTlNfMTJBdG9taWNTdHJp
bmdFU3Q0cGFpcklTMV9OU182U3RyaW5nRUVOU18xOFBhaXJGaXJzdEV4dHJhY3RvcklTNF9FRU5T
XzE1Q2FzZUZvbGRpbmdIYXNoRU5TXzE0UGFpckhhc2hUcmFpdHNJTlNfMTBIYXNoVHJhaXRzSVMx
X0VFTlM5X0lTM19FRUVFU0FfRTE2c2tpcEVtcHR5QnVja2V0c0V2CiBfX1pOM1dURjZWZWN0b3JJ
TlNfNlN0cmluZ0VMbTBFRWFTRVJLUzJfCiBfX1pOU3Q2X19jb3B5SUxiMEVTdDI2cmFuZG9tX2Fj
Y2Vzc19pdGVyYXRvcl90YWdFNGNvcHlJUEtOM1dURjZTdHJpbmdFUFM0X0VFVDBfVF9TOV9TOF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBlMGI3ZGE5YWIxOWZhNWRhZTBkOTM4MmRhNmYwNWE0
MTViZGM2YmUyLi44MmVjMDk1N2ViMDZiZjA1ZGQ1ODkwZjM3NDkzMjE3OTgxYzEwMjkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCkBAIC0yMDgsNyArMjA4LDYgQEAgRVhQT1JUUwogICAgICAgICA/
cGxhY2Vob2xkZXJTaG91bGRCZVZpc2libGVASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2Vi
Q29yZUBAUUJFX05YWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0
ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQ
QVZDb250YWluZXJOb2RlQDJASEhfTkBaCiAgICAgICAgID9yZW1vdmVAU3RyaW5nQFdURkBAUUFF
WElIQFoKLSAgICAgICAgP3JlbW92ZWRMYXN0UmVmQE5vZGVAV2ViQ29yZUBAQUFFWFhaCiAgICAg
ICAgID9yZXZlcnNlRmluZEBTdHJpbmdJbXBsQFdURkBAUUFFSV9XSUBaCiAgICAgICAgID9zX2Zy
b250ZW5kQ291bnRlckBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAMEhBCiAgICAg
ICAgID9zYXZlRG9jdW1lbnRBbmRTY3JvbGxTdGF0ZUBIaXN0b3J5Q29udHJvbGxlckBXZWJDb3Jl
QEBRQUVYWFoKQEAgLTI3OCw2ICsyNzcsNyBAQCBFWFBPUlRTCiAgICAgICAgID92aWV3cG9ydEFy
Z3VtZW50c0BQYWdlQFdlYkNvcmVAQFFCRT9BVVZpZXdwb3J0QXJndW1lbnRzQDJAWFoKICAgICAg
ICAgP2lzUGFnZUJveFZpc2libGVARG9jdW1lbnRAV2ViQ29yZUBAUUFFX05IQFoKICAgICAgICAg
P2lzQWN0aXZlQEluc2VydGlvblBvaW50QFdlYkNvcmVAQFFCRV9OWFoKKyAgICAgICAgP2djVHJl
ZUBOb2RlQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c3VzcGVuZEFuaW1hdGlvbnNAQW5pbWF0
aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3Jlc3VtZUFuaW1hdGlvbnNA
QW5pbWF0aW9uQ29udHJvbGxlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NldEFsbG93c1Jv
dW5kaW5nSGFja3NAVGV4dFJ1bkBXZWJDb3JlQEBTQVhfTkBaCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
MkNGTGl0ZS5kZWYKaW5kZXggMzY3NWFjMjUwNTFiMTVhMmE4NzY0MjI4ZWVmZDgxOWEzYWI3ZTNl
Yi4uMzVjNDIzYzE4ZTIyN2ZlMmNkMjg4ODg3MWU2OGRlODJkMzlkYjU4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMjAxLDcgKzIwMSw2IEBAIEVYUE9SVFMKICAgICAg
ICAgP3BsYWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlQEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
QFdlYkNvcmVAQFFCRV9OWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRl
eHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdU
RkBAUEFWQ29udGFpbmVyTm9kZUAyQEhIX05AWgogICAgICAgICA/cmVtb3ZlQFN0cmluZ0BXVEZA
QFFBRVhJSEBaCi0gICAgICAgID9yZW1vdmVkTGFzdFJlZkBOb2RlQFdlYkNvcmVAQEFBRVhYWgog
ICAgICAgICA/cmV2ZXJzZUZpbmRAU3RyaW5nSW1wbEBXVEZAQFFBRUlfV0lAWgogICAgICAgICA/
c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQog
ICAgICAgICA/c2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGVASGlzdG9yeUNvbnRyb2xsZXJAV2Vi
Q29yZUBAUUFFWFhaCkBAIC0yMDksNiArMjA4LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2NyaXB0
TmFtZVRvQ29kZUBXZWJDb3JlQEBZQT9BVzRVU2NyaXB0Q29kZUBAQUJWU3RyaW5nQFdURkBAQFoK
ICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZF
bGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRDYW5TdGFydE1lZGlhQFBhZ2VA
V2ViQ29yZUBAUUFFWF9OQFoKKyAgICAgICAgP2djVHJlZUBOb2RlQFdlYkNvcmVAQFFBRVhYWgog
ICAgICAgICA/c2V0Q3Vyc2l2ZUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0
b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXREZXZpY2VTY2Fs
ZUZhY3RvckBQYWdlQFdlYkNvcmVAQFFBRVhNQFoKICAgICAgICAgP3NldERvY3VtZW50U3RhdGVA
SGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUFFWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdU
RkBAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3Vy
Y2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IDA4ZGY2YzgxMjc4NjhlYmJhYzkzOTJl
MDg0YmJiNDQ2YWJhY2I4MGIuLmEyYzkwYjQyMWNiNDY3OTUwN2Y2OGEyZDE0ZTBkOTNkZjIxYWEw
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTYyLDYgKzE2Miw3IEBAIF9aTjdXZWJD
b3JlMTRTY3JvbGxhYmxlQXJlYTI4c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFsc0VSS05TXzhJ
bnRQb2ludEU7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIzc2V0U2Nyb2xsYmFyc1N1cHByZXNz
ZWRFYmI7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWI7
CiBfWk43V2ViQ29yZTROb2RlMTRyZW1vdmVkTGFzdFJlZkV2OworX1pON1dlYkNvcmU0Tm9kZTZn
Y1RyZWVFdjsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRJbWFnZXNFbmFibGVkRWI7CiBfWk43
V2ViQ29yZThTZXR0aW5nczE4c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmlu
Z0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWls
eUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyM2Q3NmMyMTQ4
MjhhZTc1NTRkZDI3YTI2M2YyMzQzMDNlZDMwZDJmLi44ZTBmNWU5NjViZmYwNjgxNDA0YTg4NjZm
YzUzMTczN2I1ZTAyNGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMDktMjcgIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIElmIGEgTm9kZSBYIGlz
IHJlYWNoYWJsZSBmcm9tIEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNo
b3VsZCBiZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIGdjLWRvbS10cmVlLWxpZmV0aW1lLmh0bWwgdGVzdHMgdGhlIGZvbGxvd2luZ3M6
CisKKyAgICAgICAgICAtIElmIGEgTm9kZSBYIGlzIHJlYWNoYWJsZSBmcm9tIGEgbm9kZSBZIHRo
YXQgaGFzIDF+IHJlZmVyZW5jZSBjb3VudCwKKyAgICAgICAgICAgIHRoZSBOb2RlIFggaXMgbm90
IHJlY2xhaW1lZC4KKyAgICAgICAgICAtIE90aGVyd2lzZSwgdGhlIG5vZGUgWCBpcyByZWNsYWlt
ZWQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dDogVXBkYXRlZCB0aGUg
dGVzdCByZXN1bHQuCisgICAgICAgICogZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQ6IERpdHRv
LgorICAgICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbDogQWRk
ZWQuCisKIDIwMTItMDktMjYgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgcmViYXNlbGluaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0z
LWV4cGVjdGVkLnR4dAppbmRleCA2MGQzYTE3MGYyOWI2MzM0ODcxYzgzOTZkZTBhYWJiYjc2YjBj
MTk2Li45MmQ0MTIxN2VmM2FlMzkwZjVhYTIwMGMyZWU5ZWZkMTVhNjEyNmY4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dApAQCAtNCw1ICs0LDYgQEAgVGhlIG91dHB1dCBz
aG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2Vs
dmVzOiAicmVwbGEKIAogcmVwbGFjZW1lbnQgY29udGVudAogQgorcGFyZW50IG5vZGUgZXhpc3Rz
CiBjaGlsZCBub2RlIGV4aXN0cwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9n
Yy01LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0
CmluZGV4IDE4YzgzNDg4YjBjZjZmMDQwMWZmMzc5N2NmMTY2MzlkYTU2M2RhNmUuLjczODA5Y2Rh
ODU0MzQ4NzljYjkyNjc2Yjk2Yjc1ZDE5ZjAzMTdiMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2dj
LTUtZXhwZWN0ZWQudHh0CkBAIC00LDQgKzQsNSBAQCBUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUg
Zm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYQog
CiByZXBsYWNlbWVudCBjb250ZW50CiBCCitECiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jODNl
ZWRlMWI0MTNkNjQ3ZWU3ODE2ZTY1Y2FiZjAwOTZjN2E4NTQwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjAyIEBACis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYx
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1j
aGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjIt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRp
dlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3Nm
dWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgor
UEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlk
IGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEt
Y2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYx
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09
PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBk
aXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNz
ZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
K1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5p
ZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYy
LWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2
LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJl
bnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGls
ZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9
PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQg
ZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vz
c2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2
LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJl
bnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQi
CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUu
aWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2
MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFT
UyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlz
ICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hp
bGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkg
PT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5k
IGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nl
c3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxk
IgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2Rl
LmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRp
djEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGls
ZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BB
U1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBp
cyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNo
aWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnRO
b2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMg
ImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZ
ID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnRO
b2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMg
ImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFu
ZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNj
ZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNT
IGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMg
ImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGls
ZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9k
ZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJk
aXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFT
UyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlz
ICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hp
bGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5v
ZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAi
ZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQ
QVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQg
aXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1j
aGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50
Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlz
ICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2
WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50
Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlz
ICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBh
bmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3Vj
Y2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9t
LXRyZWUtbGlmZXRpbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxp
ZmV0aW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODgwMDNkNTk3ZmU4NjU3NjJiYjVmMDY5ODE4ZjNmMTJk
ODY1YTJlNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10
cmVlLWxpZmV0aW1lLmh0bWwKQEAgLTAsMCArMSw5OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgdGVzdENhc2VzID0gW1si
ZGl2MCIsICJkaXYxIiwgImRpdjIiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYwIiwgImRpdjIi
LCAiZGl2MSJdLAorICAgICAgICAgICAgICAgICBbImRpdjEiLCAiZGl2MCIsICJkaXYyIl0sCisg
ICAgICAgICAgICAgICAgIFsiZGl2MSIsICJkaXYyIiwgImRpdjAiXSwKKyAgICAgICAgICAgICAg
ICAgWyJkaXYyIiwgImRpdjAiLCAiZGl2MSJdLAorICAgICAgICAgICAgICAgICBbImRpdjIiLCAi
ZGl2MSIsICJkaXYwIl1dOworCit2YXIgcm9vdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290RGl2KTsKK3ZhciB0ZXN0SHRt
bCA9ICI8ZGl2IGlkPSdkaXYwLXBhcmVudCc+PGRpdiBpZD0nZGl2MCc+PGRpdiBpZD0nZGl2MC1j
aGlsZCc+PC9kaXY+PC9kaXY+PGRpdiBpZD0nZGl2MS1wYXJlbnQnPjxkaXYgaWQ9J2RpdjEnPjxk
aXYgaWQ9J2RpdjEtY2hpbGQnPjwvZGl2PjwvZGl2PjxkaXYgaWQ9J2RpdjItcGFyZW50Jz48ZGl2
IGlkPSdkaXYyJz48ZGl2IGlkPSdkaXYyLWNoaWxkJz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48
L2Rpdj4iOworCit0ZXN0Q2FzZXMuZm9yRWFjaChmdW5jdGlvbiAodGVzdCkgeworICAgIHZhciBk
aXZYLCBkaXZZLCBkaXZaOworICAgIGRlYnVnKCI9PT0gSW5pdGlhbCBzdGF0ZSA9PT0iKTsKKyAg
ICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMl0pOwor
ICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAgICBjaGVja1Bh
cmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGls
ZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwgPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBk
aXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGNoZWNr
UGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAgICBjaGVja1BhcmVudEFuZENo
aWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRp
dlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwg
YW5kIGRpdlggPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBk
aXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlgg
PSBudWxsOworICAgIGdjKCk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlksIHRl
c3RbMV0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsKKwor
ICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09
PSIpOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVz
dFsyXSk7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBkaXZYID0gbnVsbDsKKyAg
ICBkaXZZID0gbnVsbDsKKyAgICBnYygpOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShk
aXZaLCB0ZXN0WzJdKTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1M
LCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PSIpOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVz
dEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAg
IGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIHByZXZOb2RlcyA9IHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMo
KTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxsOworICAgIGRp
dlkgPSBudWxsOworICAgIGRpdlogPSBudWxsOworICAgIGdjKCk7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgLy8gSWYgYWxsIHRoZSBOb2RlIG9iamVjdHMgaW4gdGVzdEh0
bWwgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLAorICAgICAgICAvLyBhdCBsZWFzdCA5IDxk
aXY+cyBvYmplY3RzIHdpbGwgYmUgcmVtb3ZlZC4KKyAgICAgICAgLy8gKEFjdHVhbGx5LCBzaW5j
ZSB0ZXN0SHRtbCByZW5kZXJpbmcgcmVxdWlyZXMgbW9yZSB0aGFuIDkgTm9kZSBvYmplY3RzLikK
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMoKSA8PSBwcmV2
Tm9kZXMgLSA5KQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIDxkaXY+IG9iamVjdHMgaW4g
YSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuIik7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRlc3RGYWlsZWQoIjxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUg
bm90IGRlc3RydWN0ZWQuIik7CisgICAgfQorfSk7CisKK2Z1bmN0aW9uIGNoZWNrUGFyZW50QW5k
Q2hpbGRBbGl2ZShkaXYsIG5hbWUpIHsKKyAgICBnbG9iYWxEaXYgPSBkaXY7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYuaWQnLCBuYW1lKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2dsb2JhbERpdi5wYXJlbnROb2RlLmlkJywgbmFtZSArICItcGFyZW50Iik7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCcsIG5hbWUg
KyAiLWNoaWxkIik7CisgICAgZ2xvYmFsRGl2ID0gbnVsbDsKKyAgICBnYygpOworfQorCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGZjMzVjNzllOTYyNDRkOWQ1
ZmM4MDMwMmU4YTZhNWViYWM5ODFhNzIuLjRmZGIxYTcxZTgxMTYxZDI5ZjUxM2RjNjMwNzkxMjdk
Yjk2NTQ1YTEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMi0wOS0yNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSWYgYSBOb2RlIFggaXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlwdCwgYWxs
IE5vZGVzIGluIHRoZSBzYW1lIHRyZWUgc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3ltYm9sIGNoYW5nZXMuCisKKyAg
ICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA5LTI2ICBN
YXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBV
c2UgWERhbWFnZSB0byBzaW1wbGlmeSBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167240</attachid>
            <date>2012-10-04 21:08:18 -0700</date>
            <delta_ts>2013-01-07 07:01:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88834-20121004210727.patch</filename>
            <type>text/plain</type>
            <size>24041</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTA0ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgSWYgTm9kZSBYIGlzIHJlYWNo
YWJsZSBmcm9tIEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3VsZCBi
ZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
T2JzZXJ2YWJsZSk6IENsYXJpZmllZCB0aGlzIGNvbW1lbnQsIHNpbmNlIGl0IHNlZW1zIHRvIGhh
dmUKKyAgICAgICAgbWlzbGVkIHNvbWUgZm9sa3MuIAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjp3aWxsQ3JlYXRlUG9zc2libHlPcnBo
YW5lZFRyZWVCeVJlbW92YWwpOiBOZXcgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIHRvIGVuc3Vy
ZSB0aGF0IGEgZGlzY29ubmVjdGVkIHRyZWUgaXMgdmlzaWJsZSB0byBKYXZhU2NyaXB0LgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWFpbldvcmxkU2NyaXB0U3RhdGUpOiBOZWVkIHRvIGNoZWNrIGZvciBudWxsIGJlY2F1c2UgYSBk
b2N1bWVudCdzCisgICAgICAgIGZyYW1lIGNhbiBiZSBudWxsLgorCisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxF
dmVudHMpOiBXaGVuIHdlIHJlbW92ZSBhIHN1YnRyZWUgZnJvbSB0aGUKKyAgICAgICAgZG9jdW1l
bnQsIHdlIHNldmVyIHRoZSByZWZlcmVuY2UgdGhhdCBKYXZhU2NyaXB0IHByZXZpb3VzbHkgaGVs
ZCBieQorICAgICAgICByZWZlcmVuY2luZyBpdHMgcm9vdC4gU28sIHdlIGdpdmUgSmF2YVNjcmlw
dCBhbiBvcHBvcnR1bml0eSB0byBlc3RhYmxpc2gKKyAgICAgICAgYSByZWZlcmVuY2UgdG8gdGhl
IG5ldyByb290LgorCiAyMDEyLTEwLTA0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKCkuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDEzMDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg1LDEwICs4NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNOb2RlKiBqc05vZGUsIE5v
ZGUqIG5vZGUpCiB7Ci0gICAgLy8gVGhlIERPTSBkb2Vzbid0IGtub3cgaG93IHRvIGtlZXAgYSB0
cmVlIG9mIG5vZGVzIGFsaXZlIHdpdGhvdXQgdGhlIHJvb3QKLSAgICAvLyBiZWluZyBleHBsaWNp
dGx5IHJlZmVyZW5jZWQuIFNvLCB3ZSBhcnRpZmljaWFsbHkgdHJlYXQgdGhlIHJvb3Qgb2YKLSAg
ICAvLyBldmVyeSB0cmVlIGFzIG9ic2VydmFibGUuCi0gICAgLy8gRklYTUU6IFJlc29sdmUgdGhp
cyBsaWZldGltZSBpc3N1ZSBpbiB0aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCisgICAgLy8gVGhl
IHJvb3Qgbm9kZSBrZWVwcyB0aGUgdHJlZSBpbnRhY3QuCiAgICAgaWYgKCFub2RlLT5wYXJlbnRO
b2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaAkocmV2aXNpb24gMTMwNDUzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgSlNOb2RlQ3VzdG9tX2gKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw2ICs2OSwyOSBAQCBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqCiAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBub2RlKTsKIH0KIAorLy8gSW4gdGhlIEMrKyBET00sIGEgbm9kZSB0
cmVlIHN1cnZpdmVzIGFzIGxvbmcgYXMgdGhlcmUgaXMgYSByZWZlcmVuY2UgdG8gaXRzCisvLyBy
b290LiBJbiB0aGUgSmF2YVNjcmlwdCBET00sIGEgbm9kZSB0cmVlIHN1cnZpdmVzIGFzIGxvbmcg
YXMgdGhlcmUgaXMgYQorLy8gcmVmZXJlbmNlIHRvIGFueSBub2RlIGluIHRoZSB0cmVlLiBUbyBt
b2RlbCB0aGUgSmF2YVNjcmlwdCBET00gb24gdG9wIG9mCisvLyB0aGUgQysrIERPTSwgd2UgZW5z
dXJlIHRoYXQgdGhlIHJvb3Qgb2YgZXZlcnkgdHJlZSBoYXMgYSBKYXZhU2NyaXB0CisvLyB3cmFw
cGVyLgoraW5saW5lIHZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFs
KE5vZGUqIHJvb3QpCit7CisgICAgaWYgKHJvb3QtPndyYXBwZXIoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFyb290LT5pc0NvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCF0b0NvbnRhaW5lck5vZGUocm9vdCktPmhhc0NoaWxkTm9kZXMoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkU2Ny
aXB0U3RhdGUocm9vdC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgaWYgKCFzY3JpcHRTdGF0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdG9KUyhzY3JpcHRTdGF0ZSwgc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
cm9vdCk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIEpTRE9NTm9k
ZUN1c3RvbV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
Y3BwCShyZXZpc2lvbiAxMzA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgdm9pZCBzZXRFdmFs
RW5hYmxlZChTY3JpcHRTdGF0ZSogc2NyaXB0UwogCiBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2Ny
aXB0U3RhdGUoRnJhbWUqIGZyYW1lKQogeworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biAwOwogICAgIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsID0gZnJhbWUtPnNjcmlwdCgpLT53aW5k
b3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgcmV0dXJuIHNoZWxsLT53aW5k
b3coKS0+Z2xvYmFsRXhlYygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAkocmV2aXNpb24gMTMwNDUzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgorI2lmIFVTRShKU0MpCisjaW5jbHVkZSAiSlNOb2RlLmgiCisjZW5k
aWYKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKQEAgLTk3Nyw2ICs5ODAsOSBAQCBz
dGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOCiAKICAgICBBU1NFUlQoIU5v
RXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogCisj
aWYgVVNFKEpTQykKKyAgICB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwo
Y2hpbGQpOworI2VuZGlmCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3Zl
RE9NTm9kZShjaGlsZC0+ZG9jdW1lbnQoKSwgY2hpbGQpOwogCiAgICAgUmVmUHRyPE5vZGU+IGMg
PSBjaGlsZDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDQ1MykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEyLTEwLTA0ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgSWYgTm9kZSBYIGlzIHJlYWNo
YWJsZSBmcm9tIEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3VsZCBi
ZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9kb20vZ2MtMTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9nYy0xMi5odG1sOiBBZGRlZC4gVGVzdCBjYXNlIG1hdGNoZXMgYW4gZXhhbXBsZSBjaXRl
ZCBieQorICAgICAgICBLZW50YXJvIEhhcmEgPGhhcmFrZW5AY2hyb21pdW0ub3JnPiBpbiBidWd6
aWxsYS4KKworICAgICAgICAqIGZhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvZG9tL2djLTMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2RvbS9nYy01Lmh0bWw6IFVwZGF0ZWQgdGhlc2UgdGVzdHMgdG8g
cmVmbGVjdCBuZXcgZXhwZWN0ZWQgYmVoYXZpb3IuCisgICAgICAgIFdlJ3ZlIGRlY2lkZWQgdGhh
dCBkaXNjb25uZWN0ZWQgdHJlZXMgc2hvdWxkIHBlcnNpc3QgaW4gbWVtb3J5LiBUaGlzIHJpc2tz
CisgICAgICAgIGEgcHJvZ3JhbW1lciBhY2NpZGVudGFsbHkgcmV0YWluaW5nIG1vcmUgbWVtb3J5
IHRoYW4gZXhwZWN0ZWQsIGJ1dCBpdAorICAgICAgICBhbHNvIG1ha2VzIHRoZSBBUEkgbW9yZSBv
YnZpb3VzLgorCisgICAgICAgICogZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5o
dG1sOiBBZGRlZC4gVGVzdCBjYXNlIHdyaXR0ZW4gYnkKKyAgICAgICAgS2VudGFybyBIYXJhIDxo
YXJha2VuQGNocm9taXVtLm9yZz4uCisKIDIwMTItMTAtMDQgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNocm9taXVtIGJhc2VsaW5lcyBmb3Ig
NTAwNjc3OS5odG1sIGFuZCBwYWludC1zdWJyZWN0LWdyaWQuaHRtbC4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMzA0NTMpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nYy0zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsx
LDkgQEAKLVRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IERPTSBub2RlcyBhcmUgbm90IHJldGFpbmVk
IGp1c3QgYmVjYXVzZSBhIHdyYXBwZXIgZXhpc3RzIGZvciBhIGRlc2NlbmRhbnQuIEEgd3JhcHBl
ciBtdXN0IGV4aXN0IGZvciB0aGUgbm9kZSBpdHNlbGYgb3IgZm9yIGFuIGFuY2VzdG9yLgorVGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgRE9NIG5vZGVzIGFyZSByZXRhaW5lZCBiZWNhdXNlIGEgd3Jh
cHBlciBleGlzdHMgZm9yIGEgZGVzY2VuZGFudC4gQSB3cmFwcGVyIG5lZWQgbm90IGV4aXN0IGZv
ciB0aGUgbm9kZSBpdHNlbGYgb3IgZm9yIGFuIGFuY2VzdG9yLgogCi1UaGUgb3V0cHV0IHNob3Vs
ZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6
ICJyZXBsYWNlbWVudCBjb250ZW50IiwgIkIiLCAiY2hpbGQgbm9kZSBleGlzdHMiLgorVGhlIG91
dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0
aGVtc2VsdmVzOiAicmVwbGFjZW1lbnQgY29udGVudCIsICJCIiwgInBhcmVudCBub2RlIGV4aXN0
cyIsICJjaGlsZCBub2RlIGV4aXN0cyIuCiAKIHJlcGxhY2VtZW50IGNvbnRlbnQKIEIKK3BhcmVu
dCBub2RlIGV4aXN0cwogY2hpbGQgbm9kZSBleGlzdHMKIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2MtMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMu
aHRtbAkocmV2aXNpb24gMTMwNDUzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCArMzYsMTAgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiA8Ym9keSBvbmxvYWQ9ImRvaXQoKSI+CiA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xp
ZCByZWQiPgogPHA+Ci1UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIG5vdCBy
ZXRhaW5lZCBqdXN0IGJlY2F1c2UgYSB3cmFwcGVyIGV4aXN0cyBmb3IgYSBkZXNjZW5kYW50LiBB
IHdyYXBwZXIgbXVzdCBleGlzdCBmb3IgdGhlIG5vZGUgaXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rv
ci4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IERPTSBub2RlcyBhcmUgcmV0YWluZWQgYmVjYXVz
ZSBhIHdyYXBwZXIgZXhpc3RzIGZvciBhIGRlc2NlbmRhbnQuIEEgd3JhcHBlciBuZWVkIG5vdCBl
eGlzdCBmb3IgdGhlIG5vZGUgaXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rvci4KIDwvcD4KIDxwPgot
VGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5l
cyBieSB0aGVtc2VsdmVzOiAicmVwbGFjZW1lbnQgY29udGVudCIsICJCIiwgImNoaWxkIG5vZGUg
ZXhpc3RzIi4KK1RoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHRl
eHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhY2VtZW50IGNvbnRlbnQiLCAiQiIsICJw
YXJlbnQgbm9kZSBleGlzdHMiLCAiY2hpbGQgbm9kZSBleGlzdHMiLgogPC9wPgogPC9kaXY+CiA8
ZGl2IGlkPSJkaXYiPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDEzMDQ1MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsOCBAQAotVGhpcyB0ZXN0IHZlcmlmaWVzIHRo
YXQgRE9NIG5vZGVzIGFyZSBub3QgcmV0YWluZWQganVzdCBiZWNhdXNlIGEgd3JhcHBlciBleGlz
dHMgYW5kIGlzIHByb3RlY3RlZCBmb3IgYSBzaWJsaW5nLiBBIHdyYXBwZXIgbXVzdCBleGlzdCBm
b3IgdGhlIG5vZGUgaXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rvci4KK1RoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IERPTSBub2RlcyBhcmUgcmV0YWluZWQgYmVjYXVzZSBhIHdyYXBwZXIgZXhpc3RzIGFu
ZCBpcyBwcm90ZWN0ZWQgZm9yIGEgc2libGluZy4gQSB3cmFwcGVyIG5lZWQgbm90IGV4aXN0IGZv
ciB0aGUgbm9kZSBpdHNlbGYgb3IgZm9yIGFuIGFuY2VzdG9yLgogCi1UaGUgb3V0cHV0IHNob3Vs
ZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6
ICJyZXBsYWNlbWVudCBjb250ZW50IiwgIkIiLgorVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZv
bGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGFjZW1l
bnQgY29udGVudCIsICJCIiwgIkQiLgogCiByZXBsYWNlbWVudCBjb250ZW50CiBCCitECiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nYy01Lmh0bWwJKHJldmlzaW9uIDEzMDQ1MykKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2djLTUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBAIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewogPGJvZHkgb25sb2FkPSJkb2l0KCkiPgogPGRpdiBzdHls
ZT0iYm9yZGVyOiAxcHggc29saWQgcmVkIj4KIDxwPgotVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQg
RE9NIG5vZGVzIGFyZSBub3QgcmV0YWluZWQganVzdCBiZWNhdXNlIGEgd3JhcHBlciBleGlzdHMg
YW5kIGlzIHByb3RlY3RlZCBmb3IgYSBzaWJsaW5nLiBBIHdyYXBwZXIgbXVzdCBleGlzdCBmb3Ig
dGhlIG5vZGUgaXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rvci4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IERPTSBub2RlcyBhcmUgcmV0YWluZWQgYmVjYXVzZSBhIHdyYXBwZXIgZXhpc3RzIGFuZCBp
cyBwcm90ZWN0ZWQgZm9yIGEgc2libGluZy4gQSB3cmFwcGVyIG5lZWQgbm90IGV4aXN0IGZvciB0
aGUgbm9kZSBpdHNlbGYgb3IgZm9yIGFuIGFuY2VzdG9yLgogPC9wPgogPHA+Ci1UaGUgb3V0cHV0
IHNob3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1z
ZWx2ZXM6ICJyZXBsYWNlbWVudCBjb250ZW50IiwgIkIiLgorVGhlIG91dHB1dCBzaG91bGQgYmUg
dGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVw
bGFjZW1lbnQgY29udGVudCIsICJCIiwgIkQiLgogPC9wPgogPC9kaXY+CiA8ZGl2IGlkPSJkaXYi
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTEyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTEyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJl
IG5vdCBnYXJiYWdlIGNvbGxlY3RlZCBhcyBsb25nIGFzIGEgbm9kZSBpbiB0aGUgdHJlZSBpcyBy
ZWZlcmVuY2VkIGZyb20gSmF2YVNjcmlwdC4KKworUEFTUzogc3BhbiBzaG91bGQgYmUgYSBOb2Rl
IGFuZCBpcy4KK1BBU1M6IHNwYW4ucGFyZW50Tm9kZSBzaG91bGQgYmUgYSBOb2RlIGFuZCBpcy4K
K1BBU1M6IHNwYW4uZmlyc3RDaGlsZCBzaG91bGQgYmUgYSBOb2RlIGFuZCBpcy4KKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nYy0xMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2MtMTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorPHA+CitUaGlzIHRl
c3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIG5vdCBnYXJiYWdlIGNvbGxlY3RlZCBhcyBs
b25nIGFzIGEgbm9kZSBpbiB0aGUgCit0cmVlIGlzIHJlZmVyZW5jZWQgZnJvbSBKYXZhU2NyaXB0
LgorPC9wPgorCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPHNjcmlwdD4KK2Z1bmN0aW9u
IGxvZyhzKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsKK30KKworZnVuY3Rpb24g
c2hvdWxkQmVOb2RlKGEsIGFEZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoIShhIGluc3RhbmNlb2Yg
Tm9kZSkpIHsKKyAgICAgICAgbG9nKCJGQUlMOiAiICsgYURlc2NyaXB0aW9uICsgIiBzaG91bGQg
YmUgYSBOb2RlIGJ1dCBpbnN0ZWFkIGlzICIgKyBhICsgIi4iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGxvZygiUEFTUzogIiArIGFEZXNjcmlwdGlvbiArICIgc2hvdWxkIGJlIGEg
Tm9kZSBhbmQgaXMuIik7Cit9CisKK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAod2luZG93LkdD
Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAgIHZhciBzID0gbmV3IFN0
cmluZygiIik7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIHZhciBw
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocCk7CisgICAgcC5pbm5lckhUTUwgPSc8ZGl2PjxzcGFuIGlkPSJzcGFuIj48YnI+PC9z
cGFuPjwvZGl2Pic7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3Bh
biIpOworICAgIHAuaW5uZXJIVE1MID0gIiI7CisKKyAgICBnYygpOworCisgICAgc2hvdWxkQmVO
b2RlKHNwYW4sICJzcGFuIik7CisgICAgc2hvdWxkQmVOb2RlKHNwYW4ucGFyZW50Tm9kZSwgInNw
YW4ucGFyZW50Tm9kZSIpOworICAgIHNob3VsZEJlTm9kZShzcGFuLmZpcnN0Q2hpbGQsICJzcGFu
LmZpcnN0Q2hpbGQiKTsKK30pKCk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAyIEBACis9PT0gSW5pdGlhbCBzdGF0
ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50
Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlz
ICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERp
di5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hp
bGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhU
TUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVu
dE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBp
cyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJI
VE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5l
ckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5l
ckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3RzIGlu
IGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwgc3Rh
dGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVu
dE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBp
cyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxE
aXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENo
aWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNT
IGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2
LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJI
VE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJl
bnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQg
aXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFs
RGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RD
aGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVy
SFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9i
YWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJz
dENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5u
ZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5u
ZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBp
biBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0
YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJl
bnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQg
aXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFs
RGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RD
aGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFT
UyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERp
di5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVy
SFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFy
ZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlk
IGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5l
ckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xv
YmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmly
c3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlu
bmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlu
bmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVjdHMg
aW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCis9PT0gSW5pdGlhbCBz
dGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFy
ZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlk
IGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2Jh
bERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0
Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BB
U1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxE
aXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBpbm5l
ckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBh
cmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9i
YWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJz
dENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5u
ZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGds
b2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZp
cnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNTIEFsbCA8ZGl2PiBvYmplY3Rz
IGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLgorPT09IEluaXRpYWwg
c3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBh
cmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9i
YWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJz
dENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQ
QVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFs
RGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5u
ZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5w
YXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQu
aWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xv
YmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmly
c3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYxIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlu
bmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBn
bG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5m
aXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFTUyBBbGwgPGRpdj4gb2JqZWN0
cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1Y3RlZC4KKz09PSBJbml0aWFs
IHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5w
YXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQu
aWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xv
YmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmly
c3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5nIGlu
bmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYu
cGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxk
LmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGds
b2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZp
cnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MSIKK1BBU1Mg
Z2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYu
Zmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYw
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYw
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorPT09IEFmdGVyIGNsZWFyaW5n
IGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BBU1MgQWxsIDxkaXY+IG9iamVj
dHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw5OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgdGVzdENhc2VzID0gW1siZGl2MCIsICJkaXYx
IiwgImRpdjIiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYwIiwgImRpdjIiLCAiZGl2MSJdLAor
ICAgICAgICAgICAgICAgICBbImRpdjEiLCAiZGl2MCIsICJkaXYyIl0sCisgICAgICAgICAgICAg
ICAgIFsiZGl2MSIsICJkaXYyIiwgImRpdjAiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYyIiwg
ImRpdjAiLCAiZGl2MSJdLAorICAgICAgICAgICAgICAgICBbImRpdjIiLCAiZGl2MSIsICJkaXYw
Il1dOworCit2YXIgcm9vdERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290RGl2KTsKK3ZhciB0ZXN0SHRtbCA9ICI8ZGl2IGlk
PSdkaXYwLXBhcmVudCc+PGRpdiBpZD0nZGl2MCc+PGRpdiBpZD0nZGl2MC1jaGlsZCc+PC9kaXY+
PC9kaXY+PGRpdiBpZD0nZGl2MS1wYXJlbnQnPjxkaXYgaWQ9J2RpdjEnPjxkaXYgaWQ9J2RpdjEt
Y2hpbGQnPjwvZGl2PjwvZGl2PjxkaXYgaWQ9J2RpdjItcGFyZW50Jz48ZGl2IGlkPSdkaXYyJz48
ZGl2IGlkPSdkaXYyLWNoaWxkJz48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4iOworCit0
ZXN0Q2FzZXMuZm9yRWFjaChmdW5jdGlvbiAodGVzdCkgeworICAgIHZhciBkaXZYLCBkaXZZLCBk
aXZaOworICAgIGRlYnVnKCI9PT0gSW5pdGlhbCBzdGF0ZSA9PT0iKTsKKyAgICByb290RGl2Lmlu
bmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsxXSk7Cisg
ICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMl0pOworICAgIGNoZWNrUGFy
ZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxk
QWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlos
IHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09
Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGNoZWNrUGFyZW50QW5kQ2hp
bGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAgICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2
WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0p
OworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09
Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRtbDsKKyAgICBkaXZYID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2WSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxsOworICAg
IGdjKCk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZlKGRpdlksIHRlc3RbMV0pOworICAg
IGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsKKworICAgIGRlYnVnKCI9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PSIpOworICAgIHJv
b3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0
WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAg
cm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBkaXZYID0gbnVsbDsKKyAgICBkaXZZID0gbnVs
bDsKKyAgICBnYygpOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0WzJd
KTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZ
IGFuZCBkaXZaID09PSIpOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAg
ZGl2WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGVzdFsyXSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHBy
ZXZOb2RlcyA9IHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMoKTsKKyAgICByb290
RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxsOworICAgIGRpdlkgPSBudWxsOwor
ICAgIGRpdlogPSBudWxsOworICAgIGdjKCk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgLy8gSWYgYWxsIHRoZSBOb2RlIG9iamVjdHMgaW4gdGVzdEh0bWwgYXJlIHN1Y2Nl
c3NmdWxseSBkZXN0cnVjdGVkLAorICAgICAgICAvLyBhdCBsZWFzdCA5IDxkaXY+cyBvYmplY3Rz
IHdpbGwgYmUgcmVtb3ZlZC4KKyAgICAgICAgLy8gKEFjdHVhbGx5LCBzaW5jZSB0ZXN0SHRtbCBy
ZW5kZXJpbmcgcmVxdWlyZXMgbW9yZSB0aGFuIDkgTm9kZSBvYmplY3RzLikKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMoKSA8PSBwcmV2Tm9kZXMgLSA5KQor
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBh
cmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIjxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgbm90IGRlc3RydWN0
ZWQuIik7CisgICAgfQorfSk7CisKK2Z1bmN0aW9uIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShk
aXYsIG5hbWUpIHsKKyAgICBnbG9iYWxEaXYgPSBkaXY7CisgICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCdnbG9iYWxEaXYuaWQnLCBuYW1lKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2ds
b2JhbERpdi5wYXJlbnROb2RlLmlkJywgbmFtZSArICItcGFyZW50Iik7CisgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCcsIG5hbWUgKyAiLWNoaWxkIik7
CisgICAgZ2xvYmFsRGl2ID0gbnVsbDsKKyAgICBnYygpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="179879"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167267</attachid>
            <date>2012-10-05 00:20:50 -0700</date>
            <delta_ts>2012-10-05 00:20:50 -0700</delta_ts>
            <desc>With V8 side fix</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>8711</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQKaW5kZXggNjBkM2ExNy4uMmRjYzIx
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw5IEBA
Ci1UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIG5vdCByZXRhaW5lZCBqdXN0
IGJlY2F1c2UgYSB3cmFwcGVyIGV4aXN0cyBmb3IgYSBkZXNjZW5kYW50LiBBIHdyYXBwZXIgbXVz
dCBleGlzdCBmb3IgdGhlIG5vZGUgaXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rvci4KK1RoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IERPTSBub2RlcyBhcmUgcmV0YWluZWQgYmVjYXVzZSBhIHdyYXBwZXIg
ZXhpc3RzIGZvciBhIGRlc2NlbmRhbnQuIEEgd3JhcHBlciBuZWVkIG5vdCBleGlzdCBmb3IgdGhl
IG5vZGUgaXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rvci4KIAotVGhlIG91dHB1dCBzaG91bGQgYmUg
dGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVw
bGFjZW1lbnQgY29udGVudCIsICJCIiwgImNoaWxkIG5vZGUgZXhpc3RzIi4KK1RoZSBvdXRwdXQg
c2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNl
bHZlczogInJlcGxhY2VtZW50IGNvbnRlbnQiLCAiQiIsICJwYXJlbnQgbm9kZSBleGlzdHMiLCAi
Y2hpbGQgbm9kZSBleGlzdHMiLgogCiByZXBsYWNlbWVudCBjb250ZW50CiBCCitwYXJlbnQgbm9k
ZSBleGlzdHMKIGNoaWxkIG5vZGUgZXhpc3RzCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2djLTMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMuaHRtbAppbmRleCBk
MjRhMjg3Li5lYTkwMmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy5odG1sCkBAIC0zNiwxMCArMzYsMTAg
QEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiA8Ym9keSBvbmxvYWQ9ImRvaXQoKSI+CiA8ZGl2
IHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZWQiPgogPHA+Ci1UaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCBET00gbm9kZXMgYXJlIG5vdCByZXRhaW5lZCBqdXN0IGJlY2F1c2UgYSB3cmFwcGVyIGV4
aXN0cyBmb3IgYSBkZXNjZW5kYW50LiBBIHdyYXBwZXIgbXVzdCBleGlzdCBmb3IgdGhlIG5vZGUg
aXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rvci4KK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IERPTSBu
b2RlcyBhcmUgcmV0YWluZWQgYmVjYXVzZSBhIHdyYXBwZXIgZXhpc3RzIGZvciBhIGRlc2NlbmRh
bnQuIEEgd3JhcHBlciBuZWVkIG5vdCBleGlzdCBmb3IgdGhlIG5vZGUgaXRzZWxmIG9yIGZvciBh
biBhbmNlc3Rvci4KIDwvcD4KIDxwPgotVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2lu
ZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGFjZW1lbnQgY29u
dGVudCIsICJCIiwgImNoaWxkIG5vZGUgZXhpc3RzIi4KK1RoZSBvdXRwdXQgc2hvdWxkIGJlIHRo
ZSBmb2xsb3dpbmcgcGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxh
Y2VtZW50IGNvbnRlbnQiLCAiQiIsICJwYXJlbnQgbm9kZSBleGlzdHMiLCAiY2hpbGQgbm9kZSBl
eGlzdHMiLgogPC9wPgogPC9kaXY+CiA8ZGl2IGlkPSJkaXYiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9n
Yy01LWV4cGVjdGVkLnR4dAppbmRleCAxOGM4MzQ4Li4zODRlNjc1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9nYy01LWV4cGVjdGVkLnR4dApAQCAtMSw3ICsxLDggQEAKLVRoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IERPTSBub2RlcyBhcmUgbm90IHJldGFpbmVkIGp1c3QgYmVjYXVzZSBhIHdyYXBwZXIg
ZXhpc3RzIGFuZCBpcyBwcm90ZWN0ZWQgZm9yIGEgc2libGluZy4gQSB3cmFwcGVyIG11c3QgZXhp
c3QgZm9yIHRoZSBub2RlIGl0c2VsZiBvciBmb3IgYW4gYW5jZXN0b3IuCitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIHJldGFpbmVkIGJlY2F1c2UgYSB3cmFwcGVyIGV4aXN0
cyBhbmQgaXMgcHJvdGVjdGVkIGZvciBhIHNpYmxpbmcuIEEgd3JhcHBlciBuZWVkIG5vdCBleGlz
dCBmb3IgdGhlIG5vZGUgaXRzZWxmIG9yIGZvciBhbiBhbmNlc3Rvci4KIAotVGhlIG91dHB1dCBz
aG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2Vs
dmVzOiAicmVwbGFjZW1lbnQgY29udGVudCIsICJCIi4KK1RoZSBvdXRwdXQgc2hvdWxkIGJlIHRo
ZSBmb2xsb3dpbmcgcGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxh
Y2VtZW50IGNvbnRlbnQiLCAiQiIsICJEIi4KIAogcmVwbGFjZW1lbnQgY29udGVudAogQgorRAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9nYy01Lmh0bWwKaW5kZXggOTc1OGU4OC4uNzQ3NWIyMGIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nYy01Lmh0bWwKQEAgLTM0LDEwICszNCwxMCBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
IDxib2R5IG9ubG9hZD0iZG9pdCgpIj4KIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJl
ZCI+CiA8cD4KLVRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IERPTSBub2RlcyBhcmUgbm90IHJldGFp
bmVkIGp1c3QgYmVjYXVzZSBhIHdyYXBwZXIgZXhpc3RzIGFuZCBpcyBwcm90ZWN0ZWQgZm9yIGEg
c2libGluZy4gQSB3cmFwcGVyIG11c3QgZXhpc3QgZm9yIHRoZSBub2RlIGl0c2VsZiBvciBmb3Ig
YW4gYW5jZXN0b3IuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIHJldGFp
bmVkIGJlY2F1c2UgYSB3cmFwcGVyIGV4aXN0cyBhbmQgaXMgcHJvdGVjdGVkIGZvciBhIHNpYmxp
bmcuIEEgd3JhcHBlciBuZWVkIG5vdCBleGlzdCBmb3IgdGhlIG5vZGUgaXRzZWxmIG9yIGZvciBh
biBhbmNlc3Rvci4KIDwvcD4KIDxwPgotVGhlIG91dHB1dCBzaG91bGQgYmUgdGhlIGZvbGxvd2lu
ZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVtc2VsdmVzOiAicmVwbGFjZW1lbnQgY29u
dGVudCIsICJCIi4KK1RoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcgcGllY2VzIG9m
IHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhY2VtZW50IGNvbnRlbnQiLCAiQiIs
ICJEIi4KIDwvcD4KIDwvZGl2PgogPGRpdiBpZD0iZGl2Ij4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCmluZGV4IGJlMTI5MTMuLjNmNTAwZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcApAQCAtODUsMTAgKzg1LDcg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGlubGluZSBib29sIGlzT2Jz
ZXJ2YWJsZShKU05vZGUqIGpzTm9kZSwgTm9kZSogbm9kZSkKIHsKLSAgICAvLyBUaGUgRE9NIGRv
ZXNuJ3Qga25vdyBob3cgdG8ga2VlcCBhIHRyZWUgb2Ygbm9kZXMgYWxpdmUgd2l0aG91dCB0aGUg
cm9vdAotICAgIC8vIGJlaW5nIGV4cGxpY2l0bHkgcmVmZXJlbmNlZC4gU28sIHdlIGFydGlmaWNp
YWxseSB0cmVhdCB0aGUgcm9vdCBvZgotICAgIC8vIGV2ZXJ5IHRyZWUgYXMgb2JzZXJ2YWJsZS4K
LSAgICAvLyBGSVhNRTogUmVzb2x2ZSB0aGlzIGxpZmV0aW1lIGlzc3VlIGluIHRoZSBET00sIGFu
ZCByZW1vdmUgdGhpcy4KKyAgICAvLyBUaGUgcm9vdCBub2RlIGtlZXBzIHRoZSB0cmVlIGludGFj
dC4KICAgICBpZiAoIW5vZGUtPnBhcmVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKaW5kZXggZGQyNDJlMy4u
NGJhY2ViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3Vz
dG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSlNOb2RlQ3VzdG9tX2gKIAogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5
c0lubGluZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw2ICs2OSwyOSBAQCBpbmxp
bmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXIoZXhlYywgZ2xvYmFs
T2JqZWN0LCBub2RlKTsKIH0KIAorLy8gSW4gdGhlIEMrKyBET00sIGEgbm9kZSB0cmVlIHN1cnZp
dmVzIGFzIGxvbmcgYXMgdGhlcmUgaXMgYSByZWZlcmVuY2UgdG8gaXRzCisvLyByb290LiBJbiB0
aGUgSmF2YVNjcmlwdCBET00sIGEgbm9kZSB0cmVlIHN1cnZpdmVzIGFzIGxvbmcgYXMgdGhlcmUg
aXMgYQorLy8gcmVmZXJlbmNlIHRvIGFueSBub2RlIGluIHRoZSB0cmVlLiBUbyBtb2RlbCB0aGUg
SmF2YVNjcmlwdCBET00gb24gdG9wIG9mCisvLyB0aGUgQysrIERPTSwgd2UgZW5zdXJlIHRoYXQg
dGhlIHJvb3Qgb2YgZXZlcnkgdHJlZSBoYXMgYSBKYXZhU2NyaXB0CisvLyB3cmFwcGVyLgoraW5s
aW5lIHZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKE5vZGUqIHJv
b3QpCit7CisgICAgaWYgKHJvb3QtPndyYXBwZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKCFyb290LT5pc0NvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCF0b0NvbnRhaW5lck5vZGUocm9vdCktPmhhc0NoaWxkTm9kZXMoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkU2NyaXB0U3RhdGUo
cm9vdC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgaWYgKCFzY3JpcHRTdGF0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdG9KUyhzY3JpcHRTdGF0ZSwgc3RhdGljX2Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgcm9vdCk7CiB9
CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIEpTRE9NTm9kZUN1c3RvbV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5jcHAKaW5kZXggNzgwY2E0
ZC4uMmM0NTA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0YXRlLmNw
cApAQCAtOTMsNiArOTMsOCBAQCB2b2lkIHNldEV2YWxFbmFibGVkKFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgYm9vbCBlbmFibGVkKQogCiBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2NyaXB0U3Rh
dGUoRnJhbWUqIGZyYW1lKQogeworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiAwOwog
ICAgIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsID0gZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVs
bChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgcmV0dXJuIHNoZWxsLT53aW5kb3coKS0+
Z2xvYmFsRXhlYygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5jcHAKaW5kZXggZmViYWU3NS4uZWViOTc2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yMTAsNCArMjEwLDIzIEBAIFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhCiAjZW5kaWYKIH0KIAorLy8gSW4gdGhlIEMrKyBET00sIGEgbm9kZSB0cmVlIHN1
cnZpdmVzIGFzIGxvbmcgYXMgdGhlcmUgaXMgYSByZWZlcmVuY2UgdG8gaXRzCisvLyByb290LiBJ
biB0aGUgSmF2YVNjcmlwdCBET00sIGEgbm9kZSB0cmVlIHN1cnZpdmVzIGFzIGxvbmcgYXMgdGhl
cmUgaXMgYQorLy8gcmVmZXJlbmNlIHRvIGFueSBub2RlIGluIHRoZSB0cmVlLiBUbyBtb2RlbCB0
aGUgSmF2YVNjcmlwdCBET00gb24gdG9wIG9mCisvLyB0aGUgQysrIERPTSwgd2UgZW5zdXJlIHRo
YXQgdGhlIHJvb3Qgb2YgZXZlcnkgdHJlZSBoYXMgYSBKYXZhU2NyaXB0CisvLyB3cmFwcGVyLgor
dm9pZCB3aWxsQ3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoTm9kZSogcm9vdCkK
K3sKKyAgICBpZiAocm9vdC0+d3JhcHBlcigpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgIGlmICghcm9vdC0+aXNDb250YWluZXJOb2RlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghdG9Db250YWluZXJOb2RlKHJvb3QpLT5oYXNDaGlsZE5vZGVzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHRvVjgocm9vdCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCmluZGV4IGFkMWJjYWYuLmE1
OTE2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC0x
NTAsNiArMTUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBnZXRBY3RpdmVET01P
YmplY3RNYXAoaXNvbGF0ZSkuc2V0KG9iamVjdC5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUpOwog
ICAgICAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKICAgICB9CisKKyAgICB2b2lkIHdpbGxDcmVh
dGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbChOb2RlKik7CiB9CiAKICNlbmRpZiAvLyBW
OERPTVdyYXBwZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOb2RlQ3VzdG9tLmNwcAppbmRleCA4YTk4YTc2Li42ZDk5NGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtMTcwLDQg
KzE3MCw1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4CiAgICAgfQogICAgIHJldHVybiBWOE5v
ZGU6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGIwZjRk
OGEuLjIyMjZjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTQ2LDYg
KzQ2LDEyIEBACiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCisjaWYgVVNFKEpTQykKKyNpbmNsdWRlICJKU05vZGUuaCIKKyNlbGlmIFVTRShW
OCkKKyNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05NzcsNiArOTgzLDcgQEAgc3RhdGljIHZv
aWQgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQpCiAKICAgICBBU1NFUlQo
IU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwog
CisgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkKTsKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlKGNoaWxkLT5kb2N1
bWVudCgpLCBjaGlsZCk7CiAKICAgICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167397</attachid>
            <date>2012-10-05 15:35:14 -0700</date>
            <delta_ts>2012-10-06 11:34:48 -0700</delta_ts>
            <desc>patch + Gavin&apos;s and Mark&apos;s suggested edits - V8 code</desc>
            <filename>ro.txt</filename>
            <type>text/plain</type>
            <size>24518</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTA0ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgSWYgTm9kZSBYIGlzIHJlYWNo
YWJsZSBmcm9tIEphdmFTY3JpcHQsIGFsbCBOb2RlcyBpbiB0aGUgc2FtZSB0cmVlIHNob3VsZCBi
ZSBrZXB0IGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04ODgzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omlz
T2JzZXJ2YWJsZSk6IENsYXJpZmllZCB0aGlzIGNvbW1lbnQsIHNpbmNlIGl0IHNlZW1zIHRvIGhh
dmUKKyAgICAgICAgbWlzbGVkIHNvbWUgZm9sa3MuIAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjp3aWxsQ3JlYXRlUG9zc2libHlPcnBo
YW5lZFRyZWVCeVJlbW92YWwpOiBOZXcgaGVscGVyIGZ1bmN0aW9uCisgICAgICAgIHRvIGVuc3Vy
ZSB0aGF0IGEgZGlzY29ubmVjdGVkIHRyZWUgaXMgdmlzaWJsZSB0byBKYXZhU2NyaXB0LgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
bWFpbldvcmxkU2NyaXB0U3RhdGUpOiBOZWVkIHRvIGNoZWNrIGZvciBudWxsIGJlY2F1c2UgYSBk
b2N1bWVudCdzCisgICAgICAgIGZyYW1lIGNhbiBiZSBudWxsLgorCisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxF
dmVudHMpOiBXaGVuIHdlIHJlbW92ZSBhIHN1YnRyZWUgZnJvbSB0aGUKKyAgICAgICAgZG9jdW1l
bnQsIHdlIHNldmVyIHRoZSByZWZlcmVuY2UgdGhhdCBKYXZhU2NyaXB0IHByZXZpb3VzbHkgaGVs
ZCBieQorICAgICAgICByZWZlcmVuY2luZyBpdHMgcm9vdC4gU28sIHdlIGdpdmUgSmF2YVNjcmlw
dCBhbiBvcHBvcnR1bml0eSB0byBlc3RhYmxpc2gKKyAgICAgICAgYSByZWZlcmVuY2UgdG8gdGhl
IG5ldyByb290LgorCiAyMDEyLTEwLTA0ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gRXZlbnRIYW5kbGVyOjptb3VzZU1vdmVkKCkuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDEzMDQ1MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg1LDEwICs4NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc09ic2VydmFibGUoSlNOb2RlKiBqc05vZGUsIE5v
ZGUqIG5vZGUpCiB7Ci0gICAgLy8gVGhlIERPTSBkb2Vzbid0IGtub3cgaG93IHRvIGtlZXAgYSB0
cmVlIG9mIG5vZGVzIGFsaXZlIHdpdGhvdXQgdGhlIHJvb3QKLSAgICAvLyBiZWluZyBleHBsaWNp
dGx5IHJlZmVyZW5jZWQuIFNvLCB3ZSBhcnRpZmljaWFsbHkgdHJlYXQgdGhlIHJvb3Qgb2YKLSAg
ICAvLyBldmVyeSB0cmVlIGFzIG9ic2VydmFibGUuCi0gICAgLy8gRklYTUU6IFJlc29sdmUgdGhp
cyBsaWZldGltZSBpc3N1ZSBpbiB0aGUgRE9NLCBhbmQgcmVtb3ZlIHRoaXMuCisgICAgLy8gVGhl
IHJvb3Qgbm9kZSBrZWVwcyB0aGUgdHJlZSBpbnRhY3QuCiAgICAgaWYgKCFub2RlLT5wYXJlbnRO
b2RlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVDdXN0b20uaAkocmV2aXNpb24gMTMwNDUzKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgSlNOb2RlQ3VzdG9tX2gKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5o
IgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGluZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw2ICs2OSwyOSBAQCBpbmxpbmUgSlNDOjpK
U1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqCiAgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXIoZXhl
YywgZ2xvYmFsT2JqZWN0LCBub2RlKTsKIH0KIAorLy8gSW4gdGhlIEMrKyBET00sIGEgbm9kZSB0
cmVlIHN1cnZpdmVzIGFzIGxvbmcgYXMgdGhlcmUgaXMgYSByZWZlcmVuY2UgdG8gaXRzCisvLyBy
b290LiBJbiB0aGUgSmF2YVNjcmlwdCBET00sIGEgbm9kZSB0cmVlIHN1cnZpdmVzIGFzIGxvbmcg
YXMgdGhlcmUgaXMgYQorLy8gcmVmZXJlbmNlIHRvIGFueSBub2RlIGluIHRoZSB0cmVlLiBUbyBt
b2RlbCB0aGUgSmF2YVNjcmlwdCBET00gb24gdG9wIG9mCisvLyB0aGUgQysrIERPTSwgd2UgZW5z
dXJlIHRoYXQgdGhlIHJvb3Qgb2YgZXZlcnkgdHJlZSBoYXMgYSBKYXZhU2NyaXB0CisvLyB3cmFw
cGVyLgoraW5saW5lIHZvaWQgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFs
KE5vZGUqIHJvb3QpCit7CisgICAgaWYgKHJvb3QtPndyYXBwZXIoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFyb290LT5pc0NvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCF0b0NvbnRhaW5lck5vZGUocm9vdCktPmhhc0NoaWxkTm9kZXMoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkU2Ny
aXB0U3RhdGUocm9vdC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisgICAgaWYgKCFzY3JpcHRTdGF0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdG9KUyhzY3JpcHRTdGF0ZSwgc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
cm9vdCk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIEpTRE9NTm9k
ZUN1c3RvbV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRTdGF0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0U3RhdGUu
Y3BwCShyZXZpc2lvbiAxMzA0NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgdm9pZCBzZXRFdmFs
RW5hYmxlZChTY3JpcHRTdGF0ZSogc2NyaXB0UwogCiBTY3JpcHRTdGF0ZSogbWFpbldvcmxkU2Ny
aXB0U3RhdGUoRnJhbWUqIGZyYW1lKQogeworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biAwOwogICAgIEpTRE9NV2luZG93U2hlbGwqIHNoZWxsID0gZnJhbWUtPnNjcmlwdCgpLT53aW5k
b3dTaGVsbChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiAgICAgcmV0dXJuIHNoZWxsLT53aW5k
b3coKS0+Z2xvYmFsRXhlYygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAkocmV2aXNpb24gMTMwNDUzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIFVTRShKU0MpCisj
aW5jbHVkZSAiSlNOb2RlLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtOTc3LDYgKzk4MSw5IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNo
Q2hpbGRSZW1vdmFsRXZlbnRzKE4KIAogICAgIEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uOjppc0V2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAKKyNpZiBVU0UoSlNDKQorICAgIHdp
bGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbChjaGlsZCk7CisjZW5kaWYKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlKGNoaWxkLT5kb2N1
bWVudCgpLCBjaGlsZCk7CiAKICAgICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTMwNDUzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTItMTAtMDQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBJZiBOb2RlIFggaXMgcmVhY2hhYmxlIGZyb20gSmF2YVNjcmlw
dCwgYWxsIE5vZGVzIGluIHRoZSBzYW1lIHRyZWUgc2hvdWxkIGJlIGtlcHQgYWxpdmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg4ODM0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9nYy0x
Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2djLTEyLmh0bWw6IEFk
ZGVkLiBUZXN0IGNhc2UgbWF0Y2hlcyBhbiBleGFtcGxlIGNpdGVkIGJ5CisgICAgICAgIEtlbnRh
cm8gSGFyYSA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+IGluIGJ1Z3ppbGxhLgorCisgICAgICAgICog
ZmFzdC9kb20vZ2MtMy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vZ2MtMy5odG1s
OgorICAgICAgICAqIGZhc3QvZG9tL2djLTUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
ZG9tL2djLTUuaHRtbDogVXBkYXRlZCB0aGVzZSB0ZXN0cyB0byByZWZsZWN0IG5ldyBleHBlY3Rl
ZCBiZWhhdmlvci4KKyAgICAgICAgV2UndmUgZGVjaWRlZCB0aGF0IGRpc2Nvbm5lY3RlZCB0cmVl
cyBzaG91bGQgcGVyc2lzdCBpbiBtZW1vcnkuIFRoaXMgcmlza3MKKyAgICAgICAgYSBwcm9ncmFt
bWVyIGFjY2lkZW50YWxseSByZXRhaW5pbmcgbW9yZSBtZW1vcnkgdGhhbiBleHBlY3RlZCwgYnV0
IGl0CisgICAgICAgIGFsc28gbWFrZXMgdGhlIEFQSSBtb3JlIG9idmlvdXMuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGltZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLmh0bWw6IEFkZGVkLiBUZXN0IGNh
c2Ugd3JpdHRlbiBieQorICAgICAgICBLZW50YXJvIEhhcmEgPGhhcmFrZW5AY2hyb21pdW0ub3Jn
Pi4KKwogMjAxMi0xMC0wNCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVcGRhdGUgY2hyb21pdW0gYmFzZWxpbmVzIGZvciA1MDA2Nzc5Lmh0bWwgYW5kIHBh
aW50LXN1YnJlY3QtZ3JpZC5odG1sLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDEzMDQ1MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOSBAQAotVGhpcyB0ZXN0IHZl
cmlmaWVzIHRoYXQgRE9NIG5vZGVzIGFyZSBub3QgcmV0YWluZWQganVzdCBiZWNhdXNlIGEgd3Jh
cHBlciBleGlzdHMgZm9yIGEgZGVzY2VuZGFudC4gQSB3cmFwcGVyIG11c3QgZXhpc3QgZm9yIHRo
ZSBub2RlIGl0c2VsZiBvciBmb3IgYW4gYW5jZXN0b3IuCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhh
dCBET00gbm9kZXMgYXJlIHJldGFpbmVkIGJlY2F1c2UgYSB3cmFwcGVyIGV4aXN0cyBmb3IgYSBk
ZXNjZW5kYW50LiBBIHdyYXBwZXIgbmVlZCBub3QgZXhpc3QgZm9yIHRoZSBub2RlIGl0c2VsZiBv
ciBmb3IgYW4gYW5jZXN0b3IuCiAKLVRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcg
cGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhY2VtZW50IGNvbnRl
bnQiLCAiQiIsICJjaGlsZCBub2RlIGV4aXN0cyIuCitUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUg
Zm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYWNl
bWVudCBjb250ZW50IiwgIkIiLCAicGFyZW50IG5vZGUgZXhpc3RzIiwgImNoaWxkIG5vZGUgZXhp
c3RzIi4KIAogcmVwbGFjZW1lbnQgY29udGVudAogQgorcGFyZW50IG5vZGUgZXhpc3RzCiBjaGls
ZCBub2RlIGV4aXN0cwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMy5odG1sCShyZXZpc2lvbiAxMzA0
NTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDEwICszNiwxMCBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKIDxib2R5IG9ubG9hZD0i
ZG9pdCgpIj4KIDxkaXYgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJlZCI+CiA8cD4KLVRoaXMg
dGVzdCB2ZXJpZmllcyB0aGF0IERPTSBub2RlcyBhcmUgbm90IHJldGFpbmVkIGp1c3QgYmVjYXVz
ZSBhIHdyYXBwZXIgZXhpc3RzIGZvciBhIGRlc2NlbmRhbnQuIEEgd3JhcHBlciBtdXN0IGV4aXN0
IGZvciB0aGUgbm9kZSBpdHNlbGYgb3IgZm9yIGFuIGFuY2VzdG9yLgorVGhpcyB0ZXN0IHZlcmlm
aWVzIHRoYXQgRE9NIG5vZGVzIGFyZSByZXRhaW5lZCBiZWNhdXNlIGEgd3JhcHBlciBleGlzdHMg
Zm9yIGEgZGVzY2VuZGFudC4gQSB3cmFwcGVyIG5lZWQgbm90IGV4aXN0IGZvciB0aGUgbm9kZSBp
dHNlbGYgb3IgZm9yIGFuIGFuY2VzdG9yLgogPC9wPgogPHA+Ci1UaGUgb3V0cHV0IHNob3VsZCBi
ZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJy
ZXBsYWNlbWVudCBjb250ZW50IiwgIkIiLCAiY2hpbGQgbm9kZSBleGlzdHMiLgorVGhlIG91dHB1
dCBzaG91bGQgYmUgdGhlIGZvbGxvd2luZyBwaWVjZXMgb2YgdGV4dCBvbiBsaW5lcyBieSB0aGVt
c2VsdmVzOiAicmVwbGFjZW1lbnQgY29udGVudCIsICJCIiwgInBhcmVudCBub2RlIGV4aXN0cyIs
ICJjaGlsZCBub2RlIGV4aXN0cyIuCiA8L3A+CiA8L2Rpdj4KIDxkaXYgaWQ9ImRpdiI+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nYy01LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTMwNDUzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsNyArMSw4IEBACi1UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIG5v
dCByZXRhaW5lZCBqdXN0IGJlY2F1c2UgYSB3cmFwcGVyIGV4aXN0cyBhbmQgaXMgcHJvdGVjdGVk
IGZvciBhIHNpYmxpbmcuIEEgd3JhcHBlciBtdXN0IGV4aXN0IGZvciB0aGUgbm9kZSBpdHNlbGYg
b3IgZm9yIGFuIGFuY2VzdG9yLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgRE9NIG5vZGVzIGFy
ZSByZXRhaW5lZCBiZWNhdXNlIGEgd3JhcHBlciBleGlzdHMgYW5kIGlzIHByb3RlY3RlZCBmb3Ig
YSBzaWJsaW5nLiBBIHdyYXBwZXIgbmVlZCBub3QgZXhpc3QgZm9yIHRoZSBub2RlIGl0c2VsZiBv
ciBmb3IgYW4gYW5jZXN0b3IuCiAKLVRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xsb3dpbmcg
cGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhY2VtZW50IGNvbnRl
bnQiLCAiQiIuCitUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNlcyBvZiB0
ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYWNlbWVudCBjb250ZW50IiwgIkIiLCAi
RCIuCiAKIHJlcGxhY2VtZW50IGNvbnRlbnQKIEIKK0QKIApJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2MtNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2djLTUu
aHRtbAkocmV2aXNpb24gMTMwNDUzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtNS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTAgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiA8Ym9keSBvbmxvYWQ9ImRvaXQoKSI+CiA8ZGl2IHN0eWxlPSJib3JkZXI6IDFweCBzb2xp
ZCByZWQiPgogPHA+Ci1UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIG5vdCBy
ZXRhaW5lZCBqdXN0IGJlY2F1c2UgYSB3cmFwcGVyIGV4aXN0cyBhbmQgaXMgcHJvdGVjdGVkIGZv
ciBhIHNpYmxpbmcuIEEgd3JhcHBlciBtdXN0IGV4aXN0IGZvciB0aGUgbm9kZSBpdHNlbGYgb3Ig
Zm9yIGFuIGFuY2VzdG9yLgorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgRE9NIG5vZGVzIGFyZSBy
ZXRhaW5lZCBiZWNhdXNlIGEgd3JhcHBlciBleGlzdHMgYW5kIGlzIHByb3RlY3RlZCBmb3IgYSBz
aWJsaW5nLiBBIHdyYXBwZXIgbmVlZCBub3QgZXhpc3QgZm9yIHRoZSBub2RlIGl0c2VsZiBvciBm
b3IgYW4gYW5jZXN0b3IuCiA8L3A+CiA8cD4KLVRoZSBvdXRwdXQgc2hvdWxkIGJlIHRoZSBmb2xs
b3dpbmcgcGllY2VzIG9mIHRleHQgb24gbGluZXMgYnkgdGhlbXNlbHZlczogInJlcGxhY2VtZW50
IGNvbnRlbnQiLCAiQiIuCitUaGUgb3V0cHV0IHNob3VsZCBiZSB0aGUgZm9sbG93aW5nIHBpZWNl
cyBvZiB0ZXh0IG9uIGxpbmVzIGJ5IHRoZW1zZWx2ZXM6ICJyZXBsYWNlbWVudCBjb250ZW50Iiwg
IkIiLCAiRCIuCiA8L3A+CiA8L2Rpdj4KIDxkaXYgaWQ9ImRpdiI+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nYy0xMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2MtMTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2MtMTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IERPTSBub2RlcyBhcmUgbm90IGdhcmJhZ2UgY29sbGVj
dGVkIGFzIGxvbmcgYXMgYSBub2RlIGluIHRoZSB0cmVlIGlzIHJlZmVyZW5jZWQgZnJvbSBKYXZh
U2NyaXB0LgorCitQQVNTOiBzcGFuIHNob3VsZCBiZSBhIE5vZGUgYW5kIGlzLgorUEFTUzogc3Bh
bi5wYXJlbnROb2RlIHNob3VsZCBiZSBhIE5vZGUgYW5kIGlzLgorUEFTUzogc3Bhbi5maXJzdENo
aWxkIHNob3VsZCBiZSBhIE5vZGUgYW5kIGlzLgorUEFTUzogc3BhbiBzaG91bGQgYmUgYSBOb2Rl
IGFuZCBpcy4KK1BBU1M6IHNwYW4ucGFyZW50Tm9kZSBzaG91bGQgYmUgYSBOb2RlIGFuZCBpcy4K
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtMTIuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nYy0xMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2MtMTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorPHA+
CitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBET00gbm9kZXMgYXJlIG5vdCBnYXJiYWdlIGNvbGxl
Y3RlZCBhcyBsb25nIGFzIGEgbm9kZSBpbiB0aGUgCit0cmVlIGlzIHJlZmVyZW5jZWQgZnJvbSBK
YXZhU2NyaXB0LgorPC9wPgorCis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPHNjcmlwdD4K
K2Z1bmN0aW9uIGxvZyhzKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xl
IikuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocyArICJcbiIpKTsKK30KKwor
ZnVuY3Rpb24gc2hvdWxkQmVOb2RlKGEsIGFEZXNjcmlwdGlvbikKK3sKKyAgICBpZiAoIShhIGlu
c3RhbmNlb2YgTm9kZSkpIHsKKyAgICAgICAgbG9nKCJGQUlMOiAiICsgYURlc2NyaXB0aW9uICsg
IiBzaG91bGQgYmUgYSBOb2RlIGJ1dCBpbnN0ZWFkIGlzICIgKyBhICsgIi4iKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGxvZygiUEFTUzogIiArIGFEZXNjcmlwdGlvbiArICIgc2hv
dWxkIGJlIGEgTm9kZSBhbmQgaXMuIik7Cit9CisKK2Z1bmN0aW9uIGdjKCkKK3sKKyAgICBpZiAo
d2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0
KCk7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAgIHZhciBz
ID0gbmV3IFN0cmluZygiIik7Cit9CisKKyhmdW5jdGlvbiAoKSB7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKwor
ICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gVHJ5IHRvIGNyZWF0ZSBhbiBvcnBoYW4gdHJl
ZSBieSByZW1vdmFsLgorICAgICAgICB2YXIgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAi
KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwKTsKKyAgICAgICAgcC5pbm5l
ckhUTUwgPSc8ZGl2PjxzcGFuIGlkPSJzcGFuIj48YnI+PC9zcGFuPjwvZGl2Pic7CisgICAgICAg
IHZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNwYW4iKTsKKyAgICAgICAgcC5p
bm5lckhUTUwgPSAiIjsKKworICAgICAgICBnYygpOworCisgICAgICAgIHNob3VsZEJlTm9kZShz
cGFuLCAic3BhbiIpOworICAgICAgICBzaG91bGRCZU5vZGUoc3Bhbi5wYXJlbnROb2RlLCAic3Bh
bi5wYXJlbnROb2RlIik7CisgICAgICAgIHNob3VsZEJlTm9kZShzcGFuLmZpcnN0Q2hpbGQsICJz
cGFuLmZpcnN0Q2hpbGQiKTsKKyAgICB9KSgpOworCisgICAgKGZ1bmN0aW9uKCkgeworICAgICAg
ICAvLyBUcnkgdG8gY3JlYXRlIGFuIG9ycGhhbiB0cmVlIGJ5IGluc2VydGlvbi4KKyAgICAgICAg
dmFyIHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgIHZhciBzcGFuID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBwLmFwcGVuZENoaWxkKHNw
YW4pOworICAgICAgICBwID0gbnVsbDsKKworICAgICAgICBnYygpOworCisgICAgICAgIHNob3Vs
ZEJlTm9kZShzcGFuLCAic3BhbiIpOworICAgICAgICBzaG91bGRCZU5vZGUoc3Bhbi5wYXJlbnRO
b2RlLCAic3Bhbi5wYXJlbnROb2RlIik7CisgICAgfSkoKTsKK30pKCk7Cis8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2djLWRvbS10cmVlLWxpZmV0aW1lLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGlt
ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1k
b20tdHJlZS1saWZldGltZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAy
IEBACis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYwIgor
UEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQiCitQQVNTIGdsb2Jh
bERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQgaXMg
ImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BB
U1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09PSBB
ZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCis9PT0g
QWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjIt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjIt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQQVNT
IEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVj
dGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2MCIK
K1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50IgorUEFTUyBnbG9i
YWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2LmlkIGlz
ICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQ
QVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxE
aXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBh
cmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9PT0g
QWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjAi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorPT09
IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYx
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYx
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQorUEFT
UyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVzdHJ1
Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRpdjEi
CitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVudCIKK1BBU1MgZ2xv
YmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGdsb2JhbERpdi5pZCBp
cyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50Igor
UEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xvYmFs
RGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1w
YXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorPT09
IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYx
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYwLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjIt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgor
PT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
Mi1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgor
PT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0KK1BB
U1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3Ry
dWN0ZWQuCis9PT0gSW5pdGlhbCBzdGF0ZSA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJkaXYx
IgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MS1wYXJlbnQiCitQQVNTIGds
b2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYuaWQg
aXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIK
K1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2Jh
bERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAt
cGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKKz09
PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjAiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYw
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjAtY2hpbGQiCis9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MIGFuZCBkaXZYID09PQorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
Kz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlggYW5kIGRpdlkgPT09CitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
Kz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwsIGRpdlgsIGRpdlkgYW5kIGRpdlogPT09CitQ
QVNTIEFsbCA8ZGl2PiBvYmplY3RzIGluIGEgRE9NIHRyZWUgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0
cnVjdGVkLgorPT09IEluaXRpYWwgc3RhdGUgPT09CitQQVNTIGdsb2JhbERpdi5pZCBpcyAiZGl2
MiIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjItcGFyZW50IgorUEFTUyBn
bG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2Mi1jaGlsZCIKK1BBU1MgZ2xvYmFsRGl2Lmlk
IGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJlbnQi
CitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBnbG9i
YWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYx
LXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCis9
PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjAtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYxIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MS1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYxLWNoaWxkIgor
PT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCBhbmQgZGl2WCA9PT0KK1BBU1MgZ2xvYmFsRGl2
LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2MC1wYXJl
bnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQi
Cis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFuZCBkaXZZID09PQorUEFTUyBn
bG9iYWxEaXYuaWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJk
aXYxLXBhcmVudCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQi
Cis9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PQor
UEFTUyBBbGwgPGRpdj4gb2JqZWN0cyBpbiBhIERPTSB0cmVlIGFyZSBzdWNjZXNzZnVsbHkgZGVz
dHJ1Y3RlZC4KKz09PSBJbml0aWFsIHN0YXRlID09PQorUEFTUyBnbG9iYWxEaXYuaWQgaXMgImRp
djIiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYyLXBhcmVudCIKK1BBU1Mg
Z2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjItY2hpbGQiCitQQVNTIGdsb2JhbERpdi5p
ZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFyZW50
IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1MgZ2xv
YmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2
MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxkIgor
PT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCA9PT0KK1BBU1MgZ2xvYmFsRGl2LmlkIGlzICJk
aXYyIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAiZGl2Mi1wYXJlbnQiCitQQVNT
IGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYyLWNoaWxkIgorUEFTUyBnbG9iYWxEaXYu
aWQgaXMgImRpdjEiCitQQVNTIGdsb2JhbERpdi5wYXJlbnROb2RlLmlkIGlzICJkaXYxLXBhcmVu
dCIKK1BBU1MgZ2xvYmFsRGl2LmZpcnN0Q2hpbGQuaWQgaXMgImRpdjEtY2hpbGQiCitQQVNTIGds
b2JhbERpdi5pZCBpcyAiZGl2MCIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRp
djAtcGFyZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MC1jaGlsZCIK
Kz09PSBBZnRlciBjbGVhcmluZyBpbm5lckhUTUwgYW5kIGRpdlggPT09CitQQVNTIGdsb2JhbERp
di5pZCBpcyAiZGl2MSIKK1BBU1MgZ2xvYmFsRGl2LnBhcmVudE5vZGUuaWQgaXMgImRpdjEtcGFy
ZW50IgorUEFTUyBnbG9iYWxEaXYuZmlyc3RDaGlsZC5pZCBpcyAiZGl2MS1jaGlsZCIKK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxk
IgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCBhbmQgZGl2WSA9PT0KK1BBU1Mg
Z2xvYmFsRGl2LmlkIGlzICJkaXYwIgorUEFTUyBnbG9iYWxEaXYucGFyZW50Tm9kZS5pZCBpcyAi
ZGl2MC1wYXJlbnQiCitQQVNTIGdsb2JhbERpdi5maXJzdENoaWxkLmlkIGlzICJkaXYwLWNoaWxk
IgorPT09IEFmdGVyIGNsZWFyaW5nIGlubmVySFRNTCwgZGl2WCwgZGl2WSBhbmQgZGl2WiA9PT0K
K1BBU1MgQWxsIDxkaXY+IG9iamVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRl
c3RydWN0ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUtbGlmZXRpbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nYy1kb20tdHJlZS1saWZldGlt
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2MtZG9tLXRyZWUt
bGlmZXRpbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5OCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgdGVzdENh
c2VzID0gW1siZGl2MCIsICJkaXYxIiwgImRpdjIiXSwKKyAgICAgICAgICAgICAgICAgWyJkaXYw
IiwgImRpdjIiLCAiZGl2MSJdLAorICAgICAgICAgICAgICAgICBbImRpdjEiLCAiZGl2MCIsICJk
aXYyIl0sCisgICAgICAgICAgICAgICAgIFsiZGl2MSIsICJkaXYyIiwgImRpdjAiXSwKKyAgICAg
ICAgICAgICAgICAgWyJkaXYyIiwgImRpdjAiLCAiZGl2MSJdLAorICAgICAgICAgICAgICAgICBb
ImRpdjIiLCAiZGl2MSIsICJkaXYwIl1dOworCit2YXIgcm9vdERpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290RGl2KTsKK3Zh
ciB0ZXN0SHRtbCA9ICI8ZGl2IGlkPSdkaXYwLXBhcmVudCc+PGRpdiBpZD0nZGl2MCc+PGRpdiBp
ZD0nZGl2MC1jaGlsZCc+PC9kaXY+PC9kaXY+PGRpdiBpZD0nZGl2MS1wYXJlbnQnPjxkaXYgaWQ9
J2RpdjEnPjxkaXYgaWQ9J2RpdjEtY2hpbGQnPjwvZGl2PjwvZGl2PjxkaXYgaWQ9J2RpdjItcGFy
ZW50Jz48ZGl2IGlkPSdkaXYyJz48ZGl2IGlkPSdkaXYyLWNoaWxkJz48L2Rpdj48L2Rpdj48L2Rp
dj48L2Rpdj48L2Rpdj4iOworCit0ZXN0Q2FzZXMuZm9yRWFjaChmdW5jdGlvbiAodGVzdCkgewor
ICAgIHZhciBkaXZYLCBkaXZZLCBkaXZaOworICAgIGRlYnVnKCI9PT0gSW5pdGlhbCBzdGF0ZSA9
PT0iKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9IHRlc3RIdG1sOworICAgIGRpdlggPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzBdKTsKKyAgICBkaXZZID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGVzdFsxXSk7CisgICAgZGl2WiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRl
c3RbMl0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAg
ICBjaGVja1BhcmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJl
bnRBbmRDaGlsZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBj
bGVhcmluZyBpbm5lckhUTUwgPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRt
bDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2
WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOwor
ICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZYLCB0ZXN0WzBdKTsKKyAgICBjaGVja1Bh
cmVudEFuZENoaWxkQWxpdmUoZGl2WSwgdGVzdFsxXSk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGls
ZEFsaXZlKGRpdlosIHRlc3RbMl0pOworCisgICAgZGVidWcoIj09PSBBZnRlciBjbGVhcmluZyBp
bm5lckhUTUwgYW5kIGRpdlggPT09Iik7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSB0ZXN0SHRt
bDsKKyAgICBkaXZYID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFswXSk7CisgICAgZGl2
WSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMV0pOworICAgIGRpdlogPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0ZXN0WzJdKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOwor
ICAgIGRpdlggPSBudWxsOworICAgIGdjKCk7CisgICAgY2hlY2tQYXJlbnRBbmRDaGlsZEFsaXZl
KGRpdlksIHRlc3RbMV0pOworICAgIGNoZWNrUGFyZW50QW5kQ2hpbGRBbGl2ZShkaXZaLCB0ZXN0
WzJdKTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcgaW5uZXJIVE1MLCBkaXZYIGFu
ZCBkaXZZID09PSIpOworICAgIHJvb3REaXYuaW5uZXJIVE1MID0gdGVzdEh0bWw7CisgICAgZGl2
WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3RbMF0pOworICAgIGRpdlkgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBkaXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGVzdFsyXSk7CisgICAgcm9vdERpdi5pbm5lckhUTUwgPSAiIjsKKyAgICBkaXZYID0g
bnVsbDsKKyAgICBkaXZZID0gbnVsbDsKKyAgICBnYygpOworICAgIGNoZWNrUGFyZW50QW5kQ2hp
bGRBbGl2ZShkaXZaLCB0ZXN0WzJdKTsKKworICAgIGRlYnVnKCI9PT0gQWZ0ZXIgY2xlYXJpbmcg
aW5uZXJIVE1MLCBkaXZYLCBkaXZZIGFuZCBkaXZaID09PSIpOworICAgIHJvb3REaXYuaW5uZXJI
VE1MID0gdGVzdEh0bWw7CisgICAgZGl2WCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRlc3Rb
MF0pOworICAgIGRpdlkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0ZXN0WzFdKTsKKyAgICBk
aXZaID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGVzdFsyXSk7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgIHByZXZOb2RlcyA9IHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZM
aXZlTm9kZXMoKTsKKyAgICByb290RGl2LmlubmVySFRNTCA9ICIiOworICAgIGRpdlggPSBudWxs
OworICAgIGRpdlkgPSBudWxsOworICAgIGRpdlogPSBudWxsOworICAgIGdjKCk7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgLy8gSWYgYWxsIHRoZSBOb2RlIG9iamVjdHMg
aW4gdGVzdEh0bWwgYXJlIHN1Y2Nlc3NmdWxseSBkZXN0cnVjdGVkLAorICAgICAgICAvLyBhdCBs
ZWFzdCA5IDxkaXY+cyBvYmplY3RzIHdpbGwgYmUgcmVtb3ZlZC4KKyAgICAgICAgLy8gKEFjdHVh
bGx5LCBzaW5jZSB0ZXN0SHRtbCByZW5kZXJpbmcgcmVxdWlyZXMgbW9yZSB0aGFuIDkgTm9kZSBv
YmplY3RzLikKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMubnVtYmVyT2ZMaXZlTm9kZXMo
KSA8PSBwcmV2Tm9kZXMgLSA5KQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiQWxsIDxkaXY+IG9i
amVjdHMgaW4gYSBET00gdHJlZSBhcmUgc3VjY2Vzc2Z1bGx5IGRlc3RydWN0ZWQuIik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIjxkaXY+IG9iamVjdHMgaW4gYSBET00g
dHJlZSBhcmUgbm90IGRlc3RydWN0ZWQuIik7CisgICAgfQorfSk7CisKK2Z1bmN0aW9uIGNoZWNr
UGFyZW50QW5kQ2hpbGRBbGl2ZShkaXYsIG5hbWUpIHsKKyAgICBnbG9iYWxEaXYgPSBkaXY7Cisg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYuaWQnLCBuYW1lKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2dsb2JhbERpdi5wYXJlbnROb2RlLmlkJywgbmFtZSArICItcGFy
ZW50Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdnbG9iYWxEaXYuZmlyc3RDaGlsZC5p
ZCcsIG5hbWUgKyAiLWNoaWxkIik7CisgICAgZ2xvYmFsRGl2ID0gbnVsbDsKKyAgICBnYygpOwor
fQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>