<?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>218424</bug_id>
          
          <creation_ts>2020-11-01 10:41:14 -0800</creation_ts>
          <short_desc>Start removing functions that implicitly use composed tree</short_desc>
          <delta_ts>2020-11-03 16:42:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>218544</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703398</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 10:41:14 -0800</bug_when>
    <thetext>Start removing functions that implicitly use composed tree: documentOrder(Node, Node)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703400</commentid>
    <comment_count>1</comment_count>
      <attachid>412866</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 11:00:16 -0800</bug_when>
    <thetext>Created attachment 412866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703401</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 11:02:14 -0800</bug_when>
    <thetext>Ryosuke made the comments/suggestions that led me to create this patch:

1) Ordering based on the composed tree is likely to often *not* be what we want, so we are making that explicit now so we can carefully look over each case.

2) Testing with internals is a better approach than TestWebKitAPI for these functions, or even consider testing them indirectly rather than directly unit testing them at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703402</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 11:04:57 -0800</bug_when>
    <thetext>Next steps:

- Make this explicit for *all* functions that implicitly order based on the composed tree. There are a few more. (Will be more difficult for the &lt; and &gt; family of operators for the Position class.)

- Change the function templates to default to the normal DOM tree, removing &lt;Tree&gt; at call sites that currently specify it explicitly.

- Visit each of the call sites using &lt;ComposedTree&gt; and change them to not use it any more unless there is a good reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703403</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 11:06:49 -0800</bug_when>
    <thetext>Also:

- Expand the test added here to cover other trees, currently it tests only treeOrder&lt;ComposedTree&gt;.

- Implicitly: Convert more of the tests to internals-based tests in the LayoutTests directory as needed since we are removing the functions they test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703421</commentid>
    <comment_count>5</comment_count>
      <attachid>412870</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 13:28:33 -0800</bug_when>
    <thetext>Created attachment 412870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703426</commentid>
    <comment_count>6</comment_count>
      <attachid>412872</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 14:06:29 -0800</bug_when>
    <thetext>Created attachment 412872
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703435</commentid>
    <comment_count>7</comment_count>
      <attachid>412872</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-01 20:26:02 -0800</bug_when>
    <thetext>Comment on attachment 412872
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:6011
&gt; +    if (is_eq(ordering))
&gt; +        return &quot;equivalent&quot;_s;

Isn&apos;t this usually called &quot;equal&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703558</commentid>
    <comment_count>8</comment_count>
      <attachid>412872</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-02 09:25:11 -0800</bug_when>
    <thetext>Comment on attachment 412872
Patch

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

&gt; Source/WebCore/dom/SimpleRange.h:72
&gt; +WEBCORE_EXPORT bool containsForTesting(TreeType, const SimpleRange&amp; outerRange, const SimpleRange&amp; innerRange);
&gt; +WEBCORE_EXPORT bool containsForTesting(TreeType, const SimpleRange&amp;, const Node&amp;);

I assume this is what you were referring to in Slack the other day. 

I believe you can avoid this in cases like these, where you only ever expect a finite number of specializations, but the syntax often eludes me. Something along the lines of:

template&lt;TreeType&gt; bool contains(const SimpleRange&amp; outerRange, const SimpleRange&amp; innerRange);
WEBCORE_EXPORT template &lt;&gt; void contains&lt;Tree&gt;(const SimpleRange&amp;, const SimpleRange&amp;); 
WEBCORE_EXPORT template &lt;&gt; void contains&lt;ShadowIncludingTree&gt;(const SimpleRange&amp;, const SimpleRange&amp;); 
WEBCORE_EXPORT template &lt;&gt; void contains&lt;ComposedTree&gt;(const SimpleRange&amp;, const SimpleRange&amp;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703561</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-02 09:42:57 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #8)
&gt; Comment on attachment 412872 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412872&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/SimpleRange.h:72
&gt; &gt; +WEBCORE_EXPORT bool containsForTesting(TreeType, const SimpleRange&amp; outerRange, const SimpleRange&amp; innerRange);
&gt; &gt; +WEBCORE_EXPORT bool containsForTesting(TreeType, const SimpleRange&amp;, const Node&amp;);
&gt; 
&gt; I assume this is what you were referring to in Slack the other day. 
&gt; 
&gt; I believe you can avoid this in cases like these, where you only ever expect
&gt; a finite number of specializations, but the syntax often eludes me.
&gt; Something along the lines of:
&gt; 
&gt; template&lt;TreeType&gt; bool contains(const SimpleRange&amp; outerRange, const
&gt; SimpleRange&amp; innerRange);
&gt; WEBCORE_EXPORT template &lt;&gt; void contains&lt;Tree&gt;(const SimpleRange&amp;, const
&gt; SimpleRange&amp;); 
&gt; WEBCORE_EXPORT template &lt;&gt; void contains&lt;ShadowIncludingTree&gt;(const
&gt; SimpleRange&amp;, const SimpleRange&amp;); 
&gt; WEBCORE_EXPORT template &lt;&gt; void contains&lt;ComposedTree&gt;(const SimpleRange&amp;,
&gt; const SimpleRange&amp;);

Yes, I have tried many variations of this and so far can’t get it to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703562</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-02 09:44:49 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #7)
&gt; Comment on attachment 412872 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=412872&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/testing/Internals.cpp:6011
&gt; &gt; +    if (is_eq(ordering))
&gt; &gt; +        return &quot;equivalent&quot;_s;
&gt; 
&gt; Isn&apos;t this usually called &quot;equal&quot;?

There is a distinction between equivalent and equal in the C++ standard. However, in this case we could use either term. The term equivalent is used to express that there may be multiple values that are distinct but are equivalent. In this case that is not true, so either equivalent or equal would be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703572</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-02 10:11:56 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #8)
&gt; I believe you can avoid this in cases like these, where you only ever expect
&gt; a finite number of specializations, but the syntax often eludes me.

I think you are talking about &quot;explicit instantiation&quot;. The existing code does that inside the .cpp file to cause the appropriate version to be instantiated, so that callers outside the .cpp file have something to link to.

It’s documented pretty well here &lt;https://en.cppreference.com/w/cpp/language/function_template&gt;.

What have been unable to figure out is how to successfully combine this with WEBCORE_EXPORT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703592</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-02 10:53:46 -0800</bug_when>
    <thetext>Committed r269253: &lt;https://trac.webkit.org/changeset/269253&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703594</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-02 10:54:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/70957462&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703633</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-02 12:08:40 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; What have been unable to figure out is how to successfully combine this with
&gt; WEBCORE_EXPORT.

When I try putting WEBCORE_EXPORT only on explicit instantiation lines in the .cpp file, I get a weak external symbol failure in our &quot;Check For Weak VTables and Externals&quot; shell script.

When I try putting the WEBCORE_EXPORT explicit instantiation lines into the .h file, I get &quot;error: explicit instantiation of undefined function template&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703648</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-02 12:38:05 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; When I try putting the WEBCORE_EXPORT explicit instantiation lines into the
&gt; .h file, I get &quot;error: explicit instantiation of undefined function
&gt; template&quot;.

Oh, maybe I need to try this again and use the keyword &quot;extern&quot; before &quot;template&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412866</attachid>
            <date>2020-11-01 11:00:16 -0800</date>
            <delta_ts>2020-11-01 13:28:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218424-20201101110015.patch</filename>
            <type>text/plain</type>
            <size>28817</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTljNTM5ZTNhNWE3YjM5
NTEwYzE2ZDBmOGIzYzMxOGZiMWJiNmE2NC4uNzkxM2E0MDRmYjMxN2VmMmYzM2E2YzljZWQwZGQz
ZDNkODQzMzk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTExLTAxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdGFydCByZW1vdmluZyBmdW5j
dGlvbnMgdGhhdCBpbXBsaWNpdGx5IHVzZSBjb21wb3NlZCB0cmVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS90cmVlT3JkZXIu
aHRtbAorCisgICAgICAgIFJ5b3N1a2UgcG9pbnRlZCBvdXQgdGhhdCBtb3N0IGNsaWVudHMgc2hv
dWxkIG5vdCBiZSB1c2luZyB0aGUgY29tcG9zZWQgdHJlZSwgc28gdGhpcworICAgICAgICBpcyBh
IHN0ZXAgaW4gd29yayB0byBtYWtlIHRoZSB1c2Ugb2YgdGhlIGNvbXBvc2VkIHRyZWUgZXhwbGlj
aXQuIEFmdGVyIHRoYXQgd2UgY2FuCisgICAgICAgIG1vcmUgZWFzaWx5IGZpbmQgYW5kIGNvcnJl
Y3QgY2FsbCBzaXRlcyB3aGVyZSB1c2Ugb2YgdGhlIGNvbXBvc2VkIHRyZWUgaXMgaW5jb3JyZWN0
LgorCisgICAgICAgIExpa2VseSB0aGF0IG1vc3Qgb3IgYWxsIGNhc2VzIG9mIHRyZWVPcmRlcjxD
b21wb3NlZFRyZWU+IGNhbiBiZSBjaGFuZ2VkIHRvIGp1c3QKKyAgICAgICAgdHJlZU9yZGVyIGFu
ZCBjb250YWluczxDb21wb3NlZFRyZWU+IHRvIGp1c3QgY29udGFpbnM7IHdpbGwgZG8gdGhvc2Ug
aW4gZm9sbG93LXVwcy4KKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBhaW50UmFuZ2UpOiBTaW1wbGlmaWVkIGNvZGUgdG8g
dXNlIGJvdW5kYXJ5IHBvaW50cywgYW5kIGNoYW5nZWQgdG8gdXNlCisgICAgICAgIHRyZWVPcmRl
cjxDb21wb3NlZFRyZWU+LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6cGFyZW50PFNoYWRvd0luY2x1ZGluZ1RyZWU+KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjp0cmVlT3JkZXJGb3JUZXN0aW5nKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpkb2N1
bWVudE9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBVcGRhdGVkIGZvciB0
aGUgYWJvdmUuCisKKyAgICAgICAgKiBkb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycyBjb25zdCk6IFVzZSB0cmVlT3Jk
ZXI8Q29tcG9zZWRUcmVlPi4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5jcHA6IFJlbW92
ZWQgYSBjb3VwbGUgY29udGFpbnMgZnVuY3Rpb25zIHRoYXQgaW1wbGljaXRseSB1c2UKKyAgICAg
ICAgY29tcG9zZWQgdHJlZS4KKyAgICAgICAgKiBkb20vU2ltcGxlUmFuZ2UuaDogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlLiBTaG91bGQgYWxzbyBtYWtlIGNvbnRhaW5zPFRyZWU+IHRoZQorICAgICAg
ICBkZWZhdWx0IGFuZCByZW1vdmUgdGhlIDxUcmVlPiBhdCBhbGwgY2FsbCBzaXRlcywgYnV0IGl0
J3Mgc2FmZXIgdG8gZG8gdGhhdCBpbiBhCisgICAgICAgIHNlcGFyYXRlIHBhdGNoIGFmdGVyIHRo
aXMgaXMgbGFuZGVkIGFuZCBidWlsZHMgb24gYWxsIHBsYXRmb3Jtcy4KKworICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc05vZGVWaXNpYmx5Q29udGFp
bmVkV2l0aGluKTogVXNlIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4gZXhwbGljaXRseS4KKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9F
dmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRj
aE1vdXNlRXZlbnQpOiBEaXR0by4gTm90ZSB0aGF0IHRoaXMgaGFzIGEgY2FsbCB0bworICAgICAg
ICBpc0Rlc2NlbmRhbnRPZiByaWdodCBuZXh0IHRvIGl0LCB3aGljaCBkb2VzIG5vdCB1c2UgdGhl
IGNvbXBvc2VkIHRyZWUuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6ZmluZFRleHRNYXRjaGVzKTogVXNlIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+
LgorICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZVJhbmdlcyk6IERpdHRvLgorCisgICAgICAgICog
cGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmZpbmRUZWxlcGhvbmVOdW1iZXJIaWdobGlnaHRD
b250YWluaW5nU2VsZWN0aW9uSGlnaGxpZ2h0KToKKyAgICAgICAgVXNlIGNvbnRhaW5zPENvbXBv
c2VkVHJlZT4uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzdHJpbmcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dHJl
ZU9yZGVyKTogQWRkZWQuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDogQWRkZWQgdHJl
ZU9yZGVyLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDogRGl0dG8uIFRoaXMgaXMg
YWRkZWQgc28gd2UgY2FuIHRlc3QgdGhlIHRyZWVPcmRlcgorICAgICAgICBmdW5jdGlvbi4gVGhl
IGRvY3VtZW50T3JkZXIgZnVuY3Rpb24gd2FzIHRlc3RlZCBpbiBhIFRlc3RXZWJLaXRBUEkgdGVz
dCwgYnV0CisgICAgICAgIHdlIHBsYW4gdG8gbW92ZSB0aG9zZSB0ZXN0cyB0byBpbnRlcm5hbHMt
YmFzZWQgdGVzdHMgaW5zdGVhZC4KKwogMjAyMC0xMS0wMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxl
aXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBQcm92aWRlIGJ1aWxkIHdvcmthcm91bmQg
d2hpbGUgaXNTeXN0ZW1Wb2ljZSBpcyBub3QgaW4gYWxsIFNES3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHQuY3BwCmluZGV4IDU2NWI3YTA0NjkxMGIyM2Nm
ZDE2NTcxOTY0ZTliMzNjNTcyMGE4NzguLmE1ZTQyZTY4NDc3YzllNDc5OWZlNGMxMTAzMDIyMTY2
MDczNjZiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hp
Z2hsaWdodC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxp
Z2h0LmNwcApAQCAtNTUsMjYgKzU1LDE1IEBAIHZvaWQgSGlnaGxpZ2h0Ojppbml0aWFsaXplU2V0
TGlrZShET01TZXRBZGFwdGVyJiBzZXQpCiAgICAgICAgIHNldC5hZGQ8SURMSW50ZXJmYWNlPFN0
YXRpY1JhbmdlPj4ocmFuZ2VEYXRhLT5yYW5nZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcGFpbnRS
YW5nZShjb25zdCBTdGF0aWNSYW5nZSYgcmFuZ2UpCitzdGF0aWMgdm9pZCByZXBhaW50UmFuZ2Uo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIGF1dG8gc3RhcnROb2RlID0gbWFrZVJl
ZlB0cigmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSk7Ci0gICAgYXV0byBlbmROb2RlID0gbWFrZVJl
ZlB0cigmcmFuZ2UuZW5kQ29udGFpbmVyKCkpOwotICAgIGF1dG8gb3JkZXJpbmcgPSBkb2N1bWVu
dE9yZGVyKCpzdGFydE5vZGUuZ2V0KCksICplbmROb2RlLmdldCgpKTsKLSAgICBpZiAoaXNfZXEo
b3JkZXJpbmcpKSB7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gc3RhcnROb2RlLT5yZW5k
ZXJlcigpKQorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHByZWNpc2VseSB3aHkgd2UgbmVlZCB0byBo
YW5kbGUgb3V0IG9mIG9yZGVyIGNhc2VzIGhlcmUsIGJ1dCBub3QgdW5vcmRlcmVkIGNhc2VzLgor
ICAgIGF1dG8gc29ydGVkUmFuZ2UgPSByYW5nZTsKKyAgICBpZiAoaXNfZ3QodHJlZU9yZGVyPENv
bXBvc2VkVHJlZT4ocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCkpKQorICAgICAgICBzdGQ6OnN3YXAo
c29ydGVkUmFuZ2Uuc3RhcnQsIHNvcnRlZFJhbmdlLmVuZCk7CisgICAgZm9yIChhdXRvJiBub2Rl
IDogaW50ZXJzZWN0aW5nTm9kZXMoc29ydGVkUmFuZ2UpKSB7CisgICAgICAgIGlmIChhdXRvIHJl
bmRlcmVyID0gbm9kZS5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFpbnQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXNfZ3Qob3JkZXJpbmcpKSB7Ci0g
ICAgICAgIHN0YXJ0Tm9kZSA9ICZyYW5nZS5lbmRDb250YWluZXIoKTsKLSAgICAgICAgZW5kTm9k
ZSA9ICZyYW5nZS5zdGFydENvbnRhaW5lcigpOwotICAgIH0KLSAgICBhdXRvIHNpbXBsZVJhbmdl
ID0gbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZSgqc3RhcnROb2Rl
LmdldCgpKSwgbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoKmVuZE5vZGUuZ2V0KCkpKTsKLSAg
ICBpZiAoc2ltcGxlUmFuZ2UpIHsKLSAgICAgICAgZm9yIChhdXRvJiBub2RlIDogaW50ZXJzZWN0
aW5nTm9kZXMoc2ltcGxlUmFuZ2UudmFsdWUoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJl
bmRlcmVyID0gbm9kZS5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5yZXBh
aW50KCk7Ci0gICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTkwLDcgKzc5LDYgQEAgdm9pZCBIaWdo
bGlnaHQ6OmNsZWFyRnJvbVNldExpa2UoKQogewogICAgIGZvciAoYXV0byYgZGF0YSA6IG1fcmFu
Z2VzRGF0YSkKICAgICAgICAgcmVwYWludFJhbmdlKGRhdGEtPnJhbmdlKTsKLQogICAgIG1fcmFu
Z2VzRGF0YS5jbGVhcigpOwogfQogCkBAIC0xMDAsNyArODgsNiBAQCBib29sIEhpZ2hsaWdodDo6
YWRkVG9TZXRMaWtlKFN0YXRpY1JhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJlcGFpbnRSYW5nZShyYW5nZSk7CiAgICAgbV9yYW5nZXNEYXRhLmFwcGVuZChIaWdobGln
aHRSYW5nZURhdGE6OmNyZWF0ZShyYW5nZSkpOwotICAgIAogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKaW5kZXggMzViOTliMzAzNTE4M2E0Y2E3NTA2Y2VjY2M2OTk3ZmM1Mjg4
NDc5YS4uOTY5Y2I3MmNlYjZhZjAwMjgzMDEyZDA3YWVmOGI4NWE5MGYyNTUxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcApAQCAtMjYyNyw2ICsyNjI3LDExIEBAIHRlbXBsYXRlPD4gQ29udGFpbmVyTm9kZSog
cGFyZW50PFRyZWU+KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUucGFyZW50Tm9k
ZSgpOwogfQogCit0ZW1wbGF0ZTw+IENvbnRhaW5lck5vZGUqIHBhcmVudDxTaGFkb3dJbmNsdWRp
bmdUcmVlPihjb25zdCBOb2RlJiBub2RlKQoreworICAgIHJldHVybiBub2RlLnBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKTsKK30KKwogdGVtcGxhdGU8PiBDb250YWluZXJOb2RlKiBwYXJlbnQ8Q29t
cG9zZWRUcmVlPihjb25zdCBOb2RlJiBub2RlKQogewogICAgIHJldHVybiBub2RlLnBhcmVudElu
Q29tcG9zZWRUcmVlKCk7CkBAIC0yNzIyLDkgKzI3MjcsMTcgQEAgdGVtcGxhdGU8VHJlZVR5cGUg
dHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgTm9kZSYgYSwgY29uc3Qg
Tm9kZSYKIHRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8VHJlZT4oY29uc3QgTm9k
ZSYsIGNvbnN0IE5vZGUmKTsKIHRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8Q29t
cG9zZWRUcmVlPihjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOwogCi1QYXJ0aWFsT3JkZXJpbmcg
ZG9jdW1lbnRPcmRlcihjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQorUGFydGlhbE9yZGVy
aW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgTm9kZSYgYSwgY29u
c3QgTm9kZSYgYikKIHsKLSAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oYSwgYik7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUcmVlOgorICAgICAgICByZXR1cm4gdHJl
ZU9yZGVyPFRyZWU+KGEsIGIpOworICAgIGNhc2UgU2hhZG93SW5jbHVkaW5nVHJlZToKKyAgICAg
ICAgcmV0dXJuIHRyZWVPcmRlcjxTaGFkb3dJbmNsdWRpbmdUcmVlPihhLCBiKTsKKyAgICBjYXNl
IENvbXBvc2VkVHJlZToKKyAgICAgICAgcmV0dXJuIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGEs
IGIpOworICAgIH0KKyAgICByZXR1cm4gUGFydGlhbE9yZGVyaW5nOjp1bm9yZGVyZWQ7CiB9CiAK
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IE5vZGUmIG5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaAppbmRleCBlZDQ0YjVlMWE4ZDcwMDQwYWMxYmE3ZGYxYTYxZGQ5YWZiZjM4ZDQ1
Li4yMDFhZDQ3OGMxMzdjMTgwMWMwYzRhZTI5ZDlhYmZhNjYwYWJkZWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
QEAgLTc1OSw4ICs3NTksNyBAQCBlbnVtIFRyZWVUeXBlIHsgVHJlZSwgU2hhZG93SW5jbHVkaW5n
VHJlZSwgQ29tcG9zZWRUcmVlIH07CiB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IENvbnRhaW5l
ck5vZGUqIHBhcmVudChjb25zdCBOb2RlJik7CiB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IFBh
cnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKIAotLy8g
RklYTUU6IERwcmVjYXRlZCBiZWNhdXNlIHRoaXMgc2lsZW50bHkgZGVmYXVsdHMgdG8gQ29tcG9z
ZWRUcmVlLiBVc2UgdHJlZU9yZGVyIGluc3RlYWQuCi1XRUJDT1JFX0VYUE9SVCBQYXJ0aWFsT3Jk
ZXJpbmcgZG9jdW1lbnRPcmRlcihjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOworV0VCQ09SRV9F
WFBPUlQgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0
IE5vZGUmLCBjb25zdCBOb2RlJik7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNwcAppbmRleCBlNDJjNTk1NzI4ZDU0ZjE5NTc3OGVj
Y2ZkYzU5OTU3Y2Q2Mzk1NTRjLi43YTYwMDI0NWFjODljN2I3YzNhNjIyZDdhNDY2NWZjYjU2N2U2
ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAKQEAgLTYzLDcg
KzYzLDcgQEAgVmVjdG9yPFJlZjxIVE1MSW5wdXRFbGVtZW50Pj4gUmFkaW9CdXR0b25Hcm91cDo6
bWVtYmVycygpIGNvbnN0CiAgICAgZm9yIChhdXRvJiBtZW1iZXIgOiBtX21lbWJlcnMpCiAgICAg
ICAgIHNvcnRlZE1lbWJlcnMuYXBwZW5kKG1lbWJlcik7CiAgICAgc3RkOjpzb3J0KHNvcnRlZE1l
bWJlcnMuYmVnaW4oKSwgc29ydGVkTWVtYmVycy5lbmQoKSwgW10oYXV0byYgYSwgYXV0byYgYikg
ewotICAgICAgICByZXR1cm4gaXNfbHQoZG9jdW1lbnRPcmRlcihhLCBiKSk7CisgICAgICAgIHJl
dHVybiBpc19sdCh0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihhLCBiKSk7CiAgICAgfSk7CiAgICAg
cmV0dXJuIHNvcnRlZE1lbWJlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRl
eCA0MzZjYWYzZWNiODQ1YjFkNjhkNzJhOTczNjEyZGE2YWY5ZWY2NTUyLi5mYjRhNmJmOGNjYTY5
OTk4ZjU0MWNiODcwYTkzNWQ5MTgyODMxYThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5j
cHAKQEAgLTI2MywxMSArMjYzLDcgQEAgdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wg
Y29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIG91dGVyUmFuZ2UsIGNvbnN0IFMKIH0KIAogdGVt
cGxhdGUgYm9vbCBjb250YWluczxUcmVlPihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBs
ZVJhbmdlJik7Ci0KLWJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIG91dGVyUmFuZ2Us
IGNvbnN0IFNpbXBsZVJhbmdlJiBpbm5lclJhbmdlKQotewotICAgIHJldHVybiBjb250YWluczxD
b21wb3NlZFRyZWU+KG91dGVyUmFuZ2UsIGlubmVyUmFuZ2UpOwotfQordGVtcGxhdGUgYm9vbCBj
b250YWluczxDb21wb3NlZFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFu
Z2UmKTsKIAogdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wgaW50ZXJzZWN0cyhjb25z
dCBTaW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCiB7CkBAIC0zMDgsMTEgKzMw
NCw3IEBAIHRlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNp
bXBsZVJhbmdlJiByYW5nZSwgY29uc3QgTm9kZSYKIH0KIAogdGVtcGxhdGUgYm9vbCBjb250YWlu
czxUcmVlPihjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKLQotYm9vbCBjb250YWlu
cyhjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGNvbnN0IE5vZGUmIG5vZGUpCi17Ci0gICAgcmV0
dXJuIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4ocmFuZ2UsIG5vZGUpOwotfQordGVtcGxhdGUgYm9v
bCBjb250YWluczxDb21wb3NlZFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYp
OwogCiB0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBOb2Rl
JiBvdXRlciwgY29uc3QgTm9kZSYgaW5uZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmlu
ZGV4IDAxYjIzMGU2Mjc4MTQ5Y2M4ZmFiZTIyZGY0NDQzOTZmOGQwMjg0NzYuLmU3ZGViOTgwMDEy
ZTBmNTE2NmMzMTBjOGM1MzIwMjBmNzg3MjhlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5o
CkBAIC04NCwxNCArODQsMTIgQEAgT2Zmc2V0UmFuZ2UgY2hhcmFjdGVyRGF0YU9mZnNldFJhbmdl
KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwogLy8gRklYTUU6IFN0YXJ0IG9mIGZ1
bmN0aW9ucyB0aGF0IGFyZSBkZXByZWNhdGVkIHNpbmNlIHRoZXkgc2lsZW50bHkgZGVmYXVsdCB0
byBDb21wb3NlZFRyZWUuCiAKIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOb2RlPiBjb21tb25JbmNs
dXNpdmVBbmNlc3Rvcihjb25zdCBTaW1wbGVSYW5nZSYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBj
b250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29uc3QgU2ltcGxlUmFuZ2Um
IGlubmVyUmFuZ2UpOwogdGVtcGxhdGU8dHlwZW5hbWUgVHJlZVR5cGU+IGJvb2wgaW50ZXJzZWN0
cyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CiBXRUJDT1JFX0VYUE9S
VCBib29sIGludGVyc2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYp
OwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29u
c3QgTm9kZSYpOwogV0VCQ09SRV9FWFBPUlQgU2ltcGxlUmFuZ2UgdW5pb25SYW5nZShjb25zdCBT
aW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CiBXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxTaW1wbGVSYW5nZT4gaW50ZXJzZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYs
IGNvbnN0IE9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOwogCi1XRUJDT1JFX0VYUE9SVCBib29sIGNv
bnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwogdGVtcGxhdGU8dHlwZW5h
bWUgVHJlZVR5cGU+IGJvb2wgaW50ZXJzZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5v
ZGUmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW50ZXJzZWN0cyhjb25zdCBTaW1wbGVSYW5nZSYs
IGNvbnN0IE5vZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggNmEzMTdi
MmM3Y2U4YmY0ZGZiNzUwZDllNmY4MmVjYmJiMjBiODE2Ny4uZjk3YjlmMTdiN2I2YjMzMTkwM2Y3
YjQ0OTg0MWJmZjNlZDE0OTAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0x
MTI0LDcgKzExMjQsNyBAQCBzdGF0aWMgYm9vbCBpc1Zpc2libHlBZGphY2VudChjb25zdCBQb3Np
dGlvbiYgZmlyc3QsIGNvbnN0IFBvc2l0aW9uJiBzZWNvbmQpCiAvLyBDYWxsIHRoaXMgZnVuY3Rp
b24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBub2RlIGlzIHZpc2libHkgZml0IGluc2lkZSBzZWxl
Y3RlZFJhbmdlCiBib29sIGlzTm9kZVZpc2libHlDb250YWluZWRXaXRoaW4oTm9kZSYgbm9kZSwg
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIGlmIChjb250YWlucyhyYW5nZSwgbm9k
ZSkpCisgICAgaWYgKGNvbnRhaW5zPENvbXBvc2VkVHJlZT4ocmFuZ2UsIG5vZGUpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIGF1dG8gc3RhcnRQb3NpdGlvbiA9IG1ha2VEZXByZWNhdGVk
TGVnYWN5UG9zaXRpb24ocmFuZ2Uuc3RhcnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAppbmRleCA2OWJmY2Q5ZGU5ZDQwNmY0NzM1ODQwMWUyMzk5ZmU2ODM1ZDRiNzkzLi5j
ZGI3ZjM2NmEyN2FkY2Y4MTRmYTg5MWE2MTljNzJhNDI0MWE4OGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzgxLDcgKzc4MSw3IEBAIEVsZW1lbnQqIERyYWdD
b250cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxl
bWVudCogc3RhCiAgICAgICAgIGF1dG8mIHNlbGVjdGlvbiA9IHNvdXJjZUZyYW1lLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKICAgICAgICAgYm9vbCBpc1NpbmdsZUF0dGFjaG1lbnRTZWxlY3Rp
b24gPSBzZWxlY3Rpb24uc3RhcnQoKSA9PSBQb3NpdGlvbihhdHRhY2htZW50LmdldCgpLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvcikgJiYgc2VsZWN0aW9uLmVuZCgpID09IFBvc2l0
aW9uKGF0dGFjaG1lbnQuZ2V0KCksIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpOwog
ICAgICAgICBhdXRvIHNlbGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24uZmlyc3RSYW5nZSgpOwotICAg
ICAgICBpZiAoaXNTaW5nbGVBdHRhY2htZW50U2VsZWN0aW9uIHx8ICFzZWxlY3RlZFJhbmdlIHx8
ICFjb250YWlucygqc2VsZWN0ZWRSYW5nZSwgKmF0dGFjaG1lbnQpKSB7CisgICAgICAgIGlmIChp
c1NpbmdsZUF0dGFjaG1lbnRTZWxlY3Rpb24gfHwgIXNlbGVjdGVkUmFuZ2UgfHwgIWNvbnRhaW5z
PENvbXBvc2VkVHJlZT4oKnNlbGVjdGVkUmFuZ2UsICphdHRhY2htZW50KSkgewogICAgICAgICAg
ICAgc3RhdGUudHlwZSA9IERyYWdTb3VyY2VBY3Rpb246OkF0dGFjaG1lbnQ7CiAgICAgICAgICAg
ICByZXR1cm4gYXR0YWNobWVudC5nZXQoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IDI5YTdkZjYyNjgzOTBhN2QzODZjNmI2M2M4N2I4ZGJiOGFjZDE0
NWMuLmRkMzQ2N2NiODljMTkwYWM2ZDYwYzZmMzJkYmUwNTg5NWIxYzYzNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTI3MzgsNyArMjczOCw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBO
b2RlKiB0YXJnZXROCiAgICAgLy8gd2lsbCBzZXQgYSBzZWxlY3Rpb24gaW5zaWRlIGl0LCB3aGlj
aCB3aWxsIGFsc28gc2V0IHRoZSBmb2N1c2VkIGVsZW1lbnQuCiAgICAgaWYgKGVsZW1lbnQgJiYg
bV9mcmFtZS5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsKICAgICAgICAgaWYgKGF1dG8gcmFuZ2Ug
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsK
LSAgICAgICAgICAgIGlmIChjb250YWlucygqcmFuZ2UsICplbGVtZW50KSAmJiBlbGVtZW50LT5p
c0Rlc2NlbmRhbnRPZihtX2ZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkpKQorICAg
ICAgICAgICAgaWYgKGNvbnRhaW5zPENvbXBvc2VkVHJlZT4oKnJhbmdlLCAqZWxlbWVudCkgJiYg
ZWxlbWVudC0+aXNEZXNjZW5kYW50T2YobV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVu
dCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IGNmY2I0OGViZjQzNjY4MTMyOWJlYTBiM2VhNDU0ODFlNTkxYmYz
MTYuLjBmNmFhNjdlMDRlZDQzZTE2MzFhYTc1MjllNjU0ZmUxMjJjYjM2YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtNzM2LDcgKzczNiw3IEBAIGF1dG8gUGFnZTo6ZmluZFRleHRNYXRjaGVzKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsCiAgICAg
ICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEJhY2t3YXJkcykpIHsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSByZXN1bHQucmFuZ2VzLnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBTZWVtcyBsaWtlIHRoaXMgc2hvdWxkIGJlIGlzX2d0ZXEgdG8gY29y
cmVjdGx5IGhhbmRsZSB0aGUgc2FtZSBzdHJpbmcgZm91bmQgdHdpY2UgaW4gYSByb3cuCi0gICAg
ICAgICAgICAgICAgaWYgKGlzX2d0KGRvY3VtZW50T3JkZXIoc2VsZWN0ZWRSYW5nZS5zdGFydCwg
cmVzdWx0LnJhbmdlc1tpIC0gMV0uZW5kKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNfZ3Qo
dHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oc2VsZWN0ZWRSYW5nZS5zdGFydCwgcmVzdWx0LnJhbmdl
c1tpIC0gMV0uZW5kKSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmluZGV4Rm9yU2Vs
ZWN0aW9uID0gaSAtIDE7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTc0NCw3ICs3NDQsNyBAQCBhdXRvIFBhZ2U6OmZpbmRUZXh0TWF0Y2hlcyhjb25z
dCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbAogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSByZXN1bHQu
cmFuZ2VzLnNpemUoKTsgaSA8IHNpemU7ICsraSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBTZWVtcyBsaWtlIHRoaXMgc2hvdWxkIGJlIGlzX2x0ZXEgdG8gY29ycmVjdGx5IGhhbmRsZSB0
aGUgc2FtZSBzdHJpbmcgZm91bmQgdHdpY2UgaW4gYSByb3cuCi0gICAgICAgICAgICAgICAgaWYg
KGlzX2x0KGRvY3VtZW50T3JkZXIoc2VsZWN0ZWRSYW5nZS5lbmQsIHJlc3VsdC5yYW5nZXNbaV0u
c3RhcnQpKSkgeworICAgICAgICAgICAgICAgIGlmIChpc19sdCh0cmVlT3JkZXI8Q29tcG9zZWRU
cmVlPihzZWxlY3RlZFJhbmdlLmVuZCwgcmVzdWx0LnJhbmdlc1tpXS5zdGFydCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5pbmRleEZvclNlbGVjdGlvbiA9IGk7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTg2MSw4ICs4NjEsOCBAQCBz
dGF0aWMgdm9pZCByZXBsYWNlUmFuZ2VzKFBhZ2UmIHBhZ2UsIGNvbnN0IFZlY3RvcjxGaW5kUmVw
bGFjZW1lbnRSYW5nZT4mIHJhbmdlcwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIGlmIChmaXJzdEZyYW1lID09IHNlY29uZEZyYW1lKSB7Ci0gICAgICAgICAgICAvLyBVc2Ug
ZG9jdW1lbnRPcmRlciBpbnN0ZWFkIG9mIE5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIGJl
Y2F1c2Ugc29tZSBlZGl0aW5nIHJvb3RzIGFyZSBpbnNpZGUgc2hhZG93IHJvb3RzLgotICAgICAg
ICAgICAgcmV0dXJuIGlzX2d0KGRvY3VtZW50T3JkZXIoKmZpcnN0Tm9kZSwgKnNlY29uZE5vZGUp
KTsKKyAgICAgICAgICAgIC8vIE11c3Qgbm90IHVzZSBOb2RlOjpjb21wYXJlRG9jdW1lbnRQb3Np
dGlvbiBoZXJlIGJlY2F1c2Ugc29tZSBlZGl0aW5nIHJvb3RzIGFyZSBpbnNpZGUgc2hhZG93IHJv
b3RzLgorICAgICAgICAgICAgcmV0dXJuIGlzX2d0KHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KCpm
aXJzdE5vZGUsICpzZWNvbmROb2RlKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZnJh
bWVUb1RyYXZlcnNhbEluZGV4TWFwLmdldChmaXJzdEZyYW1lKSA+IGZyYW1lVG9UcmF2ZXJzYWxJ
bmRleE1hcC5nZXQoc2Vjb25kRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggMzgyYTc4MjFkOTk0MjQxNDFl
ZDUyOTJjZDIzNWM4Njk1ZGY2YWRhZC4uNzRkOTE4ZWIzZjliNjZkMDc1YjAzM2Q0ZTMxODU4MGU0
ZjNhODYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tCkBAIC02MzAsNyArNjMwLDcgQEAgU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6SGlnaGxpZ2h0KiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpmaW5kVGVsZXBo
b25lTnUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBmb3IgKGF1dG8mIGhpZ2hsaWdo
dCA6IG1fcG90ZW50aWFsSGlnaGxpZ2h0cykgewotICAgICAgICBpZiAoaGlnaGxpZ2h0LT50eXBl
KCkgPT0gSGlnaGxpZ2h0OjpUZWxlcGhvbmVOdW1iZXJUeXBlICYmIGNvbnRhaW5zKGhpZ2hsaWdo
dC0+cmFuZ2UoKSwgKnNlbGVjdGlvblJhbmdlKSkKKyAgICAgICAgaWYgKGhpZ2hsaWdodC0+dHlw
ZSgpID09IEhpZ2hsaWdodDo6VGVsZXBob25lTnVtYmVyVHlwZSAmJiBjb250YWluczxDb21wb3Nl
ZFRyZWU+KGhpZ2hsaWdodC0+cmFuZ2UoKSwgKnNlbGVjdGlvblJhbmdlKSkKICAgICAgICAgICAg
IHJldHVybiBoaWdobGlnaHQuZ2V0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggMzk4YzM3MGNjYWFhODNlMDlhNzgzY2MyYWE0ZTA3M2Q1NjY4Yzg3Ny4u
NDE3MmEwZDY4YzljYjI0M2VmYThhMDdkNDllZWY2ZGFkZTQzNzJjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjAwMSw1ICs2MDAxLDI4IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEludGVybmFsczo6c2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0CiB9CiAjZW5kaWYKIAorY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFy
dGlhbE9yZGVyaW5nIG9yZGVyaW5nKQoreworICAgIGlmIChpc19sdChvcmRlcmluZykpCisgICAg
ICAgIHJldHVybiAibGVzcyJfczsKKyAgICBpZiAoaXNfZ3Qob3JkZXJpbmcpKQorICAgICAgICBy
ZXR1cm4gImdyZWF0ZXIiX3M7CisgICAgaWYgKGlzX2VxKG9yZGVyaW5nKSkKKyAgICAgICAgcmV0
dXJuICJlcXVpdmFsZW50Il9zOworICAgIHJldHVybiAidW5vcmRlcmVkIl9zOworfQorCitTdHJp
bmcgSW50ZXJuYWxzOjp0cmVlT3JkZXIoTm9kZSYgYSwgTm9kZSYgYiwgVHJlZVR5cGUgdHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFRyZWU6CisgICAgICAgIHJldHVybiBz
dHJpbmcodHJlZU9yZGVyRm9yVGVzdGluZyhXZWJDb3JlOjpUcmVlLCBhLCBiKSk7CisgICAgY2Fz
ZSBTaGFkb3dJbmNsdWRpbmdUcmVlOgorICAgICAgICByZXR1cm4gc3RyaW5nKHRyZWVPcmRlckZv
clRlc3RpbmcoV2ViQ29yZTo6U2hhZG93SW5jbHVkaW5nVHJlZSwgYSwgYikpOworICAgIGNhc2Ug
Q29tcG9zZWRUcmVlOgorICAgICAgICByZXR1cm4gc3RyaW5nKHRyZWVPcmRlckZvclRlc3Rpbmco
V2ViQ29yZTo6Q29tcG9zZWRUcmVlLCBhLCBiKSk7CisgICAgfQorICAgIHJldHVybiAiYmFkIHR5
cGUiX3M7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IGFlMzg5MjJkYjc2M2M0ODE0YTlhZWYzOTFlODU3NmIxMjU3MTg1OTIuLjg0
ODEwNWVkNzJiNGQ5NDJlNzNjOGU0MDMxMWY2ZTQ2NjhmYjQyN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaApAQCAtMTA2Myw2ICsxMDYzLDkgQEAgcHVibGljOgogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNlbmRNZWRpYVNlc3Npb25BY3Rpb24oTWVkaWFTZXNzaW9uJiwgY29uc3QgTWVk
aWFTZXNzaW9uQWN0aW9uRGV0YWlscyYpOwogI2VuZGlmCiAKKyAgICBlbnVtIFRyZWVUeXBlIDog
dWludDhfdCB7IFRyZWUsIFNoYWRvd0luY2x1ZGluZ1RyZWUsIENvbXBvc2VkVHJlZSB9OworICAg
IFN0cmluZyB0cmVlT3JkZXIoTm9kZSYsIE5vZGUmLCBUcmVlVHlwZSk7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHRE
b2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGI4
YjU3NGQ2OTE5NjNkN2NiOTg2Nzg0NGYyMjJhYjEwZDU1Y2I1NDQuLjc2OGZiMzM5MjcxNDg1YjI1
N2Y1MTk5OGVhOTAxOTIxZTA5YWQyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwKQEAgLTkzLDYgKzkzLDEyIEBAIGVudW0gQ29udGVudFNpemVDYXRlZ29yeSB7CiAgICAgIlhY
WEwiCiB9OwogCitlbnVtIFRyZWVUeXBlIHsKKyAgICAiVHJlZSIsCisgICAgIlNoYWRvd0luY2x1
ZGluZ1RyZWUiLAorICAgICJDb21wb3NlZFRyZWUiCit9OworCiBbCiAgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCkBAIC05
NTgsNCArOTY0LDYgQEAgZW51bSBDb250ZW50U2l6ZUNhdGVnb3J5IHsKIAogICAgIFtDb25kaXRp
b25hbD1NRURJQV9TRVNTSU9OLCBNYXlUaHJvd0V4Y2VwdGlvbl0gZG91YmxlIGN1cnJlbnRNZWRp
YVNlc3Npb25Qb3NpdGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbik7CiAgICAgW0NvbmRpdGlvbmFs
PU1FRElBX1NFU1NJT04sIE1heVRocm93RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZE1lZGlhU2Vz
c2lvbkFjdGlvbihNZWRpYVNlc3Npb24gc2Vzc2lvbiwgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWls
cyBhY3Rpb25EZXRhaWxzKTsKKworICAgIERPTVN0cmluZyB0cmVlT3JkZXIoTm9kZSBhLCBOb2Rl
IGIsIG9wdGlvbmFsIFRyZWVUeXBlIHRyZWUgPSAiVHJlZSIpOwogfTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5Y2E0MGRjOTVlM2Y2MGNjMzVj
ZWJiYzI3MDRmZGEzZDZjYjRkYjcwLi5mZWFjOTExYTRlYjRmMGNhMTQ4OGFjNDU4YTBlMjA1M2Fj
ZDUxZTkyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFN0YXJ0IHJlbW92aW5nIGZ1bmN0aW9ucyB0aGF0IGltcGxpY2l0bHkg
dXNlIGNvbXBvc2VkIHRyZWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODQyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3Bw
OiBNb3ZlZCB0aGUgdGVzdCBvZiB0aGUgZG9jdW1lbnRPcmRlcgorICAgICAgICBmdW5jdGlvbiB0
aGF0IGNoZWNrcyB0aGUgb3JkZXJpbmcgb2YgdHdvIG5vZGVzIGludG8gYSBpbnRlcm5hbHMtYmFz
ZWQgdGVzdCBpbiB0aGUKKyAgICAgICAgTGF5b3V0VGVzdHMgZGlyZWN0b3J5LiBFdmVudHVhbGx5
IHdlJ2xsIG1vdmUgdGhlIHJlc3Qgb2YgdGhlc2UgdGVzdHMgdG9vLgorCiAyMDIwLTEwLTMxICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYWxsIHJlbWFp
bmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBjYWxscwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwCmluZGV4IDY3ZDE5
N2I1YzRjYTRmNWMyMzg0OTgwZjhjYmM4NDI2MDFhODNkZTguLmE2YmRmMjgyMzI4MzY2OTk4ZGNl
MjI0MDM2NjY3YzI0YmQ2NzFjOGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAKQEAgLTkzLDc3ICs5Myw2IEBAIHN0YXRpYyBQ
YXJ0aWFsT3JkZXJpbmcgb3BlcmF0b3ItKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykKICAgICBy
ZXR1cm4gb3JkZXJpbmc7CiB9CiAKLVRFU1QoRG9jdW1lbnRPcmRlciwgTm9kZSkKLXsKLSAgICBI
VE1MTmFtZXM6OmluaXQoKTsKLQotICAgIGF1dG8gZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudCgp
OwotICAgIGF1dG8mIGJvZHkgPSAqZG9jdW1lbnQtPmJvZHkoKTsKLQotICAgIEVYUEVDVF9FUVVJ
VkFMRU5UKGRvY3VtZW50LCBkb2N1bWVudCk7Ci0KLSAgICBFWFBFQ1RfRVFVSVZBTEVOVChib2R5
LCBib2R5KTsKLSAgICBFWFBFQ1RfTEVTUyhkb2N1bWVudCwgYm9keSk7Ci0gICAgRVhQRUNUX0xF
U1MoZG9jdW1lbnQsIGJvZHkpOwotCi0gICAgYXV0byBhID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgRVhQRUNUX0VRVUlWQUxFTlQoYSwgYSk7Ci0gICAgRVhQRUNUX1VO
T1JERVJFRChib2R5LCBhKTsKLSAgICBFWFBFQ1RfVU5PUkRFUkVEKGEsIGJvZHkpOwotCi0gICAg
Ym9keS5hcHBlbmRDaGlsZChhKTsKLSAgICBFWFBFQ1RfTEVTUyhib2R5LCBhKTsKLSAgICBFWFBF
Q1RfTEVTUyhib2R5LCBhKTsKLSAgICBFWFBFQ1RfRVFVSVZBTEVOVChhLCBhKTsKLQotICAgIGF1
dG8gYiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGJvZHkuYXBwZW5k
Q2hpbGQoYik7Ci0gICAgRVhQRUNUX0xFU1MoYm9keSwgYik7Ci0gICAgRVhQRUNUX0xFU1MoYm9k
eSwgYik7Ci0gICAgRVhQRUNUX0xFU1MoYSwgYik7Ci0gICAgRVhQRUNUX0xFU1MoYSwgYik7Ci0K
LSAgICBhdXRvIGMgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBiLT5h
cHBlbmRDaGlsZChjKTsKLSAgICBFWFBFQ1RfTEVTUyhib2R5LCBjKTsKLSAgICBFWFBFQ1RfTEVT
Uyhib2R5LCBjKTsKLSAgICBFWFBFQ1RfTEVTUyhhLCBjKTsKLSAgICBFWFBFQ1RfTEVTUyhiLCBj
KTsKLSAgICBFWFBFQ1RfTEVTUyhhLCBjKTsKLSAgICBFWFBFQ1RfTEVTUyhiLCBjKTsKLQotICAg
IGF1dG8gZCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGEtPmFwcGVu
ZENoaWxkKGQpOwotICAgIEVYUEVDVF9MRVNTKGJvZHksIGQpOwotICAgIEVYUEVDVF9MRVNTKGJv
ZHksIGQpOwotICAgIEVYUEVDVF9MRVNTKGEsIGQpOwotICAgIEVYUEVDVF9MRVNTKGQsIGIpOwot
ICAgIEVYUEVDVF9MRVNTKGQsIGMpOwotICAgIEVYUEVDVF9MRVNTKGEsIGQpOwotICAgIEVYUEVD
VF9MRVNTKGQsIGIpOwotICAgIEVYUEVDVF9MRVNTKGQsIGMpOwotCi0gICAgYXV0byBlID0gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0byBmID0gSFRNTERpdkVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgZS0+YXBwZW5kQ2hpbGQoZik7Ci0gICAgRVhQRUNU
X1VOT1JERVJFRChib2R5LCBmKTsKLSAgICBFWFBFQ1RfVU5PUkRFUkVEKGYsIGJvZHkpOwotCi0g
ICAgYXV0byBnID0gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBj
LT5hcHBlbmRDaGlsZChnKTsKLSAgICBFWFBFQ1RfTEVTUyhib2R5LCBnKTsKLQotICAgIGF1dG8m
IGggPSAqZy0+aW5uZXJUZXh0RWxlbWVudCgpOwotICAgIEVYUEVDVF9MRVNTKGJvZHksIGgpOwot
Ci0gICAgYXV0byYgaSA9IGEtPmF0dGFjaFNoYWRvdyh7IFNoYWRvd1Jvb3RNb2RlOjpDbG9zZWQg
fSkucmVsZWFzZVJldHVyblZhbHVlKCk7Ci0gICAgRVhQRUNUX0xFU1MoYm9keSwgaSk7Ci0gICAg
RVhQRUNUX0xFU1MoaSwgZCk7Ci0gICAgRVhQRUNUX0xFU1MoaSwgYik7Ci0KLSAgICAvLyBGSVhN
RTogQWRkIHRlc3RzIHRoYXQgY292ZXIgc2xvdHMgYW5kIGFzc2lnbm1lbnQuCi19Ci0KIFRFU1Qo
RG9jdW1lbnRPcmRlciwgQm91bmRhcnlQb2ludE9mZnNldFplcm8pCiB7CiAgICAgYXV0byBkb2N1
bWVudCA9IGNyZWF0ZURvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTY3YjQyODI0MDU3MzgwMjc3NWM4ZTg2
NWU5NWI4Y2ZmNTMxODM3Yi4uYzZjY2M4NjY3OTQwZjNmOWUwMjFjZWI0ZGViNmVhYTBiOGI4NDIy
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTExLTAxICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBTdGFydCByZW1vdmluZyBmdW5jdGlvbnMgdGhhdCBpbXBs
aWNpdGx5IHVzZSBjb21wb3NlZCB0cmVlOiBkb2N1bWVudE9yZGVyKE5vZGUsIE5vZGUpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3Ry
ZWVPcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RyZWVPcmRl
ci5odG1sOiBBZGRlZC4KKyAgICAgICAgVGhpcyB0ZXN0IHdhcyBmb3JtZXJseSBwYXJ0IG9mIFRl
c3RXZWJLaXRBUEksIHdoZW4gdGhlIGZ1bmN0aW9uIHdhcyBuYW1lZCBjb21wb3NlZFRyZWUuCisg
ICAgICAgIE1vdmluZyB0byBhbiBpbnRlcm5hbHMgc3R5bGUgdGVzdCBzaW5jZSB0aGlzIGlzIG5v
dCBzb21ldGhpbmcgdGhhdCBpcyBleHBvc2VkIGFzICJBUEkiLgorCiAyMDIwLTExLTAxICBLYXJs
IFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY5
MDcwKTogWyBCaWcgU3VyIF0gZWRpdGluZy9pbnB1dC9yZXZlYWwtY2FyZXQtb2YtbXVsdGlsaW5l
LWlucHV0Lmh0bWwgaXMgYSBjb25zdGFudCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS90cmVlT3JkZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
dHJlZU9yZGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzRmNTEwOTNkYmNhM2Q3YzgwNTAx
NmUwY2EzODhjMmVmMTJiMDNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vdHJlZU9yZGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU5IEBACitUZXN0IHRoZSB0cmVl
IG9yZGVyaW5nLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5h
bHMudHJlZU9yZGVyKGRvY3VtZW50LCBkb2N1bWVudCwgJ0NvbXBvc2VkVHJlZScpIGlzICJlcXVp
dmFsZW50IgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGRvY3VtZW50LmJvZHksIGRvY3VtZW50
LmJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAiZXF1aXZhbGVudCIKK1BBU1MgaW50ZXJuYWxzLnRy
ZWVPcmRlcihkb2N1bWVudCwgZG9jdW1lbnQuYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNz
IgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGRvY3VtZW50LmJvZHksIGRvY3VtZW50LCAnQ29t
cG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYSwgYSwg
J0NvbXBvc2VkVHJlZScpIGlzICJlcXVpdmFsZW50IgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVy
KGRvY3VtZW50LmJvZHksIGEsICdDb21wb3NlZFRyZWUnKSBpcyAidW5vcmRlcmVkIgorUEFTUyBp
bnRlcm5hbHMudHJlZU9yZGVyKGEsIGRvY3VtZW50LmJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAi
dW5vcmRlcmVkIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGRvY3VtZW50LmJvZHksIGEsICdD
b21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBkb2N1
bWVudC5ib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50
cmVlT3JkZXIoYSwgYSwgJ0NvbXBvc2VkVHJlZScpIGlzICJlcXVpdmFsZW50IgorUEFTUyBpbnRl
cm5hbHMudHJlZU9yZGVyKGRvY3VtZW50LmJvZHksIGIsICdDb21wb3NlZFRyZWUnKSBpcyAibGVz
cyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihiLCBkb2N1bWVudC5ib2R5LCAnQ29tcG9zZWRU
cmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYSwgYiwgJ0NvbXBv
c2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGIsIGEsICdDb21w
b3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihkb2N1bWVu
dC5ib2R5LCBjLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVl
T3JkZXIoYywgZG9jdW1lbnQuYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFT
UyBpbnRlcm5hbHMudHJlZU9yZGVyKGEsIGMsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BB
U1MgaW50ZXJuYWxzLnRyZWVPcmRlcihjLCBhLCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIi
CitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYiwgYywgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNz
IgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGMsIGIsICdDb21wb3NlZFRyZWUnKSBpcyAiZ3Jl
YXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihkb2N1bWVudC5ib2R5LCBkLCAnQ29tcG9z
ZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZCwgZG9jdW1lbnQu
Ym9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9y
ZGVyKGRvY3VtZW50LmJvZHksIGQsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50
ZXJuYWxzLnRyZWVPcmRlcihkLCBkb2N1bWVudC5ib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgImdy
ZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYSwgZCwgJ0NvbXBvc2VkVHJlZScpIGlz
ICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGEsICdDb21wb3NlZFRyZWUnKSBp
cyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihkLCBiLCAnQ29tcG9zZWRUcmVl
JykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYiwgZCwgJ0NvbXBvc2VkVHJl
ZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGMsICdDb21wb3Nl
ZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihjLCBkLCAnQ29tcG9z
ZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYSwgZCwgJ0Nv
bXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGEsICdD
b21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihkLCBi
LCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYiwg
ZCwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVy
KGQsIGMsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRl
cihjLCBkLCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVl
T3JkZXIoZG9jdW1lbnQuYm9keSwgZiwgJ0NvbXBvc2VkVHJlZScpIGlzICJ1bm9yZGVyZWQiCitQ
QVNTIGludGVybmFscy50cmVlT3JkZXIoZiwgZG9jdW1lbnQuYm9keSwgJ0NvbXBvc2VkVHJlZScp
IGlzICJ1bm9yZGVyZWQiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZiwgZG9jdW1lbnQuYm9k
eSwgJ0NvbXBvc2VkVHJlZScpIGlzICJ1bm9yZGVyZWQiCitQQVNTIGludGVybmFscy50cmVlT3Jk
ZXIoZG9jdW1lbnQuYm9keSwgZiwgJ0NvbXBvc2VkVHJlZScpIGlzICJ1bm9yZGVyZWQiCitQQVNT
IGludGVybmFscy50cmVlT3JkZXIoZG9jdW1lbnQuYm9keSwgZywgJ0NvbXBvc2VkVHJlZScpIGlz
ICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGcsIGRvY3VtZW50LmJvZHksICdDb21w
b3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihkb2N1bWVu
dC5ib2R5LCBoLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVl
T3JkZXIoaCwgZG9jdW1lbnQuYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFT
UyBpbnRlcm5hbHMudHJlZU9yZGVyKGRvY3VtZW50LmJvZHksIGksICdDb21wb3NlZFRyZWUnKSBp
cyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihpLCBkb2N1bWVudC5ib2R5LCAnQ29t
cG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoaSwgZCwg
J0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGks
ICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihp
LCBiLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIo
YiwgaSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3RyZWVPcmRlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vdHJlZU9yZGVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjM1Njg2ODBhODc1ZWVkMzU4ZjY4N2FlOTM5NGZjMDJjNzdmMzhlYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3RyZWVPcmRlci5odG1sCkBA
IC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+PGJvZHk+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVz
Y3JpcHRpb24oIlRlc3QgdGhlIHRyZWUgb3JkZXJpbmcuIikKKworZnVuY3Rpb24gc2hvdWxkQmVC
b3RoKGEsIGIsIGZvcndhcmQsIHJldmVyc2VkKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiaW50ZXJuYWxzLnRyZWVPcmRlcigiICsgYSArICIsICIgKyAoYiA/IGIgOiBhKSArICIsICdD
b21wb3NlZFRyZWUnKSIsIGZvcndhcmQpCisgICAgaWYgKGEgIT0gYikKKyAgICAgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJpbnRlcm5hbHMudHJlZU9yZGVyKCIgKyBiICsgIiwgIiArIGEgKyAi
LCAnQ29tcG9zZWRUcmVlJykiLCByZXZlcnNlZCkKK30KKworZnVuY3Rpb24gc2hvdWxkQmVFcXVp
dmFsZW50KGEsIGIpCit7CisgICAgc2hvdWxkQmVCb3RoKGEsIGIsICJlcXVpdmFsZW50IiwgImVx
dWl2YWxlbnQiKQorfQorCitmdW5jdGlvbiBzaG91bGRCZUxlc3MoYSwgYikKK3sKKyAgICBzaG91
bGRCZUJvdGgoYSwgYiwgImxlc3MiLCAiZ3JlYXRlciIpCit9CisKK2Z1bmN0aW9uIHNob3VsZEJl
VW5vcmRlcmVkKGEsIGIpCit7CisgICAgc2hvdWxkQmVCb3RoKGEsIGIsICJ1bm9yZGVyZWQiLCAi
dW5vcmRlcmVkIikKK30KKworc2hvdWxkQmVFcXVpdmFsZW50KCJkb2N1bWVudCIsICJkb2N1bWVu
dCIpCisKK3Nob3VsZEJlRXF1aXZhbGVudCgiZG9jdW1lbnQuYm9keSIsICJkb2N1bWVudC5ib2R5
IikKK3Nob3VsZEJlTGVzcygiZG9jdW1lbnQiLCAiZG9jdW1lbnQuYm9keSIpCisKK2xldCBhID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK3Nob3VsZEJlRXF1aXZhbGVudCgiYSIsICJh
IikKK3Nob3VsZEJlVW5vcmRlcmVkKCJkb2N1bWVudC5ib2R5IiwgImEiKQorCitkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGEpCitzaG91bGRCZUxlc3MoImRvY3VtZW50LmJvZHkiLCAiYSIpCitz
aG91bGRCZUVxdWl2YWxlbnQoImEiLCAiYSIpCisKK2xldCBiID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IikKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYikKK3Nob3VsZEJlTGVzcygi
ZG9jdW1lbnQuYm9keSIsICJiIikKK3Nob3VsZEJlTGVzcygiYSIsICJiIikKKworbGV0IGMgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorYi5hcHBlbmRDaGlsZChjKQorc2hvdWxkQmVM
ZXNzKCJkb2N1bWVudC5ib2R5IiwgImMiKQorc2hvdWxkQmVMZXNzKCJhIiwgImMiKQorc2hvdWxk
QmVMZXNzKCJiIiwgImMiKQorCitsZXQgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
CithLmFwcGVuZENoaWxkKGQpCitzaG91bGRCZUxlc3MoImRvY3VtZW50LmJvZHkiLCAiZCIpCitz
aG91bGRCZUxlc3MoImRvY3VtZW50LmJvZHkiLCAiZCIpCitzaG91bGRCZUxlc3MoImEiLCAiZCIp
CitzaG91bGRCZUxlc3MoImQiLCAiYiIpCitzaG91bGRCZUxlc3MoImQiLCAiYyIpCitzaG91bGRC
ZUxlc3MoImEiLCAiZCIpCitzaG91bGRCZUxlc3MoImQiLCAiYiIpCitzaG91bGRCZUxlc3MoImQi
LCAiYyIpCisKK2xldCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2xldCBmID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2UuYXBwZW5kQ2hpbGQoZikKK3Nob3VsZEJl
VW5vcmRlcmVkKCJkb2N1bWVudC5ib2R5IiwgImYiKQorc2hvdWxkQmVVbm9yZGVyZWQoImYiLCAi
ZG9jdW1lbnQuYm9keSIpCisKK2xldCBnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFy
ZWEiKTsKK2MuYXBwZW5kQ2hpbGQoZykKK3Nob3VsZEJlTGVzcygiZG9jdW1lbnQuYm9keSIsICJn
IikKKworbGV0IGggPSBpbnRlcm5hbHMuZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdChnKS5maXJz
dENoaWxkCitzaG91bGRCZUxlc3MoImRvY3VtZW50LmJvZHkiLCAiaCIpCisKK2xldCBpID0gYS5h
dHRhY2hTaGFkb3coeyBtb2RlOiAiY2xvc2VkIiB9KTsKK3Nob3VsZEJlTGVzcygiZG9jdW1lbnQu
Ym9keSIsICJpIikKK3Nob3VsZEJlTGVzcygiaSIsICJkIikKK3Nob3VsZEJlTGVzcygiaSIsICJi
IikKKworPC9zY3JpcHQ+Cis8L2JvZHk+PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412870</attachid>
            <date>2020-11-01 13:28:33 -0800</date>
            <delta_ts>2020-11-01 14:08:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218424-20201101132833.patch</filename>
            <type>text/plain</type>
            <size>50321</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE5ODA2NTYzMmJjNzIw
ODRlMzEzZjAyMmRmMDgzYjIzMDkxNjI5Mi4uODE0NWMwZTY2YWFlN2U3NThmNGFjZDNlZmJjMTE4
ZDliMTMwYjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTExLTAxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdGFydCByZW1vdmluZyBmdW5j
dGlvbnMgdGhhdCBpbXBsaWNpdGx5IHVzZSBjb21wb3NlZCB0cmVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vcmFuZ2VDb250
YWluc05vZGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vcmFuZ2VDb250YWluc1Jhbmdl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3RyZWVPcmRlci5odG1sCisKKyAgICAgICAg
Unlvc3VrZSBwb2ludGVkIG91dCB0aGF0IG1vc3QgY2xpZW50cyBzaG91bGQgbm90IGJlIHVzaW5n
IHRoZSBjb21wb3NlZCB0cmVlLCBzbyB0aGlzCisgICAgICAgIGlzIGEgc3RlcCBpbiB3b3JrIHRv
IG1ha2UgdGhlIHVzZSBvZiB0aGUgY29tcG9zZWQgdHJlZSBleHBsaWNpdC4gQWZ0ZXIgdGhhdCB3
ZSBjYW4KKyAgICAgICAgbW9yZSBlYXNpbHkgZmluZCBhbmQgY29ycmVjdCBjYWxsIHNpdGVzIHdo
ZXJlIHVzZSBvZiB0aGUgY29tcG9zZWQgdHJlZSBpcyBpbmNvcnJlY3QuCisKKyAgICAgICAgTGlr
ZWx5IHRoYXQgbW9zdCBvciBhbGwgY2FzZXMgb2YgdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4gY2Fu
IGJlIGNoYW5nZWQgdG8ganVzdAorICAgICAgICB0cmVlT3JkZXIgYW5kIGNvbnRhaW5zPENvbXBv
c2VkVHJlZT4gdG8ganVzdCBjb250YWluczsgd2lsbCBkbyB0aG9zZSBpbiBmb2xsb3ctdXBzLgor
CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlcGFpbnRSYW5nZSk6IFNpbXBsaWZpZWQgY29kZSB0byB1c2UgYm91bmRhcnkgcG9p
bnRzLCBhbmQgY2hhbmdlZCB0byB1c2UKKyAgICAgICAgdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4u
CisKKyAgICAgICAgKiBkb20vQWJzdHJhY3RSYW5nZS5oOiBFeHBvcnQgbWFrZVNpbXBsZVJhbmdl
IHNvIGl0IGNhbiBiZSB1c2VkIGluIEludGVybmFscy4KKyAgICAgICAgKiBkb20vQWJzdHJhY3RS
YW5nZS5pZGw6IEV4cG9ydCB0aGUgY2xhc3Mgc28gaXQgY2FuIGJlIHVzZWQgaW4gSW50ZXJuYWxz
LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50PFNo
YWRvd0luY2x1ZGluZ1RyZWU+KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0cmVlT3JkZXJG
b3JUZXN0aW5nKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudE9yZGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAg
ICAgICAgKiBkb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFk
aW9CdXR0b25Hcm91cDo6bWVtYmVycyBjb25zdCk6IFVzZSB0cmVlT3JkZXI8Q29tcG9zZWRUcmVl
Pi4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b250YWlucyk6IFJlbW92ZWQgYSBjb3VwbGUgY29udGFpbnMgZnVuY3Rpb25zIHRoYXQgaW1wbGlj
aXRseSB1c2UKKyAgICAgICAgY29tcG9zZWQgdHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRh
aW5zRm9yVGVzdGluZyk6IEFkZGVkLgorICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5oOiBVcGRh
dGVkIGZvciB0aGUgYWJvdmUuIFNob3VsZCBhbHNvIG1ha2UgY29udGFpbnM8VHJlZT4gdGhlCisg
ICAgICAgIGRlZmF1bHQgYW5kIHJlbW92ZSB0aGUgPFRyZWU+IGF0IGFsbCBjYWxsIHNpdGVzLCBi
dXQgaXQncyBzYWZlciB0byBkbyB0aGF0IGluIGEKKyAgICAgICAgc2VwYXJhdGUgcGF0Y2ggYWZ0
ZXIgdGhpcyBpcyBsYW5kZWQgYW5kIGJ1aWxkcyBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4pOiBVc2UgY29udGFpbnM8Q29tcG9zZWRUcmVlPiBleHBsaWNpdGx5Lgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQgY29uc3QpOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRp
c3BhdGNoTW91c2VFdmVudCk6IERpdHRvLiBOb3RlIHRoYXQgdGhpcyBoYXMgYSBjYWxsIHRvCisg
ICAgICAgIGlzRGVzY2VuZGFudE9mIHJpZ2h0IG5leHQgdG8gaXQsIHdoaWNoIGRvZXMgbm90IHVz
ZSB0aGUgY29tcG9zZWQgdHJlZS4KKworICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpmaW5kVGV4dE1hdGNoZXMpOiBVc2UgdHJlZU9yZGVyPENvbXBvc2Vk
VHJlZT4uCisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlUmFuZ2VzKTogRGl0dG8uCisKKyAgICAg
ICAgKiBwYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6ZmluZFRlbGVwaG9uZU51bWJlckhpZ2hs
aWdodENvbnRhaW5pbmdTZWxlY3Rpb25IaWdobGlnaHQpOgorICAgICAgICBVc2UgY29udGFpbnM8
Q29tcG9zZWRUcmVlPi4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnN0cmluZyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFR5
cGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6dHJlZU9yZGVyKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJhbmdlQ29udGFpbnNOb2RlKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnJhbmdlQ29udGFpbnNSYW5nZSk6IEFk
ZGVkLgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6IFVwZGF0ZWQgZm9yIGFkZGVkIGZ1
bmN0aW9ucyBhYm92ZS4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6IERpdHRvLiBU
aGVzZSBmdW5jdGlvbnMgd2VyZSB0ZXN0ZWQgaW4gYQorICAgICAgICBUZXN0V2ViS2l0QVBJIHRl
c3QsIGJ1dCB3ZSBwbGFuIHRvIG1vdmUgdGhvc2UgdHlwZXMgb2YgdGVzdHMgdG8KKyAgICAgICAg
aW50ZXJuYWxzLWJhc2VkIHRlc3RzIGluc3RlYWQuCisKIDIwMjAtMTEtMDEgIFR5bGVyIFdpbGNv
Y2sgIDx0d2lsY28ub0Bwcm90b25tYWlsLmNvbT4KIAogICAgICAgICBiYWNrZ3JvdW5kLXNpemUg
c2hvdWxkIG5vdCBhY2NlcHQgbmVnYXRpdmUgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmNwcAppbmRleCA1NjViN2EwNDY5MTBiMjNjZmQxNjU3
MTk2NGU5YjMzYzU3MjBhODc4Li5hNWU0MmU2ODQ3N2M5ZTQ3OTlmZTRjMTEwMzAyMjE2NjA3MzY2
YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGln
aHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5j
cHAKQEAgLTU1LDI2ICs1NSwxNSBAQCB2b2lkIEhpZ2hsaWdodDo6aW5pdGlhbGl6ZVNldExpa2Uo
RE9NU2V0QWRhcHRlciYgc2V0KQogICAgICAgICBzZXQuYWRkPElETEludGVyZmFjZTxTdGF0aWNS
YW5nZT4+KHJhbmdlRGF0YS0+cmFuZ2UpOwogfQogCi1zdGF0aWMgdm9pZCByZXBhaW50UmFuZ2Uo
Y29uc3QgU3RhdGljUmFuZ2UmIHJhbmdlKQorc3RhdGljIHZvaWQgcmVwYWludFJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAgICBhdXRvIHN0YXJ0Tm9kZSA9IG1ha2VSZWZQdHIo
JnJhbmdlLnN0YXJ0Q29udGFpbmVyKCkpOwotICAgIGF1dG8gZW5kTm9kZSA9IG1ha2VSZWZQdHIo
JnJhbmdlLmVuZENvbnRhaW5lcigpKTsKLSAgICBhdXRvIG9yZGVyaW5nID0gZG9jdW1lbnRPcmRl
cigqc3RhcnROb2RlLmdldCgpLCAqZW5kTm9kZS5nZXQoKSk7Ci0gICAgaWYgKGlzX2VxKG9yZGVy
aW5nKSkgewotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAvLyBGSVhNRTogVW5jbGVhciBwcmVjaXNlbHkgd2h5IHdlIG5lZWQgdG8gaGFuZGxl
IG91dCBvZiBvcmRlciBjYXNlcyBoZXJlLCBidXQgbm90IHVub3JkZXJlZCBjYXNlcy4KKyAgICBh
dXRvIHNvcnRlZFJhbmdlID0gcmFuZ2U7CisgICAgaWYgKGlzX2d0KHRyZWVPcmRlcjxDb21wb3Nl
ZFRyZWU+KHJhbmdlLnN0YXJ0LCByYW5nZS5lbmQpKSkKKyAgICAgICAgc3RkOjpzd2FwKHNvcnRl
ZFJhbmdlLnN0YXJ0LCBzb3J0ZWRSYW5nZS5lbmQpOworICAgIGZvciAoYXV0byYgbm9kZSA6IGlu
dGVyc2VjdGluZ05vZGVzKHNvcnRlZFJhbmdlKSkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IG5vZGUucmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGlzX2d0KG9yZGVyaW5nKSkgewotICAgICAg
ICBzdGFydE5vZGUgPSAmcmFuZ2UuZW5kQ29udGFpbmVyKCk7Ci0gICAgICAgIGVuZE5vZGUgPSAm
cmFuZ2Uuc3RhcnRDb250YWluZXIoKTsKLSAgICB9Ci0gICAgYXV0byBzaW1wbGVSYW5nZSA9IG1h
a2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludEJlZm9yZU5vZGUoKnN0YXJ0Tm9kZS5nZXQo
KSksIG1ha2VCb3VuZGFyeVBvaW50QWZ0ZXJOb2RlKCplbmROb2RlLmdldCgpKSk7Ci0gICAgaWYg
KHNpbXBsZVJhbmdlKSB7Ci0gICAgICAgIGZvciAoYXV0byYgbm9kZSA6IGludGVyc2VjdGluZ05v
ZGVzKHNpbXBsZVJhbmdlLnZhbHVlKCkpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IG5vZGUucmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJlci0+cmVwYWludCgp
OwotICAgICAgICB9CiAgICAgfQogfQogCkBAIC05MCw3ICs3OSw2IEBAIHZvaWQgSGlnaGxpZ2h0
OjpjbGVhckZyb21TZXRMaWtlKCkKIHsKICAgICBmb3IgKGF1dG8mIGRhdGEgOiBtX3Jhbmdlc0Rh
dGEpCiAgICAgICAgIHJlcGFpbnRSYW5nZShkYXRhLT5yYW5nZSk7Ci0KICAgICBtX3Jhbmdlc0Rh
dGEuY2xlYXIoKTsKIH0KIApAQCAtMTAwLDcgKzg4LDYgQEAgYm9vbCBIaWdobGlnaHQ6OmFkZFRv
U2V0TGlrZShTdGF0aWNSYW5nZSYgcmFuZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXBhaW50UmFuZ2UocmFuZ2UpOwogICAgIG1fcmFuZ2VzRGF0YS5hcHBlbmQoSGlnaGxpZ2h0UmFu
Z2VEYXRhOjpjcmVhdGUocmFuZ2UpKTsKLSAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BYnN0cmFjdFJhbmdlLmgKaW5kZXggMTQxOTRlZWZhOGNlMjNlOTEwMjM0M2I1YzRh
NDExZTQ5OWNmMTA5ZC4uZWE4ZTM0YzYxNmJmZmQwNGQ4ZDgzMzNkN2ExMmIyNGUyYzlkOGZlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlUmFuZ2UoKSBjb25zdCA9IDA7CiB9OwogCi1TaW1wbGVS
YW5nZSBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSYpOworV0VCQ09SRV9FWFBP
UlQgU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmKTsKIFNp
bXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWY8QWJzdHJhY3RSYW5nZT4mKTsKIE9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSop
OwogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBSZWZQdHI8QWJz
dHJhY3RSYW5nZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJh
bmdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmlkbAppbmRleCAyNGUz
ODczYTYzMzUwZGUxMjc0Mzc0MDI0OGEwYjA2NmNmNTMxODU5Li5iODFmNmI4Yjg1ODg2YzEyOWZm
ZjUxNGIxNjVjNDkxOWU4OTA3ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJz
dHJhY3RSYW5nZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuaWRs
CkBAIC0yOSw2ICsyOSw3IEBACiAKIFsKICAgICBDdXN0b21Ub0pTT2JqZWN0LAorICAgIEV4cG9y
dE1hY3JvPVdFQkNPUkVfRVhQT1JULAogICAgIEV4cG9zZWQ9V2luZG93LAogXSBpbnRlcmZhY2Ug
QWJzdHJhY3RSYW5nZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE5vZGUgc3RhcnRDb250YWlu
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKaW5kZXggMzViOTliMzAzNTE4M2E0Y2E3NTA2Y2VjY2M2OTk3ZmM1
Mjg4NDc5YS4uNjRiYTM5MjljYzQ5N2IxMTk2YTEyOGYzZThkOTI0YjNmM2E5NDhjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcApAQCAtMjYyNyw2ICsyNjI3LDExIEBAIHRlbXBsYXRlPD4gQ29udGFpbmVyTm9k
ZSogcGFyZW50PFRyZWU+KGNvbnN0IE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUucGFyZW50
Tm9kZSgpOwogfQogCit0ZW1wbGF0ZTw+IENvbnRhaW5lck5vZGUqIHBhcmVudDxTaGFkb3dJbmNs
dWRpbmdUcmVlPihjb25zdCBOb2RlJiBub2RlKQoreworICAgIHJldHVybiBub2RlLnBhcmVudE9y
U2hhZG93SG9zdE5vZGUoKTsKK30KKwogdGVtcGxhdGU8PiBDb250YWluZXJOb2RlKiBwYXJlbnQ8
Q29tcG9zZWRUcmVlPihjb25zdCBOb2RlJiBub2RlKQogewogICAgIHJldHVybiBub2RlLnBhcmVu
dEluQ29tcG9zZWRUcmVlKCk7CkBAIC0yNzIyLDkgKzI3MjcsMTggQEAgdGVtcGxhdGU8VHJlZVR5
cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgTm9kZSYgYSwgY29u
c3QgTm9kZSYKIHRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8VHJlZT4oY29uc3Qg
Tm9kZSYsIGNvbnN0IE5vZGUmKTsKIHRlbXBsYXRlIFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXI8
Q29tcG9zZWRUcmVlPihjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOwogCi1QYXJ0aWFsT3JkZXJp
bmcgZG9jdW1lbnRPcmRlcihjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQorUGFydGlhbE9y
ZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgTm9kZSYgYSwg
Y29uc3QgTm9kZSYgYikKIHsKLSAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oYSwg
Yik7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUcmVlOgorICAgICAgICByZXR1cm4g
dHJlZU9yZGVyPFRyZWU+KGEsIGIpOworICAgIGNhc2UgU2hhZG93SW5jbHVkaW5nVHJlZToKKyAg
ICAgICAgcmV0dXJuIHRyZWVPcmRlcjxTaGFkb3dJbmNsdWRpbmdUcmVlPihhLCBiKTsKKyAgICBj
YXNlIENvbXBvc2VkVHJlZToKKyAgICAgICAgcmV0dXJuIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+
KGEsIGIpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUGFy
dGlhbE9yZGVyaW5nOjp1bm9yZGVyZWQ7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBlZDQ0YjVlMWE4
ZDcwMDQwYWMxYmE3ZGYxYTYxZGQ5YWZiZjM4ZDQ1Li4yMDFhZDQ3OGMxMzdjMTgwMWMwYzRhZTI5
ZDlhYmZhNjYwYWJkZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTc1OSw4ICs3NTksNyBAQCBlbnVtIFRy
ZWVUeXBlIHsgVHJlZSwgU2hhZG93SW5jbHVkaW5nVHJlZSwgQ29tcG9zZWRUcmVlIH07CiB0ZW1w
bGF0ZTxUcmVlVHlwZSA9IFRyZWU+IENvbnRhaW5lck5vZGUqIHBhcmVudChjb25zdCBOb2RlJik7
CiB0ZW1wbGF0ZTxUcmVlVHlwZSA9IFRyZWU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29u
c3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKIAotLy8gRklYTUU6IERwcmVjYXRlZCBiZWNhdXNlIHRo
aXMgc2lsZW50bHkgZGVmYXVsdHMgdG8gQ29tcG9zZWRUcmVlLiBVc2UgdHJlZU9yZGVyIGluc3Rl
YWQuCi1XRUJDT1JFX0VYUE9SVCBQYXJ0aWFsT3JkZXJpbmcgZG9jdW1lbnRPcmRlcihjb25zdCBO
b2RlJiwgY29uc3QgTm9kZSYpOworV0VCQ09SRV9FWFBPUlQgUGFydGlhbE9yZGVyaW5nIHRyZWVP
cmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IE5vZGUmLCBjb25zdCBOb2RlJik7CiAKICNp
ZiBBU1NFUlRfRU5BQkxFRAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9C
dXR0b25Hcm91cHMuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBzLmNw
cAppbmRleCBlNDJjNTk1NzI4ZDU0ZjE5NTc3OGVjY2ZkYzU5OTU3Y2Q2Mzk1NTRjLi43YTYwMDI0
NWFjODljN2I3YzNhNjIyZDdhNDY2NWZjYjU2N2U2ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9S
YWRpb0J1dHRvbkdyb3Vwcy5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgVmVjdG9yPFJlZjxIVE1MSW5w
dXRFbGVtZW50Pj4gUmFkaW9CdXR0b25Hcm91cDo6bWVtYmVycygpIGNvbnN0CiAgICAgZm9yIChh
dXRvJiBtZW1iZXIgOiBtX21lbWJlcnMpCiAgICAgICAgIHNvcnRlZE1lbWJlcnMuYXBwZW5kKG1l
bWJlcik7CiAgICAgc3RkOjpzb3J0KHNvcnRlZE1lbWJlcnMuYmVnaW4oKSwgc29ydGVkTWVtYmVy
cy5lbmQoKSwgW10oYXV0byYgYSwgYXV0byYgYikgewotICAgICAgICByZXR1cm4gaXNfbHQoZG9j
dW1lbnRPcmRlcihhLCBiKSk7CisgICAgICAgIHJldHVybiBpc19sdCh0cmVlT3JkZXI8Q29tcG9z
ZWRUcmVlPihhLCBiKSk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHNvcnRlZE1lbWJlcnM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NpbXBsZVJhbmdlLmNwcAppbmRleCA0MzZjYWYzZWNiODQ1YjFkNjhkNzJhOTcz
NjEyZGE2YWY5ZWY2NTUyLi5iMTE2YzAxNjIwMzRkM2MzYTk2YTJhM2I3OTMwNDE0ZjFlNjk5Yjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxlUmFuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKQEAgLTI2MywxMCArMjYzLDIwIEBAIHRl
bXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdl
JiBvdXRlclJhbmdlLCBjb25zdCBTCiB9CiAKIHRlbXBsYXRlIGJvb2wgY29udGFpbnM8VHJlZT4o
Y29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpOwordGVtcGxhdGUgYm9vbCBj
b250YWluczxDb21wb3NlZFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU2ltcGxlUmFu
Z2UmKTsKIAotYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29u
c3QgU2ltcGxlUmFuZ2UmIGlubmVyUmFuZ2UpCitib29sIGNvbnRhaW5zRm9yVGVzdGluZyhUcmVl
VHlwZSB0eXBlLCBjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29uc3QgU2ltcGxlUmFu
Z2UmIGlubmVyUmFuZ2UpCiB7Ci0gICAgcmV0dXJuIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4ob3V0
ZXJSYW5nZSwgaW5uZXJSYW5nZSk7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBUcmVl
OgorICAgICAgICByZXR1cm4gY29udGFpbnM8VHJlZT4ob3V0ZXJSYW5nZSwgaW5uZXJSYW5nZSk7
CisgICAgY2FzZSBTaGFkb3dJbmNsdWRpbmdUcmVlOgorICAgICAgICByZXR1cm4gY29udGFpbnM8
U2hhZG93SW5jbHVkaW5nVHJlZT4ob3V0ZXJSYW5nZSwgaW5uZXJSYW5nZSk7CisgICAgY2FzZSBD
b21wb3NlZFRyZWU6CisgICAgICAgIHJldHVybiBjb250YWluczxDb21wb3NlZFRyZWU+KG91dGVy
UmFuZ2UsIGlubmVyUmFuZ2UpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHRlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBib29sIGlu
dGVyc2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmIGEsIGNvbnN0IFNpbXBsZVJhbmdlJiBiKQpAQCAt
MzA4LDEwICszMTgsMjAgQEAgdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wgY29udGFp
bnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBOb2RlJgogfQogCiB0ZW1wbGF0ZSBi
b29sIGNvbnRhaW5zPFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwordGVt
cGxhdGUgYm9vbCBjb250YWluczxDb21wb3NlZFRyZWU+KGNvbnN0IFNpbXBsZVJhbmdlJiwgY29u
c3QgTm9kZSYpOwogCi1ib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29u
c3QgTm9kZSYgbm9kZSkKK2Jvb2wgY29udGFpbnNGb3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNv
bnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgY29uc3QgTm9kZSYgbm9kZSkKIHsKLSAgICByZXR1cm4g
Y29udGFpbnM8Q29tcG9zZWRUcmVlPihyYW5nZSwgbm9kZSk7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBUcmVlOgorICAgICAgICByZXR1cm4gY29udGFpbnM8VHJlZT4ocmFuZ2UsIG5v
ZGUpOworICAgIGNhc2UgU2hhZG93SW5jbHVkaW5nVHJlZToKKyAgICAgICAgcmV0dXJuIGNvbnRh
aW5zPFNoYWRvd0luY2x1ZGluZ1RyZWU+KHJhbmdlLCBub2RlKTsKKyAgICBjYXNlIENvbXBvc2Vk
VHJlZToKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4ocmFuZ2UsIG5vZGUp
OworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIHRlbXBsYXRlPFRyZWVUeXBlIHRyZWVUeXBlPiBib29sIGNvbnRhaW5zKGNvbnN0IE5vZGUm
IG91dGVyLCBjb25zdCBOb2RlJiBpbm5lcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2ltcGxlUmFuZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCmluZGV4
IDAxYjIzMGU2Mjc4MTQ5Y2M4ZmFiZTIyZGY0NDQzOTZmOGQwMjg0NzYuLmUxNWY2MTY3NjQxMTY2
NGYzYzY3MGNmYWFiZjUwODk5ZGIyOWI3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaW1wbGVSYW5nZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5oCkBA
IC02OCw2ICs2OCw5IEBAIHRlbXBsYXRlPFRyZWVUeXBlID0gVHJlZT4gYm9vbCBjb250YWlucyhj
b25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE9wdGlvbmFsPEJvdW5kCiB0ZW1wbGF0ZTxUcmVlVHlw
ZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5nZSwgY29uc3QgU2lt
cGxlUmFuZ2UmIGlubmVyUmFuZ2UpOwogdGVtcGxhdGU8VHJlZVR5cGU+IGJvb2wgY29udGFpbnMo
Y29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiAKK1dFQkNPUkVfRVhQT1JUIGJvb2wg
Y29udGFpbnNGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBTaW1wbGVSYW5nZSYgb3V0ZXJSYW5n
ZSwgY29uc3QgU2ltcGxlUmFuZ2UmIGlubmVyUmFuZ2UpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBj
b250YWluc0ZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9k
ZSYpOworCiB0ZW1wbGF0ZTxUcmVlVHlwZT4gYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIHRlbXBsYXRlPFRyZWVUeXBlPiBib29sIGludGVy
c2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiAKQEAgLTg0LDE0ICs4Nywx
MiBAQCBPZmZzZXRSYW5nZSBjaGFyYWN0ZXJEYXRhT2Zmc2V0UmFuZ2UoY29uc3QgU2ltcGxlUmFu
Z2UmLCBjb25zdCBOb2RlJik7CiAvLyBGSVhNRTogU3RhcnQgb2YgZnVuY3Rpb25zIHRoYXQgYXJl
IGRlcHJlY2F0ZWQgc2luY2UgdGhleSBzaWxlbnRseSBkZWZhdWx0IHRvIENvbXBvc2VkVHJlZS4K
IAogV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5vZGU+IGNvbW1vbkluY2x1c2l2ZUFuY2VzdG9yKGNv
bnN0IFNpbXBsZVJhbmdlJik7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zKGNvbnN0IFNp
bXBsZVJhbmdlJiBvdXRlclJhbmdlLCBjb25zdCBTaW1wbGVSYW5nZSYgaW5uZXJSYW5nZSk7CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUcmVlVHlwZT4gYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW50ZXJzZWN0
cyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7CiBXRUJDT1JFX0VYUE9S
VCBib29sIGludGVyc2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiBXRUJD
T1JFX0VYUE9SVCBTaW1wbGVSYW5nZSB1bmlvblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29u
c3QgU2ltcGxlUmFuZ2UmKTsKIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNpbXBsZVJhbmdlPiBp
bnRlcnNlY3Rpb24oY29uc3QgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiwgY29uc3QgT3B0aW9uYWw8
U2ltcGxlUmFuZ2U+Jik7CiAKLVdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnMoY29uc3QgU2lt
cGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmVlVHlwZT4gYm9v
bCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwogV0VCQ09SRV9F
WFBPUlQgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgTm9kZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAppbmRleCA2YTMxN2IyYzdjZThiZjRkZmI3NTBk
OWU2ZjgyZWNiYmIyMGI4MTY3Li5mOTdiOWYxN2I3YjZiMzMxOTAzZjdiNDQ5ODQxYmZmM2VkMTQ5
MDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKQEAgLTExMjQsNyArMTEyNCw3IEBA
IHN0YXRpYyBib29sIGlzVmlzaWJseUFkamFjZW50KGNvbnN0IFBvc2l0aW9uJiBmaXJzdCwgY29u
c3QgUG9zaXRpb24mIHNlY29uZCkKIC8vIENhbGwgdGhpcyBmdW5jdGlvbiB0byBkZXRlcm1pbmUg
d2hldGhlciBhIG5vZGUgaXMgdmlzaWJseSBmaXQgaW5zaWRlIHNlbGVjdGVkUmFuZ2UKIGJvb2wg
aXNOb2RlVmlzaWJseUNvbnRhaW5lZFdpdGhpbihOb2RlJiBub2RlLCBjb25zdCBTaW1wbGVSYW5n
ZSYgcmFuZ2UpCiB7Ci0gICAgaWYgKGNvbnRhaW5zKHJhbmdlLCBub2RlKSkKKyAgICBpZiAoY29u
dGFpbnM8Q29tcG9zZWRUcmVlPihyYW5nZSwgbm9kZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgYXV0byBzdGFydFBvc2l0aW9uID0gbWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihy
YW5nZS5zdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDY5
YmZjZDlkZTlkNDA2ZjQ3MzU4NDAxZTIzOTlmZTY4MzVkNGI3OTMuLmNkYjdmMzY2YTI3YWRjZjgx
NGZhODkxYTYxOWM3MmE0MjQxYTg4YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCkBAIC03ODEsNyArNzgxLDcgQEAgRWxlbWVudCogRHJhZ0NvbnRyb2xsZXI6OmRyYWdn
YWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1lLCBFbGVtZW50KiBzdGEKICAgICAg
ICAgYXV0byYgc2VsZWN0aW9uID0gc291cmNlRnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
OwogICAgICAgICBib29sIGlzU2luZ2xlQXR0YWNobWVudFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5z
dGFydCgpID09IFBvc2l0aW9uKGF0dGFjaG1lbnQuZ2V0KCksIFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yKSAmJiBzZWxlY3Rpb24uZW5kKCkgPT0gUG9zaXRpb24oYXR0YWNobWVudC5n
ZXQoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcik7CiAgICAgICAgIGF1dG8gc2Vs
ZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi5maXJzdFJhbmdlKCk7Ci0gICAgICAgIGlmIChpc1Npbmds
ZUF0dGFjaG1lbnRTZWxlY3Rpb24gfHwgIXNlbGVjdGVkUmFuZ2UgfHwgIWNvbnRhaW5zKCpzZWxl
Y3RlZFJhbmdlLCAqYXR0YWNobWVudCkpIHsKKyAgICAgICAgaWYgKGlzU2luZ2xlQXR0YWNobWVu
dFNlbGVjdGlvbiB8fCAhc2VsZWN0ZWRSYW5nZSB8fCAhY29udGFpbnM8Q29tcG9zZWRUcmVlPigq
c2VsZWN0ZWRSYW5nZSwgKmF0dGFjaG1lbnQpKSB7CiAgICAgICAgICAgICBzdGF0ZS50eXBlID0g
RHJhZ1NvdXJjZUFjdGlvbjo6QXR0YWNobWVudDsKICAgICAgICAgICAgIHJldHVybiBhdHRhY2ht
ZW50LmdldCgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5k
ZXggMjlhN2RmNjI2ODM5MGE3ZDM4NmM2YjYzYzg3YjhkYmI4YWNkMTQ1Yy4uZGQzNDY3Y2I4OWMx
OTBhYzZkNjBjNmYzMmRiZTA1ODk1YjFjNjM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtMjczOCw3ICsyNzM4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNo
TW91c2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdldE4KICAg
ICAvLyB3aWxsIHNldCBhIHNlbGVjdGlvbiBpbnNpZGUgaXQsIHdoaWNoIHdpbGwgYWxzbyBzZXQg
dGhlIGZvY3VzZWQgZWxlbWVudC4KICAgICBpZiAoZWxlbWVudCAmJiBtX2ZyYW1lLnNlbGVjdGlv
bigpLmlzUmFuZ2UoKSkgewogICAgICAgICBpZiAoYXV0byByYW5nZSA9IG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKSkgewotICAgICAgICAgICAgaWYg
KGNvbnRhaW5zKCpyYW5nZSwgKmVsZW1lbnQpICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSkpCisgICAgICAgICAgICBpZiAoY29u
dGFpbnM8Q29tcG9zZWRUcmVlPigqcmFuZ2UsICplbGVtZW50KSAmJiBlbGVtZW50LT5pc0Rlc2Nl
bmRhbnRPZihtX2ZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5k
ZXggY2ZjYjQ4ZWJmNDM2NjgxMzI5YmVhMGIzZWE0NTQ4MWU1OTFiZjMxNi4uMGY2YWE2N2UwNGVk
NDNlMTYzMWFhNzUyOWU2NTRmZTEyMmNiMzZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC03MzYs
NyArNzM2LDcgQEAgYXV0byBQYWdlOjpmaW5kVGV4dE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJn
ZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIGwKICAgICAgICAgaWYgKG9wdGlvbnMu
Y29udGFpbnMoQmFja3dhcmRzKSkgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IHJlc3Vs
dC5yYW5nZXMuc2l6ZSgpOyBpID4gMDsgLS1pKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFNlZW1zIGxpa2UgdGhpcyBzaG91bGQgYmUgaXNfZ3RlcSB0byBjb3JyZWN0bHkgaGFuZGxlIHRo
ZSBzYW1lIHN0cmluZyBmb3VuZCB0d2ljZSBpbiBhIHJvdy4KLSAgICAgICAgICAgICAgICBpZiAo
aXNfZ3QoZG9jdW1lbnRPcmRlcihzZWxlY3RlZFJhbmdlLnN0YXJ0LCByZXN1bHQucmFuZ2VzW2kg
LSAxXS5lbmQpKSkgeworICAgICAgICAgICAgICAgIGlmIChpc19ndCh0cmVlT3JkZXI8Q29tcG9z
ZWRUcmVlPihzZWxlY3RlZFJhbmdlLnN0YXJ0LCByZXN1bHQucmFuZ2VzW2kgLSAxXS5lbmQpKSkg
ewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5kZXhGb3JTZWxlY3Rpb24gPSBpIC0gMTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNzQ0LDcg
Kzc0NCw3IEBAIGF1dG8gUGFnZTo6ZmluZFRleHRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBsCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IHJlc3VsdC5yYW5nZXMuc2l6ZSgpOyBp
IDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFNlZW1zIGxpa2UgdGhp
cyBzaG91bGQgYmUgaXNfbHRlcSB0byBjb3JyZWN0bHkgaGFuZGxlIHRoZSBzYW1lIHN0cmluZyBm
b3VuZCB0d2ljZSBpbiBhIHJvdy4KLSAgICAgICAgICAgICAgICBpZiAoaXNfbHQoZG9jdW1lbnRP
cmRlcihzZWxlY3RlZFJhbmdlLmVuZCwgcmVzdWx0LnJhbmdlc1tpXS5zdGFydCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGlzX2x0KHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KHNlbGVjdGVkUmFu
Z2UuZW5kLCByZXN1bHQucmFuZ2VzW2ldLnN0YXJ0KSkpIHsKICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0LmluZGV4Rm9yU2VsZWN0aW9uID0gaTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQpAQCAtODYxLDggKzg2MSw4IEBAIHN0YXRpYyB2b2lkIHJlcGxh
Y2VSYW5nZXMoUGFnZSYgcGFnZSwgY29uc3QgVmVjdG9yPEZpbmRSZXBsYWNlbWVudFJhbmdlPiYg
cmFuZ2VzCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgaWYgKGZpcnN0RnJh
bWUgPT0gc2Vjb25kRnJhbWUpIHsKLSAgICAgICAgICAgIC8vIFVzZSBkb2N1bWVudE9yZGVyIGlu
c3RlYWQgb2YgTm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24gYmVjYXVzZSBzb21lIGVkaXRp
bmcgcm9vdHMgYXJlIGluc2lkZSBzaGFkb3cgcm9vdHMuCi0gICAgICAgICAgICByZXR1cm4gaXNf
Z3QoZG9jdW1lbnRPcmRlcigqZmlyc3ROb2RlLCAqc2Vjb25kTm9kZSkpOworICAgICAgICAgICAg
Ly8gTXVzdCBub3QgdXNlIE5vZGU6OmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIGhlcmUgYmVjYXVz
ZSBzb21lIGVkaXRpbmcgcm9vdHMgYXJlIGluc2lkZSBzaGFkb3cgcm9vdHMuCisgICAgICAgICAg
ICByZXR1cm4gaXNfZ3QodHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oKmZpcnN0Tm9kZSwgKnNlY29u
ZE5vZGUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmcmFtZVRvVHJhdmVyc2FsSW5k
ZXhNYXAuZ2V0KGZpcnN0RnJhbWUpID4gZnJhbWVUb1RyYXZlcnNhbEluZGV4TWFwLmdldChzZWNv
bmRGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbQppbmRleCAzODJhNzgyMWQ5OTQyNDE0MWVkNTI5MmNkMjM1Yzg2OTVk
ZjZhZGFkLi43NGQ5MThlYjNmOWI2NmQwNzViMDMzZDRlMzE4NTgwZTRmM2E4NjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIu
bW0KQEAgLTYzMCw3ICs2MzAsNyBAQCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGln
aHQqIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmZpbmRUZWxlcGhvbmVOdQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIGZvciAoYXV0byYgaGlnaGxpZ2h0IDogbV9wb3RlbnRpYWxI
aWdobGlnaHRzKSB7Ci0gICAgICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSBIaWdobGlnaHQ6
OlRlbGVwaG9uZU51bWJlclR5cGUgJiYgY29udGFpbnMoaGlnaGxpZ2h0LT5yYW5nZSgpLCAqc2Vs
ZWN0aW9uUmFuZ2UpKQorICAgICAgICBpZiAoaGlnaGxpZ2h0LT50eXBlKCkgPT0gSGlnaGxpZ2h0
OjpUZWxlcGhvbmVOdW1iZXJUeXBlICYmIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4oaGlnaGxpZ2h0
LT5yYW5nZSgpLCAqc2VsZWN0aW9uUmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIGhpZ2hsaWdo
dC5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAz
OThjMzcwY2NhYWE4M2UwOWE3ODNjYzJhYTRlMDczZDU2NjhjODc3Li5mNjQyZDE1NmQ0MDdlY2Vi
ZTEzM2Y1ODY0OTMwM2YxZTM2OWQyOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC02MDAxLDUgKzYwMDEsNDQgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpz
ZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QKIH0KICNl
bmRpZgogCitjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHN0cmluZyhQYXJ0aWFsT3JkZXJpbmcgb3Jk
ZXJpbmcpCit7CisgICAgaWYgKGlzX2x0KG9yZGVyaW5nKSkKKyAgICAgICAgcmV0dXJuICJsZXNz
Il9zOworICAgIGlmIChpc19ndChvcmRlcmluZykpCisgICAgICAgIHJldHVybiAiZ3JlYXRlciJf
czsKKyAgICBpZiAoaXNfZXEob3JkZXJpbmcpKQorICAgICAgICByZXR1cm4gImVxdWl2YWxlbnQi
X3M7CisgICAgcmV0dXJuICJ1bm9yZGVyZWQiX3M7Cit9CisKK2NvbnN0ZXhwciBUcmVlVHlwZSBj
b252ZXJ0VHlwZShJbnRlcm5hbHM6OlRyZWVUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBJbnRlcm5hbHM6OlRyZWU6CisgICAgICAgIHJldHVybiBUcmVlOworICAg
IGNhc2UgSW50ZXJuYWxzOjpTaGFkb3dJbmNsdWRpbmdUcmVlOgorICAgICAgICByZXR1cm4gU2hh
ZG93SW5jbHVkaW5nVHJlZTsKKyAgICBjYXNlIEludGVybmFsczo6Q29tcG9zZWRUcmVlOgorICAg
ICAgICByZXR1cm4gQ29tcG9zZWRUcmVlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gVHJlZTsKK30KKworU3RyaW5nIEludGVybmFsczo6dHJlZU9yZGVyKE5v
ZGUmIGEsIE5vZGUmIGIsIFRyZWVUeXBlIHR5cGUpCit7CisgICAgcmV0dXJuIHN0cmluZyh0cmVl
T3JkZXJGb3JUZXN0aW5nKGNvbnZlcnRUeXBlKHR5cGUpLCBhLCBiKSk7Cit9CisKK2Jvb2wgSW50
ZXJuYWxzOjpyYW5nZUNvbnRhaW5zTm9kZShjb25zdCBBYnN0cmFjdFJhbmdlJiByYW5nZSwgTm9k
ZSYgbm9kZSwgVHJlZVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gY29udGFpbnNGb3JUZXN0aW5n
KGNvbnZlcnRUeXBlKHR5cGUpLCBtYWtlU2ltcGxlUmFuZ2UocmFuZ2UpLCBub2RlKTsKK30KKwor
Ym9vbCBJbnRlcm5hbHM6OnJhbmdlQ29udGFpbnNSYW5nZShjb25zdCBBYnN0cmFjdFJhbmdlJiBv
dXRlclJhbmdlLCBjb25zdCBBYnN0cmFjdFJhbmdlJiBpbm5lclJhbmdlLCBUcmVlVHlwZSB0eXBl
KQoreworICAgIHJldHVybiBjb250YWluc0ZvclRlc3RpbmcoY29udmVydFR5cGUodHlwZSksIG1h
a2VTaW1wbGVSYW5nZShvdXRlclJhbmdlKSwgbWFrZVNpbXBsZVJhbmdlKGlubmVyUmFuZ2UpKTsK
K30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
aW5kZXggYWUzODkyMmRiNzYzYzQ4MTRhOWFlZjM5MWU4NTc2YjEyNTcxODU5Mi4uMjhlNjBiY2Nm
N2RlMzE1ZGQwZjAzODc2NDAzMGRhNTIzNzY5MjU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCkBAIC00Nyw2ICs0Nyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
QWJzdHJhY3RSYW5nZTsKIGNsYXNzIEFuaW1hdGlvblRpbWVsaW5lOwogY2xhc3MgQXVkaW9Db250
ZXh0OwogY2xhc3MgQXVkaW9UcmFjazsKQEAgLTEwNjMsNiArMTA2NCwxMSBAQCBwdWJsaWM6CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNlc3Npb24m
LCBjb25zdCBNZWRpYVNlc3Npb25BY3Rpb25EZXRhaWxzJik7CiAjZW5kaWYKIAorICAgIGVudW0g
VHJlZVR5cGUgOiB1aW50OF90IHsgVHJlZSwgU2hhZG93SW5jbHVkaW5nVHJlZSwgQ29tcG9zZWRU
cmVlIH07CisgICAgU3RyaW5nIHRyZWVPcmRlcihOb2RlJiwgTm9kZSYsIFRyZWVUeXBlKTsKKyAg
ICBib29sIHJhbmdlQ29udGFpbnNOb2RlKGNvbnN0IEFic3RyYWN0UmFuZ2UmLCBOb2RlJiwgVHJl
ZVR5cGUpOworICAgIGJvb2wgcmFuZ2VDb250YWluc1JhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2Um
LCBjb25zdCBBYnN0cmFjdFJhbmdlJiwgVHJlZVR5cGUpOworCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEludGVybmFscyhEb2N1bWVudCYpOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiOGI1NzRkNjkx
OTYzZDdjYjk4Njc4NDRmMjIyYWIxMGQ1NWNiNTQ0Li5lZjY3YTkwNGNiNTYyOGYyNDRkMGJiMGQ4
NjQzNDYyMTI1MWIwYzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC05
Myw2ICs5MywxMiBAQCBlbnVtIENvbnRlbnRTaXplQ2F0ZWdvcnkgewogICAgICJYWFhMIgogfTsK
IAorZW51bSBUcmVlVHlwZSB7CisgICAgIlRyZWUiLAorICAgICJTaGFkb3dJbmNsdWRpbmdUcmVl
IiwKKyAgICAiQ29tcG9zZWRUcmVlIgorfTsKKwogWwogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVf
VEVTVFNVUFBPUlRfRVhQT1JULAogICAgIENvbmRpdGlvbmFsPVZJREVPLApAQCAtOTU4LDQgKzk2
NCw4IEBAIGVudW0gQ29udGVudFNpemVDYXRlZ29yeSB7CiAKICAgICBbQ29uZGl0aW9uYWw9TUVE
SUFfU0VTU0lPTiwgTWF5VGhyb3dFeGNlcHRpb25dIGRvdWJsZSBjdXJyZW50TWVkaWFTZXNzaW9u
UG9zaXRpb24oTWVkaWFTZXNzaW9uIHNlc3Npb24pOwogICAgIFtDb25kaXRpb25hbD1NRURJQV9T
RVNTSU9OLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdW5kZWZpbmVkIHNlbmRNZWRpYVNlc3Npb25BY3Rp
b24oTWVkaWFTZXNzaW9uIHNlc3Npb24sIE1lZGlhU2Vzc2lvbkFjdGlvbkRldGFpbHMgYWN0aW9u
RGV0YWlscyk7CisKKyAgICBET01TdHJpbmcgdHJlZU9yZGVyKE5vZGUgYSwgTm9kZSBiLCBvcHRp
b25hbCBUcmVlVHlwZSB0cmVlID0gIlRyZWUiKTsKKyAgICBib29sZWFuIHJhbmdlQ29udGFpbnNO
b2RlKEFic3RyYWN0UmFuZ2UgcmFuZ2UsIE5vZGUgbm9kZSwgb3B0aW9uYWwgVHJlZVR5cGUgdHJl
ZSA9ICJUcmVlIik7CisgICAgYm9vbGVhbiByYW5nZUNvbnRhaW5zUmFuZ2UoQWJzdHJhY3RSYW5n
ZSBvdXRlclJhbmdlLCBBYnN0cmFjdFJhbmdlIGlubmVyUmFuZ2UsIG9wdGlvbmFsIFRyZWVUeXBl
IHRyZWUgPSAiVHJlZSIpOwogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCBjNmZhOTViZDRhMzRlMDA0ZTlhZjY5YjY4Y2Q4NWVlYmZmNDUxY2Yx
Li5mNjQwMmE3YmQ0Nzk5YWI4YmVlOTQyZjM2MDE2ZjhkZTMyZTUzNGQ4IDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjAtMTEtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0
IHJlbW92aW5nIGZ1bmN0aW9ucyB0aGF0IGltcGxpY2l0bHkgdXNlIGNvbXBvc2VkIHRyZWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQyNAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwOiBNb3ZlZCB0aGUgdGVzdHMgb2Yg
ZG9jdW1lbnRPcmRlcgorICAgICAgICBmb3IgdHdvIG5vZGVzIGFuZCBjb250YWlucyBmb3IgcmFu
Z2UvcmFuZ2Ugb3IgcmFuZ2Uvbm9kZSBpbnRvIGludGVybmFscy1iYXNlZCB0ZXN0cworICAgICAg
ICBpbiB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5LiBFdmVudHVhbGx5IHdlJ2xsIG1vdmUgdGhl
IHJlc3Qgb2YgdGhlc2UgdGVzdHMsIHRvby4KKwogMjAyMC0xMS0wMSAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyBhbHRlcm5hdGl2ZSBw
cmVmZXJlbmNlIHNldHRpbmcgbWVjaGFuaXNtcyBmcm9tIExheW91dFRlc3RzCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAKaW5kZXgg
NjdkMTk3YjVjNGNhNGY1YzIzODQ5ODBmOGNiYzg0MjYwMWE4M2RlOC4uODNkNmZkZWU4M2QyMmJi
ZjI2ZTY5YTE5NTYxZTM2MWY0YjA1NGJmNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcApAQCAtNDQsMTAgKzQ0LDYgQEAKICNk
ZWZpbmUgRVhQRUNUX0xFU1MoYSwgYikgRVhQRUNUX0JPVEgoYSwgYiwgImxlc3MiLCAiZ3JlYXRl
ciIpCiAjZGVmaW5lIEVYUEVDVF9VTk9SREVSRUQoYSwgYikgRVhQRUNUX0JPVEgoYSwgYiwgInVu
b3JkZXJlZCIsICJ1bm9yZGVyZWQiKQogCi0jZGVmaW5lIEVYUEVDVF9DT05UQUlOU19TRUxGKGEp
IEVYUEVDVF9UUlVFKGNvbnRhaW5zKGEsIGEpKQotI2RlZmluZSBFWFBFQ1RfTkVTVEVEKGEsIGIp
IGRvIHsgRVhQRUNUX1RSVUUoY29udGFpbnMoYSwgYikpOyBFWFBFQ1RfRkFMU0UoY29udGFpbnMo
YiwgYSkpOyB9IHdoaWxlICgwKQotI2RlZmluZSBFWFBFQ1RfTk9UX0NPTlRBSU5FRChhLCBiKSBk
byB7IEVYUEVDVF9GQUxTRShjb250YWlucyhhLCBiKSk7IEVYUEVDVF9GQUxTRShjb250YWlucyhi
LCBhKSk7IH0gd2hpbGUgKDApCi0KICNkZWZpbmUgRVhQRUNUX0lOVEVSU0VDVFNfU0VMRihhKSBF
WFBFQ1RfVFJVRShpbnRlcnNlY3RzKGEsIGEpKQogI2RlZmluZSBFWFBFQ1RfSU5URVJTRUNUU19C
T1RIX1dBWVMoYSwgYikgZG8geyBFWFBFQ1RfVFJVRShpbnRlcnNlY3RzKGEsIGIpKTsgRVhQRUNU
X1RSVUUoaW50ZXJzZWN0cyhiLCBhKSk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIEVYUEVDVF9OT1Rf
SU5URVJTRUNUSU5HX0JPVEhfV0FZUyhhLCBiKSBkbyB7IEVYUEVDVF9GQUxTRShpbnRlcnNlY3Rz
KGEsIGIpKTsgRVhQRUNUX0ZBTFNFKGludGVyc2VjdHMoYiwgYSkpOyB9IHdoaWxlICgwKQpAQCAt
OTMsNzcgKzg5LDYgQEAgc3RhdGljIFBhcnRpYWxPcmRlcmluZyBvcGVyYXRvci0oUGFydGlhbE9y
ZGVyaW5nIG9yZGVyaW5nKQogICAgIHJldHVybiBvcmRlcmluZzsKIH0KIAotVEVTVChEb2N1bWVu
dE9yZGVyLCBOb2RlKQotewotICAgIEhUTUxOYW1lczo6aW5pdCgpOwotCi0gICAgYXV0byBkb2N1
bWVudCA9IGNyZWF0ZURvY3VtZW50KCk7Ci0gICAgYXV0byYgYm9keSA9ICpkb2N1bWVudC0+Ym9k
eSgpOwotCi0gICAgRVhQRUNUX0VRVUlWQUxFTlQoZG9jdW1lbnQsIGRvY3VtZW50KTsKLQotICAg
IEVYUEVDVF9FUVVJVkFMRU5UKGJvZHksIGJvZHkpOwotICAgIEVYUEVDVF9MRVNTKGRvY3VtZW50
LCBib2R5KTsKLSAgICBFWFBFQ1RfTEVTUyhkb2N1bWVudCwgYm9keSk7Ci0KLSAgICBhdXRvIGEg
PSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBFWFBFQ1RfRVFVSVZBTEVO
VChhLCBhKTsKLSAgICBFWFBFQ1RfVU5PUkRFUkVEKGJvZHksIGEpOwotICAgIEVYUEVDVF9VTk9S
REVSRUQoYSwgYm9keSk7Ci0KLSAgICBib2R5LmFwcGVuZENoaWxkKGEpOwotICAgIEVYUEVDVF9M
RVNTKGJvZHksIGEpOwotICAgIEVYUEVDVF9MRVNTKGJvZHksIGEpOwotICAgIEVYUEVDVF9FUVVJ
VkFMRU5UKGEsIGEpOwotCi0gICAgYXV0byBiID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7Ci0gICAgYm9keS5hcHBlbmRDaGlsZChiKTsKLSAgICBFWFBFQ1RfTEVTUyhib2R5LCBi
KTsKLSAgICBFWFBFQ1RfTEVTUyhib2R5LCBiKTsKLSAgICBFWFBFQ1RfTEVTUyhhLCBiKTsKLSAg
ICBFWFBFQ1RfTEVTUyhhLCBiKTsKLQotICAgIGF1dG8gYyA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwotICAgIGItPmFwcGVuZENoaWxkKGMpOwotICAgIEVYUEVDVF9MRVNTKGJv
ZHksIGMpOwotICAgIEVYUEVDVF9MRVNTKGJvZHksIGMpOwotICAgIEVYUEVDVF9MRVNTKGEsIGMp
OwotICAgIEVYUEVDVF9MRVNTKGIsIGMpOwotICAgIEVYUEVDVF9MRVNTKGEsIGMpOwotICAgIEVY
UEVDVF9MRVNTKGIsIGMpOwotCi0gICAgYXV0byBkID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7Ci0gICAgYS0+YXBwZW5kQ2hpbGQoZCk7Ci0gICAgRVhQRUNUX0xFU1MoYm9keSwg
ZCk7Ci0gICAgRVhQRUNUX0xFU1MoYm9keSwgZCk7Ci0gICAgRVhQRUNUX0xFU1MoYSwgZCk7Ci0g
ICAgRVhQRUNUX0xFU1MoZCwgYik7Ci0gICAgRVhQRUNUX0xFU1MoZCwgYyk7Ci0gICAgRVhQRUNU
X0xFU1MoYSwgZCk7Ci0gICAgRVhQRUNUX0xFU1MoZCwgYik7Ci0gICAgRVhQRUNUX0xFU1MoZCwg
Yyk7Ci0KLSAgICBhdXRvIGUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAg
ICBhdXRvIGYgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBlLT5hcHBl
bmRDaGlsZChmKTsKLSAgICBFWFBFQ1RfVU5PUkRFUkVEKGJvZHksIGYpOwotICAgIEVYUEVDVF9V
Tk9SREVSRUQoZiwgYm9keSk7Ci0KLSAgICBhdXRvIGcgPSBIVE1MVGV4dEFyZWFFbGVtZW50Ojpj
cmVhdGUoZG9jdW1lbnQpOwotICAgIGMtPmFwcGVuZENoaWxkKGcpOwotICAgIEVYUEVDVF9MRVNT
KGJvZHksIGcpOwotCi0gICAgYXV0byYgaCA9ICpnLT5pbm5lclRleHRFbGVtZW50KCk7Ci0gICAg
RVhQRUNUX0xFU1MoYm9keSwgaCk7Ci0KLSAgICBhdXRvJiBpID0gYS0+YXR0YWNoU2hhZG93KHsg
U2hhZG93Um9vdE1vZGU6OkNsb3NlZCB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBFWFBF
Q1RfTEVTUyhib2R5LCBpKTsKLSAgICBFWFBFQ1RfTEVTUyhpLCBkKTsKLSAgICBFWFBFQ1RfTEVT
UyhpLCBiKTsKLQotICAgIC8vIEZJWE1FOiBBZGQgdGVzdHMgdGhhdCBjb3ZlciBzbG90cyBhbmQg
YXNzaWdubWVudC4KLX0KLQogVEVTVChEb2N1bWVudE9yZGVyLCBCb3VuZGFyeVBvaW50T2Zmc2V0
WmVybykKIHsKICAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQoKTsKQEAgLTUzNSw2
MSArNDYwLDYgQEAgVEVTVChEb2N1bWVudE9yZGVyLCBJc1BvaW50SW5SYW5nZSkKIAogI2VuZGlm
CiAKLVRFU1QoRG9jdW1lbnRPcmRlciwgUmFuZ2VDb250YWluc1JhbmdlKQotewotICAgIGF1dG8g
ZG9jdW1lbnQgPSBjcmVhdGVEb2N1bWVudCgpOwotICAgIGF1dG8mIGRvY3VtZW50RWxlbWVudCA9
ICpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgYXV0byYgYm9keSA9ICpkb2N1bWVu
dC0+Ym9keSgpOwotCi0gICAgRVhQRUNUX0NPTlRBSU5TX1NFTEYobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKGRvY3VtZW50KSk7Ci0gICAgRVhQRUNUX0NPTlRBSU5TX1NFTEYobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50RWxlbWVudCkpOwotICAgIEVYUEVDVF9D
T05UQUlOU19TRUxGKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSk7Ci0KLSAg
ICBFWFBFQ1RfTkVTVEVEKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCks
IG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudEVsZW1lbnQpKTsKLSAgICBF
WFBFQ1RfTkVTVEVEKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSk7Ci0gICAgRVhQRUNUX05FU1RFRCht
YWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnRFbGVtZW50KSwgbWFrZVJhbmdl
U2VsZWN0aW5nTm9kZUNvbnRlbnRzKGJvZHkpKTsKLQotICAgIEVYUEVDVF9ORVNURUQobWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKGRvY3VtZW50RWxlbWVudCkpOwotCi0gICAgRVhQRUNUX05FU1RFRChtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnRFbGVtZW50KSwgbWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKGJvZHkpKTsKLQotICAgIEVYUEVDVF9ORVNURUQobWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFy
eVBvaW50KGRvY3VtZW50LCAwKSkpOwotICAgIEVYUEVDVF9ORVNURUQobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBv
aW50KGRvY3VtZW50LCAxKSkpOwotICAgIEVYUEVDVF9OT1RfQ09OVEFJTkVEKG1ha2VSYW5nZVNl
bGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRh
cnlQb2ludChkb2N1bWVudCwgMikpKTsKLQotICAgIEVYUEVDVF9ORVNURUQobWFrZVNpbXBsZVJh
bmdlKG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAwKSwgbWFrZUJvdW5kYXJ5UG9pbnQoZG9j
dW1lbnQsIDIpKSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSk7Ci0g
ICAgRVhQRUNUX05PVF9DT05UQUlORUQobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRv
Y3VtZW50KSwgbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAxKSwg
bWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDIpKSk7Ci0KLSAgICBFWFBFQ1RfTk9UX0NPTlRB
SU5FRChtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtl
Qm91bmRhcnlQb2ludChkb2N1bWVudEVsZW1lbnQsIDApKSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKGJvZHkpKTsKLSAgICBFWFBFQ1RfTkVTVEVEKG1ha2VTaW1wbGVSYW5nZShtYWtl
Qm91bmRhcnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDApKSwg
bWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDApKSk7Ci0KLSAgICBhdXRv
IGEgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBFWFBFQ1RfTk9UX0NP
TlRBSU5FRChtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoYSkpOwotCi0gICAgYm9keS5hcHBlbmRDaGlsZChhKTsK
LQotICAgIGF1dG8gYiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGJv
ZHkuYXBwZW5kQ2hpbGQoYik7Ci0KLSAgICBhdXRvIGMgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKLSAgICBiLT5hcHBlbmRDaGlsZChjKTsKLQotICAgIGF1dG8gZCA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGEtPmFwcGVuZENoaWxkKGQpOwotCi0g
ICAgYXV0byBlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0byBm
ID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgZS0+YXBwZW5kQ2hpbGQo
Zik7Ci0gICAgRVhQRUNUX05PVF9DT05UQUlORUQobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKGJvZHkpLCBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZikpOwotCi0gICAgYXV0
byBnID0gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBhdXRvJiBo
ID0gKmctPmlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBjLT5hcHBlbmRDaGlsZChnKTsKLSAgICBF
WFBFQ1RfTkVTVEVEKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSwgbWFrZVJh
bmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGgpKTsKLQotICAgIC8vIEZJWE1FOiBBZGQgdGVzdHMg
dGhhdCBjb3ZlciBzaGFkb3cgdHJlZXMuCi19Ci0KIFRFU1QoRG9jdW1lbnRPcmRlciwgUmFuZ2VJ
bnRlcnNlY3RzUmFuZ2UpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IGNyZWF0ZURvY3VtZW50KCk7
CkBAIC02NDUsNTAgKzUxNSw2IEBAIFRFU1QoRG9jdW1lbnRPcmRlciwgUmFuZ2VJbnRlcnNlY3Rz
UmFuZ2UpCiAgICAgLy8gRklYTUU6IEFkZCB0ZXN0cyB0aGF0IGNvdmVyIHNoYWRvdyB0cmVlcy4K
IH0KIAotVEVTVChEb2N1bWVudE9yZGVyLCBSYW5nZUNvbnRhaW5zTm9kZSkKLXsKLSAgICBhdXRv
IGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQoKTsKLSAgICBhdXRvJiBkb2N1bWVudEVsZW1lbnQg
PSAqZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGF1dG8mIGJvZHkgPSAqZG9jdW1l
bnQtPmJvZHkoKTsKLQotICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cyhkb2N1bWVudCksIGRvY3VtZW50RWxlbWVudCkpOwotICAgIEVYUEVDVF9U
UlVFKGNvbnRhaW5zKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIGJv
ZHkpKTsKLSAgICBFWFBFQ1RfVFJVRShjb250YWlucyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoZG9jdW1lbnRFbGVtZW50KSwgYm9keSkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGNvbnRh
aW5zKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIGRvY3VtZW50KSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQ
b2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAyKSksIGRvY3Vt
ZW50KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VTaW1wbGVSYW5nZShtYWtlQm91
bmRhcnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50RWxlbWVu
dCwgMCkpLCBib2R5KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VTaW1wbGVSYW5n
ZShtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGJvZHks
IDApKSwgYm9keSkpOwotICAgIEVYUEVDVF9GQUxTRShjb250YWlucyhtYWtlU2ltcGxlUmFuZ2Uo
bWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQb2ludChib2R5LCAx
KSksIGJvZHkpKTsKLSAgICBFWFBFQ1RfVFJVRShjb250YWlucyhtYWtlU2ltcGxlUmFuZ2UobWFr
ZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudEVs
ZW1lbnQsIDEpKSwgYm9keSkpOwotCi0gICAgYXV0byBhID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cyhkb2N1bWVudCksIGEpKTsKLQotICAgIGJvZHkuYXBwZW5kQ2hpbGQoYSk7
Ci0KLSAgICBhdXRvIGIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBi
b2R5LmFwcGVuZENoaWxkKGIpOwotCi0gICAgYXV0byBjID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgYi0+YXBwZW5kQ2hpbGQoYyk7Ci0KLSAgICBhdXRvIGQgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBhLT5hcHBlbmRDaGlsZChkKTsKLQot
ICAgIGF1dG8gZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGF1dG8g
ZiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGUtPmFwcGVuZENoaWxk
KGYpOwotICAgIEVYUEVDVF9GQUxTRShjb250YWlucyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29u
dGVudHMoYm9keSksIGYpKTsKLQotICAgIGF1dG8gZyA9IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0byYgaCA9ICpnLT5pbm5lclRleHRFbGVtZW50KCk7Ci0g
ICAgYy0+YXBwZW5kQ2hpbGQoZyk7Ci0gICAgRVhQRUNUX1RSVUUoY29udGFpbnMobWFrZVJhbmdl
U2VsZWN0aW5nTm9kZUNvbnRlbnRzKGJvZHkpLCBoKSk7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHRl
c3RzIHRoYXQgY292ZXIgc2hhZG93IHRyZWVzLgotfQotCiBURVNUKERvY3VtZW50T3JkZXIsIFJh
bmdlSW50ZXJzZWN0c05vZGUpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IGNyZWF0ZURvY3VtZW50
KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNGUxYzg4ZjYzYThiMzM1YmUzYjc5ZTcyYjY4MWI5Njg3MzY5M2NjYS4uMzU4
NzAyMzVlN2ViNzQ1ODZlMDc2N2ZmN2ZiMWUyMzkzNzU5MzlmNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDIwLTExLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdGFydCByZW1vdmluZyBmdW5jdGlvbnMgdGhhdCBpbXBsaWNpdGx5IHVzZSBjb21wb3NlZCB0
cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZG9tL3JhbmdlQ29udGFpbnNOb2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vcmFuZ2VDb250YWluc05vZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vcmFuZ2VDb250YWluc1JhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vcmFuZ2VDb250YWluc1JhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3RyZWVPcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RyZWVP
cmRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgVGhlc2UgdGVzdHMgd2VyZSBmb3JtZXJseSBwYXJ0
IG9mIFRlc3RXZWJLaXRBUEksIGFsdGhvdWdoIHRyZWVPcmRlciB3YXMgbmFtZWQgZG9jdW1lbnRP
cmRlci4KKyAgICAgICAgTW92aW5nIHRvIGludGVybmFscy1zdHlsZSB0ZXN0cyBhdCBSeW9zdWtl
J3Mgc3VnZ2VzdGlvbiBzaW5jZSB0aGVzZSBhcmUgbm90IHNvbWV0aGluZyBleHBvc2VkCisgICAg
ICAgIGFzIEFQSSBvciBldmVuIFNQSS4KKwogMjAyMC0xMS0wMSAgVHlsZXIgV2lsY29jayAgPHR3
aWxjby5vQHByb3Rvbm1haWwuY29tPgogCiAgICAgICAgIGJhY2tncm91bmQtc2l6ZSBzaG91bGQg
bm90IGFjY2VwdCBuZWdhdGl2ZSB2YWx1ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3JhbmdlQ29udGFpbnNOb2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3JhbmdlQ29udGFpbnNOb2RlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWYzNTFjNTI5MjBl
OTczMDEzNjY3MWMzYzE0YzdhOGRkZjIyYjI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmFuZ2VDb250YWluc05vZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKK1Rlc3QgdGhlIGNvbnRhaW5zIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgcmFuZ2UgY29u
dGFpbnMgYSBub2RlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRl
cm5hbHMucmFuZ2VDb250YWluc05vZGUoY29udGVudHNSYW5nZShkb2N1bWVudCksIGRvY3VtZW50
RWxlbWVudCwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29u
dGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBib2R5LCAnQ29tcG9zZWRUcmVlJykg
aXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc05vZGUoY29udGVudHNSYW5nZShk
b2N1bWVudEVsZW1lbnQpLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRl
cm5hbHMucmFuZ2VDb250YWluc05vZGUoY29udGVudHNSYW5nZShkb2N1bWVudCksIGRvY3VtZW50
LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNO
b2RlKHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudCwgMiksIGRvY3VtZW50LCAnQ29tcG9zZWRU
cmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRv
Y3VtZW50LCAwLCBkb2N1bWVudEVsZW1lbnQsIDApLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMg
ZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAw
LCBkb2N1bWVudEVsZW1lbnQsIDEpLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BB
U1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAw
KSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNv
bnRhaW5zTm9kZShyYW5nZShkb2N1bWVudCwgMCwgYm9keSwgMSksIGJvZHksICdDb21wb3NlZFRy
ZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc05vZGUocmFuZ2UoZG9j
dW1lbnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMiksIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyB0
cnVlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zTm9kZShjb250ZW50c1JhbmdlKGRvY3Vt
ZW50KSwgYSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNv
bnRhaW5zTm9kZShjb250ZW50c1JhbmdlKGJvZHkpLCBmLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFs
c2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoYm9keSks
IGgsICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cmFuZ2VDb250YWluc05vZGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFp
bnNOb2RlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzk1YzdlOTQ5NjkwODU5ODNiY2QzNGEyM2Q2NDkwMDgx
NmUxMDJmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29u
dGFpbnNOb2RlLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBjb250YWlucyBmdW5jdGlvbiB0aGF0IGNo
ZWNrcyBpZiBhIHJhbmdlIGNvbnRhaW5zIGEgbm9kZS4iKQorCitmdW5jdGlvbiByYW5nZShzdGFy
dENvbnRhaW5lciwgc3RhcnRPZmZzZXQsIGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0KQoreworICAg
IHJldHVybiBuZXcgU3RhdGljUmFuZ2UoeyBzdGFydENvbnRhaW5lcjogc3RhcnRDb250YWluZXIs
IHN0YXJ0T2Zmc2V0OiBzdGFydE9mZnNldCwgZW5kQ29udGFpbmVyOiBlbmRDb250YWluZXIsIGVu
ZE9mZnNldDogZW5kT2Zmc2V0IH0pCit9CisKK2Z1bmN0aW9uIGNvbnRlbnRzUmFuZ2Uobm9kZSkK
K3sKKyAgICByZXR1cm4gcmFuZ2Uobm9kZSwgMCwgbm9kZSwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0
aCkKK30KKworbGV0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsK
K2xldCBib2R5ID0gZG9jdW1lbnQuYm9keTsKKworc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMucmFu
Z2VDb250YWluc05vZGUoY29udGVudHNSYW5nZShkb2N1bWVudCksIGRvY3VtZW50RWxlbWVudCwg
J0NvbXBvc2VkVHJlZScpIikKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNO
b2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBib2R5LCAnQ29tcG9zZWRUcmVlJykiKTsKK3No
b3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9j
dW1lbnRFbGVtZW50KSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIik7CisKK3Nob3VsZEJlRmFsc2Uo
ImludGVybmFscy5yYW5nZUNvbnRhaW5zTm9kZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgZG9j
dW1lbnQsICdDb21wb3NlZFRyZWUnKSIpOworc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdl
Q29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudCwgMiksIGRvY3VtZW50LCAn
Q29tcG9zZWRUcmVlJykiKTsKK3Nob3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5z
Tm9kZShyYW5nZShkb2N1bWVudCwgMCwgZG9jdW1lbnRFbGVtZW50LCAwKSwgYm9keSwgJ0NvbXBv
c2VkVHJlZScpIik7CitzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMucmFuZ2VDb250YWluc05vZGUo
cmFuZ2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMSksIGJvZHksICdDb21wb3NlZFRy
ZWUnKSIpOworc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdl
KGRvY3VtZW50LCAwLCBib2R5LCAwKSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91bGRC
ZUZhbHNlKCJpbnRlcm5hbHMucmFuZ2VDb250YWluc05vZGUocmFuZ2UoZG9jdW1lbnQsIDAsIGJv
ZHksIDEpLCBib2R5LCAnQ29tcG9zZWRUcmVlJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxz
LnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudEVsZW1lbnQsIDIp
LCBib2R5LCAnQ29tcG9zZWRUcmVlJykiKTsKKworbGV0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKQorc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKGNv
bnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBhLCAnQ29tcG9zZWRUcmVlJykiKQorCitib2R5LmFwcGVu
ZENoaWxkKGEpCisKK2xldCBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2JvZHku
YXBwZW5kQ2hpbGQoYikKKworbGV0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQor
Yi5hcHBlbmRDaGlsZChjKQorCitsZXQgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
CithLmFwcGVuZENoaWxkKGQpCisKK2xldCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
IikKK2xldCBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2UuYXBwZW5kQ2hpbGQo
ZikKK3Nob3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5zTm9kZShjb250ZW50c1Jh
bmdlKGJvZHkpLCBmLCAnQ29tcG9zZWRUcmVlJykiKQorCitsZXQgZyA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRleHRhcmVhIik7CitjLmFwcGVuZENoaWxkKGcpCitsZXQgaCA9IGludGVybmFs
cy5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KGcpLmZpcnN0Q2hpbGQKK3Nob3VsZEJlVHJ1ZSgi
aW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoYm9keSksIGgsICdDb21w
b3NlZFRyZWUnKSIpCisKKzwvc2NyaXB0PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFpbnNSYW5nZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9yYW5nZUNvbnRhaW5zUmFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcyYWQ2MjNkZmRjYzM4OGVlMWI2MjM0M2MxYTlhMmEzNThiOTA2ZjYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yYW5nZUNvbnRhaW5zUmFuZ2UtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNDIgQEAKK1Rlc3QgdGhlIGNvbnRhaW5zIGZ1bmN0aW9uIHRoYXQgY2hl
Y2tzIGlmIGEgcmFuZ2UgY29udGFpbnMgYW5vdGhlciByYW5nZS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50
c1JhbmdlKGRvY3VtZW50KSwgY29udGVudHNSYW5nZShkb2N1bWVudCksICdDb21wb3NlZFRyZWUn
KSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5n
ZShkb2N1bWVudEVsZW1lbnQpLCBjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCksICdDb21w
b3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29u
dGVudHNSYW5nZShib2R5KSwgY29udGVudHNSYW5nZShib2R5KSwgJ0NvbXBvc2VkVHJlZScpIGlz
IHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGRv
Y3VtZW50KSwgY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQpLCAnQ29tcG9zZWRUcmVlJykg
aXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2Uo
ZG9jdW1lbnRFbGVtZW50KSwgY29udGVudHNSYW5nZShkb2N1bWVudCksICdDb21wb3NlZFRyZWUn
KSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFu
Z2UoZG9jdW1lbnQpLCBjb250ZW50c1JhbmdlKGJvZHkpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1
ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoYm9keSks
IGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1Mg
aW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVu
dCksIGNvbnRlbnRzUmFuZ2UoYm9keSksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGlu
dGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShib2R5KSwgY29udGVudHNS
YW5nZShkb2N1bWVudEVsZW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgY29udGVu
dHNSYW5nZShkb2N1bWVudEVsZW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBp
bnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50
KSwgY29udGVudHNSYW5nZShkb2N1bWVudCksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFT
UyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVt
ZW50KSwgY29udGVudHNSYW5nZShib2R5KSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1Mg
aW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGJvZHkpLCBjb250ZW50
c1JhbmdlKGRvY3VtZW50RWxlbWVudCksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBp
bnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBjb2xs
YXBzZWRSYW5nZShkb2N1bWVudCwgMCksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGlu
dGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29sbGFwc2VkUmFuZ2UoZG9jdW1lbnQsIDApLCBj
b250ZW50c1JhbmdlKGRvY3VtZW50KSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGlu
dGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShkb2N1bWVudCksIGNvbGxh
cHNlZFJhbmdlKGRvY3VtZW50LCAxKSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMSksIGNv
bnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgY29sbGFw
c2VkUmFuZ2UoZG9jdW1lbnQsIDIpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMiksIGNv
bnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShyYW5nZShkb2N1bWVudCwgMCwgZG9jdW1lbnQsIDIp
LCBjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1Mg
aW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgcmFu
Z2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50LCAyKSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQ
QVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShkb2N1bWVudCks
IHJhbmdlKGRvY3VtZW50LCAxLCBkb2N1bWVudCwgMiksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxz
ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKHJhbmdlKGRvY3VtZW50LCAxLCBk
b2N1bWVudCwgMiksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMg
ZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShyYW5nZShkb2N1bWVudCwg
MCwgZG9jdW1lbnRFbGVtZW50LCAwKSwgY29udGVudHNSYW5nZShib2R5KSwgJ0NvbXBvc2VkVHJl
ZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNS
YW5nZShib2R5KSwgcmFuZ2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMCksICdDb21w
b3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKHJh
bmdlKGRvY3VtZW50LCAwLCBib2R5LCAwKSwgY29sbGFwc2VkUmFuZ2UoYm9keSwgMCksICdDb21w
b3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29s
bGFwc2VkUmFuZ2UoYm9keSwgMCksIHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAwKSwgJ0NvbXBv
c2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29u
dGVudHNSYW5nZShkb2N1bWVudCksIGNvbnRlbnRzUmFuZ2UoYSksICdDb21wb3NlZFRyZWUnKSBp
cyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2Uo
YSksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BB
U1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGJvZHkpLCBjb250
ZW50c1JhbmdlKGYpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJh
bmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGYpLCBjb250ZW50c1JhbmdlKGJvZHkpLCAn
Q29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5n
ZShjb250ZW50c1JhbmdlKGJvZHkpLCBjb250ZW50c1JhbmdlKGgpLCAnQ29tcG9zZWRUcmVlJykg
aXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2Uo
aCksIGNvbnRlbnRzUmFuZ2UoYm9keSksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFpbnNSYW5nZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmFuZ2VDb250YWluc1JhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYzODAwMDI5
ODE5ZDA4ZTZlYmIyOWE3YTBlY2JmNzkyNDBkNWM1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFpbnNSYW5nZS5odG1sCkBAIC0wLDAgKzEsODkgQEAK
KzxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUg
Y29udGFpbnMgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgYSByYW5nZSBjb250YWlucyBhbm90aGVy
IHJhbmdlLiIpCisKK2Z1bmN0aW9uIHJhbmdlKHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwg
ZW5kQ29udGFpbmVyLCBlbmRPZmZzZXQpCit7CisgICAgcmV0dXJuIG5ldyBTdGF0aWNSYW5nZSh7
IHN0YXJ0Q29udGFpbmVyOiBzdGFydENvbnRhaW5lciwgc3RhcnRPZmZzZXQ6IHN0YXJ0T2Zmc2V0
LCBlbmRDb250YWluZXI6IGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0OiBlbmRPZmZzZXQgfSkKK30K
KworZnVuY3Rpb24gY29sbGFwc2VkUmFuZ2UoY29udGFpbmVyLCBvZmZzZXQpCit7CisgICAgcmV0
dXJuIHJhbmdlKGNvbnRhaW5lciwgb2Zmc2V0LCBjb250YWluZXIsIG9mZnNldCkKK30KKworZnVu
Y3Rpb24gY29udGVudHNSYW5nZShub2RlKQoreworICAgIHJldHVybiByYW5nZShub2RlLCAwLCBu
b2RlLCBub2RlLmNoaWxkTm9kZXMubGVuZ3RoKQorfQorCitmdW5jdGlvbiBzaG91bGRDb250YWlu
U2VsZihhKQoreworICAgIHNob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5n
ZSgiICsgYSArICIsICIgKyBhICsgIiwgJ0NvbXBvc2VkVHJlZScpIikKK30KKworZnVuY3Rpb24g
c2hvdWxkQmVOZXN0ZWQoYSwgYikKK3sKKyAgICBzaG91bGRCZVRydWUoImludGVybmFscy5yYW5n
ZUNvbnRhaW5zUmFuZ2UoIiArIGEgKyAiLCAiICsgYiArICIsICdDb21wb3NlZFRyZWUnKSIpCisg
ICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZSgiICsgYiArICIs
ICIgKyBhICsgIiwgJ0NvbXBvc2VkVHJlZScpIikKK30KKworZnVuY3Rpb24gc2hvdWxkTm90Q29u
dGFpbihhLCBiKQoreworICAgIHNob3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5z
UmFuZ2UoIiArIGEgKyAiLCAiICsgYiArICIsICdDb21wb3NlZFRyZWUnKSIpCisgICAgc2hvdWxk
QmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZSgiICsgYiArICIsICIgKyBhICsg
IiwgJ0NvbXBvc2VkVHJlZScpIikKK30KKworbGV0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudDsKK2xldCBib2R5ID0gZG9jdW1lbnQuYm9keTsKKworc2hvdWxkQ29u
dGFpblNlbGYoImNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpIikKK3Nob3VsZENvbnRhaW5TZWxmKCJj
b250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCkiKQorc2hvdWxkQ29udGFpblNlbGYoImNvbnRl
bnRzUmFuZ2UoYm9keSkiKQorCitzaG91bGRCZU5lc3RlZCgiY29udGVudHNSYW5nZShkb2N1bWVu
dCkiLCAiY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQpIikKK3Nob3VsZEJlTmVzdGVkKCJj
b250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb250ZW50c1JhbmdlKGJvZHkpIikKK3Nob3VsZEJl
TmVzdGVkKCJjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCkiLCAiY29udGVudHNSYW5nZShi
b2R5KSIpCisKK3Nob3VsZEJlTmVzdGVkKCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb250
ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCkiKQorCitzaG91bGRCZU5lc3RlZCgiY29udGVudHNS
YW5nZShkb2N1bWVudEVsZW1lbnQpIiwgImNvbnRlbnRzUmFuZ2UoYm9keSkiKQorCitzaG91bGRC
ZU5lc3RlZCgiY29udGVudHNSYW5nZShkb2N1bWVudCkiLCAiY29sbGFwc2VkUmFuZ2UoZG9jdW1l
bnQsIDApIikKK3Nob3VsZEJlTmVzdGVkKCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb2xs
YXBzZWRSYW5nZShkb2N1bWVudCwgMSkiKQorc2hvdWxkTm90Q29udGFpbigiY29udGVudHNSYW5n
ZShkb2N1bWVudCkiLCAiY29sbGFwc2VkUmFuZ2UoZG9jdW1lbnQsIDIpIikKKworc2hvdWxkQmVO
ZXN0ZWQoInJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudCwgMikiLCAiY29udGVudHNSYW5nZShk
b2N1bWVudCkiKQorc2hvdWxkTm90Q29udGFpbigiY29udGVudHNSYW5nZShkb2N1bWVudCkiLCAi
cmFuZ2UoZG9jdW1lbnQsIDEsIGRvY3VtZW50LCAyKSIpCisKK3Nob3VsZE5vdENvbnRhaW4oInJh
bmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudEVsZW1lbnQsIDApIiwgImNvbnRlbnRzUmFuZ2UoYm9k
eSkiKQorc2hvdWxkQmVOZXN0ZWQoInJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAwKSIsICJjb2xs
YXBzZWRSYW5nZShib2R5LCAwKSIpCisKK2xldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikKK3Nob3VsZE5vdENvbnRhaW4oImNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpIiwgImNvbnRl
bnRzUmFuZ2UoYSkiKQorCitib2R5LmFwcGVuZENoaWxkKGEpCisKK2xldCBiID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2IikKK2JvZHkuYXBwZW5kQ2hpbGQoYikKKworbGV0IGMgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorYi5hcHBlbmRDaGlsZChjKQorCitsZXQgZCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCithLmFwcGVuZENoaWxkKGQpCisKK2xldCBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2xldCBmID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2IikKK2UuYXBwZW5kQ2hpbGQoZikKK3Nob3VsZE5vdENvbnRhaW4oImNvbnRlbnRz
UmFuZ2UoYm9keSkiLCAiY29udGVudHNSYW5nZShmKSIpCisKK2xldCBnID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidGV4dGFyZWEiKTsKK2MuYXBwZW5kQ2hpbGQoZykKK2xldCBoID0gaW50ZXJu
YWxzLmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoZykuZmlyc3RDaGlsZAorc2hvdWxkQmVOZXN0
ZWQoImNvbnRlbnRzUmFuZ2UoYm9keSkiLCAiY29udGVudHNSYW5nZShoKSIpCisKKzwvc2NyaXB0
PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3RyZWVP
cmRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS90cmVlT3JkZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjU3MmViN2RkZTQyZDBmZWM1YmQxNzcxMDdiOTkzZjRkMmY3NTBm
OTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS90cmVlT3JkZXItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTkgQEAKK1Rlc3QgdGhlIHRyZWUgb3JkZXJpbmcuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZG9j
dW1lbnQsIGRvY3VtZW50LCAnQ29tcG9zZWRUcmVlJykgaXMgImVxdWl2YWxlbnQiCitQQVNTIGlu
dGVybmFscy50cmVlT3JkZXIoYm9keSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJlcXVpdmFs
ZW50IgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGRvY3VtZW50LCBib2R5LCAnQ29tcG9zZWRU
cmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYm9keSwgZG9jdW1lbnQs
ICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihh
LCBhLCAnQ29tcG9zZWRUcmVlJykgaXMgImVxdWl2YWxlbnQiCitQQVNTIGludGVybmFscy50cmVl
T3JkZXIoYm9keSwgYSwgJ0NvbXBvc2VkVHJlZScpIGlzICJ1bm9yZGVyZWQiCitQQVNTIGludGVy
bmFscy50cmVlT3JkZXIoYSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJ1bm9yZGVyZWQiCitQ
QVNTIGludGVybmFscy50cmVlT3JkZXIoYm9keSwgYSwgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNz
IgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGEsIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAi
Z3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBhLCAnQ29tcG9zZWRUcmVlJykg
aXMgImVxdWl2YWxlbnQiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYm9keSwgYiwgJ0NvbXBv
c2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGIsIGJvZHksICdD
b21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBi
LCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYiwg
YSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVy
KGJvZHksIGMsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVP
cmRlcihjLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFs
cy50cmVlT3JkZXIoYSwgYywgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5h
bHMudHJlZU9yZGVyKGMsIGEsICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50
ZXJuYWxzLnRyZWVPcmRlcihiLCBjLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGlu
dGVybmFscy50cmVlT3JkZXIoYywgYiwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFT
UyBpbnRlcm5hbHMudHJlZU9yZGVyKGJvZHksIGQsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIK
K1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihkLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgImdy
ZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYm9keSwgZCwgJ0NvbXBvc2VkVHJlZScp
IGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGJvZHksICdDb21wb3NlZFRy
ZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBkLCAnQ29tcG9z
ZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZCwgYSwgJ0NvbXBv
c2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGIsICdD
b21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihiLCBkLCAn
Q29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZCwg
YywgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGMs
IGQsICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRl
cihhLCBkLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3Jk
ZXIoZCwgYSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJl
ZU9yZGVyKGQsIGIsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRy
ZWVPcmRlcihiLCBkLCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFs
cy50cmVlT3JkZXIoZCwgYywgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5h
bHMudHJlZU9yZGVyKGMsIGQsICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50
ZXJuYWxzLnRyZWVPcmRlcihib2R5LCBmLCAnQ29tcG9zZWRUcmVlJykgaXMgInVub3JkZXJlZCIK
K1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihmLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgInVu
b3JkZXJlZCIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihmLCBib2R5LCAnQ29tcG9zZWRUcmVl
JykgaXMgInVub3JkZXJlZCIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihib2R5LCBmLCAnQ29t
cG9zZWRUcmVlJykgaXMgInVub3JkZXJlZCIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihib2R5
LCBnLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIo
ZywgYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJl
ZU9yZGVyKGJvZHksIGgsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxz
LnRyZWVPcmRlcihoLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGlu
dGVybmFscy50cmVlT3JkZXIoYm9keSwgaSwgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFT
UyBpbnRlcm5hbHMudHJlZU9yZGVyKGksIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRl
ciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihpLCBkLCAnQ29tcG9zZWRUcmVlJykgaXMgImxl
c3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZCwgaSwgJ0NvbXBvc2VkVHJlZScpIGlzICJn
cmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGksIGIsICdDb21wb3NlZFRyZWUnKSBp
cyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihiLCBpLCAnQ29tcG9zZWRUcmVlJykg
aXMgImdyZWF0ZXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vdHJlZU9yZGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS90cmVlT3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWFiOWYw
ZmE1MGI1MDA4MWVmODAyZTFhZGUyYTRlMjkwYjFjMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vdHJlZU9yZGVyLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPGh0bWw+
PGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRlc3QgdGhlIHRyZWUgb3JkZXJpbmcuIikKKwor
ZnVuY3Rpb24gc2hvdWxkQmVCb3RoKGEsIGIsIGZvcndhcmQsIHJldmVyc2VkKQoreworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiaW50ZXJuYWxzLnRyZWVPcmRlcigiICsgYSArICIsICIgKyAo
YiA/IGIgOiBhKSArICIsICdDb21wb3NlZFRyZWUnKSIsIGZvcndhcmQpCisgICAgaWYgKGEgIT0g
YikKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnRlcm5hbHMudHJlZU9yZGVyKCIg
KyBiICsgIiwgIiArIGEgKyAiLCAnQ29tcG9zZWRUcmVlJykiLCByZXZlcnNlZCkKK30KKworZnVu
Y3Rpb24gc2hvdWxkQmVFcXVpdmFsZW50KGEsIGIpCit7CisgICAgc2hvdWxkQmVCb3RoKGEsIGIs
ICJlcXVpdmFsZW50IiwgImVxdWl2YWxlbnQiKQorfQorCitmdW5jdGlvbiBzaG91bGRCZUxlc3Mo
YSwgYikKK3sKKyAgICBzaG91bGRCZUJvdGgoYSwgYiwgImxlc3MiLCAiZ3JlYXRlciIpCit9CisK
K2Z1bmN0aW9uIHNob3VsZEJlVW5vcmRlcmVkKGEsIGIpCit7CisgICAgc2hvdWxkQmVCb3RoKGEs
IGIsICJ1bm9yZGVyZWQiLCAidW5vcmRlcmVkIikKK30KKworc2hvdWxkQmVFcXVpdmFsZW50KCJk
b2N1bWVudCIsICJkb2N1bWVudCIpCisKK2xldCBib2R5ID0gZG9jdW1lbnQuYm9keTsKKworc2hv
dWxkQmVFcXVpdmFsZW50KCJib2R5IiwgImJvZHkiKQorc2hvdWxkQmVMZXNzKCJkb2N1bWVudCIs
ICJib2R5IikKKworbGV0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorc2hvdWxk
QmVFcXVpdmFsZW50KCJhIiwgImEiKQorc2hvdWxkQmVVbm9yZGVyZWQoImJvZHkiLCAiYSIpCisK
K2JvZHkuYXBwZW5kQ2hpbGQoYSkKK3Nob3VsZEJlTGVzcygiYm9keSIsICJhIikKK3Nob3VsZEJl
RXF1aXZhbGVudCgiYSIsICJhIikKKworbGV0IGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKQorYm9keS5hcHBlbmRDaGlsZChiKQorc2hvdWxkQmVMZXNzKCJib2R5IiwgImIiKQorc2hv
dWxkQmVMZXNzKCJhIiwgImIiKQorCitsZXQgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpCitiLmFwcGVuZENoaWxkKGMpCitzaG91bGRCZUxlc3MoImJvZHkiLCAiYyIpCitzaG91bGRC
ZUxlc3MoImEiLCAiYyIpCitzaG91bGRCZUxlc3MoImIiLCAiYyIpCisKK2xldCBkID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2EuYXBwZW5kQ2hpbGQoZCkKK3Nob3VsZEJlTGVzcygi
Ym9keSIsICJkIikKK3Nob3VsZEJlTGVzcygiYm9keSIsICJkIikKK3Nob3VsZEJlTGVzcygiYSIs
ICJkIikKK3Nob3VsZEJlTGVzcygiZCIsICJiIikKK3Nob3VsZEJlTGVzcygiZCIsICJjIikKK3No
b3VsZEJlTGVzcygiYSIsICJkIikKK3Nob3VsZEJlTGVzcygiZCIsICJiIikKK3Nob3VsZEJlTGVz
cygiZCIsICJjIikKKworbGV0IGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorbGV0
IGYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorZS5hcHBlbmRDaGlsZChmKQorc2hv
dWxkQmVVbm9yZGVyZWQoImJvZHkiLCAiZiIpCitzaG91bGRCZVVub3JkZXJlZCgiZiIsICJib2R5
IikKKworbGV0IGcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpCitjLmFwcGVu
ZENoaWxkKGcpCitzaG91bGRCZUxlc3MoImJvZHkiLCAiZyIpCisKK2xldCBoID0gaW50ZXJuYWxz
LmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoZykuZmlyc3RDaGlsZAorc2hvdWxkQmVMZXNzKCJi
b2R5IiwgImgiKQorCitsZXQgaSA9IGEuYXR0YWNoU2hhZG93KHsgbW9kZTogImNsb3NlZCIgfSkK
K3Nob3VsZEJlTGVzcygiYm9keSIsICJpIikKK3Nob3VsZEJlTGVzcygiaSIsICJkIikKK3Nob3Vs
ZEJlTGVzcygiaSIsICJiIikKKworPC9zY3JpcHQ+Cis8L2JvZHk+PC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="429380"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412872</attachid>
            <date>2020-11-01 14:06:29 -0800</date>
            <delta_ts>2020-11-01 20:26:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218424-20201101140628.patch</filename>
            <type>text/plain</type>
            <size>52409</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDY5MzM1ODU0YTg5MDc5
Y2I0Nzc1NjYzZGFiMTJhMjk0ZDM3NDkwZi4uMGJlZGU5MzU4N2E5NzcxYmU4ZTVkZDA5MGM0ZjU2
YjdiYjAzMTg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIwLTExLTAxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdGFydCByZW1vdmluZyBmdW5j
dGlvbnMgdGhhdCBpbXBsaWNpdGx5IHVzZSBjb21wb3NlZCB0cmVlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vcmFuZ2VDb250
YWluc05vZGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vcmFuZ2VDb250YWluc1Jhbmdl
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3RyZWVPcmRlci5odG1sCisKKyAgICAgICAg
Unlvc3VrZSBwb2ludGVkIG91dCB0aGF0IG1vc3QgY2xpZW50cyBzaG91bGQgbm90IGJlIHVzaW5n
IHRoZSBjb21wb3NlZCB0cmVlLCBzbyB0aGlzCisgICAgICAgIGlzIGEgc3RlcCBpbiB3b3JrIHRv
IG1ha2UgdGhlIHVzZSBvZiB0aGUgY29tcG9zZWQgdHJlZSBleHBsaWNpdC4gQWZ0ZXIgdGhhdCB3
ZSBjYW4KKyAgICAgICAgbW9yZSBlYXNpbHkgZmluZCBhbmQgY29ycmVjdCBjYWxsIHNpdGVzIHdo
ZXJlIHVzZSBvZiB0aGUgY29tcG9zZWQgdHJlZSBpcyBpbmNvcnJlY3QuCisKKyAgICAgICAgTGlr
ZWx5IHRoYXQgbW9zdCBvciBhbGwgY2FzZXMgb2YgdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4gY2Fu
IGJlIGNoYW5nZWQgdG8ganVzdAorICAgICAgICB0cmVlT3JkZXIgYW5kIGNvbnRhaW5zPENvbXBv
c2VkVHJlZT4gdG8ganVzdCBjb250YWluczsgd2lsbCBkbyB0aG9zZSBpbiBmb2xsb3ctdXBzLgor
CisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlcGFpbnRSYW5nZSk6IFNpbXBsaWZpZWQgY29kZSB0byB1c2UgYm91bmRhcnkgcG9p
bnRzLCBhbmQgY2hhbmdlZCB0byB1c2UKKyAgICAgICAgdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4u
CisKKyAgICAgICAgKiBkb20vQWJzdHJhY3RSYW5nZS5oOiBFeHBvcnQgbWFrZVNpbXBsZVJhbmdl
IHNvIGl0IGNhbiBiZSB1c2VkIGluIEludGVybmFscy4KKyAgICAgICAgKiBkb20vQWJzdHJhY3RS
YW5nZS5pZGw6IEV4cG9ydCB0aGUgY2xhc3Mgc28gaXQgY2FuIGJlIHVzZWQgaW4gSW50ZXJuYWxz
LgorCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyZW50PFNo
YWRvd0luY2x1ZGluZ1RyZWU+KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0cmVlT3JkZXJG
b3JUZXN0aW5nKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpkb2N1bWVudE9yZGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBkb20vTm9kZS5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAg
ICAgICAgKiBkb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFk
aW9CdXR0b25Hcm91cDo6bWVtYmVycyBjb25zdCk6IFVzZSB0cmVlT3JkZXI8Q29tcG9zZWRUcmVl
Pi4KKworICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b250YWlucyk6IFJlbW92ZWQgYSBjb3VwbGUgY29udGFpbnMgZnVuY3Rpb25zIHRoYXQgaW1wbGlj
aXRseSB1c2UKKyAgICAgICAgY29tcG9zZWQgdHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnRh
aW5zRm9yVGVzdGluZyk6IEFkZGVkLgorICAgICAgICAqIGRvbS9TaW1wbGVSYW5nZS5oOiBVcGRh
dGVkIGZvciB0aGUgYWJvdmUuIFNob3VsZCBhbHNvIG1ha2UgY29udGFpbnM8VHJlZT4gdGhlCisg
ICAgICAgIGRlZmF1bHQgYW5kIHJlbW92ZSB0aGUgPFRyZWU+IGF0IGFsbCBjYWxsIHNpdGVzLCBi
dXQgaXQncyBzYWZlciB0byBkbyB0aGF0IGluIGEKKyAgICAgICAgc2VwYXJhdGUgcGF0Y2ggYWZ0
ZXIgdGhpcyBpcyBsYW5kZWQgYW5kIGJ1aWxkcyBvbiBhbGwgcGxhdGZvcm1zLgorCisgICAgICAg
ICogZWRpdGluZy9FZGl0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9kZVZpc2libHlD
b250YWluZWRXaXRoaW4pOiBVc2UgY29udGFpbnM8Q29tcG9zZWRUcmVlPi4KKyAgICAgICAgKiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250cm9sbGVy
OjpkcmFnZ2FibGVFbGVtZW50IGNvbnN0KTogRGl0dG8uCisgICAgICAgICogcGFnZS9FdmVudEhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNl
RXZlbnQpOiBEaXR0by4gTm90ZSB0aGF0IHRoaXMgaGFzIGEgY2FsbCB0bworICAgICAgICBpc0Rl
c2NlbmRhbnRPZiByaWdodCBuZXh0IHRvIGl0LCB3aGljaCBkb2VzIG5vdCB1c2UgdGhlIGNvbXBv
c2VkIHRyZWUuCisKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6ZmluZFRleHRNYXRjaGVzKTogVXNlIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+LgorICAg
ICAgICAoV2ViQ29yZTo6cmVwbGFjZVJhbmdlcyk6IERpdHRvLgorCisgICAgICAgICogcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXI6OmZpbmRUZWxlcGhvbmVOdW1iZXJIaWdobGlnaHRDb250YWlu
aW5nU2VsZWN0aW9uSGlnaGxpZ2h0KToKKyAgICAgICAgVXNlIGNvbnRhaW5zPENvbXBvc2VkVHJl
ZT4uCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdHJpbmcpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUeXBlKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnRyZWVPcmRlcik6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUNvbnRhaW5zTm9kZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyYW5nZUNvbnRhaW5zUmFuZ2UpOiBBZGRlZC4KKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOiBVcGRhdGVkIGZvciBhZGRlZCBmdW5jdGlvbnMgYWJv
dmUuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOiBEaXR0by4gVGhlc2UgZnVuY3Rp
b25zIHdlcmUgdGVzdGVkIGluIGEKKyAgICAgICAgVGVzdFdlYktpdEFQSSB0ZXN0LCBidXQgd2Ug
cGxhbiB0byBtb3ZlIHRob3NlIHR5cGVzIG9mIHRlc3RzIHRvCisgICAgICAgIGludGVybmFscy1i
YXNlZCB0ZXN0cyBpbnN0ZWFkLgorCiAyMDIwLTExLTAxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xlZ2FjeUlubGluZUxheW91dF0gUmVtb3ZlIGNvbGxhcHNp
YmxlIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2hlbiBpdCBpcyBmb2xsb3dlZCBieSBhIGhhcmQgbGlu
ZSBicmVhawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCAyNDQwMzVjZjljY2Q5YmYyNzA3MGIxMThmODcwYWYxOTM0YTc5
ZjAwLi42ZTFjOGM4NzAwNGUzZmJmZTE0ZTEzOWQ5YTRkZDI3NDI4OTk4NzRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTExLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBTdGFydCByZW1vdmluZyBmdW5jdGlvbnMgdGhhdCBpbXBsaWNpdGx5IHVz
ZSBjb21wb3NlZCB0cmVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTg0MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6IFVzZSBj
b250YWluczxDb21wb3NlZFRyZWU+LgorCiAyMDIwLTExLTAxICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVtYWluaW5nIGFsdGVybmF0aXZlIHByZWZl
cmVuY2Ugc2V0dGluZyBtZWNoYW5pc21zIGZyb20gTGF5b3V0VGVzdHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHQuY3BwCmluZGV4IDU2NWI3YTA0NjkxMGIy
M2NmZDE2NTcxOTY0ZTliMzNjNTcyMGE4NzguLmE1ZTQyZTY4NDc3YzllNDc5OWZlNGMxMTAzMDIy
MTY2MDczNjZiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0
L0hpZ2hsaWdodC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGln
aGxpZ2h0LmNwcApAQCAtNTUsMjYgKzU1LDE1IEBAIHZvaWQgSGlnaGxpZ2h0Ojppbml0aWFsaXpl
U2V0TGlrZShET01TZXRBZGFwdGVyJiBzZXQpCiAgICAgICAgIHNldC5hZGQ8SURMSW50ZXJmYWNl
PFN0YXRpY1JhbmdlPj4ocmFuZ2VEYXRhLT5yYW5nZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlcGFp
bnRSYW5nZShjb25zdCBTdGF0aWNSYW5nZSYgcmFuZ2UpCitzdGF0aWMgdm9pZCByZXBhaW50UmFu
Z2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKQogewotICAgIGF1dG8gc3RhcnROb2RlID0gbWFr
ZVJlZlB0cigmcmFuZ2Uuc3RhcnRDb250YWluZXIoKSk7Ci0gICAgYXV0byBlbmROb2RlID0gbWFr
ZVJlZlB0cigmcmFuZ2UuZW5kQ29udGFpbmVyKCkpOwotICAgIGF1dG8gb3JkZXJpbmcgPSBkb2N1
bWVudE9yZGVyKCpzdGFydE5vZGUuZ2V0KCksICplbmROb2RlLmdldCgpKTsKLSAgICBpZiAoaXNf
ZXEob3JkZXJpbmcpKSB7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gc3RhcnROb2RlLT5y
ZW5kZXJlcigpKQorICAgIC8vIEZJWE1FOiBVbmNsZWFyIHByZWNpc2VseSB3aHkgd2UgbmVlZCB0
byBoYW5kbGUgb3V0IG9mIG9yZGVyIGNhc2VzIGhlcmUsIGJ1dCBub3QgdW5vcmRlcmVkIGNhc2Vz
LgorICAgIGF1dG8gc29ydGVkUmFuZ2UgPSByYW5nZTsKKyAgICBpZiAoaXNfZ3QodHJlZU9yZGVy
PENvbXBvc2VkVHJlZT4ocmFuZ2Uuc3RhcnQsIHJhbmdlLmVuZCkpKQorICAgICAgICBzdGQ6OnN3
YXAoc29ydGVkUmFuZ2Uuc3RhcnQsIHNvcnRlZFJhbmdlLmVuZCk7CisgICAgZm9yIChhdXRvJiBu
b2RlIDogaW50ZXJzZWN0aW5nTm9kZXMoc29ydGVkUmFuZ2UpKSB7CisgICAgICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFp
bnQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXNfZ3Qob3JkZXJpbmcpKSB7
Ci0gICAgICAgIHN0YXJ0Tm9kZSA9ICZyYW5nZS5lbmRDb250YWluZXIoKTsKLSAgICAgICAgZW5k
Tm9kZSA9ICZyYW5nZS5zdGFydENvbnRhaW5lcigpOwotICAgIH0KLSAgICBhdXRvIHNpbXBsZVJh
bmdlID0gbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50QmVmb3JlTm9kZSgqc3RhcnRO
b2RlLmdldCgpKSwgbWFrZUJvdW5kYXJ5UG9pbnRBZnRlck5vZGUoKmVuZE5vZGUuZ2V0KCkpKTsK
LSAgICBpZiAoc2ltcGxlUmFuZ2UpIHsKLSAgICAgICAgZm9yIChhdXRvJiBub2RlIDogaW50ZXJz
ZWN0aW5nTm9kZXMoc2ltcGxlUmFuZ2UudmFsdWUoKSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gbm9kZS5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5y
ZXBhaW50KCk7Ci0gICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTkwLDcgKzc5LDYgQEAgdm9pZCBI
aWdobGlnaHQ6OmNsZWFyRnJvbVNldExpa2UoKQogewogICAgIGZvciAoYXV0byYgZGF0YSA6IG1f
cmFuZ2VzRGF0YSkKICAgICAgICAgcmVwYWludFJhbmdlKGRhdGEtPnJhbmdlKTsKLQogICAgIG1f
cmFuZ2VzRGF0YS5jbGVhcigpOwogfQogCkBAIC0xMDAsNyArODgsNiBAQCBib29sIEhpZ2hsaWdo
dDo6YWRkVG9TZXRMaWtlKFN0YXRpY1JhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJlcGFpbnRSYW5nZShyYW5nZSk7CiAgICAgbV9yYW5nZXNEYXRhLmFwcGVuZChIaWdo
bGlnaHRSYW5nZURhdGE6OmNyZWF0ZShyYW5nZSkpOwotICAgIAogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuaAppbmRleCAxNDE5NGVlZmE4Y2UyM2U5MTAy
MzQzYjVjNGE0MTFlNDk5Y2YxMDlkLi5lYThlMzRjNjE2YmZmZDA0ZDhkODMzM2Q3YTEyYjI0ZTJj
OWQ4ZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RSYW5nZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYnN0cmFjdFJhbmdlLmgKQEAgLTQ3LDcgKzQ3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVSYW5nZSgpIGNvbnN0ID0gMDsKIH07CiAK
LVNpbXBsZVJhbmdlIG1ha2VTaW1wbGVSYW5nZShjb25zdCBBYnN0cmFjdFJhbmdlJik7CitXRUJD
T1JFX0VYUE9SVCBTaW1wbGVSYW5nZSBtYWtlU2ltcGxlUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5n
ZSYpOwogU2ltcGxlUmFuZ2UgbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJlZjxBYnN0cmFjdFJhbmdl
PiYpOwogT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IG1ha2VTaW1wbGVSYW5nZShjb25zdCBBYnN0cmFj
dFJhbmdlKik7CiBPcHRpb25hbDxTaW1wbGVSYW5nZT4gbWFrZVNpbXBsZVJhbmdlKGNvbnN0IFJl
ZlB0cjxBYnN0cmFjdFJhbmdlPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Fi
c3RyYWN0UmFuZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fic3RyYWN0UmFuZ2UuaWRsCmlu
ZGV4IDI0ZTM4NzNhNjMzNTBkZTEyNzQzNzQwMjQ4YTBiMDY2Y2Y1MzE4NTkuLmI4MWY2YjhiODU4
ODZjMTI5ZmZmNTE0YjE2NWM0OTE5ZTg5MDdmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9BYnN0cmFjdFJhbmdlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJzdHJhY3RS
YW5nZS5pZGwKQEAgLTI5LDYgKzI5LDcgQEAKIAogWwogICAgIEN1c3RvbVRvSlNPYmplY3QsCisg
ICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD1XaW5kb3csCiBdIGlu
dGVyZmFjZSBBYnN0cmFjdFJhbmdlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSBzdGFy
dENvbnRhaW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAzNWI5OWIzMDM1MTgzYTRjYTc1MDZjZWNj
YzY5OTdmYzUyODg0NzlhLi41YjczNTM4OTZmODZjN2E2M2NiMTU0ODg4MGZjOGZhZjQ1ZWYzNDA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNjI3LDYgKzI2MjcsMTEgQEAgdGVtcGxhdGU8PiBDb250
YWluZXJOb2RlKiBwYXJlbnQ8VHJlZT4oY29uc3QgTm9kZSYgbm9kZSkKICAgICByZXR1cm4gbm9k
ZS5wYXJlbnROb2RlKCk7CiB9CiAKK3RlbXBsYXRlPD4gQ29udGFpbmVyTm9kZSogcGFyZW50PFNo
YWRvd0luY2x1ZGluZ1RyZWU+KGNvbnN0IE5vZGUmIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUu
cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpOworfQorCiB0ZW1wbGF0ZTw+IENvbnRhaW5lck5vZGUq
IHBhcmVudDxDb21wb3NlZFRyZWU+KGNvbnN0IE5vZGUmIG5vZGUpCiB7CiAgICAgcmV0dXJuIG5v
ZGUucGFyZW50SW5Db21wb3NlZFRyZWUoKTsKQEAgLTI3MjAsMTEgKzI3MjUsMjEgQEAgdGVtcGxh
dGU8VHJlZVR5cGUgdHJlZVR5cGU+IFBhcnRpYWxPcmRlcmluZyB0cmVlT3JkZXIoY29uc3QgTm9k
ZSYgYSwgY29uc3QgTm9kZSYKIH0KIAogdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRl
cjxUcmVlPihjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYpOwordGVtcGxhdGUgUGFydGlhbE9yZGVy
aW5nIHRyZWVPcmRlcjxTaGFkb3dJbmNsdWRpbmdUcmVlPihjb25zdCBOb2RlJiwgY29uc3QgTm9k
ZSYpOwogdGVtcGxhdGUgUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGNv
bnN0IE5vZGUmLCBjb25zdCBOb2RlJik7CiAKLVBhcnRpYWxPcmRlcmluZyBkb2N1bWVudE9yZGVy
KGNvbnN0IE5vZGUmIGEsIGNvbnN0IE5vZGUmIGIpCitQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVy
Rm9yVGVzdGluZyhUcmVlVHlwZSB0eXBlLCBjb25zdCBOb2RlJiBhLCBjb25zdCBOb2RlJiBiKQog
ewotICAgIHJldHVybiB0cmVlT3JkZXI8Q29tcG9zZWRUcmVlPihhLCBiKTsKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIFRyZWU6CisgICAgICAgIHJldHVybiB0cmVlT3JkZXI8VHJlZT4o
YSwgYik7CisgICAgY2FzZSBTaGFkb3dJbmNsdWRpbmdUcmVlOgorICAgICAgICByZXR1cm4gdHJl
ZU9yZGVyPFNoYWRvd0luY2x1ZGluZ1RyZWU+KGEsIGIpOworICAgIGNhc2UgQ29tcG9zZWRUcmVl
OgorICAgICAgICByZXR1cm4gdHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oYSwgYik7CisgICAgfQor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBQYXJ0aWFsT3JkZXJpbmc6OnVu
b3JkZXJlZDsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgTm9kZSYgbm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGVkNDRiNWUxYThkNzAwNDBhYzFiYTdkZjFh
NjFkZDlhZmJmMzhkNDUuLjIwMWFkNDc4YzEzN2MxODAxYzBjNGFlMjlkOWFiZmE2NjBhYmRlYmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaApAQCAtNzU5LDggKzc1OSw3IEBAIGVudW0gVHJlZVR5cGUgeyBUcmVlLCBT
aGFkb3dJbmNsdWRpbmdUcmVlLCBDb21wb3NlZFRyZWUgfTsKIHRlbXBsYXRlPFRyZWVUeXBlID0g
VHJlZT4gQ29udGFpbmVyTm9kZSogcGFyZW50KGNvbnN0IE5vZGUmKTsKIHRlbXBsYXRlPFRyZWVU
eXBlID0gVHJlZT4gUGFydGlhbE9yZGVyaW5nIHRyZWVPcmRlcihjb25zdCBOb2RlJiwgY29uc3Qg
Tm9kZSYpOwogCi0vLyBGSVhNRTogRHByZWNhdGVkIGJlY2F1c2UgdGhpcyBzaWxlbnRseSBkZWZh
dWx0cyB0byBDb21wb3NlZFRyZWUuIFVzZSB0cmVlT3JkZXIgaW5zdGVhZC4KLVdFQkNPUkVfRVhQ
T1JUIFBhcnRpYWxPcmRlcmluZyBkb2N1bWVudE9yZGVyKGNvbnN0IE5vZGUmLCBjb25zdCBOb2Rl
Jik7CitXRUJDT1JFX0VYUE9SVCBQYXJ0aWFsT3JkZXJpbmcgdHJlZU9yZGVyRm9yVGVzdGluZyhU
cmVlVHlwZSwgY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVE
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1dHRvbkdyb3Vwcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFkaW9CdXR0b25Hcm91cHMuY3BwCmluZGV4IGU0MmM1OTU3
MjhkNTRmMTk1Nzc4ZWNjZmRjNTk5NTdjZDYzOTU1NGMuLjdhNjAwMjQ1YWM4OWM3YjdjM2E2MjJk
N2E0NjY1ZmNiNTY3ZTZmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYWRpb0J1
dHRvbkdyb3Vwcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhZGlvQnV0dG9uR3JvdXBz
LmNwcApAQCAtNjMsNyArNjMsNyBAQCBWZWN0b3I8UmVmPEhUTUxJbnB1dEVsZW1lbnQ+PiBSYWRp
b0J1dHRvbkdyb3VwOjptZW1iZXJzKCkgY29uc3QKICAgICBmb3IgKGF1dG8mIG1lbWJlciA6IG1f
bWVtYmVycykKICAgICAgICAgc29ydGVkTWVtYmVycy5hcHBlbmQobWVtYmVyKTsKICAgICBzdGQ6
OnNvcnQoc29ydGVkTWVtYmVycy5iZWdpbigpLCBzb3J0ZWRNZW1iZXJzLmVuZCgpLCBbXShhdXRv
JiBhLCBhdXRvJiBiKSB7Ci0gICAgICAgIHJldHVybiBpc19sdChkb2N1bWVudE9yZGVyKGEsIGIp
KTsKKyAgICAgICAgcmV0dXJuIGlzX2x0KHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KGEsIGIpKTsK
ICAgICB9KTsKICAgICByZXR1cm4gc29ydGVkTWVtYmVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2ltcGxl
UmFuZ2UuY3BwCmluZGV4IDQzNmNhZjNlY2I4NDViMWQ2OGQ3MmE5NzM2MTJkYTZhZjllZjY1NTIu
LmIxMTZjMDE2MjAzNGQzYzNhOTZhMmEzYjc5MzA0MTRmMWU2OTliN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NpbXBsZVJhbmdlLmNwcApAQCAtMjYzLDEwICsyNjMsMjAgQEAgdGVtcGxhdGU8VHJlZVR5cGUg
dHJlZVR5cGU+IGJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIG91dGVyUmFuZ2UsIGNv
bnN0IFMKIH0KIAogdGVtcGxhdGUgYm9vbCBjb250YWluczxUcmVlPihjb25zdCBTaW1wbGVSYW5n
ZSYsIGNvbnN0IFNpbXBsZVJhbmdlJik7Cit0ZW1wbGF0ZSBib29sIGNvbnRhaW5zPENvbXBvc2Vk
VHJlZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYpOwogCi1ib29sIGNv
bnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdlJiBvdXRlclJhbmdlLCBjb25zdCBTaW1wbGVSYW5nZSYg
aW5uZXJSYW5nZSkKK2Jvb2wgY29udGFpbnNGb3JUZXN0aW5nKFRyZWVUeXBlIHR5cGUsIGNvbnN0
IFNpbXBsZVJhbmdlJiBvdXRlclJhbmdlLCBjb25zdCBTaW1wbGVSYW5nZSYgaW5uZXJSYW5nZSkK
IHsKLSAgICByZXR1cm4gY29udGFpbnM8Q29tcG9zZWRUcmVlPihvdXRlclJhbmdlLCBpbm5lclJh
bmdlKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFRyZWU6CisgICAgICAgIHJldHVy
biBjb250YWluczxUcmVlPihvdXRlclJhbmdlLCBpbm5lclJhbmdlKTsKKyAgICBjYXNlIFNoYWRv
d0luY2x1ZGluZ1RyZWU6CisgICAgICAgIHJldHVybiBjb250YWluczxTaGFkb3dJbmNsdWRpbmdU
cmVlPihvdXRlclJhbmdlLCBpbm5lclJhbmdlKTsKKyAgICBjYXNlIENvbXBvc2VkVHJlZToKKyAg
ICAgICAgcmV0dXJuIGNvbnRhaW5zPENvbXBvc2VkVHJlZT4ob3V0ZXJSYW5nZSwgaW5uZXJSYW5n
ZSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
IH0KIAogdGVtcGxhdGU8VHJlZVR5cGUgdHJlZVR5cGU+IGJvb2wgaW50ZXJzZWN0cyhjb25zdCBT
aW1wbGVSYW5nZSYgYSwgY29uc3QgU2ltcGxlUmFuZ2UmIGIpCkBAIC0zMDgsMTAgKzMxOCwyMCBA
QCB0ZW1wbGF0ZTxUcmVlVHlwZSB0cmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVS
YW5nZSYgcmFuZ2UsIGNvbnN0IE5vZGUmCiB9CiAKIHRlbXBsYXRlIGJvb2wgY29udGFpbnM8VHJl
ZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7Cit0ZW1wbGF0ZSBib29sIGNvbnRh
aW5zPENvbXBvc2VkVHJlZT4oY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiAKLWJv
b2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBjb25zdCBOb2RlJiBub2RlKQor
Ym9vbCBjb250YWluc0ZvclRlc3RpbmcoVHJlZVR5cGUgdHlwZSwgY29uc3QgU2ltcGxlUmFuZ2Um
IHJhbmdlLCBjb25zdCBOb2RlJiBub2RlKQogewotICAgIHJldHVybiBjb250YWluczxDb21wb3Nl
ZFRyZWU+KHJhbmdlLCBub2RlKTsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFRyZWU6
CisgICAgICAgIHJldHVybiBjb250YWluczxUcmVlPihyYW5nZSwgbm9kZSk7CisgICAgY2FzZSBT
aGFkb3dJbmNsdWRpbmdUcmVlOgorICAgICAgICByZXR1cm4gY29udGFpbnM8U2hhZG93SW5jbHVk
aW5nVHJlZT4ocmFuZ2UsIG5vZGUpOworICAgIGNhc2UgQ29tcG9zZWRUcmVlOgorICAgICAgICBy
ZXR1cm4gY29udGFpbnM8Q29tcG9zZWRUcmVlPihyYW5nZSwgbm9kZSk7CisgICAgfQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogdGVtcGxhdGU8VHJl
ZVR5cGUgdHJlZVR5cGU+IGJvb2wgY29udGFpbnMoY29uc3QgTm9kZSYgb3V0ZXIsIGNvbnN0IE5v
ZGUmIGlubmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaW1wbGVSYW5nZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKaW5kZXggMDFiMjMwZTYyNzgxNDlj
YzhmYWJlMjJkZjQ0NDM5NmY4ZDAyODQ3Ni4uZTE1ZjYxNjc2NDExNjY0ZjNjNjcwY2ZhYWJmNTA4
OTlkYjI5Yjc2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NpbXBsZVJhbmdlLmgKQEAgLTY4LDYgKzY4LDkgQEAg
dGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBib29sIGNvbnRhaW5zKGNvbnN0IFNpbXBsZVJhbmdl
JiwgY29uc3QgT3B0aW9uYWw8Qm91bmQKIHRlbXBsYXRlPFRyZWVUeXBlPiBib29sIGNvbnRhaW5z
KGNvbnN0IFNpbXBsZVJhbmdlJiBvdXRlclJhbmdlLCBjb25zdCBTaW1wbGVSYW5nZSYgaW5uZXJS
YW5nZSk7CiB0ZW1wbGF0ZTxUcmVlVHlwZT4gYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5n
ZSYsIGNvbnN0IE5vZGUmKTsKIAorV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc0ZvclRlc3Rp
bmcoVHJlZVR5cGUsIGNvbnN0IFNpbXBsZVJhbmdlJiBvdXRlclJhbmdlLCBjb25zdCBTaW1wbGVS
YW5nZSYgaW5uZXJSYW5nZSk7CitXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zRm9yVGVzdGlu
ZyhUcmVlVHlwZSwgY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CisKIHRlbXBsYXRl
PFRyZWVUeXBlPiBib29sIGludGVyc2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1w
bGVSYW5nZSYpOwogdGVtcGxhdGU8VHJlZVR5cGU+IGJvb2wgaW50ZXJzZWN0cyhjb25zdCBTaW1w
bGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKIApAQCAtODQsMTQgKzg3LDEyIEBAIE9mZnNldFJhbmdl
IGNoYXJhY3RlckRhdGFPZmZzZXRSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUm
KTsKIC8vIEZJWE1FOiBTdGFydCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgZGVwcmVjYXRlZCBzaW5j
ZSB0aGV5IHNpbGVudGx5IGRlZmF1bHQgdG8gQ29tcG9zZWRUcmVlLgogCiBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Tm9kZT4gY29tbW9uSW5jbHVzaXZlQW5jZXN0b3IoY29uc3QgU2ltcGxlUmFuZ2Um
KTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgY29udGFpbnMoY29uc3QgU2ltcGxlUmFuZ2UmIG91dGVy
UmFuZ2UsIGNvbnN0IFNpbXBsZVJhbmdlJiBpbm5lclJhbmdlKTsKIHRlbXBsYXRlPHR5cGVuYW1l
IFRyZWVUeXBlPiBib29sIGludGVyc2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1w
bGVSYW5nZSYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBpbnRlcnNlY3RzKGNvbnN0IFNpbXBsZVJh
bmdlJiwgY29uc3QgU2ltcGxlUmFuZ2UmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW50ZXJzZWN0
cyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IE5vZGUmKTsKIFdFQkNPUkVfRVhQT1JUIFNpbXBs
ZVJhbmdlIHVuaW9uUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTaW1wbGVSYW5nZSYp
OwogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2ltcGxlUmFuZ2U+IGludGVyc2VjdGlvbihjb25z
dCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mLCBjb25zdCBPcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsK
IAotV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWlucyhjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0
IE5vZGUmKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFRyZWVUeXBlPiBib29sIGludGVyc2VjdHMoY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGludGVy
c2VjdHMoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBOb2RlJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmcuY3BwCmluZGV4IDZhMzE3YjJjN2NlOGJmNGRmYjc1MGQ5ZTZmODJlY2JiYjIwYjgx
NjcuLmY5N2I5ZjE3YjdiNmIzMzE5MDNmN2I0NDk4NDFiZmYzZWQxNDkwMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMTEyNCw3ICsxMTI0LDcgQEAgc3RhdGljIGJvb2wgaXNW
aXNpYmx5QWRqYWNlbnQoY29uc3QgUG9zaXRpb24mIGZpcnN0LCBjb25zdCBQb3NpdGlvbiYgc2Vj
b25kKQogLy8gQ2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgbm9kZSBp
cyB2aXNpYmx5IGZpdCBpbnNpZGUgc2VsZWN0ZWRSYW5nZQogYm9vbCBpc05vZGVWaXNpYmx5Q29u
dGFpbmVkV2l0aGluKE5vZGUmIG5vZGUsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkKIHsKLSAg
ICBpZiAoY29udGFpbnMocmFuZ2UsIG5vZGUpKQorICAgIGlmIChjb250YWluczxDb21wb3NlZFRy
ZWU+KHJhbmdlLCBub2RlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBhdXRvIHN0YXJ0
UG9zaXRpb24gPSBtYWtlRGVwcmVjYXRlZExlZ2FjeVBvc2l0aW9uKHJhbmdlLnN0YXJ0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggNjliZmNkOWRlOWQ0MDZmNDcz
NTg0MDFlMjM5OWZlNjgzNWQ0Yjc5My4uY2RiN2YzNjZhMjdhZGNmODE0ZmE4OTFhNjE5YzcyYTQy
NDFhODhiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTc4MSw3
ICs3ODEsNyBAQCBFbGVtZW50KiBEcmFnQ29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudChjb25z
dCBGcmFtZSogc291cmNlRnJhbWUsIEVsZW1lbnQqIHN0YQogICAgICAgICBhdXRvJiBzZWxlY3Rp
b24gPSBzb3VyY2VGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgICAgIGJvb2wg
aXNTaW5nbGVBdHRhY2htZW50U2VsZWN0aW9uID0gc2VsZWN0aW9uLnN0YXJ0KCkgPT0gUG9zaXRp
b24oYXR0YWNobWVudC5nZXQoKSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpICYm
IHNlbGVjdGlvbi5lbmQoKSA9PSBQb3NpdGlvbihhdHRhY2htZW50LmdldCgpLCBQb3NpdGlvbjo6
UG9zaXRpb25Jc0FmdGVyQW5jaG9yKTsKICAgICAgICAgYXV0byBzZWxlY3RlZFJhbmdlID0gc2Vs
ZWN0aW9uLmZpcnN0UmFuZ2UoKTsKLSAgICAgICAgaWYgKGlzU2luZ2xlQXR0YWNobWVudFNlbGVj
dGlvbiB8fCAhc2VsZWN0ZWRSYW5nZSB8fCAhY29udGFpbnMoKnNlbGVjdGVkUmFuZ2UsICphdHRh
Y2htZW50KSkgeworICAgICAgICBpZiAoaXNTaW5nbGVBdHRhY2htZW50U2VsZWN0aW9uIHx8ICFz
ZWxlY3RlZFJhbmdlIHx8ICFjb250YWluczxDb21wb3NlZFRyZWU+KCpzZWxlY3RlZFJhbmdlLCAq
YXR0YWNobWVudCkpIHsKICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBEcmFnU291cmNlQWN0aW9u
OjpBdHRhY2htZW50OwogICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQuZ2V0KCk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAyOWE3ZGY2MjY4Mzkw
YTdkMzg2YzZiNjNjODdiOGRiYjhhY2QxNDVjLi5kZDM0NjdjYjg5YzE5MGFjNmQ2MGM2ZjMyZGJl
MDU4OTViMWM2MzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yNzM4
LDcgKzI3MzgsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2V0TgogICAgIC8vIHdpbGwgc2V0IGEg
c2VsZWN0aW9uIGluc2lkZSBpdCwgd2hpY2ggd2lsbCBhbHNvIHNldCB0aGUgZm9jdXNlZCBlbGVt
ZW50LgogICAgIGlmIChlbGVtZW50ICYmIG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7
CiAgICAgICAgIGlmIChhdXRvIHJhbmdlID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS50b05vcm1hbGl6ZWRSYW5nZSgpKSB7Ci0gICAgICAgICAgICBpZiAoY29udGFpbnMoKnJhbmdl
LCAqZWxlbWVudCkgJiYgZWxlbWVudC0+aXNEZXNjZW5kYW50T2YobV9mcmFtZS5kb2N1bWVudCgp
LT5mb2N1c2VkRWxlbWVudCgpKSkKKyAgICAgICAgICAgIGlmIChjb250YWluczxDb21wb3NlZFRy
ZWU+KCpyYW5nZSwgKmVsZW1lbnQpICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBjZmNiNDhlYmY0MzY2
ODEzMjliZWEwYjNlYTQ1NDgxZTU5MWJmMzE2Li4wZjZhYTY3ZTA0ZWQ0M2UxNjMxYWE3NTI5ZTY1
NGZlMTIyY2IzNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTczNiw3ICs3MzYsNyBAQCBhdXRv
IFBhZ2U6OmZpbmRUZXh0TWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMg
b3B0aW9ucywgdW5zaWduZWQgbAogICAgICAgICBpZiAob3B0aW9ucy5jb250YWlucyhCYWNrd2Fy
ZHMpKSB7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gcmVzdWx0LnJhbmdlcy5zaXplKCk7
IGkgPiAwOyAtLWkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlz
IHNob3VsZCBiZSBpc19ndGVxIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIHNhbWUgc3RyaW5nIGZv
dW5kIHR3aWNlIGluIGEgcm93LgotICAgICAgICAgICAgICAgIGlmIChpc19ndChkb2N1bWVudE9y
ZGVyKHNlbGVjdGVkUmFuZ2Uuc3RhcnQsIHJlc3VsdC5yYW5nZXNbaSAtIDFdLmVuZCkpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzX2d0KHRyZWVPcmRlcjxDb21wb3NlZFRyZWU+KHNlbGVjdGVk
UmFuZ2Uuc3RhcnQsIHJlc3VsdC5yYW5nZXNbaSAtIDFdLmVuZCkpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5pbmRleEZvclNlbGVjdGlvbiA9IGkgLSAxOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC03NDQsNyArNzQ0LDcgQEAgYXV0byBQ
YWdlOjpmaW5kVGV4dE1hdGNoZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9w
dGlvbnMsIHVuc2lnbmVkIGwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwLCBzaXplID0gcmVzdWx0LnJhbmdlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VlbXMgbGlrZSB0aGlzIHNob3VsZCBiZSBpc19s
dGVxIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIHNhbWUgc3RyaW5nIGZvdW5kIHR3aWNlIGluIGEg
cm93LgotICAgICAgICAgICAgICAgIGlmIChpc19sdChkb2N1bWVudE9yZGVyKHNlbGVjdGVkUmFu
Z2UuZW5kLCByZXN1bHQucmFuZ2VzW2ldLnN0YXJ0KSkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
aXNfbHQodHJlZU9yZGVyPENvbXBvc2VkVHJlZT4oc2VsZWN0ZWRSYW5nZS5lbmQsIHJlc3VsdC5y
YW5nZXNbaV0uc3RhcnQpKSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5kZXhGb3JT
ZWxlY3Rpb24gPSBpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CkBAIC04NjEsOCArODYxLDggQEAgc3RhdGljIHZvaWQgcmVwbGFjZVJhbmdlcyhQYWdlJiBw
YWdlLCBjb25zdCBWZWN0b3I8RmluZFJlcGxhY2VtZW50UmFuZ2U+JiByYW5nZXMKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBpZiAoZmlyc3RGcmFtZSA9PSBzZWNvbmRGcmFt
ZSkgewotICAgICAgICAgICAgLy8gVXNlIGRvY3VtZW50T3JkZXIgaW5zdGVhZCBvZiBOb2RlOjpj
b21wYXJlRG9jdW1lbnRQb3NpdGlvbiBiZWNhdXNlIHNvbWUgZWRpdGluZyByb290cyBhcmUgaW5z
aWRlIHNoYWRvdyByb290cy4KLSAgICAgICAgICAgIHJldHVybiBpc19ndChkb2N1bWVudE9yZGVy
KCpmaXJzdE5vZGUsICpzZWNvbmROb2RlKSk7CisgICAgICAgICAgICAvLyBNdXN0IG5vdCB1c2Ug
Tm9kZTo6Y29tcGFyZURvY3VtZW50UG9zaXRpb24gaGVyZSBiZWNhdXNlIHNvbWUgZWRpdGluZyBy
b290cyBhcmUgaW5zaWRlIHNoYWRvdyByb290cy4KKyAgICAgICAgICAgIHJldHVybiBpc19ndCh0
cmVlT3JkZXI8Q29tcG9zZWRUcmVlPigqZmlyc3ROb2RlLCAqc2Vjb25kTm9kZSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIGZyYW1lVG9UcmF2ZXJzYWxJbmRleE1hcC5nZXQoZmlyc3RG
cmFtZSkgPiBmcmFtZVRvVHJhdmVyc2FsSW5kZXhNYXAuZ2V0KHNlY29uZEZyYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
CmluZGV4IDM4MmE3ODIxZDk5NDI0MTQxZWQ1MjkyY2QyMzVjODY5NWRmNmFkYWQuLjc0ZDkxOGVi
M2Y5YjY2ZDA3NWIwMzNkNGUzMTg1ODBlNGYzYTg2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtNjMwLDcgKzYz
MCw3IEBAIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodCogU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlcjo6ZmluZFRlbGVwaG9uZU51CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBtX3BvdGVudGlhbEhpZ2hsaWdodHMpIHsKLSAg
ICAgICAgaWYgKGhpZ2hsaWdodC0+dHlwZSgpID09IEhpZ2hsaWdodDo6VGVsZXBob25lTnVtYmVy
VHlwZSAmJiBjb250YWlucyhoaWdobGlnaHQtPnJhbmdlKCksICpzZWxlY3Rpb25SYW5nZSkpCisg
ICAgICAgIGlmIChoaWdobGlnaHQtPnR5cGUoKSA9PSBIaWdobGlnaHQ6OlRlbGVwaG9uZU51bWJl
clR5cGUgJiYgY29udGFpbnM8Q29tcG9zZWRUcmVlPihoaWdobGlnaHQtPnJhbmdlKCksICpzZWxl
Y3Rpb25SYW5nZSkpCiAgICAgICAgICAgICByZXR1cm4gaGlnaGxpZ2h0LmdldCgpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDM5OGMzNzBjY2FhYTgzZTA5
YTc4M2NjMmFhNGUwNzNkNTY2OGM4NzcuLmY2NDJkMTU2ZDQwN2VjZWJlMTMzZjU4NjQ5MzAzZjFl
MzY5ZDI5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTYwMDEsNSAr
NjAwMSw0NCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNlbmRNZWRpYVNlc3Npb25B
Y3Rpb24oTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBjb25zdAogfQogI2VuZGlmCiAKK2NvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwgc3RyaW5nKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykKK3sKKyAgICBp
ZiAoaXNfbHQob3JkZXJpbmcpKQorICAgICAgICByZXR1cm4gImxlc3MiX3M7CisgICAgaWYgKGlz
X2d0KG9yZGVyaW5nKSkKKyAgICAgICAgcmV0dXJuICJncmVhdGVyIl9zOworICAgIGlmIChpc19l
cShvcmRlcmluZykpCisgICAgICAgIHJldHVybiAiZXF1aXZhbGVudCJfczsKKyAgICByZXR1cm4g
InVub3JkZXJlZCJfczsKK30KKworY29uc3RleHByIFRyZWVUeXBlIGNvbnZlcnRUeXBlKEludGVy
bmFsczo6VHJlZVR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIElu
dGVybmFsczo6VHJlZToKKyAgICAgICAgcmV0dXJuIFRyZWU7CisgICAgY2FzZSBJbnRlcm5hbHM6
OlNoYWRvd0luY2x1ZGluZ1RyZWU6CisgICAgICAgIHJldHVybiBTaGFkb3dJbmNsdWRpbmdUcmVl
OworICAgIGNhc2UgSW50ZXJuYWxzOjpDb21wb3NlZFRyZWU6CisgICAgICAgIHJldHVybiBDb21w
b3NlZFRyZWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBU
cmVlOworfQorCitTdHJpbmcgSW50ZXJuYWxzOjp0cmVlT3JkZXIoTm9kZSYgYSwgTm9kZSYgYiwg
VHJlZVR5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gc3RyaW5nKHRyZWVPcmRlckZvclRlc3Rpbmco
Y29udmVydFR5cGUodHlwZSksIGEsIGIpKTsKK30KKworYm9vbCBJbnRlcm5hbHM6OnJhbmdlQ29u
dGFpbnNOb2RlKGNvbnN0IEFic3RyYWN0UmFuZ2UmIHJhbmdlLCBOb2RlJiBub2RlLCBUcmVlVHlw
ZSB0eXBlKQoreworICAgIHJldHVybiBjb250YWluc0ZvclRlc3RpbmcoY29udmVydFR5cGUodHlw
ZSksIG1ha2VTaW1wbGVSYW5nZShyYW5nZSksIG5vZGUpOworfQorCitib29sIEludGVybmFsczo6
cmFuZ2VDb250YWluc1JhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmIG91dGVyUmFuZ2UsIGNvbnN0
IEFic3RyYWN0UmFuZ2UmIGlubmVyUmFuZ2UsIFRyZWVUeXBlIHR5cGUpCit7CisgICAgcmV0dXJu
IGNvbnRhaW5zRm9yVGVzdGluZyhjb252ZXJ0VHlwZSh0eXBlKSwgbWFrZVNpbXBsZVJhbmdlKG91
dGVyUmFuZ2UpLCBtYWtlU2ltcGxlUmFuZ2UoaW5uZXJSYW5nZSkpOworfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCBhZTM4OTIyZGI3
NjNjNDgxNGE5YWVmMzkxZTg1NzZiMTI1NzE4NTkyLi4yOGU2MGJjY2Y3ZGUzMTVkZDBmMDM4NzY0
MDMwZGE1MjM3NjkyNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTQ3LDYg
KzQ3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBYnN0cmFjdFJhbmdlOwog
Y2xhc3MgQW5pbWF0aW9uVGltZWxpbmU7CiBjbGFzcyBBdWRpb0NvbnRleHQ7CiBjbGFzcyBBdWRp
b1RyYWNrOwpAQCAtMTA2Myw2ICsxMDY0LDExIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZW5kTWVkaWFTZXNzaW9uQWN0aW9uKE1lZGlhU2Vzc2lvbiYsIGNvbnN0IE1lZGlhU2Vz
c2lvbkFjdGlvbkRldGFpbHMmKTsKICNlbmRpZgogCisgICAgZW51bSBUcmVlVHlwZSA6IHVpbnQ4
X3QgeyBUcmVlLCBTaGFkb3dJbmNsdWRpbmdUcmVlLCBDb21wb3NlZFRyZWUgfTsKKyAgICBTdHJp
bmcgdHJlZU9yZGVyKE5vZGUmLCBOb2RlJiwgVHJlZVR5cGUpOworICAgIGJvb2wgcmFuZ2VDb250
YWluc05vZGUoY29uc3QgQWJzdHJhY3RSYW5nZSYsIE5vZGUmLCBUcmVlVHlwZSk7CisgICAgYm9v
bCByYW5nZUNvbnRhaW5zUmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSYsIGNvbnN0IEFic3RyYWN0
UmFuZ2UmLCBUcmVlVHlwZSk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERv
Y3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGI4YjU3NGQ2OTE5NjNkN2NiOTg2Nzg0NGYy
MjJhYjEwZDU1Y2I1NDQuLmVmNjdhOTA0Y2I1NjI4ZjI0NGQwYmIwZDg2NDM0NjIxMjUxYjBjOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTkzLDYgKzkzLDEyIEBAIGVu
dW0gQ29udGVudFNpemVDYXRlZ29yeSB7CiAgICAgIlhYWEwiCiB9OwogCitlbnVtIFRyZWVUeXBl
IHsKKyAgICAiVHJlZSIsCisgICAgIlNoYWRvd0luY2x1ZGluZ1RyZWUiLAorICAgICJDb21wb3Nl
ZFRyZWUiCit9OworCiBbCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBP
UlQsCiAgICAgQ29uZGl0aW9uYWw9VklERU8sCkBAIC05NTgsNCArOTY0LDggQEAgZW51bSBDb250
ZW50U2l6ZUNhdGVnb3J5IHsKIAogICAgIFtDb25kaXRpb25hbD1NRURJQV9TRVNTSU9OLCBNYXlU
aHJvd0V4Y2VwdGlvbl0gZG91YmxlIGN1cnJlbnRNZWRpYVNlc3Npb25Qb3NpdGlvbihNZWRpYVNl
c3Npb24gc2Vzc2lvbik7CiAgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NFU1NJT04sIE1heVRocm93
RXhjZXB0aW9uXSB1bmRlZmluZWQgc2VuZE1lZGlhU2Vzc2lvbkFjdGlvbihNZWRpYVNlc3Npb24g
c2Vzc2lvbiwgTWVkaWFTZXNzaW9uQWN0aW9uRGV0YWlscyBhY3Rpb25EZXRhaWxzKTsKKworICAg
IERPTVN0cmluZyB0cmVlT3JkZXIoTm9kZSBhLCBOb2RlIGIsIG9wdGlvbmFsIFRyZWVUeXBlIHRy
ZWUgPSAiVHJlZSIpOworICAgIGJvb2xlYW4gcmFuZ2VDb250YWluc05vZGUoQWJzdHJhY3RSYW5n
ZSByYW5nZSwgTm9kZSBub2RlLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRyZWUiKTsKKyAg
ICBib29sZWFuIHJhbmdlQ29udGFpbnNSYW5nZShBYnN0cmFjdFJhbmdlIG91dGVyUmFuZ2UsIEFi
c3RyYWN0UmFuZ2UgaW5uZXJSYW5nZSwgb3B0aW9uYWwgVHJlZVR5cGUgdHJlZSA9ICJUcmVlIik7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9X
ZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dl
YlBhZ2VHTGliLmNwcAppbmRleCBiZjdhYzY2OTkxZGYzNmY0ZGFhYTAyOTY0YjA1NDVmZjFhOTU5
OTM3Li5hOWM1ZWUzZjFiY2Y1NGMzNDBkNThmZTZmNDgyNDBjN2FhZmQzYmI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNw
cApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0
ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgICAgIGF1dG8g
c3Vycm91bmRpbmdTdGFydCA9IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQoc2VsZWN0aW9uU3RhcnQp
OwogICAgICAgICBhdXRvIHN1cnJvdW5kaW5nUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3Vycm91
bmRpbmdTdGFydCwgZW5kT2ZFZGl0YWJsZUNvbnRlbnQoc2VsZWN0aW9uU3RhcnQpKTsKICAgICAg
ICAgYXV0byBjb21wb3NpdGlvblJhbmdlID0gZnJhbWUuZWRpdG9yKCkuY29tcG9zaXRpb25SYW5n
ZSgpOwotICAgICAgICBpZiAoc3Vycm91bmRpbmdSYW5nZSAmJiBjb21wb3NpdGlvblJhbmdlICYm
IGNvbnRhaW5zKCpzdXJyb3VuZGluZ1JhbmdlLCAqY29tcG9zaXRpb25SYW5nZSkpIHsKKyAgICAg
ICAgaWYgKHN1cnJvdW5kaW5nUmFuZ2UgJiYgY29tcG9zaXRpb25SYW5nZSAmJiBjb250YWluczxD
b21wb3NlZFRyZWU+KCpzdXJyb3VuZGluZ1JhbmdlLCAqY29tcG9zaXRpb25SYW5nZSkpIHsKICAg
ICAgICAgICAgIGF1dG8gYmVmb3JlVGV4dCA9IHBsYWluVGV4dCh7IHN1cnJvdW5kaW5nUmFuZ2Ut
PnN0YXJ0LCBjb21wb3NpdGlvblJhbmdlLT5zdGFydCB9KTsKICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnN1cnJvdW5kaW5nQ29udGV4dCA9IGJlZm9yZVRleHQgKyBwbGFpblRleHQoeyBjb21w
b3NpdGlvblJhbmdlLT5lbmQsIHN1cnJvdW5kaW5nUmFuZ2UtPmVuZCB9KTsKICAgICAgICAgICAg
IHBvc3RMYXlvdXREYXRhLnN1cnJvdW5kaW5nQ29udGV4dEN1cnNvclBvc2l0aW9uID0gYmVmb3Jl
VGV4dC5sZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBjNmZhOTViZDRhMzRlMDA0ZTlhZjY5YjY4Y2Q4NWVlYmZmNDUxY2YxLi5mNjQw
MmE3YmQ0Nzk5YWI4YmVlOTQyZjM2MDE2ZjhkZTMyZTUzNGQ4IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEt
MDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFN0YXJ0IHJlbW92
aW5nIGZ1bmN0aW9ucyB0aGF0IGltcGxpY2l0bHkgdXNlIGNvbXBvc2VkIHRyZWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQyNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwOiBNb3ZlZCB0aGUgdGVzdHMgb2YgZG9jdW1l
bnRPcmRlcgorICAgICAgICBmb3IgdHdvIG5vZGVzIGFuZCBjb250YWlucyBmb3IgcmFuZ2UvcmFu
Z2Ugb3IgcmFuZ2Uvbm9kZSBpbnRvIGludGVybmFscy1iYXNlZCB0ZXN0cworICAgICAgICBpbiB0
aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5LiBFdmVudHVhbGx5IHdlJ2xsIG1vdmUgdGhlIHJlc3Qg
b2YgdGhlc2UgdGVzdHMsIHRvby4KKwogMjAyMC0xMS0wMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHJlbWFpbmluZyBhbHRlcm5hdGl2ZSBwcmVmZXJl
bmNlIHNldHRpbmcgbWVjaGFuaXNtcyBmcm9tIExheW91dFRlc3RzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRG9jdW1lbnRPcmRlci5jcHAKaW5kZXggNjdkMTk3
YjVjNGNhNGY1YzIzODQ5ODBmOGNiYzg0MjYwMWE4M2RlOC4uODNkNmZkZWU4M2QyMmJiZjI2ZTY5
YTE5NTYxZTM2MWY0YjA1NGJmNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0RvY3VtZW50T3JkZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Eb2N1bWVudE9yZGVyLmNwcApAQCAtNDQsMTAgKzQ0LDYgQEAKICNkZWZpbmUg
RVhQRUNUX0xFU1MoYSwgYikgRVhQRUNUX0JPVEgoYSwgYiwgImxlc3MiLCAiZ3JlYXRlciIpCiAj
ZGVmaW5lIEVYUEVDVF9VTk9SREVSRUQoYSwgYikgRVhQRUNUX0JPVEgoYSwgYiwgInVub3JkZXJl
ZCIsICJ1bm9yZGVyZWQiKQogCi0jZGVmaW5lIEVYUEVDVF9DT05UQUlOU19TRUxGKGEpIEVYUEVD
VF9UUlVFKGNvbnRhaW5zKGEsIGEpKQotI2RlZmluZSBFWFBFQ1RfTkVTVEVEKGEsIGIpIGRvIHsg
RVhQRUNUX1RSVUUoY29udGFpbnMoYSwgYikpOyBFWFBFQ1RfRkFMU0UoY29udGFpbnMoYiwgYSkp
OyB9IHdoaWxlICgwKQotI2RlZmluZSBFWFBFQ1RfTk9UX0NPTlRBSU5FRChhLCBiKSBkbyB7IEVY
UEVDVF9GQUxTRShjb250YWlucyhhLCBiKSk7IEVYUEVDVF9GQUxTRShjb250YWlucyhiLCBhKSk7
IH0gd2hpbGUgKDApCi0KICNkZWZpbmUgRVhQRUNUX0lOVEVSU0VDVFNfU0VMRihhKSBFWFBFQ1Rf
VFJVRShpbnRlcnNlY3RzKGEsIGEpKQogI2RlZmluZSBFWFBFQ1RfSU5URVJTRUNUU19CT1RIX1dB
WVMoYSwgYikgZG8geyBFWFBFQ1RfVFJVRShpbnRlcnNlY3RzKGEsIGIpKTsgRVhQRUNUX1RSVUUo
aW50ZXJzZWN0cyhiLCBhKSk7IH0gd2hpbGUgKDApCiAjZGVmaW5lIEVYUEVDVF9OT1RfSU5URVJT
RUNUSU5HX0JPVEhfV0FZUyhhLCBiKSBkbyB7IEVYUEVDVF9GQUxTRShpbnRlcnNlY3RzKGEsIGIp
KTsgRVhQRUNUX0ZBTFNFKGludGVyc2VjdHMoYiwgYSkpOyB9IHdoaWxlICgwKQpAQCAtOTMsNzcg
Kzg5LDYgQEAgc3RhdGljIFBhcnRpYWxPcmRlcmluZyBvcGVyYXRvci0oUGFydGlhbE9yZGVyaW5n
IG9yZGVyaW5nKQogICAgIHJldHVybiBvcmRlcmluZzsKIH0KIAotVEVTVChEb2N1bWVudE9yZGVy
LCBOb2RlKQotewotICAgIEhUTUxOYW1lczo6aW5pdCgpOwotCi0gICAgYXV0byBkb2N1bWVudCA9
IGNyZWF0ZURvY3VtZW50KCk7Ci0gICAgYXV0byYgYm9keSA9ICpkb2N1bWVudC0+Ym9keSgpOwot
Ci0gICAgRVhQRUNUX0VRVUlWQUxFTlQoZG9jdW1lbnQsIGRvY3VtZW50KTsKLQotICAgIEVYUEVD
VF9FUVVJVkFMRU5UKGJvZHksIGJvZHkpOwotICAgIEVYUEVDVF9MRVNTKGRvY3VtZW50LCBib2R5
KTsKLSAgICBFWFBFQ1RfTEVTUyhkb2N1bWVudCwgYm9keSk7Ci0KLSAgICBhdXRvIGEgPSBIVE1M
RGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBFWFBFQ1RfRVFVSVZBTEVOVChhLCBh
KTsKLSAgICBFWFBFQ1RfVU5PUkRFUkVEKGJvZHksIGEpOwotICAgIEVYUEVDVF9VTk9SREVSRUQo
YSwgYm9keSk7Ci0KLSAgICBib2R5LmFwcGVuZENoaWxkKGEpOwotICAgIEVYUEVDVF9MRVNTKGJv
ZHksIGEpOwotICAgIEVYUEVDVF9MRVNTKGJvZHksIGEpOwotICAgIEVYUEVDVF9FUVVJVkFMRU5U
KGEsIGEpOwotCi0gICAgYXV0byBiID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
Ci0gICAgYm9keS5hcHBlbmRDaGlsZChiKTsKLSAgICBFWFBFQ1RfTEVTUyhib2R5LCBiKTsKLSAg
ICBFWFBFQ1RfTEVTUyhib2R5LCBiKTsKLSAgICBFWFBFQ1RfTEVTUyhhLCBiKTsKLSAgICBFWFBF
Q1RfTEVTUyhhLCBiKTsKLQotICAgIGF1dG8gYyA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQpOwotICAgIGItPmFwcGVuZENoaWxkKGMpOwotICAgIEVYUEVDVF9MRVNTKGJvZHksIGMp
OwotICAgIEVYUEVDVF9MRVNTKGJvZHksIGMpOwotICAgIEVYUEVDVF9MRVNTKGEsIGMpOwotICAg
IEVYUEVDVF9MRVNTKGIsIGMpOwotICAgIEVYUEVDVF9MRVNTKGEsIGMpOwotICAgIEVYUEVDVF9M
RVNTKGIsIGMpOwotCi0gICAgYXV0byBkID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7Ci0gICAgYS0+YXBwZW5kQ2hpbGQoZCk7Ci0gICAgRVhQRUNUX0xFU1MoYm9keSwgZCk7Ci0g
ICAgRVhQRUNUX0xFU1MoYm9keSwgZCk7Ci0gICAgRVhQRUNUX0xFU1MoYSwgZCk7Ci0gICAgRVhQ
RUNUX0xFU1MoZCwgYik7Ci0gICAgRVhQRUNUX0xFU1MoZCwgYyk7Ci0gICAgRVhQRUNUX0xFU1Mo
YSwgZCk7Ci0gICAgRVhQRUNUX0xFU1MoZCwgYik7Ci0gICAgRVhQRUNUX0xFU1MoZCwgYyk7Ci0K
LSAgICBhdXRvIGUgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBhdXRv
IGYgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBlLT5hcHBlbmRDaGls
ZChmKTsKLSAgICBFWFBFQ1RfVU5PUkRFUkVEKGJvZHksIGYpOwotICAgIEVYUEVDVF9VTk9SREVS
RUQoZiwgYm9keSk7Ci0KLSAgICBhdXRvIGcgPSBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQpOwotICAgIGMtPmFwcGVuZENoaWxkKGcpOwotICAgIEVYUEVDVF9MRVNTKGJvZHks
IGcpOwotCi0gICAgYXV0byYgaCA9ICpnLT5pbm5lclRleHRFbGVtZW50KCk7Ci0gICAgRVhQRUNU
X0xFU1MoYm9keSwgaCk7Ci0KLSAgICBhdXRvJiBpID0gYS0+YXR0YWNoU2hhZG93KHsgU2hhZG93
Um9vdE1vZGU6OkNsb3NlZCB9KS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKLSAgICBFWFBFQ1RfTEVT
Uyhib2R5LCBpKTsKLSAgICBFWFBFQ1RfTEVTUyhpLCBkKTsKLSAgICBFWFBFQ1RfTEVTUyhpLCBi
KTsKLQotICAgIC8vIEZJWE1FOiBBZGQgdGVzdHMgdGhhdCBjb3ZlciBzbG90cyBhbmQgYXNzaWdu
bWVudC4KLX0KLQogVEVTVChEb2N1bWVudE9yZGVyLCBCb3VuZGFyeVBvaW50T2Zmc2V0WmVybykK
IHsKICAgICBhdXRvIGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQoKTsKQEAgLTUzNSw2MSArNDYw
LDYgQEAgVEVTVChEb2N1bWVudE9yZGVyLCBJc1BvaW50SW5SYW5nZSkKIAogI2VuZGlmCiAKLVRF
U1QoRG9jdW1lbnRPcmRlciwgUmFuZ2VDb250YWluc1JhbmdlKQotewotICAgIGF1dG8gZG9jdW1l
bnQgPSBjcmVhdGVEb2N1bWVudCgpOwotICAgIGF1dG8mIGRvY3VtZW50RWxlbWVudCA9ICpkb2N1
bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgYXV0byYgYm9keSA9ICpkb2N1bWVudC0+Ym9k
eSgpOwotCi0gICAgRVhQRUNUX0NPTlRBSU5TX1NFTEYobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNv
bnRlbnRzKGRvY3VtZW50KSk7Ci0gICAgRVhQRUNUX0NPTlRBSU5TX1NFTEYobWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50RWxlbWVudCkpOwotICAgIEVYUEVDVF9DT05UQUlO
U19TRUxGKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSk7Ci0KLSAgICBFWFBF
Q1RfTkVTVEVEKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIG1ha2VS
YW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudEVsZW1lbnQpKTsKLSAgICBFWFBFQ1Rf
TkVTVEVEKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIG1ha2VSYW5n
ZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSk7Ci0gICAgRVhQRUNUX05FU1RFRChtYWtlUmFu
Z2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnRFbGVtZW50KSwgbWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKGJvZHkpKTsKLQotICAgIEVYUEVDVF9ORVNURUQobWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKGRvY3VtZW50RWxlbWVudCkpOwotCi0gICAgRVhQRUNUX05FU1RFRChtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnRFbGVtZW50KSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKGJvZHkpKTsKLQotICAgIEVYUEVDVF9ORVNURUQobWFrZVJhbmdlU2VsZWN0aW5n
Tm9kZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50
KGRvY3VtZW50LCAwKSkpOwotICAgIEVYUEVDVF9ORVNURUQobWFrZVJhbmdlU2VsZWN0aW5nTm9k
ZUNvbnRlbnRzKGRvY3VtZW50KSwgbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGRv
Y3VtZW50LCAxKSkpOwotICAgIEVYUEVDVF9OT1RfQ09OVEFJTkVEKG1ha2VSYW5nZVNlbGVjdGlu
Z05vZGVDb250ZW50cyhkb2N1bWVudCksIG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2lu
dChkb2N1bWVudCwgMikpKTsKLQotICAgIEVYUEVDVF9ORVNURUQobWFrZVNpbXBsZVJhbmdlKG1h
a2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAwKSwgbWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQs
IDIpKSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50KSk7Ci0gICAgRVhQ
RUNUX05PVF9DT05UQUlORUQobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGRvY3VtZW50
KSwgbWFrZVNpbXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAxKSwgbWFrZUJv
dW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDIpKSk7Ci0KLSAgICBFWFBFQ1RfTk9UX0NPTlRBSU5FRCht
YWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRh
cnlQb2ludChkb2N1bWVudEVsZW1lbnQsIDApKSwgbWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRl
bnRzKGJvZHkpKTsKLSAgICBFWFBFQ1RfTkVTVEVEKG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRh
cnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDApKSwgbWFrZVNp
bXBsZVJhbmdlKG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDApKSk7Ci0KLSAgICBhdXRvIGEgPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBFWFBFQ1RfTk9UX0NPTlRBSU5F
RChtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZG9jdW1lbnQpLCBtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlQ29udGVudHMoYSkpOwotCi0gICAgYm9keS5hcHBlbmRDaGlsZChhKTsKLQotICAg
IGF1dG8gYiA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGJvZHkuYXBw
ZW5kQ2hpbGQoYik7Ci0KLSAgICBhdXRvIGMgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKLSAgICBiLT5hcHBlbmRDaGlsZChjKTsKLQotICAgIGF1dG8gZCA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGEtPmFwcGVuZENoaWxkKGQpOwotCi0gICAgYXV0
byBlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgYXV0byBmID0gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgZS0+YXBwZW5kQ2hpbGQoZik7Ci0g
ICAgRVhQRUNUX05PVF9DT05UQUlORUQobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKGJv
ZHkpLCBtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMoZikpOwotCi0gICAgYXV0byBnID0g
SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBhdXRvJiBoID0gKmct
PmlubmVyVGV4dEVsZW1lbnQoKTsKLSAgICBjLT5hcHBlbmRDaGlsZChnKTsKLSAgICBFWFBFQ1Rf
TkVTVEVEKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhib2R5KSwgbWFrZVJhbmdlU2Vs
ZWN0aW5nTm9kZUNvbnRlbnRzKGgpKTsKLQotICAgIC8vIEZJWE1FOiBBZGQgdGVzdHMgdGhhdCBj
b3ZlciBzaGFkb3cgdHJlZXMuCi19Ci0KIFRFU1QoRG9jdW1lbnRPcmRlciwgUmFuZ2VJbnRlcnNl
Y3RzUmFuZ2UpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IGNyZWF0ZURvY3VtZW50KCk7CkBAIC02
NDUsNTAgKzUxNSw2IEBAIFRFU1QoRG9jdW1lbnRPcmRlciwgUmFuZ2VJbnRlcnNlY3RzUmFuZ2Up
CiAgICAgLy8gRklYTUU6IEFkZCB0ZXN0cyB0aGF0IGNvdmVyIHNoYWRvdyB0cmVlcy4KIH0KIAot
VEVTVChEb2N1bWVudE9yZGVyLCBSYW5nZUNvbnRhaW5zTm9kZSkKLXsKLSAgICBhdXRvIGRvY3Vt
ZW50ID0gY3JlYXRlRG9jdW1lbnQoKTsKLSAgICBhdXRvJiBkb2N1bWVudEVsZW1lbnQgPSAqZG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIGF1dG8mIGJvZHkgPSAqZG9jdW1lbnQtPmJv
ZHkoKTsKLQotICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyhkb2N1bWVudCksIGRvY3VtZW50RWxlbWVudCkpOwotICAgIEVYUEVDVF9UUlVFKGNv
bnRhaW5zKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIGJvZHkpKTsK
LSAgICBFWFBFQ1RfVFJVRShjb250YWlucyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
ZG9jdW1lbnRFbGVtZW50KSwgYm9keSkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cyhkb2N1bWVudCksIGRvY3VtZW50KSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQb2ludChk
b2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50LCAyKSksIGRvY3VtZW50KSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VTaW1wbGVSYW5nZShtYWtlQm91bmRhcnlQ
b2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGRvY3VtZW50RWxlbWVudCwgMCkp
LCBib2R5KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VTaW1wbGVSYW5nZShtYWtl
Qm91bmRhcnlQb2ludChkb2N1bWVudCwgMCksIG1ha2VCb3VuZGFyeVBvaW50KGJvZHksIDApKSwg
Ym9keSkpOwotICAgIEVYUEVDVF9GQUxTRShjb250YWlucyhtYWtlU2ltcGxlUmFuZ2UobWFrZUJv
dW5kYXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQb2ludChib2R5LCAxKSksIGJv
ZHkpKTsKLSAgICBFWFBFQ1RfVFJVRShjb250YWlucyhtYWtlU2ltcGxlUmFuZ2UobWFrZUJvdW5k
YXJ5UG9pbnQoZG9jdW1lbnQsIDApLCBtYWtlQm91bmRhcnlQb2ludChkb2N1bWVudEVsZW1lbnQs
IDEpKSwgYm9keSkpOwotCi0gICAgYXV0byBhID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGNvbnRhaW5zKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVD
b250ZW50cyhkb2N1bWVudCksIGEpKTsKLQotICAgIGJvZHkuYXBwZW5kQ2hpbGQoYSk7Ci0KLSAg
ICBhdXRvIGIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBib2R5LmFw
cGVuZENoaWxkKGIpOwotCi0gICAgYXV0byBjID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7Ci0gICAgYi0+YXBwZW5kQ2hpbGQoYyk7Ci0KLSAgICBhdXRvIGQgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICBhLT5hcHBlbmRDaGlsZChkKTsKLQotICAgIGF1
dG8gZSA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGF1dG8gZiA9IEhU
TUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGUtPmFwcGVuZENoaWxkKGYpOwot
ICAgIEVYUEVDVF9GQUxTRShjb250YWlucyhtYWtlUmFuZ2VTZWxlY3RpbmdOb2RlQ29udGVudHMo
Ym9keSksIGYpKTsKLQotICAgIGF1dG8gZyA9IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7Ci0gICAgYXV0byYgaCA9ICpnLT5pbm5lclRleHRFbGVtZW50KCk7Ci0gICAgYy0+
YXBwZW5kQ2hpbGQoZyk7Ci0gICAgRVhQRUNUX1RSVUUoY29udGFpbnMobWFrZVJhbmdlU2VsZWN0
aW5nTm9kZUNvbnRlbnRzKGJvZHkpLCBoKSk7Ci0KLSAgICAvLyBGSVhNRTogQWRkIHRlc3RzIHRo
YXQgY292ZXIgc2hhZG93IHRyZWVzLgotfQotCiBURVNUKERvY3VtZW50T3JkZXIsIFJhbmdlSW50
ZXJzZWN0c05vZGUpCiB7CiAgICAgYXV0byBkb2N1bWVudCA9IGNyZWF0ZURvY3VtZW50KCk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMmFjY2Q2Yjk2NDkzMmMxYTBjMmY3MzYyOTBiMTVlMmRkNWVkYzEzZi4uNDIyOTBlNzky
OTdiYmY0M2U0MDJkNGU3NmJmMzQwODcxZTNjODU2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDIwLTExLTAxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBTdGFy
dCByZW1vdmluZyBmdW5jdGlvbnMgdGhhdCBpbXBsaWNpdGx5IHVzZSBjb21wb3NlZCB0cmVlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg0MjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9t
L3JhbmdlQ29udGFpbnNOb2RlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vcmFuZ2VDb250YWluc05vZGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vcmFu
Z2VDb250YWluc1JhbmdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
cmFuZ2VDb250YWluc1JhbmdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RyZWVP
cmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3RyZWVPcmRlci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgVGhlc2UgdGVzdHMgd2VyZSBmb3JtZXJseSBwYXJ0IG9mIFRl
c3RXZWJLaXRBUEksIGFsdGhvdWdoIHRyZWVPcmRlciB3YXMgbmFtZWQgZG9jdW1lbnRPcmRlci4K
KyAgICAgICAgTW92aW5nIHRvIGludGVybmFscy1zdHlsZSB0ZXN0cyBhdCBSeW9zdWtlJ3Mgc3Vn
Z2VzdGlvbiBzaW5jZSB0aGVzZSBhcmUgbm90IHNvbWV0aGluZyBleHBvc2VkCisgICAgICAgIGFz
IEFQSSBvciBldmVuIFNQSS4KKwogMjAyMC0xMS0wMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtMZWdhY3lJbmxpbmVMYXlvdXRdIFJlbW92ZSBjb2xsYXBzaWJs
ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHdoZW4gaXQgaXMgZm9sbG93ZWQgYnkgYSBoYXJkIGxpbmUg
YnJlYWsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFpbnNOb2Rl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFpbnNOb2RlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWYzNTFjNTI5MjBlOTczMDEzNjY3MWMzYzE0YzdhOGRk
ZjIyYjI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmFuZ2VDb250
YWluc05vZGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3QgdGhlIGNvbnRhaW5z
IGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgcmFuZ2UgY29udGFpbnMgYSBub2RlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc05v
ZGUoY29udGVudHNSYW5nZShkb2N1bWVudCksIGRvY3VtZW50RWxlbWVudCwgJ0NvbXBvc2VkVHJl
ZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFu
Z2UoZG9jdW1lbnQpLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5h
bHMucmFuZ2VDb250YWluc05vZGUoY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQpLCBib2R5
LCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc05v
ZGUoY29udGVudHNSYW5nZShkb2N1bWVudCksIGRvY3VtZW50LCAnQ29tcG9zZWRUcmVlJykgaXMg
ZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAw
LCBkb2N1bWVudCwgMiksIGRvY3VtZW50LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1Mg
aW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudEVs
ZW1lbnQsIDApLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxz
LnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudEVsZW1lbnQsIDEp
LCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29u
dGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAwKSwgYm9keSwgJ0NvbXBvc2VkVHJl
ZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zTm9kZShyYW5nZShkb2N1
bWVudCwgMCwgYm9keSwgMSksIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBp
bnRlcm5hbHMucmFuZ2VDb250YWluc05vZGUocmFuZ2UoZG9jdW1lbnQsIDAsIGRvY3VtZW50RWxl
bWVudCwgMiksIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5y
YW5nZUNvbnRhaW5zTm9kZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgYSwgJ0NvbXBvc2VkVHJl
ZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zTm9kZShjb250ZW50c1Jh
bmdlKGJvZHkpLCBmLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJh
bmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoYm9keSksIGgsICdDb21wb3NlZFRyZWUnKSBp
cyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmFuZ2VDb250YWluc05vZGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFpbnNOb2RlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzk1YzdlOTQ5NjkwODU5ODNiY2QzNGEyM2Q2NDkwMDgxNmUxMDJmZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3JhbmdlQ29udGFpbnNOb2RlLmh0bWwKQEAgLTAs
MCArMSw1NyBAQAorPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9u
KCJUZXN0IHRoZSBjb250YWlucyBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiBhIHJhbmdlIGNvbnRh
aW5zIGEgbm9kZS4iKQorCitmdW5jdGlvbiByYW5nZShzdGFydENvbnRhaW5lciwgc3RhcnRPZmZz
ZXQsIGVuZENvbnRhaW5lciwgZW5kT2Zmc2V0KQoreworICAgIHJldHVybiBuZXcgU3RhdGljUmFu
Z2UoeyBzdGFydENvbnRhaW5lcjogc3RhcnRDb250YWluZXIsIHN0YXJ0T2Zmc2V0OiBzdGFydE9m
ZnNldCwgZW5kQ29udGFpbmVyOiBlbmRDb250YWluZXIsIGVuZE9mZnNldDogZW5kT2Zmc2V0IH0p
Cit9CisKK2Z1bmN0aW9uIGNvbnRlbnRzUmFuZ2Uobm9kZSkKK3sKKyAgICByZXR1cm4gcmFuZ2Uo
bm9kZSwgMCwgbm9kZSwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkKK30KKworbGV0IGRvY3VtZW50
RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKK2xldCBib2R5ID0gZG9jdW1lbnQu
Ym9keTsKKworc2hvdWxkQmVUcnVlKCJpbnRlcm5hbHMucmFuZ2VDb250YWluc05vZGUoY29udGVu
dHNSYW5nZShkb2N1bWVudCksIGRvY3VtZW50RWxlbWVudCwgJ0NvbXBvc2VkVHJlZScpIikKK3No
b3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9j
dW1lbnQpLCBib2R5LCAnQ29tcG9zZWRUcmVlJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxz
LnJhbmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgYm9keSwg
J0NvbXBvc2VkVHJlZScpIik7CisKK3Nob3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRh
aW5zTm9kZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgZG9jdW1lbnQsICdDb21wb3NlZFRyZWUn
KSIpOworc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRv
Y3VtZW50LCAwLCBkb2N1bWVudCwgMiksIGRvY3VtZW50LCAnQ29tcG9zZWRUcmVlJykiKTsKK3No
b3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5zTm9kZShyYW5nZShkb2N1bWVudCwg
MCwgZG9jdW1lbnRFbGVtZW50LCAwKSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91bGRC
ZUZhbHNlKCJpbnRlcm5hbHMucmFuZ2VDb250YWluc05vZGUocmFuZ2UoZG9jdW1lbnQsIDAsIGRv
Y3VtZW50RWxlbWVudCwgMSksIGJvZHksICdDb21wb3NlZFRyZWUnKSIpOworc2hvdWxkQmVGYWxz
ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAw
KSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIik7CitzaG91bGRCZUZhbHNlKCJpbnRlcm5hbHMucmFu
Z2VDb250YWluc05vZGUocmFuZ2UoZG9jdW1lbnQsIDAsIGJvZHksIDEpLCBib2R5LCAnQ29tcG9z
ZWRUcmVlJykiKTsKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKHJh
bmdlKGRvY3VtZW50LCAwLCBkb2N1bWVudEVsZW1lbnQsIDIpLCBib2R5LCAnQ29tcG9zZWRUcmVl
JykiKTsKKworbGV0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorc2hvdWxkQmVG
YWxzZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNOb2RlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQp
LCBhLCAnQ29tcG9zZWRUcmVlJykiKQorCitib2R5LmFwcGVuZENoaWxkKGEpCisKK2xldCBiID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2JvZHkuYXBwZW5kQ2hpbGQoYikKKworbGV0
IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorYi5hcHBlbmRDaGlsZChjKQorCits
ZXQgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCithLmFwcGVuZENoaWxkKGQpCisK
K2xldCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2xldCBmID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2IikKK2UuYXBwZW5kQ2hpbGQoZikKK3Nob3VsZEJlRmFsc2UoImlu
dGVybmFscy5yYW5nZUNvbnRhaW5zTm9kZShjb250ZW50c1JhbmdlKGJvZHkpLCBmLCAnQ29tcG9z
ZWRUcmVlJykiKQorCitsZXQgZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7
CitjLmFwcGVuZENoaWxkKGcpCitsZXQgaCA9IGludGVybmFscy5lbnN1cmVVc2VyQWdlbnRTaGFk
b3dSb290KGcpLmZpcnN0Q2hpbGQKK3Nob3VsZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFp
bnNOb2RlKGNvbnRlbnRzUmFuZ2UoYm9keSksIGgsICdDb21wb3NlZFRyZWUnKSIpCisKKzwvc2Ny
aXB0PgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jh
bmdlQ29udGFpbnNSYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yYW5n
ZUNvbnRhaW5zUmFuZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyYWQ2MjNkZmRjYzM4OGVl
MWI2MjM0M2MxYTlhMmEzNThiOTA2ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9yYW5nZUNvbnRhaW5zUmFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAK
K1Rlc3QgdGhlIGNvbnRhaW5zIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGEgcmFuZ2UgY29udGFp
bnMgYW5vdGhlciByYW5nZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mg
aW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgY29u
dGVudHNSYW5nZShkb2N1bWVudCksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVy
bmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQpLCBj
b250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQ
QVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShib2R5KSwgY29u
dGVudHNSYW5nZShib2R5KSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxz
LnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgY29udGVudHNSYW5n
ZShkb2N1bWVudEVsZW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5h
bHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgY29u
dGVudHNSYW5nZShkb2N1bWVudCksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRl
cm5hbHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBjb250ZW50
c1JhbmdlKGJvZHkpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFu
Z2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoYm9keSksIGNvbnRlbnRzUmFuZ2UoZG9jdW1l
bnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFp
bnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVudCksIGNvbnRlbnRzUmFuZ2UoYm9k
eSksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5z
UmFuZ2UoY29udGVudHNSYW5nZShib2R5KSwgY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQp
LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNS
YW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1l
bnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWlu
c1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgY29udGVudHNSYW5nZShkb2N1
bWVudCksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250
YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnRFbGVtZW50KSwgY29udGVudHNSYW5nZShi
b2R5KSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFp
bnNSYW5nZShjb250ZW50c1JhbmdlKGJvZHkpLCBjb250ZW50c1JhbmdlKGRvY3VtZW50RWxlbWVu
dCksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWlu
c1JhbmdlKGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpLCBjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwg
MCksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5z
UmFuZ2UoY29sbGFwc2VkUmFuZ2UoZG9jdW1lbnQsIDApLCBjb250ZW50c1JhbmdlKGRvY3VtZW50
KSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5z
UmFuZ2UoY29udGVudHNSYW5nZShkb2N1bWVudCksIGNvbGxhcHNlZFJhbmdlKGRvY3VtZW50LCAx
KSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNS
YW5nZShjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMSksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQp
LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNS
YW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgY29sbGFwc2VkUmFuZ2UoZG9jdW1lbnQsIDIp
LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNS
YW5nZShjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwgMiksIGNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQp
LCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNS
YW5nZShyYW5nZShkb2N1bWVudCwgMCwgZG9jdW1lbnQsIDIpLCBjb250ZW50c1JhbmdlKGRvY3Vt
ZW50KSwgJ0NvbXBvc2VkVHJlZScpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFp
bnNSYW5nZShjb250ZW50c1JhbmdlKGRvY3VtZW50KSwgcmFuZ2UoZG9jdW1lbnQsIDAsIGRvY3Vt
ZW50LCAyKSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5yYW5nZUNv
bnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShkb2N1bWVudCksIHJhbmdlKGRvY3VtZW50LCAxLCBk
b2N1bWVudCwgMiksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMucmFu
Z2VDb250YWluc1JhbmdlKHJhbmdlKGRvY3VtZW50LCAxLCBkb2N1bWVudCwgMiksIGNvbnRlbnRz
UmFuZ2UoZG9jdW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxz
LnJhbmdlQ29udGFpbnNSYW5nZShyYW5nZShkb2N1bWVudCwgMCwgZG9jdW1lbnRFbGVtZW50LCAw
KSwgY29udGVudHNSYW5nZShib2R5KSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQQVNTIGlu
dGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShib2R5KSwgcmFuZ2UoZG9j
dW1lbnQsIDAsIGRvY3VtZW50RWxlbWVudCwgMCksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQor
UEFTUyBpbnRlcm5hbHMucmFuZ2VDb250YWluc1JhbmdlKHJhbmdlKGRvY3VtZW50LCAwLCBib2R5
LCAwKSwgY29sbGFwc2VkUmFuZ2UoYm9keSwgMCksICdDb21wb3NlZFRyZWUnKSBpcyB0cnVlCitQ
QVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29sbGFwc2VkUmFuZ2UoYm9keSwgMCks
IHJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAwKSwgJ0NvbXBvc2VkVHJlZScpIGlzIGZhbHNlCitQ
QVNTIGludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoY29udGVudHNSYW5nZShkb2N1bWVudCks
IGNvbnRlbnRzUmFuZ2UoYSksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5h
bHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoYSksIGNvbnRlbnRzUmFuZ2UoZG9j
dW1lbnQpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29u
dGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGJvZHkpLCBjb250ZW50c1JhbmdlKGYpLCAnQ29tcG9z
ZWRUcmVlJykgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250
ZW50c1JhbmdlKGYpLCBjb250ZW50c1JhbmdlKGJvZHkpLCAnQ29tcG9zZWRUcmVlJykgaXMgZmFs
c2UKK1BBU1MgaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZShjb250ZW50c1JhbmdlKGJvZHkp
LCBjb250ZW50c1JhbmdlKGgpLCAnQ29tcG9zZWRUcmVlJykgaXMgdHJ1ZQorUEFTUyBpbnRlcm5h
bHMucmFuZ2VDb250YWluc1JhbmdlKGNvbnRlbnRzUmFuZ2UoaCksIGNvbnRlbnRzUmFuZ2UoYm9k
eSksICdDb21wb3NlZFRyZWUnKSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3JhbmdlQ29udGFpbnNSYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmFuZ2VDb250
YWluc1JhbmdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjYzODAwMDI5ODE5ZDA4ZTZlYmIyOWE3YTBlY2Jm
NzkyNDBkNWM1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jhbmdl
Q29udGFpbnNSYW5nZS5odG1sCkBAIC0wLDAgKzEsODkgQEAKKzxodG1sPjxoZWFkPjwvaGVhZD48
Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCB0aGUgY29udGFpbnMgZnVuY3Rpb24gdGhh
dCBjaGVja3MgaWYgYSByYW5nZSBjb250YWlucyBhbm90aGVyIHJhbmdlLiIpCisKK2Z1bmN0aW9u
IHJhbmdlKHN0YXJ0Q29udGFpbmVyLCBzdGFydE9mZnNldCwgZW5kQ29udGFpbmVyLCBlbmRPZmZz
ZXQpCit7CisgICAgcmV0dXJuIG5ldyBTdGF0aWNSYW5nZSh7IHN0YXJ0Q29udGFpbmVyOiBzdGFy
dENvbnRhaW5lciwgc3RhcnRPZmZzZXQ6IHN0YXJ0T2Zmc2V0LCBlbmRDb250YWluZXI6IGVuZENv
bnRhaW5lciwgZW5kT2Zmc2V0OiBlbmRPZmZzZXQgfSkKK30KKworZnVuY3Rpb24gY29sbGFwc2Vk
UmFuZ2UoY29udGFpbmVyLCBvZmZzZXQpCit7CisgICAgcmV0dXJuIHJhbmdlKGNvbnRhaW5lciwg
b2Zmc2V0LCBjb250YWluZXIsIG9mZnNldCkKK30KKworZnVuY3Rpb24gY29udGVudHNSYW5nZShu
b2RlKQoreworICAgIHJldHVybiByYW5nZShub2RlLCAwLCBub2RlLCBub2RlLmNoaWxkTm9kZXMu
bGVuZ3RoKQorfQorCitmdW5jdGlvbiBzaG91bGRDb250YWluU2VsZihhKQoreworICAgIHNob3Vs
ZEJlVHJ1ZSgiaW50ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZSgiICsgYSArICIsICIgKyBhICsg
IiwgJ0NvbXBvc2VkVHJlZScpIikKK30KKworZnVuY3Rpb24gc2hvdWxkQmVOZXN0ZWQoYSwgYikK
K3sKKyAgICBzaG91bGRCZVRydWUoImludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoIiArIGEg
KyAiLCAiICsgYiArICIsICdDb21wb3NlZFRyZWUnKSIpCisgICAgc2hvdWxkQmVGYWxzZSgiaW50
ZXJuYWxzLnJhbmdlQ29udGFpbnNSYW5nZSgiICsgYiArICIsICIgKyBhICsgIiwgJ0NvbXBvc2Vk
VHJlZScpIikKK30KKworZnVuY3Rpb24gc2hvdWxkTm90Q29udGFpbihhLCBiKQoreworICAgIHNo
b3VsZEJlRmFsc2UoImludGVybmFscy5yYW5nZUNvbnRhaW5zUmFuZ2UoIiArIGEgKyAiLCAiICsg
YiArICIsICdDb21wb3NlZFRyZWUnKSIpCisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLnJh
bmdlQ29udGFpbnNSYW5nZSgiICsgYiArICIsICIgKyBhICsgIiwgJ0NvbXBvc2VkVHJlZScpIikK
K30KKworbGV0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKK2xl
dCBib2R5ID0gZG9jdW1lbnQuYm9keTsKKworc2hvdWxkQ29udGFpblNlbGYoImNvbnRlbnRzUmFu
Z2UoZG9jdW1lbnQpIikKK3Nob3VsZENvbnRhaW5TZWxmKCJjb250ZW50c1JhbmdlKGRvY3VtZW50
RWxlbWVudCkiKQorc2hvdWxkQ29udGFpblNlbGYoImNvbnRlbnRzUmFuZ2UoYm9keSkiKQorCitz
aG91bGRCZU5lc3RlZCgiY29udGVudHNSYW5nZShkb2N1bWVudCkiLCAiY29udGVudHNSYW5nZShk
b2N1bWVudEVsZW1lbnQpIikKK3Nob3VsZEJlTmVzdGVkKCJjb250ZW50c1JhbmdlKGRvY3VtZW50
KSIsICJjb250ZW50c1JhbmdlKGJvZHkpIikKK3Nob3VsZEJlTmVzdGVkKCJjb250ZW50c1Jhbmdl
KGRvY3VtZW50RWxlbWVudCkiLCAiY29udGVudHNSYW5nZShib2R5KSIpCisKK3Nob3VsZEJlTmVz
dGVkKCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb250ZW50c1JhbmdlKGRvY3VtZW50RWxl
bWVudCkiKQorCitzaG91bGRCZU5lc3RlZCgiY29udGVudHNSYW5nZShkb2N1bWVudEVsZW1lbnQp
IiwgImNvbnRlbnRzUmFuZ2UoYm9keSkiKQorCitzaG91bGRCZU5lc3RlZCgiY29udGVudHNSYW5n
ZShkb2N1bWVudCkiLCAiY29sbGFwc2VkUmFuZ2UoZG9jdW1lbnQsIDApIikKK3Nob3VsZEJlTmVz
dGVkKCJjb250ZW50c1JhbmdlKGRvY3VtZW50KSIsICJjb2xsYXBzZWRSYW5nZShkb2N1bWVudCwg
MSkiKQorc2hvdWxkTm90Q29udGFpbigiY29udGVudHNSYW5nZShkb2N1bWVudCkiLCAiY29sbGFw
c2VkUmFuZ2UoZG9jdW1lbnQsIDIpIikKKworc2hvdWxkQmVOZXN0ZWQoInJhbmdlKGRvY3VtZW50
LCAwLCBkb2N1bWVudCwgMikiLCAiY29udGVudHNSYW5nZShkb2N1bWVudCkiKQorc2hvdWxkTm90
Q29udGFpbigiY29udGVudHNSYW5nZShkb2N1bWVudCkiLCAicmFuZ2UoZG9jdW1lbnQsIDEsIGRv
Y3VtZW50LCAyKSIpCisKK3Nob3VsZE5vdENvbnRhaW4oInJhbmdlKGRvY3VtZW50LCAwLCBkb2N1
bWVudEVsZW1lbnQsIDApIiwgImNvbnRlbnRzUmFuZ2UoYm9keSkiKQorc2hvdWxkQmVOZXN0ZWQo
InJhbmdlKGRvY3VtZW50LCAwLCBib2R5LCAwKSIsICJjb2xsYXBzZWRSYW5nZShib2R5LCAwKSIp
CisKK2xldCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK3Nob3VsZE5vdENvbnRh
aW4oImNvbnRlbnRzUmFuZ2UoZG9jdW1lbnQpIiwgImNvbnRlbnRzUmFuZ2UoYSkiKQorCitib2R5
LmFwcGVuZENoaWxkKGEpCisKK2xldCBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikK
K2JvZHkuYXBwZW5kQ2hpbGQoYikKKworbGV0IGMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKQorYi5hcHBlbmRDaGlsZChjKQorCitsZXQgZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpCithLmFwcGVuZENoaWxkKGQpCisKK2xldCBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2IikKK2xldCBmID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKK2UuYXBwZW5k
Q2hpbGQoZikKK3Nob3VsZE5vdENvbnRhaW4oImNvbnRlbnRzUmFuZ2UoYm9keSkiLCAiY29udGVu
dHNSYW5nZShmKSIpCisKK2xldCBnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEi
KTsKK2MuYXBwZW5kQ2hpbGQoZykKK2xldCBoID0gaW50ZXJuYWxzLmVuc3VyZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoZykuZmlyc3RDaGlsZAorc2hvdWxkQmVOZXN0ZWQoImNvbnRlbnRzUmFuZ2UoYm9k
eSkiLCAiY29udGVudHNSYW5nZShoKSIpCisKKzwvc2NyaXB0PgorPC9ib2R5PjwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3RyZWVPcmRlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS90cmVlT3JkZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3
MmViN2RkZTQyZDBmZWM1YmQxNzcxMDdiOTkzZjRkMmY3NTBmOTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS90cmVlT3JkZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NTkgQEAKK1Rlc3QgdGhlIHRyZWUgb3JkZXJpbmcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZG9jdW1lbnQsIGRvY3VtZW50LCAnQ29t
cG9zZWRUcmVlJykgaXMgImVxdWl2YWxlbnQiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYm9k
eSwgYm9keSwgJ0NvbXBvc2VkVHJlZScpIGlzICJlcXVpdmFsZW50IgorUEFTUyBpbnRlcm5hbHMu
dHJlZU9yZGVyKGRvY3VtZW50LCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNT
IGludGVybmFscy50cmVlT3JkZXIoYm9keSwgZG9jdW1lbnQsICdDb21wb3NlZFRyZWUnKSBpcyAi
Z3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBhLCAnQ29tcG9zZWRUcmVlJykg
aXMgImVxdWl2YWxlbnQiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYm9keSwgYSwgJ0NvbXBv
c2VkVHJlZScpIGlzICJ1bm9yZGVyZWQiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYSwgYm9k
eSwgJ0NvbXBvc2VkVHJlZScpIGlzICJ1bm9yZGVyZWQiCitQQVNTIGludGVybmFscy50cmVlT3Jk
ZXIoYm9keSwgYSwgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJl
ZU9yZGVyKGEsIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJu
YWxzLnRyZWVPcmRlcihhLCBhLCAnQ29tcG9zZWRUcmVlJykgaXMgImVxdWl2YWxlbnQiCitQQVNT
IGludGVybmFscy50cmVlT3JkZXIoYm9keSwgYiwgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgor
UEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGIsIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAiZ3Jl
YXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBiLCAnQ29tcG9zZWRUcmVlJykgaXMg
Imxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYiwgYSwgJ0NvbXBvc2VkVHJlZScpIGlz
ICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGJvZHksIGMsICdDb21wb3NlZFRy
ZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihjLCBib2R5LCAnQ29tcG9z
ZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYSwgYywgJ0Nv
bXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGMsIGEsICdD
b21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihiLCBj
LCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYywg
YiwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVy
KGJvZHksIGQsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVP
cmRlcihkLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFs
cy50cmVlT3JkZXIoYm9keSwgZCwgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRl
cm5hbHMudHJlZU9yZGVyKGQsIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BB
U1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBkLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQ
QVNTIGludGVybmFscy50cmVlT3JkZXIoZCwgYSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVy
IgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGIsICdDb21wb3NlZFRyZWUnKSBpcyAibGVz
cyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihiLCBkLCAnQ29tcG9zZWRUcmVlJykgaXMgImdy
ZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZCwgYywgJ0NvbXBvc2VkVHJlZScpIGlz
ICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGMsIGQsICdDb21wb3NlZFRyZWUnKSBp
cyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihhLCBkLCAnQ29tcG9zZWRUcmVl
JykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZCwgYSwgJ0NvbXBvc2VkVHJl
ZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGQsIGIsICdDb21wb3Nl
ZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihiLCBkLCAnQ29tcG9z
ZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZCwgYywgJ0Nv
bXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGMsIGQsICdD
b21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihib2R5
LCBmLCAnQ29tcG9zZWRUcmVlJykgaXMgInVub3JkZXJlZCIKK1BBU1MgaW50ZXJuYWxzLnRyZWVP
cmRlcihmLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgInVub3JkZXJlZCIKK1BBU1MgaW50ZXJu
YWxzLnRyZWVPcmRlcihmLCBib2R5LCAnQ29tcG9zZWRUcmVlJykgaXMgInVub3JkZXJlZCIKK1BB
U1MgaW50ZXJuYWxzLnRyZWVPcmRlcihib2R5LCBmLCAnQ29tcG9zZWRUcmVlJykgaXMgInVub3Jk
ZXJlZCIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihib2R5LCBnLCAnQ29tcG9zZWRUcmVlJykg
aXMgImxlc3MiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoZywgYm9keSwgJ0NvbXBvc2VkVHJl
ZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVyKGJvZHksIGgsICdDb21w
b3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJuYWxzLnRyZWVPcmRlcihoLCBib2R5LCAn
Q29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIGludGVybmFscy50cmVlT3JkZXIoYm9k
eSwgaSwgJ0NvbXBvc2VkVHJlZScpIGlzICJsZXNzIgorUEFTUyBpbnRlcm5hbHMudHJlZU9yZGVy
KGksIGJvZHksICdDb21wb3NlZFRyZWUnKSBpcyAiZ3JlYXRlciIKK1BBU1MgaW50ZXJuYWxzLnRy
ZWVPcmRlcihpLCBkLCAnQ29tcG9zZWRUcmVlJykgaXMgImxlc3MiCitQQVNTIGludGVybmFscy50
cmVlT3JkZXIoZCwgaSwgJ0NvbXBvc2VkVHJlZScpIGlzICJncmVhdGVyIgorUEFTUyBpbnRlcm5h
bHMudHJlZU9yZGVyKGksIGIsICdDb21wb3NlZFRyZWUnKSBpcyAibGVzcyIKK1BBU1MgaW50ZXJu
YWxzLnRyZWVPcmRlcihiLCBpLCAnQ29tcG9zZWRUcmVlJykgaXMgImdyZWF0ZXIiCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vdHJlZU9yZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS90cmVlT3JkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWFiOWYwZmE1MGI1MDA4MWVmODAyZTFhZGUy
YTRlMjkwYjFjMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vdHJl
ZU9yZGVyLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPGh0bWw+PGJvZHk+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVzY3Jp
cHRpb24oIlRlc3QgdGhlIHRyZWUgb3JkZXJpbmcuIikKKworZnVuY3Rpb24gc2hvdWxkQmVCb3Ro
KGEsIGIsIGZvcndhcmQsIHJldmVyc2VkKQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
aW50ZXJuYWxzLnRyZWVPcmRlcigiICsgYSArICIsICIgKyAoYiA/IGIgOiBhKSArICIsICdDb21w
b3NlZFRyZWUnKSIsIGZvcndhcmQpCisgICAgaWYgKGEgIT0gYikKKyAgICAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCJpbnRlcm5hbHMudHJlZU9yZGVyKCIgKyBiICsgIiwgIiArIGEgKyAiLCAn
Q29tcG9zZWRUcmVlJykiLCByZXZlcnNlZCkKK30KKworZnVuY3Rpb24gc2hvdWxkQmVFcXVpdmFs
ZW50KGEsIGIpCit7CisgICAgc2hvdWxkQmVCb3RoKGEsIGIsICJlcXVpdmFsZW50IiwgImVxdWl2
YWxlbnQiKQorfQorCitmdW5jdGlvbiBzaG91bGRCZUxlc3MoYSwgYikKK3sKKyAgICBzaG91bGRC
ZUJvdGgoYSwgYiwgImxlc3MiLCAiZ3JlYXRlciIpCit9CisKK2Z1bmN0aW9uIHNob3VsZEJlVW5v
cmRlcmVkKGEsIGIpCit7CisgICAgc2hvdWxkQmVCb3RoKGEsIGIsICJ1bm9yZGVyZWQiLCAidW5v
cmRlcmVkIikKK30KKworc2hvdWxkQmVFcXVpdmFsZW50KCJkb2N1bWVudCIsICJkb2N1bWVudCIp
CisKK2xldCBib2R5ID0gZG9jdW1lbnQuYm9keTsKKworc2hvdWxkQmVFcXVpdmFsZW50KCJib2R5
IiwgImJvZHkiKQorc2hvdWxkQmVMZXNzKCJkb2N1bWVudCIsICJib2R5IikKKworbGV0IGEgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorc2hvdWxkQmVFcXVpdmFsZW50KCJhIiwgImEi
KQorc2hvdWxkQmVVbm9yZGVyZWQoImJvZHkiLCAiYSIpCisKK2JvZHkuYXBwZW5kQ2hpbGQoYSkK
K3Nob3VsZEJlTGVzcygiYm9keSIsICJhIikKK3Nob3VsZEJlRXF1aXZhbGVudCgiYSIsICJhIikK
KworbGV0IGIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorYm9keS5hcHBlbmRDaGls
ZChiKQorc2hvdWxkQmVMZXNzKCJib2R5IiwgImIiKQorc2hvdWxkQmVMZXNzKCJhIiwgImIiKQor
CitsZXQgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCitiLmFwcGVuZENoaWxkKGMp
CitzaG91bGRCZUxlc3MoImJvZHkiLCAiYyIpCitzaG91bGRCZUxlc3MoImEiLCAiYyIpCitzaG91
bGRCZUxlc3MoImIiLCAiYyIpCisKK2xldCBkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
IikKK2EuYXBwZW5kQ2hpbGQoZCkKK3Nob3VsZEJlTGVzcygiYm9keSIsICJkIikKK3Nob3VsZEJl
TGVzcygiYm9keSIsICJkIikKK3Nob3VsZEJlTGVzcygiYSIsICJkIikKK3Nob3VsZEJlTGVzcygi
ZCIsICJiIikKK3Nob3VsZEJlTGVzcygiZCIsICJjIikKK3Nob3VsZEJlTGVzcygiYSIsICJkIikK
K3Nob3VsZEJlTGVzcygiZCIsICJiIikKK3Nob3VsZEJlTGVzcygiZCIsICJjIikKKworbGV0IGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQorbGV0IGYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKQorZS5hcHBlbmRDaGlsZChmKQorc2hvdWxkQmVVbm9yZGVyZWQoImJvZHki
LCAiZiIpCitzaG91bGRCZVVub3JkZXJlZCgiZiIsICJib2R5IikKKworbGV0IGcgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpCitjLmFwcGVuZENoaWxkKGcpCitzaG91bGRCZUxl
c3MoImJvZHkiLCAiZyIpCisKK2xldCBoID0gaW50ZXJuYWxzLmVuc3VyZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoZykuZmlyc3RDaGlsZAorc2hvdWxkQmVMZXNzKCJib2R5IiwgImgiKQorCitsZXQgaSA9
IGEuYXR0YWNoU2hhZG93KHsgbW9kZTogImNsb3NlZCIgfSkKK3Nob3VsZEJlTGVzcygiYm9keSIs
ICJpIikKK3Nob3VsZEJlTGVzcygiaSIsICJkIikKK3Nob3VsZEJlTGVzcygiaSIsICJiIikKKwor
PC9zY3JpcHQ+Cis8L2JvZHk+PC9odG1sPgo=
</data>
<flag name="review"
          id="429379"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>