<?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>170120</bug_id>
          
          <creation_ts>2017-03-27 09:57:55 -0700</creation_ts>
          <short_desc>[css-grid] Clamp the number of autorepeat tracks</short_desc>
          <delta_ts>2017-03-30 07:40:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>jfernandez</cc>
    
    <cc>jonlee</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>rego</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1291496</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-03-27 09:57:55 -0700</bug_when>
    <thetext>[css-grid] Clamp the number of autorepeat tracks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291502</commentid>
    <comment_count>1</comment_count>
      <attachid>305477</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-03-27 10:23:01 -0700</bug_when>
    <thetext>Created attachment 305477
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291505</commentid>
    <comment_count>2</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-03-27 10:24:12 -0700</bug_when>
    <thetext>This was causing crashes as the one reported to Chromium https://bugs.chromium.org/p/chromium/issues/detail?id=681381</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291583</commentid>
    <comment_count>3</comment_count>
      <attachid>305477</attachid>
    <who name="Javier Fernandez">jfernandez</who>
    <bug_when>2017-03-27 13:24:14 -0700</bug_when>
    <thetext>Comment on attachment 305477
Patch

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

This change looks good to me.

&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:69
&gt; +    &lt;div style=&quot;grid-column: 1;&quot;&gt;Item1&lt;/div&gt;

Do we really need the &quot;Item1&quot; strings here ? The add unnecessary data in the test&apos;s output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1291699</commentid>
    <comment_count>4</comment_count>
      <attachid>305477</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-03-27 17:23:15 -0700</bug_when>
    <thetext>Comment on attachment 305477
Patch

Marking r- due to build failures, as the patch will need to be updated for EWS to run the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292420</commentid>
    <comment_count>5</comment_count>
      <attachid>305743</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-03-29 09:15:01 -0700</bug_when>
    <thetext>Created attachment 305743
Patch

Build fix for Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292749</commentid>
    <comment_count>6</comment_count>
      <attachid>305743</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2017-03-30 02:13:38 -0700</bug_when>
    <thetext>Comment on attachment 305743
Patch

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

Awesome test, I&apos;m not very used to the internals stuff but it looks good to me.

BTW, now that you&apos;re adding the internals API shouldn&apos;t we get rid of the unit tests
checking this under Tools/TestWebKitAPI/Tests/WebCore/ and replace them by some JS tests?

&gt; Source/WebCore/ChangeLog:62
&gt; +        (WebCore::GridPosition::setExplicitPosition): Deleted.
&gt; +        (WebCore::GridPosition::setAutoPosition): Deleted.
&gt; +        (WebCore::GridPosition::setSpanPosition): Deleted.
&gt; +        (WebCore::GridPosition::setNamedGridArea): Deleted.
&gt; +        (WebCore::GridPosition::integerPosition): Deleted.
&gt; +        (WebCore::GridPosition::namedGridLine): Deleted.
&gt; +        (WebCore::GridPosition::spanPosition): Deleted.
&gt; +        (WebCore::GridPosition::operator==): Deleted.

Nit: They&apos;re not deleted, the implementation is moved to the .cpp file.

&gt; Source/WebCore/rendering/style/GridPosition.cpp:37
&gt; +std::optional&lt;int&gt; GridPosition::gMaxPositionForTesting;
&gt; +static const int kGridMaxTracks = 1000000;

I&apos;m not completely sure about the names of this 2 things.
I believe they should use a similar name: tracks vs position.

Also, I know &quot;kGridMaxTracks&quot; has been around before,
but if I remember correctly we can end up with a grid of &quot;2 * kGridMaxTracks&quot; tracks
because of the implicit grid before the explicit one.
If that&apos;s the case, maybe we should try to find a better name.

Last, isn&apos;t this number too big? Probably we should have to reduce it
to avoid memory issues like we did in Blink.

&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:19
&gt; + .lastColumn { grid-column: -2 / -1; }
&gt; + .lastRow { grid-row: -2 / -1; }

Nit: Using &quot;-2&quot; is enough, but feel free to keep &quot;-2 / -1&quot; if it&apos;s clearer for you.

&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:92
&gt; + function testElement(gridElement, property, length, classNames) {

Nit: Could we rename this method to something more self descriptive.
This method returns the track sizes and also checks that the length of the tracks is the expected one.

&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:93
&gt; +     /* gridElement.style.gridTemplate = &apos;none&apos;;*/

Remove this line.

&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:98
&gt; +     // Seems like this is not enough to trigger a proper layout;

Mmm, what&apos;s this comment?

&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:100
&gt; +     var propertyValue = getComputedStyle(gridElement, &apos;&apos;).getPropertyValue(property);

Nit: 2nd argument of getComputedStyle() is optional AFAIK.

&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:125
&gt; +     assert_equals(autoFillGrid[maxTracksForTesting - 1], &quot;20px&quot;);
&gt; +     assert_equals(autoFillGrid[maxTracksForTesting - 2], &quot;7px&quot;);
&gt; +     assert_equals(autoFillGrid[0], &quot;10px&quot;);
&gt; +     assert_equals(autoFillGrid[1], &quot;2px&quot;);

Nit: Move these checks closer to the call to testElement() for &quot;autoFillGrid&quot;.
Also the order is a bit strange, I&apos;d do: 0, 1, max - 2, max - 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292782</commentid>
    <comment_count>7</comment_count>
      <attachid>305743</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-03-30 07:38:46 -0700</bug_when>
    <thetext>Comment on attachment 305743
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:62
&gt;&gt; +        (WebCore::GridPosition::operator==): Deleted.
&gt; 
&gt; Nit: They&apos;re not deleted, the implementation is moved to the .cpp file.

That&apos;s automatically added by prepare-ChangeLog

&gt;&gt; Source/WebCore/rendering/style/GridPosition.cpp:37
&gt;&gt; +static const int kGridMaxTracks = 1000000;
&gt; 
&gt; I&apos;m not completely sure about the names of this 2 things.
&gt; I believe they should use a similar name: tracks vs position.
&gt; 
&gt; Also, I know &quot;kGridMaxTracks&quot; has been around before,
&gt; but if I remember correctly we can end up with a grid of &quot;2 * kGridMaxTracks&quot; tracks
&gt; because of the implicit grid before the explicit one.
&gt; If that&apos;s the case, maybe we should try to find a better name.
&gt; 
&gt; Last, isn&apos;t this number too big? Probably we should have to reduce it
&gt; to avoid memory issues like we did in Blink.

No problem, I can change it to kGridMaxPosition for example.

And yeah the number seems pretty big (it was suggested in the past by specs). Not sure if we should change it now.

&gt;&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:19
&gt;&gt; + .lastRow { grid-row: -2 / -1; }
&gt; 
&gt; Nit: Using &quot;-2&quot; is enough, but feel free to keep &quot;-2 / -1&quot; if it&apos;s clearer for you.

Yeah that&apos;s right, but -2 / -1 seems much more understandable to me personally.

&gt;&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:92
&gt;&gt; + function testElement(gridElement, property, length, classNames) {
&gt; 
&gt; Nit: Could we rename this method to something more self descriptive.
&gt; This method returns the track sizes and also checks that the length of the tracks is the expected one.

OK, I&apos;ll try.

&gt;&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:93
&gt;&gt; +     /* gridElement.style.gridTemplate = &apos;none&apos;;*/
&gt; 
&gt; Remove this line.

ack

&gt;&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:98
&gt;&gt; +     // Seems like this is not enough to trigger a proper layout;
&gt; 
&gt; Mmm, what&apos;s this comment?

Old stuff

&gt;&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:100
&gt;&gt; +     var propertyValue = getComputedStyle(gridElement, &apos;&apos;).getPropertyValue(property);
&gt; 
&gt; Nit: 2nd argument of getComputedStyle() is optional AFAIK.

ack

&gt;&gt; LayoutTests/fast/css-grid-layout/grid-auto-repeat-huge-grid.html:125
&gt;&gt; +     assert_equals(autoFillGrid[1], &quot;2px&quot;);
&gt; 
&gt; Nit: Move these checks closer to the call to testElement() for &quot;autoFillGrid&quot;.
&gt; Also the order is a bit strange, I&apos;d do: 0, 1, max - 2, max - 1.

As I guess is not an strong opinion, I&apos;ll leave them as they are, specially because all the other ones follow the same pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292783</commentid>
    <comment_count>8</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2017-03-30 07:40:56 -0700</bug_when>
    <thetext>Committed r214604: &lt;http://trac.webkit.org/changeset/214604&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305477</attachid>
            <date>2017-03-27 10:23:01 -0700</date>
            <delta_ts>2017-03-29 09:14:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170120-20170327192258.patch</filename>
            <type>text/plain</type>
            <size>50322</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk1MzE3MDk0MmMzZmY0
MTM1MWZiMTdiNzkxNjI0NjY5ZTQ2ODU1My4uZjUyYmQ5OTM2ZmM1ZGM3ZTk4NzY4MTJhODU0ZjM2
YjBiMzcwYjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE3LTAzLTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZ3Jp
ZF0gQ2xhbXAgdGhlIG51bWJlciBvZiBhdXRvcmVwZWF0IHRyYWNrcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgc3VnZ2VzdGVkIGJ5IHRoZSBzcGVj
cyB3ZSBkbyBjbGFtcCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJhY2tzIHBlciBncmlkIGluIG9y
ZGVyIHRvCisgICAgICAgIG1pbmltaXplIHBvdGVudGlhbCBPT00gc2l0dWF0aW9ucy4gSG93ZXZl
ciB3ZSB3ZXJlIG5vdCBjb25zaWRlcmluZyB0aGUgY2FzZSBvZiB0aGUgcmVjZW50bHkKKyAgICAg
ICAgYWRkZWQgYXV0byByZXBlYXQgc3ludGF4LiBBYm5vcm1hbGx5IGh1Z2UgdmFsdWVzIGZvciB0
aGUgd2lkdGgvaGVpZ2h0IG9uIHRoZSBncmlkIGNvbnRhaW5lcgorICAgICAgICBjb3VsZCBsZWFk
IHRvIGEgbnVtYmVyIG9mIGF1dG8gcmVwZWF0IHRyYWNrcyBoaWdoZXIgdGhhbiB0aGUgbWF4aW11
bS4KKworICAgICAgICBBIG5ldyBBUEkgd2FzIGFkZGVkIHRvIEludGVybmFscyBpbiBvcmRlciB0
byB0ZXN0IGxpbWl0cyB3aXRob3V0IGhhdmluZyB0byBjcmVhdGUgaHVnZQorICAgICAgICBncmlk
cy4gVGhpcyBuZXcgQVBJIGFsbG93cyBjbGllbnRzIHRvIHNldCBhbiBhcmJpdHJhcnkgbGltaXQg
dG8gdGhlIG51bWJlciBvZiB0cmFja3MuIFRoZQorICAgICAgICBhZGRpdGlvbiBvZiB0aGlzIG5l
dyBBUEkgZm9yY2VkIHVzIHRvIGFkZCBHcmlkUG9zaXRpb24uY3BwIHRvIHRoZSBwcm9qZWN0IHRv
IGRlZmluZSB0aGUKKyAgICAgICAgZ2xvYmFsIHZhcmlhYmxlIHdlIHVzZSBmb3IgdGVzdGluZy4g
V2UgdG9vayB0aGUgY2hhbmNlIHRvIG1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgZnJvbSB0aGUgaGVhZGVyIGZpbGUgdG8gdGhlIHNvdXJjZSBmaWxlLgorCisgICAgICAg
IExhc3QgYnV0IG5vdCBsZWFzdCwgc2V2ZXJhbCBuZXcgQVNTRVJUcyB3ZXJlIGFkZGVkIHRvIEdy
aWQuY3BwIGltcGxlbWVudGF0aW9uIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIHdlIGRvIG5vdCBz
dXJwYXNzIHRoZSBncmlkIHRyYWNrIGxpbWl0cy4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy1n
cmlkLWxheW91dC9ncmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3JpZC5odG1sCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OmVuc3VyZUdyaWRTaXpl
KTogQWRkZWQgQVNTRVJULgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0U21hbGxlc3RUcmFj
a3NTdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0QXV0b1JlcGVhdFRy
YWNrcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0QXV0b1JlcGVhdEVtcHR5
Q29sdW1ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0QXV0b1JlcGVhdEVt
cHR5Um93cyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNsYW1wQXV0b1JlcGVhdFRyYWNrcyk6IE5ldyBt
ZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKTog
Q2xhbXAgdGhlIG51bWJlciBvZiBhdXRvIHJlcGVhdCB0cmFja3MgYmVmb3JlCisgICAgICAgIHBh
c3NpbmcgdGhlbSB0byB0aGUgR3JpZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFNwYW46OkdyaWRTcGFuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldEV4
cGxpY2l0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpzZXRBdXRv
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpzZXRTcGFuUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpzZXROYW1lZEdyaWRBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6aW50ZWdlclBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6bmFtZWRHcmlkTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmlkUG9zaXRpb246OnNwYW5Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
UG9zaXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c2hvdWxkQmVSZXNvbHZl
ZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlv
bjo6bWF4KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6bWluKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c2V0TWF4UG9zaXRpb25Gb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c2V0RXhwbGljaXRQb3NpdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldEF1dG9Qb3NpdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldFNwYW5Qb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldE5hbWVkR3JpZEFyZWEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjppbnRlZ2VyUG9zaXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpuYW1lZEdyaWRM
aW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c3BhblBvc2l0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6b3BlcmF0b3I9
PSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxp
Y2l0R3JpZENvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0R3JpZE1heFRyYWNrc0xpbWl0
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxNy0wMy0yMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbU291cF0gIk9ubHkgZnJvbSB3ZWJzaXRlcyBJIHZpc2l0
IiBjb29raWUgcG9saWN5IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxZDlmMDRi
ZGJmOTNmMjg0NjU4NTU4YmI5NzdhMDZkYTRmNGFmZjNlLi42MzM2ZDM3NmRiM2Y4ZjYwYTk1N2Qz
OTBjNjQ0NGE3MWVhM2M4NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjYyMCw2ICsyNjIw
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0
YS5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwCiAgICAgcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKyAgICByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUv
TmluZVBpZWNlSW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTY4OWVkNjczNTE2M2I5Nzc4M2E4MWUxYWY3MTUwMzY3
MjRkNmM0Yi4uYzNhNzhhOTdiMThlNDJlYzkwYTU1ZDExMTU2NWM0MWJjOTU1MmJiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTUwNDcsNiArMTUwNDcsNyBAQAogCQlFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRv
S2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9LZXlQYWly
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhCMTgzMTcyQjUwMDc4ODVD
MyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNDcnlwdG9LZXlQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTFGODE3NDUxRTg5N0E1MjAwRjIyQ0QwIC8qIEdyaWRQb3NpdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmlkUG9zaXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNkUxODNG
RUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzMzg0LDYgKzIzMzg1LDcgQEAKIAkJ
CQlCQzVFQjY5RDBFODFEQUVCMDBCMjU5NjUgLyogRmlsbExheWVyLmggKi8sCiAJCQkJQ0QzRTI1
MUIxODA0NkIwNjAwRTI3RjU2IC8qIEdyaWRBcmVhLmggKi8sCiAJCQkJQ0RFRjRGRDYxN0U4NUM4
RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLywKKwkJCQlFMUY4MTc0NTFFODk3QTUyMDBGMjJD
RDAgLyogR3JpZFBvc2l0aW9uLmNwcCAqLywKIAkJCQlBMTI3MDVDMjE2NTZCRDY1MDBDMkUyN0Mg
LyogR3JpZFBvc2l0aW9uLmggKi8sCiAJCQkJQ0RGNzQ4M0MxOEZFQkNFQzAwMDZFQ0MwIC8qIEdy
aWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgKi8sCiAJCQkJQ0RGNzQ4M0QxOEZFQkNFQzAwMDZFQ0Mw
IC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZlci5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCA4YTY2Yjc0MmMzNjY4YzM4NGM4Mjhl
ZTA2MDZiZTEzNmJkODBiNWExLi40MTMxYjdmYTAyNzAwMzg0Y2E1MDk1YzEzY2MwZmFjNmZhYjM4
N2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcApAQCAtMzM0NSw3ICszMzQ1LDcgQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1Jl
cGVhdEZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIKICAgICAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByZXBldGl0aW9uID0gY29uc3VtZVBvc2l0aXZl
SW50ZWdlcihhcmdzKTsKICAgICAgICAgaWYgKCFyZXBldGl0aW9uKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICByZXBldGl0aW9ucyA9IGNsYW1wVG88c2l6ZV90PihyZXBldGl0
aW9uLT5kb3VibGVWYWx1ZSgpLCAwLCBrR3JpZE1heFRyYWNrcyk7CisgICAgICAgIHJlcGV0aXRp
b25zID0gY2xhbXBUbzxzaXplX3Q+KHJlcGV0aXRpb24tPmRvdWJsZVZhbHVlKCksIDAsIEdyaWRQ
b3NpdGlvbjo6bWF4KCkpOwogICAgICAgICByZXBlYXRlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB9CiAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQpAQCAtMzM3NSw3ICszMzc1LDcgQEAgc3RhdGljIGJvb2wg
Y29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXIKICAgICAgICAgbGlzdC5hcHBlbmQocmVwZWF0ZWRWYWx1ZXMucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFdlIGNsYW1wIHRoZSByZXBldGl0aW9u
cyB0byBhIG11bHRpcGxlIG9mIHRoZSByZXBlYXQoKSB0cmFjayBsaXN0J3Mgc2l6ZSwgd2hpbGUg
c3RheWluZyBiZWxvdyB0aGUgbWF4IGdyaWQgc2l6ZS4KLSAgICAgICAgcmVwZXRpdGlvbnMgPSBz
dGQ6Om1pbihyZXBldGl0aW9ucywga0dyaWRNYXhUcmFja3MgLyBudW1iZXJPZlRyYWNrcyk7Cisg
ICAgICAgIHJlcGV0aXRpb25zID0gc3RkOjptaW4ocmVwZXRpdGlvbnMsIEdyaWRQb3NpdGlvbjo6
bWF4KCkgLyBudW1iZXJPZlRyYWNrcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cmVwZXRpdGlvbnM7ICsraSkgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBy
ZXBlYXRlZFZhbHVlcy0+bGVuZ3RoKCk7ICsraikKICAgICAgICAgICAgICAgICBsaXN0LmFwcGVu
ZCgqcmVwZWF0ZWRWYWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0dyaWQuY3BwCmluZGV4IDc0ODM4YjkyZjZmY2UwZjVhM2NlZGI4OGYzMGVhYTkxMjU5
OWY3ZDMuLjBhMTE4ZGU2MTUwZDVkYTE2YjU3M2RhYTEzNzUxMzE0MTM3YmVhMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvR3JpZC5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgdW5zaWduZWQgR3JpZDo6bnVt
VHJhY2tzKEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAKIHZvaWQg
R3JpZDo6ZW5zdXJlR3JpZFNpemUodW5zaWduZWQgbWF4aW11bVJvd1NpemUsIHVuc2lnbmVkIG1h
eGltdW1Db2x1bW5TaXplKQogeworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KG1heGltdW1S
b3dTaXplKSA8IEdyaWRQb3NpdGlvbjo6bWF4KCkgKiAyKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8aW50PihtYXhpbXVtQ29sdW1uU2l6ZSkgPCBHcmlkUG9zaXRpb246Om1heCgpICogMik7CiAg
ICAgY29uc3Qgc2l6ZV90IG9sZENvbHVtblNpemUgPSBudW1UcmFja3MoRm9yQ29sdW1ucyk7CiAg
ICAgY29uc3Qgc2l6ZV90IG9sZFJvd1NpemUgPSBudW1UcmFja3MoRm9yUm93cyk7CiAgICAgaWYg
KG1heGltdW1Sb3dTaXplID4gb2xkUm93U2l6ZSkgewpAQCAtNzQsNiArNzYsOCBAQCB2b2lkIEdy
aWQ6Omluc2VydChSZW5kZXJCb3gmIGNoaWxkLCBjb25zdCBHcmlkQXJlYSYgYXJlYSkKIAogdm9p
ZCBHcmlkOjpzZXRTbWFsbGVzdFRyYWNrc1N0YXJ0KGludCByb3dTdGFydCwgaW50IGNvbHVtblN0
YXJ0KQogeworICAgIEFTU0VSVChyb3dTdGFydCA+IEdyaWRQb3NpdGlvbjo6bWluKCkgJiYgcm93
U3RhcnQgPCBHcmlkUG9zaXRpb246Om1heCgpIC0gMSk7CisgICAgQVNTRVJUKGNvbHVtblN0YXJ0
ID4gR3JpZFBvc2l0aW9uOjptaW4oKSAmJiBjb2x1bW5TdGFydCA8IEdyaWRQb3NpdGlvbjo6bWF4
KCkgLSAxKTsKICAgICBtX3NtYWxsZXN0Um93U3RhcnQgPSByb3dTdGFydDsKICAgICBtX3NtYWxs
ZXN0Q29sdW1uU3RhcnQgPSBjb2x1bW5TdGFydDsKIH0KQEAgLTk2LDYgKzEwMCw4IEBAIHZvaWQg
R3JpZDo6c2V0R3JpZEl0ZW1BcmVhKGNvbnN0IFJlbmRlckJveCYgaXRlbSwgR3JpZEFyZWEgYXJl
YSkKIAogdm9pZCBHcmlkOjpzZXRBdXRvUmVwZWF0VHJhY2tzKHVuc2lnbmVkIGF1dG9SZXBlYXRS
b3dzLCB1bnNpZ25lZCBhdXRvUmVwZWF0Q29sdW1ucykKIHsKKyAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEdyaWRQb3NpdGlvbjo6bWF4KCkpID49IG51bVRyYWNrcyhGb3JSb3dzKSAr
IGF1dG9SZXBlYXRSb3dzKTsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEdyaWRQ
b3NpdGlvbjo6bWF4KCkpID49IG51bVRyYWNrcyhGb3JDb2x1bW5zKSArIGF1dG9SZXBlYXRDb2x1
bW5zKTsKICAgICBtX2F1dG9SZXBlYXRSb3dzID0gYXV0b1JlcGVhdFJvd3M7CiAgICAgbV9hdXRv
UmVwZWF0Q29sdW1ucyA9ICBhdXRvUmVwZWF0Q29sdW1uczsKIH0KQEAgLTEwNywxMSArMTEzLDEz
IEBAIHVuc2lnbmVkIEdyaWQ6OmF1dG9SZXBlYXRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikgY29uc3QKIAogdm9pZCBHcmlkOjpzZXRBdXRvUmVwZWF0RW1wdHlDb2x1
bW5zKHN0ZDo6dW5pcXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gYXV0b1JlcGVhdEVtcHR5
Q29sdW1ucykKIHsKKyAgICBBU1NFUlQoIWF1dG9SZXBlYXRFbXB0eUNvbHVtbnMgfHwgKGF1dG9S
ZXBlYXRFbXB0eUNvbHVtbnMtPnNpemUoKSA8PSBtX2F1dG9SZXBlYXRDb2x1bW5zKSk7CiAgICAg
bV9hdXRvUmVwZWF0RW1wdHlDb2x1bW5zID0gV1RGTW92ZShhdXRvUmVwZWF0RW1wdHlDb2x1bW5z
KTsKIH0KIAogdm9pZCBHcmlkOjpzZXRBdXRvUmVwZWF0RW1wdHlSb3dzKHN0ZDo6dW5pcXVlX3B0
cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gYXV0b1JlcGVhdEVtcHR5Um93cykKIHsKKyAgICBBU1NF
UlQoIWF1dG9SZXBlYXRFbXB0eVJvd3MgfHwgKGF1dG9SZXBlYXRFbXB0eVJvd3MtPnNpemUoKSA8
PSBtX2F1dG9SZXBlYXRSb3dzKSk7CiAgICAgbV9hdXRvUmVwZWF0RW1wdHlSb3dzID0gV1RGTW92
ZShhdXRvUmVwZWF0RW1wdHlSb3dzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCmluZGV4IDVhZjA2OGEwMzViMGRmMDkwOWU3NTM3ZTE0N2VhZDQ4MDVkNjY0ZDEu
Ljk2NTYwNzEwZjA4ZDQ4NmQyN2ZkNjk3NzJkNTI0Yzk5MTk5NjA2OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTUzNSwxMCArNTM1LDMxIEBAIHN0ZDo6dW5p
cXVlX3B0cjxPcmRlcmVkVHJhY2tJbmRleFNldD4gUmVuZGVyR3JpZDo6Y29tcHV0ZUVtcHR5VHJh
Y2tzRm9yQXV0b1JlcGVhCiAgICAgcmV0dXJuIGVtcHR5VHJhY2tJbmRleGVzOwogfQogCit1bnNp
Z25lZCBSZW5kZXJHcmlkOjpjbGFtcEF1dG9SZXBlYXRUcmFja3MoR3JpZFRyYWNrU2l6aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbiwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrcykgY29uc3QKK3sKKyAg
ICBpZiAoIWF1dG9SZXBlYXRUcmFja3MpCisgICAgICAgIHJldHVybiAwOworCisgICAgdW5zaWdu
ZWQgaW5zZXJ0aW9uUG9pbnQgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHN0eWxlKCkuZ3Jp
ZEF1dG9SZXBlYXRDb2x1bW5zSW5zZXJ0aW9uUG9pbnQoKSA6IHN0eWxlKCkuZ3JpZEF1dG9SZXBl
YXRSb3dzSW5zZXJ0aW9uUG9pbnQoKTsKKyAgICB1bnNpZ25lZCBtYXhUcmFja3MgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oR3JpZFBvc2l0aW9uOjptYXgoKSk7CisKKyAgICBpZiAoIWluc2VydGlv
blBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjptaW4oYXV0b1JlcGVhdFRyYWNrcywgbWF4VHJh
Y2tzKTsKKworICAgIGlmIChpbnNlcnRpb25Qb2ludCA+PSBtYXhUcmFja3MpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIHN0ZDo6bWluKGF1dG9SZXBlYXRUcmFja3MsIG1heFRyYWNr
cyAtIGluc2VydGlvblBvaW50KTsKK30KKwogdm9pZCBSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25H
cmlkKEdyaWQmIGdyaWQsIFNpemluZ09wZXJhdGlvbiBzaXppbmdPcGVyYXRpb24pIGNvbnN0CiB7
CiAgICAgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnMgPSBjb21wdXRlQXV0b1JlcGVhdFRyYWNr
c0NvdW50KEZvckNvbHVtbnMsIHNpemluZ09wZXJhdGlvbik7CiAgICAgdW5zaWduZWQgYXV0b1Jl
cGVhdFJvd3MgPSBjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEZvclJvd3MsIHNpemluZ09w
ZXJhdGlvbik7CisKKyAgICBhdXRvUmVwZWF0Um93cyA9IGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhG
b3JSb3dzLCBhdXRvUmVwZWF0Um93cyk7CisgICAgYXV0b1JlcGVhdENvbHVtbnMgPSBjbGFtcEF1
dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1ucywgYXV0b1JlcGVhdENvbHVtbnMpOworCiAgICAgaWYg
KGF1dG9SZXBlYXRDb2x1bW5zICE9IGdyaWQuYXV0b1JlcGVhdFRyYWNrcyhGb3JDb2x1bW5zKSB8
fCBhdXRvUmVwZWF0Um93cyAhPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yUm93cykpIHsKICAg
ICAgICAgZ3JpZC5zZXROZWVkc0l0ZW1zUGxhY2VtZW50KHRydWUpOwogICAgICAgICBncmlkLnNl
dEF1dG9SZXBlYXRUcmFja3MoYXV0b1JlcGVhdFJvd3MsIGF1dG9SZXBlYXRDb2x1bW5zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IDVmYWY0MzVmOTA2NzRhNjNkZTlh
YjFhNzk5NjVhY2M4ZDI1ZjE3ZDcuLmJjZGYyYjBlZDMwZWUyYTA2MzgyNDY3NjA4NTNjNGIwMzlh
ZmE1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNyBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICAvLyBSZXF1aXJlZCBieSBHcmlkVHJh
Y2tTaXppbmdBbGdvcml0aG0uIEtlZXAgdGhlbSB1bmRlciBjb250cm9sLgogICAgIGJvb2wgaXNP
cnRob2dvbmFsQ2hpbGQoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBn
dXR0ZXJzU2l6ZShjb25zdCBHcmlkJiwgR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCB1bnNpZ25l
ZCBzdGFydExpbmUsIHVuc2lnbmVkIHNwYW4sIFNpemluZ09wZXJhdGlvbikgY29uc3Q7Ci0gICAg
CisKIHByb3RlY3RlZDoKICAgICBJdGVtUG9zaXRpb24gc2VsZkFsaWdubWVudE5vcm1hbEJlaGF2
aW9yKGNvbnN0IFJlbmRlckJveCogY2hpbGQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZQogICAg
IHsKQEAgLTg2LDYgKzg2LDggQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIGNvbXB1dGVBdXRv
UmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBTaXppbmdPcGVyYXRp
b24pIGNvbnN0OwogCisgICAgdW5zaWduZWQgY2xhbXBBdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrcykgY29uc3Q7CisKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IGNvbXB1dGVFbXB0eVRyYWNr
c0ZvckF1dG9SZXBlYXQoR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbikgY29uc3Q7CiAK
ICAgICB2b2lkIHBsYWNlSXRlbXNPbkdyaWQoR3JpZCYsIFNpemluZ09wZXJhdGlvbikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oCmluZGV4IDA4MjYyMGZi
M2ZiNTViMWFiZjZjYzc1YzVmMmNjZTI5NWVmMWMxMzQuLjczZGVkM2Y0ZThlNzFlMDcyNGEwMzg5
YTRlNGExOGVhYmYzNjA0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9HcmlkQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Hcmlk
QXJlYS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAy
MDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBJZ2FsaWEgUy5MLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTU2LDggKzE1Niw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIG1fc3RhcnRMaW5lID0gc3RkOjpt
YXgoLWtHcmlkTWF4VHJhY2tzLCBzdGQ6Om1pbihzdGFydExpbmUsIGtHcmlkTWF4VHJhY2tzIC0g
MSkpOwotICAgICAgICBtX2VuZExpbmUgPSBzdGQ6Om1heCgta0dyaWRNYXhUcmFja3MgKyAxLCBz
dGQ6Om1pbihlbmRMaW5lLCBrR3JpZE1heFRyYWNrcykpOworICAgICAgICBtX3N0YXJ0TGluZSA9
IHN0ZDo6bWF4KEdyaWRQb3NpdGlvbjo6bWluKCksIHN0ZDo6bWluKHN0YXJ0TGluZSwgR3JpZFBv
c2l0aW9uOjptYXgoKSAtIDEpKTsKKyAgICAgICAgbV9lbmRMaW5lID0gc3RkOjptYXgoR3JpZFBv
c2l0aW9uOjptaW4oKSArIDEsIHN0ZDo6bWluKGVuZExpbmUsIEdyaWRQb3NpdGlvbjo6bWF4KCkp
KTsKICAgICB9CiAKICAgICBpbnQgbV9zdGFydExpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1NzNkOGE2ZTc5NzRi
MGMyMmVkOGU1NmU2OTJjMTEwNGM1NzA2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcApAQCAtMCwwICsxLDkwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkdyaWRQb3NpdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6b3B0
aW9uYWw8aW50PiBHcmlkUG9zaXRpb246OmdNYXhQb3NpdGlvbkZvclRlc3Rpbmc7CisKK3ZvaWQg
R3JpZFBvc2l0aW9uOjpzZXRFeHBsaWNpdFBvc2l0aW9uKGludCBwb3NpdGlvbiwgY29uc3QgU3Ry
aW5nJiBuYW1lZEdyaWRMaW5lKQoreworICAgIG1fdHlwZSA9IEV4cGxpY2l0UG9zaXRpb247Cisg
ICAgc2V0SW50ZWdlclBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICBtX25hbWVkR3JpZExpbmUgPSBu
YW1lZEdyaWRMaW5lOworfQorCit2b2lkIEdyaWRQb3NpdGlvbjo6c2V0QXV0b1Bvc2l0aW9uKCkK
K3sKKyAgICBtX3R5cGUgPSBBdXRvUG9zaXRpb247CisgICAgbV9pbnRlZ2VyUG9zaXRpb24gPSAw
OworfQorCisvLyAnc3BhbicgdmFsdWVzIGNhbm5vdCBiZSBuZWdhdGl2ZSwgeWV0IHdlIHJldXNl
IHRoZSA8aW50ZWdlcj4gcG9zaXRpb24gd2hpY2ggY2FuCisvLyBiZS4gVGhpcyBtZWFucyB0aGF0
IHdlIGhhdmUgdG8gY29udmVydCB0aGUgc3BhbiBwb3NpdGlvbiB0byBhbiBpbnRlZ2VyLCBsb3Np
bmcKKy8vIHNvbWUgcHJlY2lzaW9uIGhlcmUuIEl0IHNob3VsZG4ndCBiZSBhbiBpc3N1ZSBpbiBw
cmFjdGljZSB0aG91Z2guCit2b2lkIEdyaWRQb3NpdGlvbjo6c2V0U3BhblBvc2l0aW9uKGludCBw
b3NpdGlvbiwgY29uc3QgU3RyaW5nJiBuYW1lZEdyaWRMaW5lKQoreworICAgIG1fdHlwZSA9IFNw
YW5Qb3NpdGlvbjsKKyAgICBzZXRJbnRlZ2VyUG9zaXRpb24ocG9zaXRpb24pOworICAgIG1fbmFt
ZWRHcmlkTGluZSA9IG5hbWVkR3JpZExpbmU7Cit9CisKK3ZvaWQgR3JpZFBvc2l0aW9uOjpzZXRO
YW1lZEdyaWRBcmVhKGNvbnN0IFN0cmluZyYgbmFtZWRHcmlkQXJlYSkKK3sKKyAgICBtX3R5cGUg
PSBOYW1lZEdyaWRBcmVhUG9zaXRpb247CisgICAgbV9uYW1lZEdyaWRMaW5lID0gbmFtZWRHcmlk
QXJlYTsKK30KKworaW50IEdyaWRQb3NpdGlvbjo6aW50ZWdlclBvc2l0aW9uKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQodHlwZSgpID09IEV4cGxpY2l0UG9zaXRpb24pOworICAgIHJldHVybiBtX2lu
dGVnZXJQb3NpdGlvbjsKK30KKworU3RyaW5nIEdyaWRQb3NpdGlvbjo6bmFtZWRHcmlkTGluZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBFeHBsaWNpdFBvc2l0aW9uIHx8IHR5cGUo
KSA9PSBTcGFuUG9zaXRpb24gfHwgdHlwZSgpID09IE5hbWVkR3JpZEFyZWFQb3NpdGlvbik7Cisg
ICAgcmV0dXJuIG1fbmFtZWRHcmlkTGluZTsKK30KKworaW50IEdyaWRQb3NpdGlvbjo6c3BhblBv
c2l0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQodHlwZSgpID09IFNwYW5Qb3NpdGlvbik7Cisg
ICAgcmV0dXJuIG1faW50ZWdlclBvc2l0aW9uOworfQorCitib29sIEdyaWRQb3NpdGlvbjo6b3Bl
cmF0b3I9PShjb25zdCBHcmlkUG9zaXRpb24mIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiBt
X3R5cGUgPT0gb3RoZXIubV90eXBlICYmIG1faW50ZWdlclBvc2l0aW9uID09IG90aGVyLm1faW50
ZWdlclBvc2l0aW9uICYmIG1fbmFtZWRHcmlkTGluZSA9PSBvdGhlci5tX25hbWVkR3JpZExpbmU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb24uaAppbmRleCA3MTkwYzRjNmU5MWQyMmY3ZWY2ODllZjQ2NWEx
YTVkMGQzMmM0YmVhLi4xNzkyNzMwZWJlZGNmZmQzNjU3NWNiNDQwYzUzNjEyNDE1YjA0NGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5oCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IElnYWxpYSBTLkwuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMzUsOSArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIFJlY29tbWVuZGVkIG1heGltdW0gc2l6ZSBmb3IgYm90aCBleHBsaWNpdCBhbmQgaW1w
bGljaXQgZ3JpZHMuCi1jb25zdCBpbnQga0dyaWRNYXhUcmFja3MgPSAxMDAwMDAwOwotCiBlbnVt
IEdyaWRQb3NpdGlvblR5cGUgewogICAgIEF1dG9Qb3NpdGlvbiwKICAgICBFeHBsaWNpdFBvc2l0
aW9uLCAvLyBbIDxpbnRlZ2VyPiB8fCA8c3RyaW5nPiBdCkBAIC02Nyw2NCArNjQsMzAgQEAgcHVi
bGljOgogICAgIGJvb2wgaXNTcGFuKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFNwYW5Qb3Np
dGlvbjsgfQogICAgIGJvb2wgaXNOYW1lZEdyaWRBcmVhKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IE5hbWVkR3JpZEFyZWFQb3NpdGlvbjsgfQogCi0gICAgdm9pZCBzZXRFeHBsaWNpdFBvc2l0
aW9uKGludCBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBuYW1lZEdyaWRMaW5lKQotICAgIHsKLSAg
ICAgICAgbV90eXBlID0gRXhwbGljaXRQb3NpdGlvbjsKLSAgICAgICAgc2V0SW50ZWdlclBvc2l0
aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgbV9uYW1lZEdyaWRMaW5lID0gbmFtZWRHcmlkTGluZTsK
LSAgICB9CisgICAgdm9pZCBzZXRFeHBsaWNpdFBvc2l0aW9uKGludCBwb3NpdGlvbiwgY29uc3Qg
U3RyaW5nJiBuYW1lZEdyaWRMaW5lKTsKKyAgICB2b2lkIHNldEF1dG9Qb3NpdGlvbigpOworICAg
IHZvaWQgc2V0U3BhblBvc2l0aW9uKGludCBwb3NpdGlvbiwgY29uc3QgU3RyaW5nJiBuYW1lZEdy
aWRMaW5lKTsKKyAgICB2b2lkIHNldE5hbWVkR3JpZEFyZWEoY29uc3QgU3RyaW5nJik7CiAKLSAg
ICB2b2lkIHNldEF1dG9Qb3NpdGlvbigpCi0gICAgewotICAgICAgICBtX3R5cGUgPSBBdXRvUG9z
aXRpb247Ci0gICAgICAgIG1faW50ZWdlclBvc2l0aW9uID0gMDsKLSAgICB9CisgICAgaW50IGlu
dGVnZXJQb3NpdGlvbigpIGNvbnN0OworICAgIFN0cmluZyBuYW1lZEdyaWRMaW5lKCkgY29uc3Q7
CisgICAgaW50IHNwYW5Qb3NpdGlvbigpIGNvbnN0OwogCi0gICAgLy8gJ3NwYW4nIHZhbHVlcyBj
YW5ub3QgYmUgbmVnYXRpdmUsIHlldCB3ZSByZXVzZSB0aGUgPGludGVnZXI+IHBvc2l0aW9uIHdo
aWNoIGNhbgotICAgIC8vIGJlLiBUaGlzIG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRo
ZSBzcGFuIHBvc2l0aW9uIHRvIGFuIGludGVnZXIsIGxvc2luZwotICAgIC8vIHNvbWUgcHJlY2lz
aW9uIGhlcmUuIEl0IHNob3VsZG4ndCBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZSB0aG91Z2guCi0g
ICAgdm9pZCBzZXRTcGFuUG9zaXRpb24oaW50IHBvc2l0aW9uLCBjb25zdCBTdHJpbmcmIG5hbWVk
R3JpZExpbmUpCi0gICAgewotICAgICAgICBtX3R5cGUgPSBTcGFuUG9zaXRpb247Ci0gICAgICAg
IHNldEludGVnZXJQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgIG1fbmFtZWRHcmlkTGluZSA9
IG5hbWVkR3JpZExpbmU7Ci0gICAgfQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkUG9z
aXRpb24mIG90aGVyKSBjb25zdDsKIAotICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYShjb25zdCBT
dHJpbmcmIG5hbWVkR3JpZEFyZWEpCi0gICAgewotICAgICAgICBtX3R5cGUgPSBOYW1lZEdyaWRB
cmVhUG9zaXRpb247Ci0gICAgICAgIG1fbmFtZWRHcmlkTGluZSA9IG5hbWVkR3JpZEFyZWE7Ci0g
ICAgfQorICAgIGJvb2wgc2hvdWxkQmVSZXNvbHZlZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKCkg
Y29uc3QgeyByZXR1cm4gaXNBdXRvKCkgfHwgaXNTcGFuKCk7IH0KIAotICAgIGludCBpbnRlZ2Vy
UG9zaXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBFeHBsaWNp
dFBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1faW50ZWdlclBvc2l0aW9uOwotICAgIH0KKyAg
ICAvLyBOb3RlIHRoYXQgZ3JpZCBsaW5lIDEgaXMgaW50ZXJuYWxseSByZXByZXNlbnRlZCBieSB0
aGUgaW5kZXggMCwgdGhhdCdzIHdoeSB0aGUgbWF4IHZhbHVlIGZvcgorICAgIC8vIGEgcG9zaXRp
b24gaXMga0dyaWRNYXhUcmFja3MgaW5zdGVhZCBvZiBrR3JpZE1heFRyYWNrcyArIDEuCisgICAg
c3RhdGljIGludCBtYXgoKSB7IHJldHVybiBnTWF4UG9zaXRpb25Gb3JUZXN0aW5nLnZhbHVlX29y
KGtHcmlkTWF4VHJhY2tzKTsgfQorICAgIHN0YXRpYyBpbnQgbWluKCkgeyByZXR1cm4gLW1heCgp
OyB9CiAKLSAgICBTdHJpbmcgbmFtZWRHcmlkTGluZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBB
U1NFUlQodHlwZSgpID09IEV4cGxpY2l0UG9zaXRpb24gfHwgdHlwZSgpID09IFNwYW5Qb3NpdGlv
biB8fCB0eXBlKCkgPT0gTmFtZWRHcmlkQXJlYVBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1f
bmFtZWRHcmlkTGluZTsKLSAgICB9Ci0KLSAgICBpbnQgc3BhblBvc2l0aW9uKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gU3BhblBvc2l0aW9uKTsKLSAgICAgICAgcmV0
dXJuIG1faW50ZWdlclBvc2l0aW9uOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBHcmlkUG9zaXRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9pbnRlZ2VyUG9zaXRpb24gPT0gb3RoZXIubV9pbnRlZ2Vy
UG9zaXRpb24gJiYgbV9uYW1lZEdyaWRMaW5lID09IG90aGVyLm1fbmFtZWRHcmlkTGluZTsKLSAg
ICB9Ci0KLSAgICBib29sIHNob3VsZEJlUmVzb2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaXNBdXRvKCkgfHwgaXNTcGFuKCk7Ci0gICAg
fQorICAgIHN0YXRpYyB2b2lkIHNldE1heFBvc2l0aW9uRm9yVGVzdGluZyhpbnQgbWF4UG9zaXRp
b24pIHsgZ01heFBvc2l0aW9uRm9yVGVzdGluZyA9IG1heFBvc2l0aW9uOyB9CiAKIHByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0IGludCBrR3JpZE1heFRyYWNrcyA9IDEwMDAwMDA7CisgICAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8aW50PiBnTWF4UG9zaXRpb25Gb3JUZXN0aW5nOworCiAgICAgdm9p
ZCBzZXRJbnRlZ2VyUG9zaXRpb24oaW50IGludGVnZXJQb3NpdGlvbikKICAgICB7CiAgICAgICAg
IG1faW50ZWdlclBvc2l0aW9uID0gY2xhbXBUbyhpbnRlZ2VyUG9zaXRpb24sIC1rR3JpZE1heFRy
YWNrcywga0dyaWRNYXhUcmFja3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAppbmRleCA2MTRhMzVhMjg0Nzk3
Y2I5NGZkNThiM2VjZmNiZTY1OTY4Y2Q2N2U3Li4yMjFlZDA1NzY5NWI0NDM1MWVjN2I3MzVhOGY0
ZDUxM2JiYjM1MmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTcgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAg
LTE4NywxMiArMTg3LDEyIEBAIHN0YXRpYyB2b2lkIGFkanVzdEdyaWRQb3NpdGlvbnNGcm9tU3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwKIAogdW5zaWduZWQgR3Jp
ZFBvc2l0aW9uc1Jlc29sdmVyOjpleHBsaWNpdEdyaWRDb2x1bW5Db3VudChjb25zdCBSZW5kZXJT
dHlsZSYgZ3JpZENvbnRhaW5lclN0eWxlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQp
CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1heChncmlkQ29udGFpbmVy
U3R5bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJhY2tzQ291bnQsIGdyaWRD
b250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSksIGtHcmlkTWF4VHJhY2tz
KTsKKyAgICByZXR1cm4gc3RkOjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KGdyaWRDb250YWluZXJT
dHlsZS5ncmlkQ29sdW1ucygpLnNpemUoKSArIGF1dG9SZXBlYXRUcmFja3NDb3VudCwgZ3JpZENv
bnRhaW5lclN0eWxlLm5hbWVkR3JpZEFyZWFDb2x1bW5Db3VudCgpKSwgR3JpZFBvc2l0aW9uOjpt
YXgoKSk7CiB9CiAKIHVuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlk
Um93Q291bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgdW5zaWduZWQg
YXV0b1JlcGVhdFRyYWNrc0NvdW50KQogewotICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4o
c3RkOjptYXgoZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRSb3dzKCkuc2l6ZSgpICsgYXV0b1JlcGVh
dFRyYWNrc0NvdW50LCBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYVJvd0NvdW50KCkp
LCBrR3JpZE1heFRyYWNrcyk7CisgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1h
eChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZFJvd3MoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJhY2tz
Q291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhUm93Q291bnQoKSksIEdyaWRQ
b3NpdGlvbjo6bWF4KCkpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgZXhwbGljaXRHcmlkU2l6ZUZv
clNpZGUoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgR3JpZFBvc2l0aW9u
U2lkZSBzaWRlLCB1bnNpZ25lZCBhdXRvUmVwZWF0VHJhY2tzQ291bnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggMDhkYThjNjgyN2ZkMzRjZGM1Y2MwZjBiYjUxMDI2NmRi
ZWIyYjJjZS4uOTRkY2Q1ZWVkOGQyZDFmOTU4MTZiMzk0NmNjZjYzY2FiYWJhODVjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjIsNiArNjIsNyBAQAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR0NPYnNl
cnZhdGlvbi5oIgorI2luY2x1ZGUgIkdyaWRQb3NpdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxDYW52
YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MSW1hZ2VFbGVtZW50LmgiCkBAIC03NTcsNiArNzU4LDExIEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRDbGVhckRlY29kZXJBZnRlckFzeW5jRnJhbWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1hZ2VF
bGVtZW50CiAgICAgZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkuc2V0Q2xlYXJEZWNvZGVy
QWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcodmFsdWUpOwogfQogCit2b2lkIEludGVy
bmFsczo6c2V0R3JpZE1heFRyYWNrc0xpbWl0KHVuc2lnbmVkIG1heFRyYWNrTGltaXQpCit7Cisg
ICAgR3JpZFBvc2l0aW9uOjpzZXRNYXhQb3NpdGlvbkZvclRlc3RpbmcobWF4VHJhY2tMaW1pdCk7
Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpjbGVhclBhZ2VDYWNoZSgpCiB7CiAgICAgUGFnZUNhY2hl
OjpzaW5nbGV0b24oKS5wcnVuZVRvU2l6ZU5vdygwLCBQcnVuaW5nUmVhc29uOjpOb25lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDUyYzRkNTkyYzZjMTIyYjM0NzhjODY2MmFl
ZmJmNWFmYTMwYmFiODAuLmY3MzE1Y2Q3ODQ2Y2E1MWUxNjNlYjJmMDhkNTM0M2EwNjVjZmU3NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTE3LDYgKzExNyw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCYpOwogICAg
IHZvaWQgc2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRlc3RpbmcoSFRN
TEltYWdlRWxlbWVudCYsIGJvb2wpOwogCisgICAgdm9pZCBzZXRHcmlkTWF4VHJhY2tzTGltaXQo
dW5zaWduZWQpOworCiAgICAgdm9pZCBjbGVhclBhZ2VDYWNoZSgpOwogICAgIHVuc2lnbmVkIHBh
Z2VDYWNoZVNpemUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmlu
ZGV4IGE2NWMzODQ2MDhkZjBiMTdmNTY4NDJhNWFjZDMwYzI3OGNkZDU3MDAuLmMyYjhkNjc1N2Iw
ZWQyY2ZjOTQxZGE1NGU5YzU4OGMwY2RiZDJmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKQEAgLTI0Niw2ICsyNDYsOCBAQCBlbnVtIEV2ZW50VGhyb3R0bGluZ0JlaGF2aW9y
IHsKICAgICB2b2lkIHJlc2V0SW1hZ2VBbmltYXRpb24oSFRNTEltYWdlRWxlbWVudCBlbGVtZW50
KTsKICAgICB2b2lkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0
aW5nKEhUTUxJbWFnZUVsZW1lbnQgZWxlbWVudCwgYm9vbGVhbiB2YWx1ZSk7CiAKKyAgICB2b2lk
IHNldEdyaWRNYXhUcmFja3NMaW1pdCh1bnNpZ25lZCBsb25nIG1heFRyYWNrTGltaXQpOworCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIEludGVybmFsU2V0dGluZ3Mgc2V0dGluZ3M7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd29ya2VyVGhyZWFkQ291bnQ7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhZmVkNTJhZWUxOWMyNjMyZWFlOWRmYTQ2NDkyMWIxNWViMmUzZDJhLi4zZDkxZjI1MWFmYzMy
ZWJlMzNiMTdjZGI1MDk0ZmMyY2Q0MTFkNjY3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTct
MDMtMjcgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW2Nzcy1ncmlkXSBDbGFtcCB0aGUgbnVtYmVyIG9mIGF1dG9yZXBlYXQgdHJhY2tzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxMjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyB0
ZXN0IHRvIGNoZWNrIHRoZSBjbGFtcGluZyBvZiBncmlkIHRyYWNrcy4gSXQncyBtb3N0bHkgYWxs
IEphdmFTY3JpcHQgaW4gb3JkZXIKKyAgICAgICAgdG8gYWxsb3cgdXMgdG8gcnVuIHNldmVyYWwg
dGVzdCBjYXNlcyBvdmVyIGEgc21hbGwgbnVtYmVyIG9mIGdyaWRzIGluIGEgc2luZ2xlIGZpbGUg
cXVpdGUKKyAgICAgICAgZmFzdC4gVGhlIG90aGVyIG9wdGlvbiB3YXMgdG8gc3RhdGljYWxseSAo
Q1NTKSBjcmVhdGUgc2V2ZXJhbCBodWdlIGdyaWRzLCBzb21ldGhpbmcgdGhhdAorICAgICAgICBj
b3VsZCBwb3RlbnRpYWxseSBiZSB2ZXJ5IGV4cGVuc2l2ZSBpbiB0ZXJtcyBvZiBtZW1vcnkgYW5k
IENQVSBsZWFkaW5nIHRvIHRpbWVvdXRzLgorCisgICAgICAgICogZmFzdC9jc3MtZ3JpZC1sYXlv
dXQvZ3JpZC1hdXRvLXJlcGVhdC1odWdlLWdyaWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3JpZC5odG1s
OiBBZGRlZC4KKwogMjAxNy0wMy0yMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbU291cF0gIk9ubHkgZnJvbSB3ZWJzaXRlcyBJIHZpc2l0IiBj
b29raWUgcG9saWN5IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z3JpZC1sYXlvdXQvZ3JpZC1hdXRvLXJlcGVhdC1odWdlLWdyaWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQvZ3JpZC1hdXRvLXJlcGVhdC1odWdlLWdyaWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI4MTAyZmQ2NmNkNzEyNDZjYjhhN2EwNjZiZDYzNTE1
MmM2YWRhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxh
eW91dC9ncmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3JpZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
NiBAQAorSXRlbTEKK0l0ZW0yCitJdGVtMworSXRlbTEKK0l0ZW0yCitJdGVtMworCitQQVNTIFRl
c3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIHJlcGV0aXRpb25z
IGV2ZW4gb24gdmVyeSB3aWRlIGdyaWRzIChub3JtYWwgdHJhY2tzIGNsYW1wZWQpLiAKK1BBU1Mg
VGVzdCB0aGF0IHdlIGRvbid0IGdldCBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3MgcmVwZXRpdGlv
bnMgZXZlbiBvbiB2ZXJ5IHRhbGwgZ3JpZHMgKG5vcm1hbCB0cmFja3MgY2xhbXBlZCkuIAorUEFT
UyBUZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3JpZE1heFRyYWNrcyByZXBldGl0
aW9ucyBldmVuIG9uIHZlcnkgd2lkZSBncmlkcyAoYXV0byByZXBlYXQgdHJhY2tzIGNsYW1wZWQp
LiAKK1BBU1MgVGVzdCB0aGF0IHdlIGRvbid0IGdldCBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3Mg
cmVwZXRpdGlvbnMgZXZlbiBvbiB2ZXJ5IHRhbGwgZ3JpZHMgKGF1dG8gcmVwZWF0IHRyYWNrcyBj
bGFtcGVkKS4gCitQQVNTIFRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4
VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB3aWRlIGdyaWRzIHdpdGggZ2Fwcy4gCitQ
QVNTIFRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIHJlcGV0
aXRpb25zIGV2ZW4gb24gdmVyeSB0YWxsIGdyaWRzIHdpdGggZ2Fwcy4gCitQQVNTIFRlc3QgdGhh
dCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4g
b24gdmVyeSB3aWRlIGdyaWRzIHdpdGggZ2FwcyBhbmQgbWluLXdpZHRoLiAKK1BBU1MgVGVzdCB0
aGF0IHdlIGRvbid0IGdldCBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3MgcmVwZXRpdGlvbnMgZXZl
biBvbiB2ZXJ5IHRhbGwgZ3JpZHMgd2l0aCBnYXBzIGFuZCBtaW4taGVpZ2h0LiAKK1BBU1MgVGVz
dCB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlcmUgYXJlIGV4YWN0bHkga0dyaWRNYXhUcmFj
a3MgYXV0byByZXBlYXQgcm93cyBvbiB2ZXJ5IHRhbGwgZ3JpZHMuIAorUEFTUyBUZXN0IHRoYXQg
d2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgZXhhY3RseSBrR3JpZE1heFRyYWNrcyBhdXRv
IHJlcGVhdCBjb2x1bW5zIG9uIHZlcnkgd2lkZSBncmlkcy4gCitQQVNTIFRlc3QgdGhhdCB3ZSBk
b24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlkTWF4VHJhY2tzIChub3JtYWwg
YW5kIGF1dG8tcmVwZWF0KSByb3dzIG9uIHZlcnkgdGFsbCBncmlkcy4gCitQQVNTIFRlc3QgdGhh
dCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlkTWF4VHJhY2tzIChu
b3JtYWwgYW5kIGF1dG8tcmVwZWF0KSBjb2x1bW5zIG9uIHZlcnkgd2lkZSBncmlkcy4gCitQQVNT
IFRlc3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlkTWF4
VHJhY2tzIG5vbiBhdXRvLXJlcGVhdCByb3dzIG9uIHZlcnkgdGFsbCBncmlkcy4gCitQQVNTIFRl
c3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlkTWF4VHJh
Y2tzIG5vbiBhdXRvLXJlcGVhdCBjb2x1bW5zIG9uIHZlcnkgd2lkZSBncmlkcy4gCitQQVNTIFRl
c3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlkTWF4VHJh
Y2tzIG5vbiBhdXRvLXJlcGVhdCByb3dzIG9uIHZlcnkgdGFsbCBncmlkcyB3aXRoIGVub3VnaCBy
b29tIGZvciBhdXRvIHJlcGV0aXRpb25zLiAKK1BBU1MgVGVzdCB0aGF0IHdlIGRvbid0IGNyYXNo
IHdoZW4gdGhlcmUgYXJlIGV4YWN0bHkga0dyaWRNYXhUcmFja3Mgbm9uIGF1dG8tcmVwZWF0IGNv
bHVtbnMgb24gdmVyeSB3aWRlIGdyaWRzIHdpdGggZW5vdWdoIHJvb20gZm9yIGF1dG8gcmVwZXRp
dGlvbnMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgbW9y
ZSB0aGFuIGtHcmlkTWF4VHJhY2tzIG5vbiBhdXRvLXJlcGVhdCByb3dzIG9uIHZlcnkgdGFsbCBn
cmlkcy4gCitQQVNTIFRlc3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBtb3Jl
IHRoYW4ga0dyaWRNYXhUcmFja3Mgbm9uIGF1dG8tcmVwZWF0IGNvbHVtbnMgb24gdmVyeSB3aWRl
IGdyaWRzLiAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ3JpZC1sYXlvdXQv
Z3JpZC1hdXRvLXJlcGVhdC1odWdlLWdyaWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdy
aWQtbGF5b3V0L2dyaWQtYXV0by1yZXBlYXQtaHVnZS1ncmlkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNi
NzRiMDNkZGNhNWNjMjkxMDJlNTkzNWI1MmJhNDViODkzZDliNwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtYXV0by1yZXBlYXQtaHVnZS1n
cmlkLmh0bWwKQEAgLTAsMCArMSwzMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPlRlc3Qg
Zm9yIGF1dG8tZml0IGFuZCBhdXRvLWZpbGwgd2l0aCBodWdlIGdyaWRzIChsb3RzIG9mIHRyYWNr
cyk8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iU2VyZ2lvIFZpbGxhciBTZW5p
biIgaHJlZj0ibWFpbHRvOnN2aWxsYXJAaWdhbGlhLmNvbSI+Cis8bGluayBocmVmPSJyZXNvdXJj
ZXMvZ3JpZC5jc3MiIHJlbD0ic3R5bGVzaGVldCI+Cis8bGluayBocmVmPSIuLi9jc3MtaW50cmlu
c2ljLWRpbWVuc2lvbnMvcmVzb3VyY2VzL3dpZHRoLWtleXdvcmQtY2xhc3Nlcy5jc3MiIHJlbD0i
c3R5bGVzaGVldCI+Cis8bGluayBocmVmPSIuLi9jc3MtaW50cmluc2ljLWRpbWVuc2lvbnMvcmVz
b3VyY2VzL2hlaWdodC1rZXl3b3JkLWNsYXNzZXMuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorCis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9ncmlkLWRlZmluaXRpb25zLXBhcnNpbmctdXRpbHMu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorIC53aWRlR3JpZCB7IHdpZHRoOiAxMDAwMDAwMDAwcHg7
IH0KKyAudGFsbEdyaWQgeyBoZWlnaHQ6IDEwMDAwMDAwMDBweDsgfQorCisgLndpZHRoMjVrIHsg
d2lkdGg6IDI1MDAwcHg7IH0KKyAuaGVpZ2h0MjVrIHsgaGVpZ2h0OiAyNTAwMHB4OyB9CisKKyAu
bGFzdENvbHVtbiB7IGdyaWQtY29sdW1uOiAtMiAvIC0xOyB9CisgLmxhc3RSb3cgeyBncmlkLXJv
dzogLTIgLyAtMTsgfQorCisgLm1pblNpemVXaWRlR3JpZCB7IG1pbi13aWR0aDogMTAwMDAwMDAw
MHB4OyB9CisgLm1pblNpemVUYWxsR3JpZCB7IG1pbi1oZWlnaHQ6IDEwMDAwMDAwMDBweDsgfQor
CisgLmxvdHNPZkZpeGVkUmVwZWF0V2l0aEF1dG9GaXRDb2xzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zOiByZXBlYXQoYXV0by1maXQsIDEwcHggMnB4IDhweCkgcmVwZWF0KDk5MiwgMXB4KTsgfQor
IC5sb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRmlsbENvbHMgeyBncmlkLXRlbXBsYXRlLWNvbHVt
bnM6IHJlcGVhdChhdXRvLWZpbGwsIDEwcHggMnB4IDhweCA3cHggMjBweCkgcmVwZWF0KDk5NSwg
MXB4KTsgfQorCisgLmxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpdENvbHMgeyBncmlkLXRlbXBs
YXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgMTBweCAycHggOHB4KSByZXBlYXQoMTAsIDFw
eCk7IH0KKyAubG90c09mQXV0b1JlcGVhdFdpdGhBdXRvRmlsbENvbHMgeyBncmlkLXRlbXBsYXRl
LWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIDEwcHggMnB4IDhweCA3cHggMjBweCkgcmVwZWF0
KDEwLCAxcHgpOyB9CisKKyAubG90c09mRml4ZWRSZXBlYXRXaXRoQXV0b0ZpdENvbHNSZXZlcnNl
ZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogIHJlcGVhdCg5OTIsIDFweCkgcmVwZWF0KGF1dG8t
Zml0LCAxMHB4IDJweCA4cHgpOyB9CisgLmxvdHNPZkZpeGVkUmVwZWF0V2l0aEF1dG9GaWxsQ29s
c1JldmVyc2VkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAgcmVwZWF0KDk5NSwgMXB4KSByZXBl
YXQoYXV0by1maWxsLCAxMHB4IDJweCA4cHggN3B4IDIwcHgpOyB9CisKKyAubG90c09mRml4ZWRS
ZXBlYXRXaXRoQXV0b0ZpdFJvd3MgeyBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdChhdXRvLWZp
dCwgMTBweCAycHggOHB4KSByZXBlYXQoOTkyLCAxcHgpOyB9CisgLmxvdHNPZkZpeGVkUmVwZWF0
V2l0aEF1dG9GaWxsUm93cyB7IGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KGF1dG8tZmlsbCwg
MTBweCAycHggOHB4IDdweCAyMHB4KSByZXBlYXQoOTk1LCAxcHgpOyB9CisKKyAubG90c09mQXV0
b1JlcGVhdFdpdGhBdXRvRml0Um93cyB7IGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KGF1dG8t
Zml0LCAxMHB4IDJweCA4cHgpIHJlcGVhdCgxMCwgMXB4KTsgfQorIC5sb3RzT2ZBdXRvUmVwZWF0
V2l0aEF1dG9GaWxsUm93cyB7IGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KGF1dG8tZmlsbCwg
MTBweCAycHggOHB4IDdweCAyMHB4KSByZXBlYXQoMTAsIDFweCk7IH0KKworIC5sb3RzT2ZGaXhl
ZFJlcGVhdFdpdGhBdXRvRml0Um93c1JldmVyc2VkIHsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAgcmVw
ZWF0KDk5MiwgMXB4KSByZXBlYXQoYXV0by1maXQsIDEwcHggMnB4IDhweCk7IH0KKyAubG90c09m
Rml4ZWRSZXBlYXRXaXRoQXV0b0ZpbGxSb3dzUmV2ZXJzZWQgeyBncmlkLXRlbXBsYXRlLXJvd3M6
IHJlcGVhdCg5OTUsIDFweCkgcmVwZWF0KGF1dG8tZmlsbCwgMTBweCAycHggOHB4IDdweCAyMHB4
KTsgfQorCisgLmF1dG9GaXRSb3dzMjVweCB7IGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KGF1
dG8tZml0LCAxMHB4IDJweCA4cHggNXB4KTsgfQorIC5hdXRvRml0Q29sczI1cHggeyBncmlkLXRl
bXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgMTBweCAycHggOHB4IDVweCk7IH0KKwor
IC5hdXRvRmlsbFJvd3MyNXB4IHsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoYXV0by1maWxs
LCAxN3B4IDhweCk7IH0KKyAuYXV0b0ZpbGxDb2xzMjVweCB7IGdyaWQtdGVtcGxhdGUtY29sdW1u
czogcmVwZWF0KGF1dG8tZmlsbCwgMnB4IDIzcHgpOyB9CisKKyAuYXV0b0ZpdFJvd3MyMDVweEZp
eGVkNXB4IHsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoOTAwLCA1cHgpIHJlcGVhdChhdXRv
LWZpdCwgMjBweCA1MHB4IDEzcHggNTBweCA3MnB4KTsgfQorIC5hdXRvRml0Q29sczIwNXB4Rml4
ZWQ1cHggeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5MDAsIDVweCkgcmVwZWF0KGF1
dG8tZml0LCAyMHB4IDUwcHggMTNweCA1MHB4IDcycHgpOyB9CisKKyAuYXV0b0ZpbGxSb3dzMjA1
cHhGaXhlZDVweCB7IGdyaWQtdGVtcGxhdGUtcm93czogIHJlcGVhdCg5MDAsIDVweCkgcmVwZWF0
KGF1dG8tZmlsbCwgMjAwcHggNXB4KTsgfQorIC5hdXRvRmlsbENvbHMyMDVweEZpeGVkNXB4IHsg
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoOTAwLCA1cHgpIHJlcGVhdChhdXRvLWZpbGws
IDIwMHB4IDVweCk7IH0KKworIC5hdXRvRml0QW5kQVRob3VzYW5kRml4ZWRSb3dzIHsgZ3JpZC10
ZW1wbGF0ZS1yb3dzOiByZXBlYXQoYXV0by1maXQsIDIwcHggNTBweCA3MnB4KSByZXBlYXQoMTAw
MCwgMzdweCk7IH0KKyAuYXV0b0ZpdEFuZEFUaG91c2FuZEZpeGVkQ29scyB7IGdyaWQtdGVtcGxh
dGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCAyMHB4IDUwcHggNzJweCkgcmVwZWF0KDEwMDAs
IDM3cHgpOyB9CisKKyAuYXV0b0ZpbGxBbmRBVGhvdXNhbmRGaXhlZFJvd3MgeyBncmlkLXRlbXBs
YXRlLXJvd3M6IHJlcGVhdChhdXRvLWZpbGwsIDJweCkgcmVwZWF0KDEwMDAsIDM3cHgpOyB9Cisg
LmF1dG9GaWxsQW5kQVRob3VzYW5kRml4ZWRDb2xzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBy
ZXBlYXQoYXV0by1maWxsLCAycHgpIHJlcGVhdCgxMDAwLCAzN3B4KTsgfQorCisgLmF1dG9GaXRB
bmRNb3JlVGhhblRob3VzYW5kRml4ZWRSb3dzIHsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAgcmVwZWF0
KDcwMCwgN3B4KSByZXBlYXQoYXV0by1maXQsIDExcHggMTNweCAxMjVweCkgcmVwZWF0KDYwMCwg
NnB4KTsgfQorIC5hdXRvRml0QW5kTW9yZVRoYW5UaG91c2FuZEZpeGVkQ29scyB7IGdyaWQtdGVt
cGxhdGUtY29sdW1uczogIHJlcGVhdCg3MDAsIDdweCkgcmVwZWF0KGF1dG8tZml0LCAxMXB4IDEz
cHggMTI1cHgpIHJlcGVhdCg2MDAsIDZweCk7IH0KKworIC5hdXRvRmlsbEFuZE1vcmVUaGFuVGhv
dXNhbmRGaXhlZFJvd3MgeyBncmlkLXRlbXBsYXRlLXJvd3M6IHJlcGVhdCg3MDAsIDdweCkgcmVw
ZWF0KGF1dG8tZmlsbCwgMjBweCA1MHB4IDcycHgpIHJlcGVhdCg2MDAsIDZweCk7IH0KKyAuYXV0
b0ZpbGxBbmRNb3JlVGhhblRob3VzYW5kRml4ZWRDb2xzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
OiByZXBlYXQoNzAwLCA3cHgpIHJlcGVhdChhdXRvLWZpbGwsIDIwcHggNTBweCA3MnB4KSByZXBl
YXQoNjAwLCA2cHgpOyB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJhdXRvRmlsbEdyaWRDb2xzIiBj
bGFzcz0iZ3JpZCI+PC9kaXY+Cis8ZGl2IGlkPSJhdXRvRml0R3JpZENvbHMiIGNsYXNzPSJncmlk
Ij4KKyAgICA8ZGl2IHN0eWxlPSJncmlkLWNvbHVtbjogMTsiPkl0ZW0xPC9kaXY+CisgICAgPGRp
diBzdHlsZT0iZ3JpZC1jb2x1bW46IDI7Ij5JdGVtMjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Imxh
c3RDb2x1bW4iPkl0ZW0zPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0iYXV0b0ZpbGxHcmlkUm93
cyIgY2xhc3M9ImdyaWQiPjwvZGl2PgorPGRpdiBpZD0iYXV0b0ZpdEdyaWRSb3dzIiBjbGFzcz0i
Z3JpZCI+CisgICAgPGRpdiBzdHlsZT0iZ3JpZC1yb3c6IDE7Ij5JdGVtMTwvZGl2PgorICAgIDxk
aXYgc3R5bGU9ImdyaWQtcm93OiAyOyI+SXRlbTI8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJsYXN0
Um93Ij5JdGVtMzwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CisgdmFyIG1heFRyYWNrc0ZvclRl
c3RpbmcgPSAxMDAwOyAgLy8gS2VlcCB0aGlzIHZhbHVlIGluIHN5bmMgd2l0aCB0aGUgb25lcyB1
c2VkIGluIENTUyBkZWZpbml0aW9ucy4KKyB2YXIgYXV0b0ZpbGxHcmlkRWxlbWVudENvbHMgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXV0b0ZpbGxHcmlkQ29scyIpOworIHZhciBhdXRvRml0
R3JpZEVsZW1lbnRDb2xzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF1dG9GaXRHcmlkQ29s
cyIpOworIHZhciBhdXRvRmlsbEdyaWRFbGVtZW50Um93cyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJhdXRvRmlsbEdyaWRSb3dzIik7CisgdmFyIGF1dG9GaXRHcmlkRWxlbWVudFJvd3MgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXV0b0ZpdEdyaWRSb3dzIik7CisgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0R3JpZE1heFRyYWNrc0xpbWl0KG1h
eFRyYWNrc0ZvclRlc3RpbmcpOworCisgZnVuY3Rpb24gdGVzdEVsZW1lbnQoZ3JpZEVsZW1lbnQs
IHByb3BlcnR5LCBsZW5ndGgsIGNsYXNzTmFtZXMpIHsKKyAgICAgLyogZ3JpZEVsZW1lbnQuc3R5
bGUuZ3JpZFRlbXBsYXRlID0gJ25vbmUnOyovCisKKyAgICAgZm9yIChsZXQgY2xhc3NOYW1lIG9m
IGNsYXNzTmFtZXMpCisgICAgICAgICBncmlkRWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFt
ZSk7CisKKyAgICAgLy8gU2VlbXMgbGlrZSB0aGlzIGlzIG5vdCBlbm91Z2ggdG8gdHJpZ2dlciBh
IHByb3BlciBsYXlvdXQ7CisKKyAgICAgdmFyIHByb3BlcnR5VmFsdWUgPSBnZXRDb21wdXRlZFN0
eWxlKGdyaWRFbGVtZW50LCAnJykuZ2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eSk7CisgICAgIGZv
ciAobGV0IGNsYXNzTmFtZSBvZiBjbGFzc05hbWVzKQorICAgICAgICAgZ3JpZEVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOworCisgICAgIGlmIChwcm9wZXJ0eVZhbHVlID09ICIi
KSB7CisgICAgICAgICBhc3NlcnRfZXF1YWxzKGxlbmd0aCwgMCk7CisgICAgICAgICByZXR1cm4g
W107CisgICAgIH0KKworICAgICB2YXIgdHJhY2tzID0gcHJvcGVydHlWYWx1ZS5zcGxpdCgnICcp
OworICAgICBhc3NlcnRfZXF1YWxzKHRyYWNrcy5sZW5ndGgsIGxlbmd0aCk7CisgICAgIHJldHVy
biB0cmFja3M7CisgfQorCisgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgdmFyIGF1dG9GaWxsR3Jp
ZCA9IHRlc3RFbGVtZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1j
b2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWRlR3JpZCIsICJsb3RzT2ZGaXhlZFJl
cGVhdFdpdGhBdXRvRmlsbENvbHMiXSk7CisgICAgIHZhciBhdXRvRml0R3JpZCA9IHRlc3RFbGVt
ZW50KGF1dG9GaXRHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhU
cmFja3NGb3JUZXN0aW5nLCBbIndpZGVHcmlkIiwgImxvdHNPZkZpeGVkUmVwZWF0V2l0aEF1dG9G
aXRDb2xzIl0pOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRl
c3RpbmcgLSAxXSwgIjEwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFttYXhU
cmFja3NGb3JUZXN0aW5nIC0gMl0sICIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0
R3JpZFswXSwgIjEwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFsxXSwgIjJw
eCIpOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3Rp
bmcgLSAxXSwgIjIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRbbWF4VHJh
Y2tzRm9yVGVzdGluZyAtIDJdLCAiN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxH
cmlkWzBdLCAiMTBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFsxXSwgIjJw
eCIpOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3JpZE1heFRyYWNr
cyByZXBldGl0aW9ucyBldmVuIG9uIHZlcnkgd2lkZSBncmlkcyAobm9ybWFsIHRyYWNrcyBjbGFt
cGVkKS4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBhdXRvRmlsbEdyaWQgPSB0
ZXN0RWxlbWVudChhdXRvRmlsbEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIs
IG1heFRyYWNrc0ZvclRlc3RpbmcsIFsidGFsbEdyaWQiLCAibG90c09mRml4ZWRSZXBlYXRXaXRo
QXV0b0ZpbGxSb3dzIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0RWxlbWVudChhdXRv
Rml0R3JpZEVsZW1lbnRSb3dzLCAiZ3JpZC10ZW1wbGF0ZS1yb3dzIiwgbWF4VHJhY2tzRm9yVGVz
dGluZywgWyJ0YWxsR3JpZCIsICJsb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRml0Um93cyJdKTsK
KyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0s
ICIxMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9yVGVz
dGluZyAtIDJdLCAiMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbMF0sICIx
MHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbMV0sICIycHgiKTsKKworICAg
ICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIy
MHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3Rp
bmcgLSAyXSwgIjdweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFswXSwgIjEw
cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRbMV0sICIycHgiKTsKKyB9LCAi
VGVzdCB0aGF0IHdlIGRvbid0IGdldCBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3MgcmVwZXRpdGlv
bnMgZXZlbiBvbiB2ZXJ5IHRhbGwgZ3JpZHMgKG5vcm1hbCB0cmFja3MgY2xhbXBlZCkuIik7CisK
KyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxHcmlkID0gdGVzdEVsZW1lbnQo
YXV0b0ZpbGxHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhUcmFj
a3NGb3JUZXN0aW5nLCBbIndpZGVHcmlkIiwgImxvdHNPZkZpeGVkUmVwZWF0V2l0aEF1dG9GaWxs
Q29sc1JldmVyc2VkIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0RWxlbWVudChhdXRv
Rml0R3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9y
VGVzdGluZywgWyJ3aWRlR3JpZCIsICJsb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRml0Q29sc1Jl
dmVyc2VkIl0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9y
VGVzdGluZyAtIDFdLCAiMnB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4
VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0Zp
dEdyaWRbMF0sICIxcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFsxXSwgIjFw
eCIpOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3Rp
bmcgLSAxXSwgIjIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRbbWF4VHJh
Y2tzRm9yVGVzdGluZyAtIDJdLCAiN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxH
cmlkWzBdLCAiMXB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkWzFdLCAiMXB4
Iik7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tz
IHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB3aWRlIGdyaWRzIChhdXRvIHJlcGVhdCB0cmFja3Mg
Y2xhbXBlZCkuIik7CisKKyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxHcmlk
ID0gdGVzdEVsZW1lbnQoYXV0b0ZpbGxHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJv
d3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbInRhbGxHcmlkIiwgImxvdHNPZkZpeGVkUmVwZWF0
V2l0aEF1dG9GaWxsUm93c1JldmVyc2VkIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0
RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRSb3dzLCAiZ3JpZC10ZW1wbGF0ZS1yb3dzIiwgbWF4
VHJhY2tzRm9yVGVzdGluZywgWyJ0YWxsR3JpZCIsICJsb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRv
Rml0Um93c1JldmVyc2VkIl0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4
VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMnB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0Zp
dEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiMHB4Iik7CisgICAgIGFzc2VydF9lcXVh
bHMoYXV0b0ZpdEdyaWRbMF0sICIxcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3Jp
ZFsxXSwgIjFweCIpOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNr
c0ZvclRlc3RpbmcgLSAxXSwgIjIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdy
aWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMo
YXV0b0ZpbGxHcmlkWzBdLCAiMXB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlk
WzFdLCAiMXB4Iik7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlk
TWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB0YWxsIGdyaWRzIChhdXRvIHJlcGVh
dCB0cmFja3MgY2xhbXBlZCkuIik7CisKKyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICBhdXRvRmls
bEdyaWRFbGVtZW50Q29scy5zdHlsZS5ncmlkR2FwID0gIjEwMHB4IjsKKyAgICAgYXV0b0ZpdEdy
aWRFbGVtZW50Q29scy5zdHlsZS5ncmlkR2FwID0gIjEwMHB4IjsKKworICAgICB2YXIgYXV0b0Zp
bGxHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpbGxHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBs
YXRlLWNvbHVtbnMiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbIndpZGVHcmlkIiwgImxvdHNPZkF1
dG9SZXBlYXRXaXRoQXV0b0ZpbGxDb2xzIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0
RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwg
bWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWRlR3JpZCIsICJsb3RzT2ZBdXRvUmVwZWF0V2l0aEF1
dG9GaXRDb2xzIl0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tz
Rm9yVGVzdGluZyAtIDFdLCAiMTBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlk
W21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1
dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIyMHB4Iik7CisgICAgIGFzc2Vy
dF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjdweCIpOwor
CisgICAgIGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzLnN0eWxlLmdyaWRHYXAgPSAiMTAwMDAwMHB4
IjsKKyAgICAgYXV0b0ZpdEdyaWRFbGVtZW50Q29scy5zdHlsZS5ncmlkR2FwID0gIjEwMDAwMDBw
eCI7CisKKyAgICAgdGVzdEVsZW1lbnQoYXV0b0ZpbGxHcmlkRWxlbWVudENvbHMsICJncmlkLXRl
bXBsYXRlLWNvbHVtbnMiLCAxMzAsIFsid2lkZUdyaWQiLCAibG90c09mQXV0b1JlcGVhdFdpdGhB
dXRvRmlsbENvbHMiXSk7CisgICAgIHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVudENvbHMs
ICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCA4MiwgWyJ3aWRlR3JpZCIsICJsb3RzT2ZBdXRvUmVw
ZWF0V2l0aEF1dG9GaXRDb2xzIl0pOworCisgICAgIGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzLnN0
eWxlLmdyaWRHYXAgPSAiMHB4IjsKKyAgICAgYXV0b0ZpdEdyaWRFbGVtZW50Q29scy5zdHlsZS5n
cmlkR2FwID0gIjBweCI7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtH
cmlkTWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB3aWRlIGdyaWRzIHdpdGggZ2Fw
cy4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIGF1dG9GaWxsR3JpZEVsZW1lbnRSb3dz
LnN0eWxlLmdyaWRHYXAgPSAiMTAwcHgiOworICAgICBhdXRvRml0R3JpZEVsZW1lbnRSb3dzLnN0
eWxlLmdyaWRHYXAgPSAiMTAwcHgiOworCisgICAgIHZhciBhdXRvRmlsbEdyaWQgPSB0ZXN0RWxl
bWVudChhdXRvRmlsbEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIG1heFRy
YWNrc0ZvclRlc3RpbmcsIFsidGFsbEdyaWQiLCAibG90c09mQXV0b1JlcGVhdFdpdGhBdXRvRmls
bFJvd3MiXSk7CisgICAgIHZhciBhdXRvRml0R3JpZCA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlk
RWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBb
InRhbGxHcmlkIiwgImxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpdFJvd3MiXSk7CisKKyAgICAg
YXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIxMHB4
Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAt
IDJdLCAiMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0Zv
clRlc3RpbmcgLSAxXSwgIjIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRb
bWF4VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiN3B4Iik7CisKKyAgICAgYXV0b0ZpbGxHcmlkRWxl
bWVudFJvd3Muc3R5bGUuZ3JpZEdhcCA9ICIxMDAwMDAwcHgiOworICAgICBhdXRvRml0R3JpZEVs
ZW1lbnRSb3dzLnN0eWxlLmdyaWRHYXAgPSAiMTAwMDAwMHB4IjsKKworICAgICB0ZXN0RWxlbWVu
dChhdXRvRmlsbEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIDEzMCwgWyJ0
YWxsR3JpZCIsICJsb3RzT2ZBdXRvUmVwZWF0V2l0aEF1dG9GaWxsUm93cyJdKTsKKyAgICAgdGVz
dEVsZW1lbnQoYXV0b0ZpdEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIDgy
LCBbInRhbGxHcmlkIiwgImxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpdFJvd3MiXSk7CisKKyAg
ICAgYXV0b0ZpbGxHcmlkRWxlbWVudFJvd3Muc3R5bGUuZ3JpZEdhcCA9ICIwcHgiOworICAgICBh
dXRvRml0R3JpZEVsZW1lbnRSb3dzLnN0eWxlLmdyaWRHYXAgPSAiMHB4IjsKKyB9LCAiVGVzdCB0
aGF0IHdlIGRvbid0IGdldCBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3MgcmVwZXRpdGlvbnMgZXZl
biBvbiB2ZXJ5IHRhbGwgZ3JpZHMgd2l0aCBnYXBzLiIpOworCisgdGVzdChmdW5jdGlvbigpIHsK
KyAgICAgdmFyIGF1dG9GaWxsQ29scyA9IHRlc3RFbGVtZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRD
b2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJsb3Rz
T2ZBdXRvUmVwZWF0V2l0aEF1dG9GaWxsQ29scyIsICJtaW5TaXplV2lkZUdyaWQiLCAibWluLWNv
bnRlbnQiXSk7CisgICAgIHZhciBhdXRvRml0Q29scyA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlk
RWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhUcmFja3NGb3JUZXN0aW5n
LCBbImxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpdENvbHMiLCAibWluU2l6ZVdpZGVHcmlkIiwg
Im1pbi1jb250ZW50Il0pOworCisgICAgIC8vIENoZWNrIHRoYXQgY2xhbXBpbmcgYXV0byByZXBl
dGl0aW9ucyBkb2VzIG5vdCByZWR1Y2UgdGhlIGFtb3VudCBvZiB0aGUgb3RoZXIgdHJhY2tzLgor
ICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsQ29sc1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0s
ICIyMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxDb2xzW21heFRyYWNrc0ZvclRl
c3RpbmcgLSAyXSwgIjdweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRDb2xzW21heFRy
YWNrc0ZvclRlc3RpbmcgLSAxXSwgIjEwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0
Q29sc1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICIwcHgiKTsKKyB9LCAiVGVzdCB0aGF0IHdl
IGRvbid0IGdldCBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3MgcmVwZXRpdGlvbnMgZXZlbiBvbiB2
ZXJ5IHdpZGUgZ3JpZHMgd2l0aCBnYXBzIGFuZCBtaW4td2lkdGguIik7CisKKyB0ZXN0KGZ1bmN0
aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxSb3dzID0gdGVzdEVsZW1lbnQoYXV0b0ZpbGxHcmlk
RWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBb
ImxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpbGxSb3dzIiwgIm1pblNpemVUYWxsR3JpZCIsICJt
aW4tY29udGVudCJdKTsKKyAgICAgdmFyIGF1dG9GaXRSb3dzID0gdGVzdEVsZW1lbnQoYXV0b0Zp
dEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIG1heFRyYWNrc0ZvclRlc3Rp
bmcsIFsibG90c09mQXV0b1JlcGVhdFdpdGhBdXRvRml0Um93cyIsICJtaW5TaXplVGFsbEdyaWQi
LCAibWluLWNvbnRlbnQiXSk7CisKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbFJvd3NbbWF4
VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMjBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9G
aWxsUm93c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICI3cHgiKTsKKyAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRvRml0Um93c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIxMHB4Iik7CisgICAg
IGFzc2VydF9lcXVhbHMoYXV0b0ZpdFJvd3NbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiMHB4
Iik7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tz
IHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB0YWxsIGdyaWRzIHdpdGggZ2FwcyBhbmQgbWluLWhl
aWdodC4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBhdXRvRmlsbFJvd3MgPSB0
ZXN0RWxlbWVudChhdXRvRmlsbEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIs
IG1heFRyYWNrc0ZvclRlc3RpbmcsIFsiaGVpZ2h0MjVrIiwgImF1dG9GaWxsUm93czI1cHgiXSk7
CisgICAgIHZhciBhdXRvRml0Um93cyA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVudFJv
d3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbImhlaWdodDI1
ayIsICJhdXRvRml0Um93czI1cHgiXSk7CisKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbFJv
d3NbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiOHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMo
YXV0b0ZpbGxSb3dzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjE3cHgiKTsKKyAgICAgYXNz
ZXJ0X2VxdWFscyhhdXRvRml0Um93c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICI1cHgiKTsK
KyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0Um93c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0s
ICIwcHgiKTsKKyB9LCAiVGVzdCB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlcmUgYXJlIGV4
YWN0bHkga0dyaWRNYXhUcmFja3MgYXV0byByZXBlYXQgcm93cyBvbiB2ZXJ5IHRhbGwgZ3JpZHMu
Iik7CisKKyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxDb2xzID0gdGVzdEVs
ZW1lbnQoYXV0b0ZpbGxHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBt
YXhUcmFja3NGb3JUZXN0aW5nLCBbIndpZHRoMjVrIiwgImF1dG9GaWxsQ29sczI1cHgiXSk7Cisg
ICAgIHZhciBhdXRvRml0Q29scyA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVudENvbHMs
ICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbIndpZHRoMjVr
IiwgImF1dG9GaXRDb2xzMjVweCJdKTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsQ29s
c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIyM3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMo
YXV0b0ZpbGxDb2xzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjJweCIpOworICAgICBhc3Nl
cnRfZXF1YWxzKGF1dG9GaXRDb2xzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjVweCIpOwor
ICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRDb2xzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwg
IjBweCIpOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgZXhh
Y3RseSBrR3JpZE1heFRyYWNrcyBhdXRvIHJlcGVhdCBjb2x1bW5zIG9uIHZlcnkgd2lkZSBncmlk
cy4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBhdXRvRmlsbFJvd3MgPSB0ZXN0
RWxlbWVudChhdXRvRmlsbEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIG1h
eFRyYWNrc0ZvclRlc3RpbmcsIFsiaGVpZ2h0MjVrIiwgImF1dG9GaWxsUm93czIwNXB4Rml4ZWQ1
cHgiXSk7CisgICAgIHZhciBhdXRvRml0Um93cyA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxl
bWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbImhl
aWdodDI1ayIsICJhdXRvRml0Um93czIwNXB4Rml4ZWQ1cHgiXSk7CisKKyAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRvRmlsbFJvd3NbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiNXB4Iik7CisgICAg
IGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxSb3dzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjIw
MHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdFJvd3NbbWF4VHJhY2tzRm9yVGVzdGlu
ZyAtIDFdLCAiNzJweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRSb3dzW21heFRyYWNr
c0ZvclRlc3RpbmcgLSAyXSwgIjBweCIpOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2gg
d2hlbiB0aGVyZSBhcmUgZXhhY3RseSBrR3JpZE1heFRyYWNrcyAobm9ybWFsIGFuZCBhdXRvLXJl
cGVhdCkgcm93cyBvbiB2ZXJ5IHRhbGwgZ3JpZHMuIik7CisKKyB0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgICB2YXIgYXV0b0ZpbGxDb2xzID0gdGVzdEVsZW1lbnQoYXV0b0ZpbGxHcmlkRWxlbWVudENv
bHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbIndpZHRo
MjVrIiwgImF1dG9GaWxsQ29sczIwNXB4Rml4ZWQ1cHgiXSk7CisgICAgIHZhciBhdXRvRml0Q29s
cyA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNv
bHVtbnMiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbIndpZHRoMjVrIiwgImF1dG9GaXRDb2xzMjA1
cHhGaXhlZDVweCJdKTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsQ29sc1ttYXhUcmFj
a3NGb3JUZXN0aW5nIC0gMV0sICI1cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbENv
bHNbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiMjAwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFs
cyhhdXRvRml0Q29sc1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICI3MnB4Iik7CisgICAgIGFz
c2VydF9lcXVhbHMoYXV0b0ZpdENvbHNbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiMHB4Iik7
CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtH
cmlkTWF4VHJhY2tzIChub3JtYWwgYW5kIGF1dG8tcmVwZWF0KSBjb2x1bW5zIG9uIHZlcnkgd2lk
ZSBncmlkcy4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBhdXRvRmlsbEdyaWQg
PSB0ZXN0RWxlbWVudChhdXRvRmlsbEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93
cyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsiaGVpZ2h0MjVrIiwgImF1dG9GaWxsQW5kQVRob3Vz
YW5kRml4ZWRSb3dzIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0RWxlbWVudChhdXRv
Rml0R3JpZEVsZW1lbnRSb3dzLCAiZ3JpZC10ZW1wbGF0ZS1yb3dzIiwgbWF4VHJhY2tzRm9yVGVz
dGluZywgWyJoZWlnaHQyNWsiLCAiYXV0b0ZpdEFuZEFUaG91c2FuZEZpeGVkUm93cyJdKTsKKwor
ICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0s
ICIzN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkWzBdLCAiMnB4Iik7Cisg
ICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAi
MzdweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkWzBdLCAiMjBweCIpOworIH0s
ICJUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgZXhhY3RseSBrR3JpZE1h
eFRyYWNrcyBub24gYXV0by1yZXBlYXQgcm93cyBvbiB2ZXJ5IHRhbGwgZ3JpZHMuIik7CisKKyB0
ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxHcmlkID0gdGVzdEVsZW1lbnQoYXV0
b0ZpbGxHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhUcmFja3NG
b3JUZXN0aW5nLCBbIndpZHRoMjVrIiwgImF1dG9GaWxsQW5kQVRob3VzYW5kRml4ZWRDb2xzIl0p
OworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRD
b2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWR0
aDI1ayIsICJhdXRvRml0QW5kQVRob3VzYW5kRml4ZWRDb2xzIl0pOworCisgICAgIGFzc2VydF9l
cXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjM3cHgiKTsKKyAg
ICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRbMF0sICIycHgiKTsKKyAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRvRml0R3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIzN3B4Iik7CisgICAg
IGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbMF0sICIyMHB4Iik7CisgfSwgIlRlc3QgdGhhdCB3
ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlkTWF4VHJhY2tzIG5vbiBh
dXRvLXJlcGVhdCBjb2x1bW5zIG9uIHZlcnkgd2lkZSBncmlkcy4iKTsKKworIHRlc3QoZnVuY3Rp
b24oKSB7CisgICAgIHZhciBhdXRvRmlsbEdyaWQgPSB0ZXN0RWxlbWVudChhdXRvRmlsbEdyaWRF
bGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsi
dGFsbEdyaWQiLCAiYXV0b0ZpbGxBbmRBVGhvdXNhbmRGaXhlZFJvd3MiXSk7CisgICAgIHZhciBh
dXRvRml0R3JpZCA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVudFJvd3MsICJncmlkLXRl
bXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbInRhbGxHcmlkIiwgImF1dG9GaXRB
bmRBVGhvdXNhbmRGaXhlZFJvd3MiXSk7CisKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdy
aWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMnB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMo
YXV0b0ZpbGxHcmlkWzBdLCAiMnB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRb
bWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMjBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1
dG9GaXRHcmlkWzBdLCAiMjBweCIpOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hl
biB0aGVyZSBhcmUgZXhhY3RseSBrR3JpZE1heFRyYWNrcyBub24gYXV0by1yZXBlYXQgcm93cyBv
biB2ZXJ5IHRhbGwgZ3JpZHMgd2l0aCBlbm91Z2ggcm9vbSBmb3IgYXV0byByZXBldGl0aW9ucy4i
KTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBhdXRvRmlsbEdyaWQgPSB0ZXN0RWxl
bWVudChhdXRvRmlsbEdyaWRFbGVtZW50Q29scywgImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsIG1h
eFRyYWNrc0ZvclRlc3RpbmcsIFsid2lkZUdyaWQiLCAiYXV0b0ZpbGxBbmRBVGhvdXNhbmRGaXhl
ZENvbHMiXSk7CisgICAgIHZhciBhdXRvRml0R3JpZCA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlk
RWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhUcmFja3NGb3JUZXN0aW5n
LCBbIndpZGVHcmlkIiwgImF1dG9GaXRBbmRBVGhvdXNhbmRGaXhlZENvbHMiXSk7CisKKyAgICAg
YXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMnB4
Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkWzBdLCAiMnB4Iik7CisgICAgIGFz
c2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMjBweCIp
OworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkWzBdLCAiMjBweCIpOworIH0sICJUZXN0
IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgZXhhY3RseSBrR3JpZE1heFRyYWNr
cyBub24gYXV0by1yZXBlYXQgY29sdW1ucyBvbiB2ZXJ5IHdpZGUgZ3JpZHMgd2l0aCBlbm91Z2gg
cm9vbSBmb3IgYXV0byByZXBldGl0aW9ucy4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAg
IHZhciBhdXRvRmlsbEdyaWQgPSB0ZXN0RWxlbWVudChhdXRvRmlsbEdyaWRFbGVtZW50Um93cywg
ImdyaWQtdGVtcGxhdGUtcm93cyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsiaGVpZ2h0MjVrIiwg
ImF1dG9GaWxsQW5kTW9yZVRoYW5UaG91c2FuZEZpeGVkUm93cyJdKTsKKyAgICAgdmFyIGF1dG9G
aXRHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpdEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxh
dGUtcm93cyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsiaGVpZ2h0MjVrIiwgImF1dG9GaXRBbmRN
b3JlVGhhblRob3VzYW5kRml4ZWRSb3dzIl0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0Zp
bGxHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjcycHgiKTsKKyAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRvRmlsbEdyaWRbMF0sICI3cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0
R3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIxMjVweCIpOworICAgICBhc3NlcnRfZXF1
YWxzKGF1dG9GaXRHcmlkWzBdLCAiN3B4Iik7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBjcmFz
aCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3Mgbm9uIGF1dG8tcmVwZWF0
IHJvd3Mgb24gdmVyeSB0YWxsIGdyaWRzLiIpOworCisgdGVzdChmdW5jdGlvbigpIHsKKyAgICAg
dmFyIGF1dG9GaWxsR3JpZCA9IHRlc3RFbGVtZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzLCAi
Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWR0aDI1ayIs
ICJhdXRvRmlsbEFuZE1vcmVUaGFuVGhvdXNhbmRGaXhlZENvbHMiXSk7CisgICAgIHZhciBhdXRv
Rml0R3JpZCA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBs
YXRlLWNvbHVtbnMiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbIndpZHRoMjVrIiwgImF1dG9GaXRB
bmRNb3JlVGhhblRob3VzYW5kRml4ZWRDb2xzIl0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0
b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjcycHgiKTsKKyAgICAgYXNzZXJ0
X2VxdWFscyhhdXRvRmlsbEdyaWRbMF0sICI3cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRv
Rml0R3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIxMjVweCIpOworICAgICBhc3NlcnRf
ZXF1YWxzKGF1dG9GaXRHcmlkWzBdLCAiN3B4Iik7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBj
cmFzaCB3aGVuIHRoZXJlIGFyZSBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3Mgbm9uIGF1dG8tcmVw
ZWF0IGNvbHVtbnMgb24gdmVyeSB3aWRlIGdyaWRzLiIpOworCis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305743</attachid>
            <date>2017-03-29 09:15:01 -0700</date>
            <delta_ts>2017-03-30 02:13:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170120-20170329181457.patch</filename>
            <type>text/plain</type>
            <size>52477</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk1MzE3MDk0MmMzZmY0
MTM1MWZiMTdiNzkxNjI0NjY5ZTQ2ODU1My4uZjUyYmQ5OTM2ZmM1ZGM3ZTk4NzY4MTJhODU0ZjM2
YjBiMzcwYjliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDE3LTAzLTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtjc3MtZ3Jp
ZF0gQ2xhbXAgdGhlIG51bWJlciBvZiBhdXRvcmVwZWF0IHRyYWNrcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTIwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgc3VnZ2VzdGVkIGJ5IHRoZSBzcGVj
cyB3ZSBkbyBjbGFtcCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdHJhY2tzIHBlciBncmlkIGluIG9y
ZGVyIHRvCisgICAgICAgIG1pbmltaXplIHBvdGVudGlhbCBPT00gc2l0dWF0aW9ucy4gSG93ZXZl
ciB3ZSB3ZXJlIG5vdCBjb25zaWRlcmluZyB0aGUgY2FzZSBvZiB0aGUgcmVjZW50bHkKKyAgICAg
ICAgYWRkZWQgYXV0byByZXBlYXQgc3ludGF4LiBBYm5vcm1hbGx5IGh1Z2UgdmFsdWVzIGZvciB0
aGUgd2lkdGgvaGVpZ2h0IG9uIHRoZSBncmlkIGNvbnRhaW5lcgorICAgICAgICBjb3VsZCBsZWFk
IHRvIGEgbnVtYmVyIG9mIGF1dG8gcmVwZWF0IHRyYWNrcyBoaWdoZXIgdGhhbiB0aGUgbWF4aW11
bS4KKworICAgICAgICBBIG5ldyBBUEkgd2FzIGFkZGVkIHRvIEludGVybmFscyBpbiBvcmRlciB0
byB0ZXN0IGxpbWl0cyB3aXRob3V0IGhhdmluZyB0byBjcmVhdGUgaHVnZQorICAgICAgICBncmlk
cy4gVGhpcyBuZXcgQVBJIGFsbG93cyBjbGllbnRzIHRvIHNldCBhbiBhcmJpdHJhcnkgbGltaXQg
dG8gdGhlIG51bWJlciBvZiB0cmFja3MuIFRoZQorICAgICAgICBhZGRpdGlvbiBvZiB0aGlzIG5l
dyBBUEkgZm9yY2VkIHVzIHRvIGFkZCBHcmlkUG9zaXRpb24uY3BwIHRvIHRoZSBwcm9qZWN0IHRv
IGRlZmluZSB0aGUKKyAgICAgICAgZ2xvYmFsIHZhcmlhYmxlIHdlIHVzZSBmb3IgdGVzdGluZy4g
V2UgdG9vayB0aGUgY2hhbmNlIHRvIG1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24KKyAg
ICAgICAgZnJvbSB0aGUgaGVhZGVyIGZpbGUgdG8gdGhlIHNvdXJjZSBmaWxlLgorCisgICAgICAg
IExhc3QgYnV0IG5vdCBsZWFzdCwgc2V2ZXJhbCBuZXcgQVNTRVJUcyB3ZXJlIGFkZGVkIHRvIEdy
aWQuY3BwIGltcGxlbWVudGF0aW9uIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIHdlIGRvIG5vdCBz
dXJwYXNzIHRoZSBncmlkIHRyYWNrIGxpbWl0cy4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy1n
cmlkLWxheW91dC9ncmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3JpZC5odG1sCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9HcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWQ6OmVuc3VyZUdyaWRTaXpl
KTogQWRkZWQgQVNTRVJULgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0U21hbGxlc3RUcmFj
a3NTdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0QXV0b1JlcGVhdFRy
YWNrcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0QXV0b1JlcGVhdEVtcHR5
Q29sdW1ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6R3JpZDo6c2V0QXV0b1JlcGVhdEVt
cHR5Um93cyk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmNsYW1wQXV0b1JlcGVhdFRyYWNrcyk6IE5ldyBt
ZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpwbGFjZUl0ZW1zT25HcmlkKTog
Q2xhbXAgdGhlIG51bWJlciBvZiBhdXRvIHJlcGVhdCB0cmFja3MgYmVmb3JlCisgICAgICAgIHBh
c3NpbmcgdGhlbSB0byB0aGUgR3JpZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkQXJlYS5oOgorICAgICAgICAoV2ViQ29y
ZTo6R3JpZFNwYW46OkdyaWRTcGFuKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldEV4
cGxpY2l0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpzZXRBdXRv
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpzZXRTcGFuUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpzZXROYW1lZEdyaWRBcmVhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6aW50ZWdlclBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6bmFtZWRHcmlkTGluZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmlkUG9zaXRpb246OnNwYW5Qb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmlk
UG9zaXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9z
aXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c2hvdWxkQmVSZXNvbHZl
ZEFnYWluc3RPcHBvc2l0ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlv
bjo6bWF4KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6bWluKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c2V0TWF4UG9zaXRpb25Gb3JUZXN0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c2V0RXhwbGljaXRQb3NpdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldEF1dG9Qb3NpdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldFNwYW5Qb3NpdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb246OnNldE5hbWVkR3JpZEFyZWEp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjppbnRlZ2VyUG9zaXRp
b24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JpZFBvc2l0aW9uOjpuYW1lZEdyaWRM
aW5lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6c3BhblBvc2l0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbjo6b3BlcmF0b3I9
PSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNv
bHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmlkUG9zaXRpb25zUmVzb2x2ZXI6OmV4cGxp
Y2l0R3JpZENvbHVtbkNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyaWRQb3NpdGlvbnNSZXNv
bHZlcjo6ZXhwbGljaXRHcmlkUm93Q291bnQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2V0R3JpZE1heFRyYWNrc0xpbWl0
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmlkbDoKKwogMjAxNy0wMy0yMSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbU291cF0gIk9ubHkgZnJvbSB3ZWJzaXRlcyBJIHZpc2l0
IiBjb29raWUgcG9saWN5IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxZDlmMDRi
ZGJmOTNmMjg0NjU4NTU4YmI5NzdhMDZkYTRmNGFmZjNlLi42MzM2ZDM3NmRiM2Y4ZjYwYTk1N2Qz
OTBjNjQ0NGE3MWVhM2M4NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjYyMCw2ICsyNjIw
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0
YS5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwCiAgICAgcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKyAgICByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0
aW9uLmNwcAogICAgIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCiAg
ICAgcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5jcHAKICAgICByZW5kZXJpbmcvc3R5bGUv
TmluZVBpZWNlSW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTY4OWVkNjczNTE2M2I5Nzc4M2E4MWUxYWY3MTUwMzY3
MjRkNmM0Yi4uYjczYTVlOTI2ZjVlOGExZjI3NTVkZDk1MTllMzVmY2IzNDAyZTk1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjQ4MSw2ICs2NDgxLDcgQEAKIAkJRTE3MkFGNzAxODBGMjg5NTAwRkJBREI5IC8qIENyeXB0b0tl
eVVzYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTcyQUY2RjE4MEYyODk1MDBGQkFEQjkgLyogQ3J5cHRvS2V5VXNhZ2UuaCAqLzsgfTsKIAkJRTE3
MkFGOEYxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkg
LyogSlNET01Qcm9taXNlLmNwcCAqLzsgfTsKIAkJRTE3MkFGOTAxODExQkMzNzAwRkJBREI5IC8q
IEpTRE9NUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTE3MkFGOEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUxNzVCQTk5MUU4QUUz
MzgwMDcxNDU0RiAvKiBHcmlkUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODE3NDUxRTg5N0E1MjAwRjIyQ0QwIC8qIEdyaWRQb3Np
dGlvbi5jcHAgKi87IH07CiAJCUUxNzlGMERBMUI5Nzc0RkUwMEVEMEEyNyAvKiBJbnRlcm5hbHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTc5RjBE
OTFCOTc3NEZFMDBFRDBBMjcgLyogSW50ZXJuYWxzLm1tICovOyB9OwogCQlFMTdCNDkxNTE2QTlC
MDk0MDAxQzg4MzkgLyogVHJhbnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxN0I0OTEzMTZBOUIwOTMwMDFDODgzOSAvKiBUcmFu
c2l0aW9uRXZlbnQuY3BwICovOyB9OwogCQlFMTdCNDkxNjE2QTlCMDk0MDAxQzg4MzkgLyogVHJh
bnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTdCNDkxNDE2QTlCMDkzMDAxQzg4MzkgLyogVHJhbnNpdGlvbkV2ZW50LmggKi87IH07
CkBAIC0xNTA0Nyw2ICsxNTA0OCw3IEBACiAJCUUxRjgwQjg2MTgzMTcyNTIwMDc4ODVDMyAvKiBD
cnlwdG9LZXlQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tl
eVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEIxODMxNzJCNTAw
Nzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMUY4MTc0NTFFODk3QTUyMDBGMjJDRDAgLyogR3JpZFBvc2l0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyaWRQb3NpdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkUxMzY4MTgzRkUxQUIwMDg5
MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxRkUxMzY5MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2
RTE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBN
YWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjMzODQsNiArMjMzODYsNyBA
QAogCQkJCUJDNUVCNjlEMEU4MURBRUIwMEIyNTk2NSAvKiBGaWxsTGF5ZXIuaCAqLywKIAkJCQlD
RDNFMjUxQjE4MDQ2QjA2MDBFMjdGNTYgLyogR3JpZEFyZWEuaCAqLywKIAkJCQlDREVGNEZENjE3
RTg1QzhGMDBBRUUyNEIgLyogR3JpZExlbmd0aC5oICovLAorCQkJCUUxRjgxNzQ1MUU4OTdBNTIw
MEYyMkNEMCAvKiBHcmlkUG9zaXRpb24uY3BwICovLAogCQkJCUExMjcwNUMyMTY1NkJENjUwMEMy
RTI3QyAvKiBHcmlkUG9zaXRpb24uaCAqLywKIAkJCQlDREY3NDgzQzE4RkVCQ0VDMDAwNkVDQzAg
LyogR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCAqLywKIAkJCQlDREY3NDgzRDE4RkVCQ0VDMDAw
NkVDQzAgLyogR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmggKi8sCkBAIC0zMTAyNCw2ICszMTAyNyw3
IEBACiAJCQkJMEZBMjRENzkxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQTAxNUFBMEFGNkNENTMwMDZCQ0UwRSAvKiBHcmFw
aGljc1R5cGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMTJGNDcxMUUzQTg2MTIwMEQ2Q0RG
RCAvKiBHcmlkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUxNzVCQTk5MUU4QUUzMzgwMDcxNDU0
RiAvKiBHcmlkUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGNzQ4M0UxOEZFQkNF
QzAwMDZFQ0MwIC8qIEdyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMTZEQ0I0QjFFNzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VDb25uZWN0aW9uU3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyREU3MTcxRTRCNzQ5QzAwRjlBQ0NGIC8qIEdyaWRUcmFj
a1NpemluZ0FsZ29yaXRobS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggOGE2NmI3NDJjMzY2OGMzODRj
ODI4ZWUwNjA2YmUxMzZiZDgwYjVhMS4uNDEzMWI3ZmEwMjcwMDM4NGNhNTA5NWMxM2NjMGZhYzZm
YWIzODdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAKQEAgLTMzNDUsNyArMzM0NSw3IEBAIHN0YXRpYyBib29sIGNvbnN1bWVHcmlkVHJh
Y2tSZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyCiAg
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVwZXRpdGlvbiA9IGNvbnN1bWVQb3Np
dGl2ZUludGVnZXIoYXJncyk7CiAgICAgICAgIGlmICghcmVwZXRpdGlvbikKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNpemVfdD4ocmVw
ZXRpdGlvbi0+ZG91YmxlVmFsdWUoKSwgMCwga0dyaWRNYXhUcmFja3MpOworICAgICAgICByZXBl
dGl0aW9ucyA9IGNsYW1wVG88c2l6ZV90PihyZXBldGl0aW9uLT5kb3VibGVWYWx1ZSgpLCAwLCBH
cmlkUG9zaXRpb246Om1heCgpKTsKICAgICAgICAgcmVwZWF0ZWRWYWx1ZXMgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgfQogICAgIGlmICghY29uc3VtZUNvbW1h
SW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKQEAgLTMzNzUsNyArMzM3NSw3IEBAIHN0YXRpYyBi
b29sIGNvbnN1bWVHcmlkVHJhY2tSZXBlYXRGdW5jdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgQ1NTUGFyc2VyCiAgICAgICAgIGxpc3QuYXBwZW5kKHJlcGVhdGVkVmFsdWVzLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBXZSBjbGFtcCB0aGUgcmVwZXRp
dGlvbnMgdG8gYSBtdWx0aXBsZSBvZiB0aGUgcmVwZWF0KCkgdHJhY2sgbGlzdCdzIHNpemUsIHdo
aWxlIHN0YXlpbmcgYmVsb3cgdGhlIG1heCBncmlkIHNpemUuCi0gICAgICAgIHJlcGV0aXRpb25z
ID0gc3RkOjptaW4ocmVwZXRpdGlvbnMsIGtHcmlkTWF4VHJhY2tzIC8gbnVtYmVyT2ZUcmFja3Mp
OworICAgICAgICByZXBldGl0aW9ucyA9IHN0ZDo6bWluKHJlcGV0aXRpb25zLCBHcmlkUG9zaXRp
b246Om1heCgpIC8gbnVtYmVyT2ZUcmFja3MpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlcGV0aXRpb25zOyArK2kpIHsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgcmVwZWF0ZWRWYWx1ZXMtPmxlbmd0aCgpOyArK2opCiAgICAgICAgICAgICAgICAgbGlzdC5h
cHBlbmQoKnJlcGVhdGVkVmFsdWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGopKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkLmNwcAppbmRleCA3NDgzOGI5MmY2ZmNlMGY1YTNjZWRiODhmMzBlYWE5
MTI1OTlmN2QzLi4wYTExOGRlNjE1MGQ1ZGExNmI1NzNkYWExMzc1MTMxNDEzN2JlYTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0dyaWQuY3BwCkBAIC00NSw2ICs0NSw4IEBAIHVuc2lnbmVkIEdyaWQ6
Om51bVRyYWNrcyhHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAogCiB2
b2lkIEdyaWQ6OmVuc3VyZUdyaWRTaXplKHVuc2lnbmVkIG1heGltdW1Sb3dTaXplLCB1bnNpZ25l
ZCBtYXhpbXVtQ29sdW1uU2l6ZSkKIHsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8aW50PihtYXhp
bXVtUm93U2l6ZSkgPCBHcmlkUG9zaXRpb246Om1heCgpICogMik7CisgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PGludD4obWF4aW11bUNvbHVtblNpemUpIDwgR3JpZFBvc2l0aW9uOjptYXgoKSAqIDIp
OwogICAgIGNvbnN0IHNpemVfdCBvbGRDb2x1bW5TaXplID0gbnVtVHJhY2tzKEZvckNvbHVtbnMp
OwogICAgIGNvbnN0IHNpemVfdCBvbGRSb3dTaXplID0gbnVtVHJhY2tzKEZvclJvd3MpOwogICAg
IGlmIChtYXhpbXVtUm93U2l6ZSA+IG9sZFJvd1NpemUpIHsKQEAgLTc0LDYgKzc2LDggQEAgdm9p
ZCBHcmlkOjppbnNlcnQoUmVuZGVyQm94JiBjaGlsZCwgY29uc3QgR3JpZEFyZWEmIGFyZWEpCiAK
IHZvaWQgR3JpZDo6c2V0U21hbGxlc3RUcmFja3NTdGFydChpbnQgcm93U3RhcnQsIGludCBjb2x1
bW5TdGFydCkKIHsKKyAgICBBU1NFUlQocm93U3RhcnQgPiBHcmlkUG9zaXRpb246Om1pbigpICYm
IHJvd1N0YXJ0IDwgR3JpZFBvc2l0aW9uOjptYXgoKSAtIDEpOworICAgIEFTU0VSVChjb2x1bW5T
dGFydCA+IEdyaWRQb3NpdGlvbjo6bWluKCkgJiYgY29sdW1uU3RhcnQgPCBHcmlkUG9zaXRpb246
Om1heCgpIC0gMSk7CiAgICAgbV9zbWFsbGVzdFJvd1N0YXJ0ID0gcm93U3RhcnQ7CiAgICAgbV9z
bWFsbGVzdENvbHVtblN0YXJ0ID0gY29sdW1uU3RhcnQ7CiB9CkBAIC05Niw2ICsxMDAsOCBAQCB2
b2lkIEdyaWQ6OnNldEdyaWRJdGVtQXJlYShjb25zdCBSZW5kZXJCb3gmIGl0ZW0sIEdyaWRBcmVh
IGFyZWEpCiAKIHZvaWQgR3JpZDo6c2V0QXV0b1JlcGVhdFRyYWNrcyh1bnNpZ25lZCBhdXRvUmVw
ZWF0Um93cywgdW5zaWduZWQgYXV0b1JlcGVhdENvbHVtbnMpCiB7CisgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihHcmlkUG9zaXRpb246Om1heCgpKSA+PSBudW1UcmFja3MoRm9yUm93
cykgKyBhdXRvUmVwZWF0Um93cyk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihH
cmlkUG9zaXRpb246Om1heCgpKSA+PSBudW1UcmFja3MoRm9yQ29sdW1ucykgKyBhdXRvUmVwZWF0
Q29sdW1ucyk7CiAgICAgbV9hdXRvUmVwZWF0Um93cyA9IGF1dG9SZXBlYXRSb3dzOwogICAgIG1f
YXV0b1JlcGVhdENvbHVtbnMgPSAgYXV0b1JlcGVhdENvbHVtbnM7CiB9CkBAIC0xMDcsMTEgKzEx
MywxMyBAQCB1bnNpZ25lZCBHcmlkOjphdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFja1NpemluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAKIHZvaWQgR3JpZDo6c2V0QXV0b1JlcGVhdEVtcHR5
Q29sdW1ucyhzdGQ6OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IGF1dG9SZXBlYXRF
bXB0eUNvbHVtbnMpCiB7CisgICAgQVNTRVJUKCFhdXRvUmVwZWF0RW1wdHlDb2x1bW5zIHx8IChh
dXRvUmVwZWF0RW1wdHlDb2x1bW5zLT5zaXplKCkgPD0gbV9hdXRvUmVwZWF0Q29sdW1ucykpOwog
ICAgIG1fYXV0b1JlcGVhdEVtcHR5Q29sdW1ucyA9IFdURk1vdmUoYXV0b1JlcGVhdEVtcHR5Q29s
dW1ucyk7CiB9CiAKIHZvaWQgR3JpZDo6c2V0QXV0b1JlcGVhdEVtcHR5Um93cyhzdGQ6OnVuaXF1
ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IGF1dG9SZXBlYXRFbXB0eVJvd3MpCiB7CisgICAg
QVNTRVJUKCFhdXRvUmVwZWF0RW1wdHlSb3dzIHx8IChhdXRvUmVwZWF0RW1wdHlSb3dzLT5zaXpl
KCkgPD0gbV9hdXRvUmVwZWF0Um93cykpOwogICAgIG1fYXV0b1JlcGVhdEVtcHR5Um93cyA9IFdU
Rk1vdmUoYXV0b1JlcGVhdEVtcHR5Um93cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcAppbmRleCA1YWYwNjhhMDM1YjBkZjA5MDllNzUzN2UxNDdlYWQ0ODA1ZDY2
NGQxLi45NjU2MDcxMGYwOGQ0ODZkMjdmZDY5NzcyZDUyNGM5OTE5OTYwNjkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCkBAIC01MzUsMTAgKzUzNSwzMSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8T3JkZXJlZFRyYWNrSW5kZXhTZXQ+IFJlbmRlckdyaWQ6OmNvbXB1dGVFbXB0
eVRyYWNrc0ZvckF1dG9SZXBlYQogICAgIHJldHVybiBlbXB0eVRyYWNrSW5kZXhlczsKIH0KIAor
dW5zaWduZWQgUmVuZGVyR3JpZDo6Y2xhbXBBdXRvUmVwZWF0VHJhY2tzKEdyaWRUcmFja1Npemlu
Z0RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3MpIGNvbnN0Cit7
CisgICAgaWYgKCFhdXRvUmVwZWF0VHJhY2tzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVu
c2lnbmVkIGluc2VydGlvblBvaW50ID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzdHlsZSgp
LmdyaWRBdXRvUmVwZWF0Q29sdW1uc0luc2VydGlvblBvaW50KCkgOiBzdHlsZSgpLmdyaWRBdXRv
UmVwZWF0Um93c0luc2VydGlvblBvaW50KCk7CisgICAgdW5zaWduZWQgbWF4VHJhY2tzID0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEdyaWRQb3NpdGlvbjo6bWF4KCkpOworCisgICAgaWYgKCFpbnNl
cnRpb25Qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWluKGF1dG9SZXBlYXRUcmFja3MsIG1h
eFRyYWNrcyk7CisKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQgPj0gbWF4VHJhY2tzKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIHJldHVybiBzdGQ6Om1pbihhdXRvUmVwZWF0VHJhY2tzLCBtYXhU
cmFja3MgLSBpbnNlcnRpb25Qb2ludCk7Cit9CisKIHZvaWQgUmVuZGVyR3JpZDo6cGxhY2VJdGVt
c09uR3JpZChHcmlkJiBncmlkLCBTaXppbmdPcGVyYXRpb24gc2l6aW5nT3BlcmF0aW9uKSBjb25z
dAogewogICAgIHVuc2lnbmVkIGF1dG9SZXBlYXRDb2x1bW5zID0gY29tcHV0ZUF1dG9SZXBlYXRU
cmFja3NDb3VudChGb3JDb2x1bW5zLCBzaXppbmdPcGVyYXRpb24pOwogICAgIHVuc2lnbmVkIGF1
dG9SZXBlYXRSb3dzID0gY29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChGb3JSb3dzLCBzaXpp
bmdPcGVyYXRpb24pOworCisgICAgYXV0b1JlcGVhdFJvd3MgPSBjbGFtcEF1dG9SZXBlYXRUcmFj
a3MoRm9yUm93cywgYXV0b1JlcGVhdFJvd3MpOworICAgIGF1dG9SZXBlYXRDb2x1bW5zID0gY2xh
bXBBdXRvUmVwZWF0VHJhY2tzKEZvckNvbHVtbnMsIGF1dG9SZXBlYXRDb2x1bW5zKTsKKwogICAg
IGlmIChhdXRvUmVwZWF0Q29sdW1ucyAhPSBncmlkLmF1dG9SZXBlYXRUcmFja3MoRm9yQ29sdW1u
cykgfHwgYXV0b1JlcGVhdFJvd3MgIT0gZ3JpZC5hdXRvUmVwZWF0VHJhY2tzKEZvclJvd3MpKSB7
CiAgICAgICAgIGdyaWQuc2V0TmVlZHNJdGVtc1BsYWNlbWVudCh0cnVlKTsKICAgICAgICAgZ3Jp
ZC5zZXRBdXRvUmVwZWF0VHJhY2tzKGF1dG9SZXBlYXRSb3dzLCBhdXRvUmVwZWF0Q29sdW1ucyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCA1ZmFmNDM1ZjkwNjc0YTYz
ZGU5YWIxYTc5OTY1YWNjOGQyNWYxN2Q3Li5iY2RmMmIwZWQzMGVlMmEwNjM4MjQ2NzYwODUzYzRi
MDM5YWZhNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTcgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgLy8gUmVxdWlyZWQgYnkgR3Jp
ZFRyYWNrU2l6aW5nQWxnb3JpdGhtLiBLZWVwIHRoZW0gdW5kZXIgY29udHJvbC4KICAgICBib29s
IGlzT3J0aG9nb25hbENoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogICAgIExheW91dFVu
aXQgZ3V0dGVyc1NpemUoY29uc3QgR3JpZCYsIEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgdW5z
aWduZWQgc3RhcnRMaW5lLCB1bnNpZ25lZCBzcGFuLCBTaXppbmdPcGVyYXRpb24pIGNvbnN0Owot
ICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgSXRlbVBvc2l0aW9uIHNlbGZBbGlnbm1lbnROb3JtYWxC
ZWhhdmlvcihjb25zdCBSZW5kZXJCb3gqIGNoaWxkID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7CkBAIC04Niw2ICs4Niw4IEBAIHByaXZhdGU6CiAKICAgICB1bnNpZ25lZCBjb21wdXRl
QXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiwgU2l6aW5nT3Bl
cmF0aW9uKSBjb25zdDsKIAorICAgIHVuc2lnbmVkIGNsYW1wQXV0b1JlcGVhdFRyYWNrcyhHcmlk
VHJhY2tTaXppbmdEaXJlY3Rpb24sIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3MpIGNvbnN0Owor
CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9yZGVyZWRUcmFja0luZGV4U2V0PiBjb21wdXRlRW1wdHlU
cmFja3NGb3JBdXRvUmVwZWF0KEdyaWQmLCBHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24pIGNvbnN0
OwogCiAgICAgdm9pZCBwbGFjZUl0ZW1zT25HcmlkKEdyaWQmLCBTaXppbmdPcGVyYXRpb24pIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRBcmVh
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZEFyZWEuaAppbmRleCAwODI2
MjBmYjNmYjU1YjFhYmY2Y2M3NWM1ZjJjY2UyOTVlZjFjMTM0Li43M2RlZDNmNGU4ZTcxZTA3MjRh
MDM4OWE0ZTRhMThlYWJmMzYwNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvR3JpZEFyZWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
R3JpZEFyZWEuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCwgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgSWdhbGlhIFMu
TC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTE1Niw4ICsxNTYsOCBA
QCBwcml2YXRlOgogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBtX3N0YXJ0TGluZSA9IHN0
ZDo6bWF4KC1rR3JpZE1heFRyYWNrcywgc3RkOjptaW4oc3RhcnRMaW5lLCBrR3JpZE1heFRyYWNr
cyAtIDEpKTsKLSAgICAgICAgbV9lbmRMaW5lID0gc3RkOjptYXgoLWtHcmlkTWF4VHJhY2tzICsg
MSwgc3RkOjptaW4oZW5kTGluZSwga0dyaWRNYXhUcmFja3MpKTsKKyAgICAgICAgbV9zdGFydExp
bmUgPSBzdGQ6Om1heChHcmlkUG9zaXRpb246Om1pbigpLCBzdGQ6Om1pbihzdGFydExpbmUsIEdy
aWRQb3NpdGlvbjo6bWF4KCkgLSAxKSk7CisgICAgICAgIG1fZW5kTGluZSA9IHN0ZDo6bWF4KEdy
aWRQb3NpdGlvbjo6bWluKCkgKyAxLCBzdGQ6Om1pbihlbmRMaW5lLCBHcmlkUG9zaXRpb246Om1h
eCgpKSk7CiAgICAgfQogCiAgICAgaW50IG1fc3RhcnRMaW5lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2JhMTg1YWUw
MDAyYWU0MjIzNzBhMjUwZDFlZmQ2MmI3YzA4NmE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbi5jcHAKQEAgLTAsMCArMSwxMDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR3JpZFBvc2l0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rk
OjpvcHRpb25hbDxpbnQ+IEdyaWRQb3NpdGlvbjo6Z01heFBvc2l0aW9uRm9yVGVzdGluZzsKK3N0
YXRpYyBjb25zdCBpbnQga0dyaWRNYXhUcmFja3MgPSAxMDAwMDAwOworCit2b2lkIEdyaWRQb3Np
dGlvbjo6c2V0RXhwbGljaXRQb3NpdGlvbihpbnQgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgbmFt
ZWRHcmlkTGluZSkKK3sKKyAgICBtX3R5cGUgPSBFeHBsaWNpdFBvc2l0aW9uOworICAgIHNldElu
dGVnZXJQb3NpdGlvbihwb3NpdGlvbik7CisgICAgbV9uYW1lZEdyaWRMaW5lID0gbmFtZWRHcmlk
TGluZTsKK30KKwordm9pZCBHcmlkUG9zaXRpb246OnNldEF1dG9Qb3NpdGlvbigpCit7CisgICAg
bV90eXBlID0gQXV0b1Bvc2l0aW9uOworICAgIG1faW50ZWdlclBvc2l0aW9uID0gMDsKK30KKwor
Ly8gJ3NwYW4nIHZhbHVlcyBjYW5ub3QgYmUgbmVnYXRpdmUsIHlldCB3ZSByZXVzZSB0aGUgPGlu
dGVnZXI+IHBvc2l0aW9uIHdoaWNoIGNhbgorLy8gYmUuIFRoaXMgbWVhbnMgdGhhdCB3ZSBoYXZl
IHRvIGNvbnZlcnQgdGhlIHNwYW4gcG9zaXRpb24gdG8gYW4gaW50ZWdlciwgbG9zaW5nCisvLyBz
b21lIHByZWNpc2lvbiBoZXJlLiBJdCBzaG91bGRuJ3QgYmUgYW4gaXNzdWUgaW4gcHJhY3RpY2Ug
dGhvdWdoLgordm9pZCBHcmlkUG9zaXRpb246OnNldFNwYW5Qb3NpdGlvbihpbnQgcG9zaXRpb24s
IGNvbnN0IFN0cmluZyYgbmFtZWRHcmlkTGluZSkKK3sKKyAgICBtX3R5cGUgPSBTcGFuUG9zaXRp
b247CisgICAgc2V0SW50ZWdlclBvc2l0aW9uKHBvc2l0aW9uKTsKKyAgICBtX25hbWVkR3JpZExp
bmUgPSBuYW1lZEdyaWRMaW5lOworfQorCit2b2lkIEdyaWRQb3NpdGlvbjo6c2V0TmFtZWRHcmlk
QXJlYShjb25zdCBTdHJpbmcmIG5hbWVkR3JpZEFyZWEpCit7CisgICAgbV90eXBlID0gTmFtZWRH
cmlkQXJlYVBvc2l0aW9uOworICAgIG1fbmFtZWRHcmlkTGluZSA9IG5hbWVkR3JpZEFyZWE7Cit9
CisKK2ludCBHcmlkUG9zaXRpb246OmludGVnZXJQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKHR5cGUoKSA9PSBFeHBsaWNpdFBvc2l0aW9uKTsKKyAgICByZXR1cm4gbV9pbnRlZ2VyUG9z
aXRpb247Cit9CisKK1N0cmluZyBHcmlkUG9zaXRpb246Om5hbWVkR3JpZExpbmUoKSBjb25zdAor
eworICAgIEFTU0VSVCh0eXBlKCkgPT0gRXhwbGljaXRQb3NpdGlvbiB8fCB0eXBlKCkgPT0gU3Bh
blBvc2l0aW9uIHx8IHR5cGUoKSA9PSBOYW1lZEdyaWRBcmVhUG9zaXRpb24pOworICAgIHJldHVy
biBtX25hbWVkR3JpZExpbmU7Cit9CisKK2ludCBHcmlkUG9zaXRpb246OnNwYW5Qb3NpdGlvbigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBTcGFuUG9zaXRpb24pOworICAgIHJldHVy
biBtX2ludGVnZXJQb3NpdGlvbjsKK30KKworaW50IEdyaWRQb3NpdGlvbjo6bWF4KCkKK3sKKyAg
ICByZXR1cm4gZ01heFBvc2l0aW9uRm9yVGVzdGluZy52YWx1ZV9vcihrR3JpZE1heFRyYWNrcyk7
Cit9CisKK2ludCBHcmlkUG9zaXRpb246Om1pbigpCit7CisgICAgcmV0dXJuIC1tYXgoKTsKK30K
KworYm9vbCBHcmlkUG9zaXRpb246Om9wZXJhdG9yPT0oY29uc3QgR3JpZFBvc2l0aW9uJiBvdGhl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZSAmJiBtX2ludGVn
ZXJQb3NpdGlvbiA9PSBvdGhlci5tX2ludGVnZXJQb3NpdGlvbiAmJiBtX25hbWVkR3JpZExpbmUg
PT0gb3RoZXIubV9uYW1lZEdyaWRMaW5lOworfQorCit2b2lkIEdyaWRQb3NpdGlvbjo6c2V0TWF4
UG9zaXRpb25Gb3JUZXN0aW5nKHVuc2lnbmVkIG1heFBvc2l0aW9uKQoreworICAgIGdNYXhQb3Np
dGlvbkZvclRlc3RpbmcgPSBzdGF0aWNfY2FzdDxpbnQ+KG1heFBvc2l0aW9uKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0dyaWRQb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dy
aWRQb3NpdGlvbi5oCmluZGV4IDcxOTBjNGM2ZTkxZDIyZjdlZjY4OWVmNDY1YTFhNWQwZDMyYzRi
ZWEuLmEzOWY0ZDhlMDY1NTlkZDczMmE0ZmJlYjBkNTRhMzhhOTY5NjFiMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uLmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMy0yMDE3IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0zNSw5ICszNSw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gUmVj
b21tZW5kZWQgbWF4aW11bSBzaXplIGZvciBib3RoIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBncmlk
cy4KLWNvbnN0IGludCBrR3JpZE1heFRyYWNrcyA9IDEwMDAwMDA7Ci0KIGVudW0gR3JpZFBvc2l0
aW9uVHlwZSB7CiAgICAgQXV0b1Bvc2l0aW9uLAogICAgIEV4cGxpY2l0UG9zaXRpb24sIC8vIFsg
PGludGVnZXI+IHx8IDxzdHJpbmc+IF0KQEAgLTY3LDY4ICs2NCwzMCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1NwYW4oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gU3BhblBvc2l0aW9uOyB9CiAg
ICAgYm9vbCBpc05hbWVkR3JpZEFyZWEoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTmFtZWRH
cmlkQXJlYVBvc2l0aW9uOyB9CiAKLSAgICB2b2lkIHNldEV4cGxpY2l0UG9zaXRpb24oaW50IHBv
c2l0aW9uLCBjb25zdCBTdHJpbmcmIG5hbWVkR3JpZExpbmUpCi0gICAgewotICAgICAgICBtX3R5
cGUgPSBFeHBsaWNpdFBvc2l0aW9uOwotICAgICAgICBzZXRJbnRlZ2VyUG9zaXRpb24ocG9zaXRp
b24pOwotICAgICAgICBtX25hbWVkR3JpZExpbmUgPSBuYW1lZEdyaWRMaW5lOwotICAgIH0KKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEV4cGxpY2l0UG9zaXRpb24oaW50IHBvc2l0aW9uLCBj
b25zdCBTdHJpbmcmIG5hbWVkR3JpZExpbmUpOworICAgIHZvaWQgc2V0QXV0b1Bvc2l0aW9uKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTcGFuUG9zaXRpb24oaW50IHBvc2l0aW9uLCBj
b25zdCBTdHJpbmcmIG5hbWVkR3JpZExpbmUpOworICAgIHZvaWQgc2V0TmFtZWRHcmlkQXJlYShj
b25zdCBTdHJpbmcmKTsKIAotICAgIHZvaWQgc2V0QXV0b1Bvc2l0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIG1fdHlwZSA9IEF1dG9Qb3NpdGlvbjsKLSAgICAgICAgbV9pbnRlZ2VyUG9zaXRpb24gPSAw
OwotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBpbnQgaW50ZWdlclBvc2l0aW9uKCkgY29uc3Q7
CisgICAgU3RyaW5nIG5hbWVkR3JpZExpbmUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgc3BhblBvc2l0aW9uKCkgY29uc3Q7CiAKLSAgICAvLyAnc3BhbicgdmFsdWVzIGNhbm5vdCBi
ZSBuZWdhdGl2ZSwgeWV0IHdlIHJldXNlIHRoZSA8aW50ZWdlcj4gcG9zaXRpb24gd2hpY2ggY2Fu
Ci0gICAgLy8gYmUuIFRoaXMgbWVhbnMgdGhhdCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHNwYW4g
cG9zaXRpb24gdG8gYW4gaW50ZWdlciwgbG9zaW5nCi0gICAgLy8gc29tZSBwcmVjaXNpb24gaGVy
ZS4gSXQgc2hvdWxkbid0IGJlIGFuIGlzc3VlIGluIHByYWN0aWNlIHRob3VnaC4KLSAgICB2b2lk
IHNldFNwYW5Qb3NpdGlvbihpbnQgcG9zaXRpb24sIGNvbnN0IFN0cmluZyYgbmFtZWRHcmlkTGlu
ZSkKLSAgICB7Ci0gICAgICAgIG1fdHlwZSA9IFNwYW5Qb3NpdGlvbjsKLSAgICAgICAgc2V0SW50
ZWdlclBvc2l0aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgbV9uYW1lZEdyaWRMaW5lID0gbmFtZWRH
cmlkTGluZTsKLSAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdyaWRQb3NpdGlvbiYg
b3RoZXIpIGNvbnN0OwogCi0gICAgdm9pZCBzZXROYW1lZEdyaWRBcmVhKGNvbnN0IFN0cmluZyYg
bmFtZWRHcmlkQXJlYSkKLSAgICB7Ci0gICAgICAgIG1fdHlwZSA9IE5hbWVkR3JpZEFyZWFQb3Np
dGlvbjsKLSAgICAgICAgbV9uYW1lZEdyaWRMaW5lID0gbmFtZWRHcmlkQXJlYTsKLSAgICB9Cisg
ICAgYm9vbCBzaG91bGRCZVJlc29sdmVkQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBpc0F1dG8oKSB8fCBpc1NwYW4oKTsgfQogCi0gICAgaW50IGludGVnZXJQb3NpdGlv
bigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodHlwZSgpID09IEV4cGxpY2l0UG9zaXRp
b24pOwotICAgICAgICByZXR1cm4gbV9pbnRlZ2VyUG9zaXRpb247Ci0gICAgfQorICAgIC8vIE5v
dGUgdGhhdCBncmlkIGxpbmUgMSBpcyBpbnRlcm5hbGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBpbmRl
eCAwLCB0aGF0J3Mgd2h5IHRoZSBtYXggdmFsdWUgZm9yCisgICAgLy8gYSBwb3NpdGlvbiBpcyBr
R3JpZE1heFRyYWNrcyBpbnN0ZWFkIG9mIGtHcmlkTWF4VHJhY2tzICsgMS4KKyAgICBzdGF0aWMg
aW50IG1heCgpOworICAgIHN0YXRpYyBpbnQgbWluKCk7CiAKLSAgICBTdHJpbmcgbmFtZWRHcmlk
TGluZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQodHlwZSgpID09IEV4cGxpY2l0UG9z
aXRpb24gfHwgdHlwZSgpID09IFNwYW5Qb3NpdGlvbiB8fCB0eXBlKCkgPT0gTmFtZWRHcmlkQXJl
YVBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fbmFtZWRHcmlkTGluZTsKLSAgICB9Ci0KLSAg
ICBpbnQgc3BhblBvc2l0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlKCkg
PT0gU3BhblBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1faW50ZWdlclBvc2l0aW9uOwotICAg
IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHcmlkUG9zaXRpb24mIG90aGVyKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9pbnRl
Z2VyUG9zaXRpb24gPT0gb3RoZXIubV9pbnRlZ2VyUG9zaXRpb24gJiYgbV9uYW1lZEdyaWRMaW5l
ID09IG90aGVyLm1fbmFtZWRHcmlkTGluZTsKLSAgICB9Ci0KLSAgICBib29sIHNob3VsZEJlUmVz
b2x2ZWRBZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gaXNBdXRvKCkgfHwgaXNTcGFuKCk7Ci0gICAgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIHNldE1heFBvc2l0aW9uRm9yVGVzdGluZyh1bnNpZ25lZCk7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBzZXRJbnRlZ2VyUG9zaXRpb24oaW50IGludGVnZXJQb3NpdGlvbikKLSAgICB7Ci0g
ICAgICAgIG1faW50ZWdlclBvc2l0aW9uID0gY2xhbXBUbyhpbnRlZ2VyUG9zaXRpb24sIC1rR3Jp
ZE1heFRyYWNrcywga0dyaWRNYXhUcmFja3MpOwotICAgIH0KKyAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxpbnQ+IGdNYXhQb3NpdGlvbkZvclRlc3Rpbmc7CisKKyAgICB2b2lkIHNldEludGVnZXJQ
b3NpdGlvbihpbnQgaW50ZWdlclBvc2l0aW9uKSB7IG1faW50ZWdlclBvc2l0aW9uID0gY2xhbXBU
byhpbnRlZ2VyUG9zaXRpb24sIG1pbigpLCBtYXgoKSk7IH0KIAogICAgIEdyaWRQb3NpdGlvblR5
cGUgbV90eXBlOwogICAgIGludCBtX2ludGVnZXJQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKaW5k
ZXggNjE0YTM1YTI4NDc5N2NiOTRmZDU4YjNlY2ZjYmU2NTk2OGNkNjdlNy4uMjIxZWQwNTc2OTVi
NDQzNTFlYzdiNzM1YThmNGQ1MTNiYmIzNTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0dyaWRQb3NpdGlvbnNSZXNvbHZlci5jcHAKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgSWdhbGlhIFMuTC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE3IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0xODcsMTIgKzE4NywxMiBAQCBzdGF0aWMgdm9pZCBhZGp1c3RHcmlk
UG9zaXRpb25zRnJvbVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5bGUs
CiAKIHVuc2lnbmVkIEdyaWRQb3NpdGlvbnNSZXNvbHZlcjo6ZXhwbGljaXRHcmlkQ29sdW1uQ291
bnQoY29uc3QgUmVuZGVyU3R5bGUmIGdyaWRDb250YWluZXJTdHlsZSwgdW5zaWduZWQgYXV0b1Jl
cGVhdFRyYWNrc0NvdW50KQogewotICAgIHJldHVybiBzdGQ6Om1pbjx1bnNpZ25lZD4oc3RkOjpt
YXgoZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRDb2x1bW5zKCkuc2l6ZSgpICsgYXV0b1JlcGVhdFRy
YWNrc0NvdW50LCBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYUNvbHVtbkNvdW50KCkp
LCBrR3JpZE1heFRyYWNrcyk7CisgICAgcmV0dXJuIHN0ZDo6bWluPHVuc2lnbmVkPihzdGQ6Om1h
eChncmlkQ29udGFpbmVyU3R5bGUuZ3JpZENvbHVtbnMoKS5zaXplKCkgKyBhdXRvUmVwZWF0VHJh
Y2tzQ291bnQsIGdyaWRDb250YWluZXJTdHlsZS5uYW1lZEdyaWRBcmVhQ29sdW1uQ291bnQoKSks
IEdyaWRQb3NpdGlvbjo6bWF4KCkpOwogfQogCiB1bnNpZ25lZCBHcmlkUG9zaXRpb25zUmVzb2x2
ZXI6OmV4cGxpY2l0R3JpZFJvd0NvdW50KGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVy
U3R5bGUsIHVuc2lnbmVkIGF1dG9SZXBlYXRUcmFja3NDb3VudCkKIHsKLSAgICByZXR1cm4gc3Rk
OjptaW48dW5zaWduZWQ+KHN0ZDo6bWF4KGdyaWRDb250YWluZXJTdHlsZS5ncmlkUm93cygpLnNp
emUoKSArIGF1dG9SZXBlYXRUcmFja3NDb3VudCwgZ3JpZENvbnRhaW5lclN0eWxlLm5hbWVkR3Jp
ZEFyZWFSb3dDb3VudCgpKSwga0dyaWRNYXhUcmFja3MpOworICAgIHJldHVybiBzdGQ6Om1pbjx1
bnNpZ25lZD4oc3RkOjptYXgoZ3JpZENvbnRhaW5lclN0eWxlLmdyaWRSb3dzKCkuc2l6ZSgpICsg
YXV0b1JlcGVhdFRyYWNrc0NvdW50LCBncmlkQ29udGFpbmVyU3R5bGUubmFtZWRHcmlkQXJlYVJv
d0NvdW50KCkpLCBHcmlkUG9zaXRpb246Om1heCgpKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGV4
cGxpY2l0R3JpZFNpemVGb3JTaWRlKGNvbnN0IFJlbmRlclN0eWxlJiBncmlkQ29udGFpbmVyU3R5
bGUsIEdyaWRQb3NpdGlvblNpZGUgc2lkZSwgdW5zaWduZWQgYXV0b1JlcGVhdFRyYWNrc0NvdW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDA4ZGE4YzY4MjdmZDM0Y2Rj
NWNjMGYwYmI1MTAyNjZkYmViMmIyY2UuLjk0ZGNkNWVlZDhkMmQxZjk1ODE2YjM5NDZjY2Y2M2Nh
YmFiYTg1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTYyLDYgKzYy
LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkdDT2JzZXJ2YXRpb24uaCIKKyNpbmNsdWRlICJHcmlkUG9zaXRpb24uaCIKICNp
bmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgpAQCAtNzU3LDYgKzc1OCwxMSBAQCB2
b2lkIEludGVybmFsczo6c2V0Q2xlYXJEZWNvZGVyQWZ0ZXJBc3luY0ZyYW1lUmVxdWVzdEZvclRl
c3RpbmcoSFRNTEltYWdlRWxlbWVudAogICAgIGRvd25jYXN0PEJpdG1hcEltYWdlPigqaW1hZ2Up
LnNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVlc3RGb3JUZXN0aW5nKHZhbHVlKTsK
IH0KIAordm9pZCBJbnRlcm5hbHM6OnNldEdyaWRNYXhUcmFja3NMaW1pdCh1bnNpZ25lZCBtYXhU
cmFja0xpbWl0KQoreworICAgIEdyaWRQb3NpdGlvbjo6c2V0TWF4UG9zaXRpb25Gb3JUZXN0aW5n
KG1heFRyYWNrTGltaXQpOworfQorCiB2b2lkIEludGVybmFsczo6Y2xlYXJQYWdlQ2FjaGUoKQog
ewogICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVUb1NpemVOb3coMCwgUHJ1bmluZ1Jl
YXNvbjo6Tm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA1MmM0ZDU5MmM2
YzEyMmIzNDc4Yzg2NjJhZWZiZjVhZmEzMGJhYjgwLi5mNzMxNWNkNzg0NmNhNTFlMTYzZWIyZjA4
ZDUzNDNhMDY1Y2ZlNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTExNyw2
ICsxMTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFn
ZUVsZW1lbnQmKTsKICAgICB2b2lkIHNldENsZWFyRGVjb2RlckFmdGVyQXN5bmNGcmFtZVJlcXVl
c3RGb3JUZXN0aW5nKEhUTUxJbWFnZUVsZW1lbnQmLCBib29sKTsKIAorICAgIHZvaWQgc2V0R3Jp
ZE1heFRyYWNrc0xpbWl0KHVuc2lnbmVkKTsKKwogICAgIHZvaWQgY2xlYXJQYWdlQ2FjaGUoKTsK
ICAgICB1bnNpZ25lZCBwYWdlQ2FjaGVTaXplKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbAppbmRleCBhNjVjMzg0NjA4ZGYwYjE3ZjU2ODQyYTVhY2QzMGMyNzhjZGQ1
NzAwLi41YzBmYjRiOTQ1MzBkZjlhMjg5YzA0OTk4OWYxMzZjYmVkN2JjYWU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNDYsNiArMjQ2LDggQEAgZW51bSBFdmVudFRo
cm90dGxpbmdCZWhhdmlvciB7CiAgICAgdm9pZCByZXNldEltYWdlQW5pbWF0aW9uKEhUTUxJbWFn
ZUVsZW1lbnQgZWxlbWVudCk7CiAgICAgdm9pZCBzZXRDbGVhckRlY29kZXJBZnRlckFzeW5jRnJh
bWVSZXF1ZXN0Rm9yVGVzdGluZyhIVE1MSW1hZ2VFbGVtZW50IGVsZW1lbnQsIGJvb2xlYW4gdmFs
dWUpOwogCisgICAgdm9pZCBzZXRHcmlkTWF4VHJhY2tzTGltaXQodW5zaWduZWQgbG9uZyBtYXhU
cmFja3NMaW1pdCk7CisKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSW50ZXJuYWxTZXR0aW5ncyBz
ZXR0aW5nczsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3b3JrZXJUaHJl
YWRDb3VudDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGFmZWQ1MmFlZTE5YzI2MzJlYWU5ZGZhNDY0OTIxYjE1ZWIyZTNk
MmEuLjNkOTFmMjUxYWZjMzJlYmUzM2IxN2NkYjUwOTRmYzJjZDQxMWQ2NjcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0wMy0yNyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdh
bGlhLmNvbT4KKworICAgICAgICBbY3NzLWdyaWRdIENsYW1wIHRoZSBudW1iZXIgb2YgYXV0b3Jl
cGVhdCB0cmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MDEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIGEgbmV3IHRlc3QgdG8gY2hlY2sgdGhlIGNsYW1waW5nIG9mIGdyaWQgdHJhY2tz
LiBJdCdzIG1vc3RseSBhbGwgSmF2YVNjcmlwdCBpbiBvcmRlcgorICAgICAgICB0byBhbGxvdyB1
cyB0byBydW4gc2V2ZXJhbCB0ZXN0IGNhc2VzIG92ZXIgYSBzbWFsbCBudW1iZXIgb2YgZ3JpZHMg
aW4gYSBzaW5nbGUgZmlsZSBxdWl0ZQorICAgICAgICBmYXN0LiBUaGUgb3RoZXIgb3B0aW9uIHdh
cyB0byBzdGF0aWNhbGx5IChDU1MpIGNyZWF0ZSBzZXZlcmFsIGh1Z2UgZ3JpZHMsIHNvbWV0aGlu
ZyB0aGF0CisgICAgICAgIGNvdWxkIHBvdGVudGlhbGx5IGJlIHZlcnkgZXhwZW5zaXZlIGluIHRl
cm1zIG9mIG1lbW9yeSBhbmQgQ1BVIGxlYWRpbmcgdG8gdGltZW91dHMuCisKKyAgICAgICAgKiBm
YXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3JpZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtYXV0by1yZXBl
YXQtaHVnZS1ncmlkLmh0bWw6IEFkZGVkLgorCiAyMDE3LTAzLTIxICBTZXJnaW8gVmlsbGFyIFNl
bmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTb3VwXSAiT25seSBmcm9tIHdl
YnNpdGVzIEkgdmlzaXQiIGNvb2tpZSBwb2xpY3kgaXMgYnJva2VuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3JpZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWF1dG8t
cmVwZWF0LWh1Z2UtZ3JpZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTBjZDQ4N2U2OGYzZjJm
OTg2NmJjZTlkYzdkZGMxYWFlYmU5NGQ1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtYXV0by1yZXBlYXQtaHVnZS1ncmlkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDIyIEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgd2UgcHJvcGVybHkg
ZW5mb3JjZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZ3JpZCB0cmFja3MgaW4gZGlmZmVyZW50IHNp
dHVhdGlvbnMuCisKKworUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3Jp
ZE1heFRyYWNrcyByZXBldGl0aW9ucyBldmVuIG9uIHZlcnkgd2lkZSBncmlkcyAobm9ybWFsIHRy
YWNrcyBjbGFtcGVkKS4gCitQQVNTIFRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtH
cmlkTWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB0YWxsIGdyaWRzIChub3JtYWwg
dHJhY2tzIGNsYW1wZWQpLiAKK1BBU1MgVGVzdCB0aGF0IHdlIGRvbid0IGdldCBtb3JlIHRoYW4g
a0dyaWRNYXhUcmFja3MgcmVwZXRpdGlvbnMgZXZlbiBvbiB2ZXJ5IHdpZGUgZ3JpZHMgKGF1dG8g
cmVwZWF0IHRyYWNrcyBjbGFtcGVkKS4gCitQQVNTIFRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9y
ZSB0aGFuIGtHcmlkTWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB0YWxsIGdyaWRz
IChhdXRvIHJlcGVhdCB0cmFja3MgY2xhbXBlZCkuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3Qg
Z2V0IG1vcmUgdGhhbiBrR3JpZE1heFRyYWNrcyByZXBldGl0aW9ucyBldmVuIG9uIHZlcnkgd2lk
ZSBncmlkcyB3aXRoIGdhcHMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhh
biBrR3JpZE1heFRyYWNrcyByZXBldGl0aW9ucyBldmVuIG9uIHZlcnkgdGFsbCBncmlkcyB3aXRo
IGdhcHMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3JpZE1heFRy
YWNrcyByZXBldGl0aW9ucyBldmVuIG9uIHZlcnkgd2lkZSBncmlkcyB3aXRoIGdhcHMgYW5kIG1p
bi13aWR0aC4gCitQQVNTIFRlc3QgdGhhdCB3ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4
VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB0YWxsIGdyaWRzIHdpdGggZ2FwcyBhbmQg
bWluLWhlaWdodC4gCitQQVNTIFRlc3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFy
ZSBleGFjdGx5IGtHcmlkTWF4VHJhY2tzIGF1dG8gcmVwZWF0IHJvd3Mgb24gdmVyeSB0YWxsIGdy
aWRzLiAKK1BBU1MgVGVzdCB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlcmUgYXJlIGV4YWN0
bHkga0dyaWRNYXhUcmFja3MgYXV0byByZXBlYXQgY29sdW1ucyBvbiB2ZXJ5IHdpZGUgZ3JpZHMu
IAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgZXhhY3RseSBr
R3JpZE1heFRyYWNrcyAobm9ybWFsIGFuZCBhdXRvLXJlcGVhdCkgcm93cyBvbiB2ZXJ5IHRhbGwg
Z3JpZHMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgZXhh
Y3RseSBrR3JpZE1heFRyYWNrcyAobm9ybWFsIGFuZCBhdXRvLXJlcGVhdCkgY29sdW1ucyBvbiB2
ZXJ5IHdpZGUgZ3JpZHMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVy
ZSBhcmUgZXhhY3RseSBrR3JpZE1heFRyYWNrcyBub24gYXV0by1yZXBlYXQgcm93cyBvbiB2ZXJ5
IHRhbGwgZ3JpZHMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBh
cmUgZXhhY3RseSBrR3JpZE1heFRyYWNrcyBub24gYXV0by1yZXBlYXQgY29sdW1ucyBvbiB2ZXJ5
IHdpZGUgZ3JpZHMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBh
cmUgZXhhY3RseSBrR3JpZE1heFRyYWNrcyBub24gYXV0by1yZXBlYXQgcm93cyBvbiB2ZXJ5IHRh
bGwgZ3JpZHMgd2l0aCBlbm91Z2ggcm9vbSBmb3IgYXV0byByZXBldGl0aW9ucy4gCitQQVNTIFRl
c3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlkTWF4VHJh
Y2tzIG5vbiBhdXRvLXJlcGVhdCBjb2x1bW5zIG9uIHZlcnkgd2lkZSBncmlkcyB3aXRoIGVub3Vn
aCByb29tIGZvciBhdXRvIHJlcGV0aXRpb25zLiAKK1BBU1MgVGVzdCB0aGF0IHdlIGRvbid0IGNy
YXNoIHdoZW4gdGhlcmUgYXJlIG1vcmUgdGhhbiBrR3JpZE1heFRyYWNrcyBub24gYXV0by1yZXBl
YXQgcm93cyBvbiB2ZXJ5IHRhbGwgZ3JpZHMuIAorUEFTUyBUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jh
c2ggd2hlbiB0aGVyZSBhcmUgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIG5vbiBhdXRvLXJlcGVh
dCBjb2x1bW5zIG9uIHZlcnkgd2lkZSBncmlkcy4gCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWdyaWQtbGF5b3V0L2dyaWQtYXV0by1yZXBlYXQtaHVnZS1ncmlkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9ncmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3Jp
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjgzYzkxZjQ2ZGU4NzBmOGY3N2E2ZDEwNzFhYTUzMmIyYzUxMTc1
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1ncmlkLWxheW91dC9n
cmlkLWF1dG8tcmVwZWF0LWh1Z2UtZ3JpZC5odG1sCkBAIC0wLDAgKzEsMzM3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzx0aXRsZT5UZXN0IGZvciBhdXRvLWZpdCBhbmQgYXV0by1maWxsIHdpdGggaHVn
ZSBncmlkcyAobG90cyBvZiB0cmFja3MpPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0
bGU9IlNlcmdpbyBWaWxsYXIgU2VuaW4iIGhyZWY9Im1haWx0bzpzdmlsbGFyQGlnYWxpYS5jb20i
PgorPGxpbmsgaHJlZj0icmVzb3VyY2VzL2dyaWQuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorPGxp
bmsgaHJlZj0iLi4vY3NzLWludHJpbnNpYy1kaW1lbnNpb25zL3Jlc291cmNlcy93aWR0aC1rZXl3
b3JkLWNsYXNzZXMuY3NzIiByZWw9InN0eWxlc2hlZXQiPgorPGxpbmsgaHJlZj0iLi4vY3NzLWlu
dHJpbnNpYy1kaW1lbnNpb25zL3Jlc291cmNlcy9oZWlnaHQta2V5d29yZC1jbGFzc2VzLmNzcyIg
cmVsPSJzdHlsZXNoZWV0Ij4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZ3JpZC1kZWZp
bml0aW9ucy1wYXJzaW5nLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyAud2lkZUdyaWQg
eyB3aWR0aDogMTAwMDAwMDAwMHB4OyB9CisgLnRhbGxHcmlkIHsgaGVpZ2h0OiAxMDAwMDAwMDAw
cHg7IH0KKworIC53aWR0aDI1ayB7IHdpZHRoOiAyNTAwMHB4OyB9CisgLmhlaWdodDI1ayB7IGhl
aWdodDogMjUwMDBweDsgfQorCisgLmxhc3RDb2x1bW4geyBncmlkLWNvbHVtbjogLTIgLyAtMTsg
fQorIC5sYXN0Um93IHsgZ3JpZC1yb3c6IC0yIC8gLTE7IH0KKworIC5taW5TaXplV2lkZUdyaWQg
eyBtaW4td2lkdGg6IDEwMDAwMDAwMDBweDsgfQorIC5taW5TaXplVGFsbEdyaWQgeyBtaW4taGVp
Z2h0OiAxMDAwMDAwMDAwcHg7IH0KKworIC5sb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRml0Q29s
cyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCAxMHB4IDJweCA4cHgp
IHJlcGVhdCg5OTIsIDFweCk7IH0KKyAubG90c09mRml4ZWRSZXBlYXRXaXRoQXV0b0ZpbGxDb2xz
IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCAxMHB4IDJweCA4cHgg
N3B4IDIwcHgpIHJlcGVhdCg5OTUsIDFweCk7IH0KKworIC5sb3RzT2ZBdXRvUmVwZWF0V2l0aEF1
dG9GaXRDb2xzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIDEwcHgg
MnB4IDhweCkgcmVwZWF0KDEwLCAxcHgpOyB9CisgLmxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0Zp
bGxDb2xzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCAxMHB4IDJw
eCA4cHggN3B4IDIwcHgpIHJlcGVhdCgxMCwgMXB4KTsgfQorCisgLmxvdHNPZkZpeGVkUmVwZWF0
V2l0aEF1dG9GaXRDb2xzUmV2ZXJzZWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICByZXBlYXQo
OTkyLCAxcHgpIHJlcGVhdChhdXRvLWZpdCwgMTBweCAycHggOHB4KTsgfQorIC5sb3RzT2ZGaXhl
ZFJlcGVhdFdpdGhBdXRvRmlsbENvbHNSZXZlcnNlZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczog
IHJlcGVhdCg5OTUsIDFweCkgcmVwZWF0KGF1dG8tZmlsbCwgMTBweCAycHggOHB4IDdweCAyMHB4
KTsgfQorCisgLmxvdHNPZkZpeGVkUmVwZWF0V2l0aEF1dG9GaXRSb3dzIHsgZ3JpZC10ZW1wbGF0
ZS1yb3dzOiByZXBlYXQoYXV0by1maXQsIDEwcHggMnB4IDhweCkgcmVwZWF0KDk5MiwgMXB4KTsg
fQorIC5sb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRmlsbFJvd3MgeyBncmlkLXRlbXBsYXRlLXJv
d3M6IHJlcGVhdChhdXRvLWZpbGwsIDEwcHggMnB4IDhweCA3cHggMjBweCkgcmVwZWF0KDk5NSwg
MXB4KTsgfQorCisgLmxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpdFJvd3MgeyBncmlkLXRlbXBs
YXRlLXJvd3M6IHJlcGVhdChhdXRvLWZpdCwgMTBweCAycHggOHB4KSByZXBlYXQoMTAsIDFweCk7
IH0KKyAubG90c09mQXV0b1JlcGVhdFdpdGhBdXRvRmlsbFJvd3MgeyBncmlkLXRlbXBsYXRlLXJv
d3M6IHJlcGVhdChhdXRvLWZpbGwsIDEwcHggMnB4IDhweCA3cHggMjBweCkgcmVwZWF0KDEwLCAx
cHgpOyB9CisKKyAubG90c09mRml4ZWRSZXBlYXRXaXRoQXV0b0ZpdFJvd3NSZXZlcnNlZCB7IGdy
aWQtdGVtcGxhdGUtcm93czogIHJlcGVhdCg5OTIsIDFweCkgcmVwZWF0KGF1dG8tZml0LCAxMHB4
IDJweCA4cHgpOyB9CisgLmxvdHNPZkZpeGVkUmVwZWF0V2l0aEF1dG9GaWxsUm93c1JldmVyc2Vk
IHsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoOTk1LCAxcHgpIHJlcGVhdChhdXRvLWZpbGws
IDEwcHggMnB4IDhweCA3cHggMjBweCk7IH0KKworIC5hdXRvRml0Um93czI1cHggeyBncmlkLXRl
bXBsYXRlLXJvd3M6IHJlcGVhdChhdXRvLWZpdCwgMTBweCAycHggOHB4IDVweCk7IH0KKyAuYXV0
b0ZpdENvbHMyNXB4IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIDEw
cHggMnB4IDhweCA1cHgpOyB9CisKKyAuYXV0b0ZpbGxSb3dzMjVweCB7IGdyaWQtdGVtcGxhdGUt
cm93czogcmVwZWF0KGF1dG8tZmlsbCwgMTdweCA4cHgpOyB9CisgLmF1dG9GaWxsQ29sczI1cHgg
eyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIDJweCAyM3B4KTsgfQor
CisgLmF1dG9GaXRSb3dzMjA1cHhGaXhlZDVweCB7IGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0
KDkwMCwgNXB4KSByZXBlYXQoYXV0by1maXQsIDIwcHggNTBweCAxM3B4IDUwcHggNzJweCk7IH0K
KyAuYXV0b0ZpdENvbHMyMDVweEZpeGVkNXB4IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBl
YXQoOTAwLCA1cHgpIHJlcGVhdChhdXRvLWZpdCwgMjBweCA1MHB4IDEzcHggNTBweCA3MnB4KTsg
fQorCisgLmF1dG9GaWxsUm93czIwNXB4Rml4ZWQ1cHggeyBncmlkLXRlbXBsYXRlLXJvd3M6ICBy
ZXBlYXQoOTAwLCA1cHgpIHJlcGVhdChhdXRvLWZpbGwsIDIwMHB4IDVweCk7IH0KKyAuYXV0b0Zp
bGxDb2xzMjA1cHhGaXhlZDVweCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDkwMCwg
NXB4KSByZXBlYXQoYXV0by1maWxsLCAyMDBweCA1cHgpOyB9CisKKyAuYXV0b0ZpdEFuZEFUaG91
c2FuZEZpeGVkUm93cyB7IGdyaWQtdGVtcGxhdGUtcm93czogcmVwZWF0KGF1dG8tZml0LCAyMHB4
IDUwcHggNzJweCkgcmVwZWF0KDEwMDAsIDM3cHgpOyB9CisgLmF1dG9GaXRBbmRBVGhvdXNhbmRG
aXhlZENvbHMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgMjBweCA1
MHB4IDcycHgpIHJlcGVhdCgxMDAwLCAzN3B4KTsgfQorCisgLmF1dG9GaWxsQW5kQVRob3VzYW5k
Rml4ZWRSb3dzIHsgZ3JpZC10ZW1wbGF0ZS1yb3dzOiByZXBlYXQoYXV0by1maWxsLCAycHgpIHJl
cGVhdCgxMDAwLCAzN3B4KTsgfQorIC5hdXRvRmlsbEFuZEFUaG91c2FuZEZpeGVkQ29scyB7IGdy
aWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgMnB4KSByZXBlYXQoMTAwMCwg
MzdweCk7IH0KKworIC5hdXRvRml0QW5kTW9yZVRoYW5UaG91c2FuZEZpeGVkUm93cyB7IGdyaWQt
dGVtcGxhdGUtcm93czogIHJlcGVhdCg3MDAsIDdweCkgcmVwZWF0KGF1dG8tZml0LCAxMXB4IDEz
cHggMTI1cHgpIHJlcGVhdCg2MDAsIDZweCk7IH0KKyAuYXV0b0ZpdEFuZE1vcmVUaGFuVGhvdXNh
bmRGaXhlZENvbHMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6ICByZXBlYXQoNzAwLCA3cHgpIHJl
cGVhdChhdXRvLWZpdCwgMTFweCAxM3B4IDEyNXB4KSByZXBlYXQoNjAwLCA2cHgpOyB9CisKKyAu
YXV0b0ZpbGxBbmRNb3JlVGhhblRob3VzYW5kRml4ZWRSb3dzIHsgZ3JpZC10ZW1wbGF0ZS1yb3dz
OiByZXBlYXQoNzAwLCA3cHgpIHJlcGVhdChhdXRvLWZpbGwsIDIwcHggNTBweCA3MnB4KSByZXBl
YXQoNjAwLCA2cHgpOyB9CisgLmF1dG9GaWxsQW5kTW9yZVRoYW5UaG91c2FuZEZpeGVkQ29scyB7
IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDcwMCwgN3B4KSByZXBlYXQoYXV0by1maWxs
LCAyMHB4IDUwcHggNzJweCkgcmVwZWF0KDYwMCwgNnB4KTsgfQorPC9zdHlsZT4KKworPHA+VGhp
cyB0ZXN0IGNoZWNrcyB0aGF0IHdlIHByb3Blcmx5IGVuZm9yY2UgdGhlIG1heGltdW0gbnVtYmVy
IG9mIGdyaWQgdHJhY2tzIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvcD4KKworPGRpdiBpZD0i
YXV0b0ZpbGxHcmlkQ29scyIgY2xhc3M9ImdyaWQiPjwvZGl2PgorPGRpdiBpZD0iYXV0b0ZpdEdy
aWRDb2xzIiBjbGFzcz0iZ3JpZCI+CisgICAgPGRpdiBzdHlsZT0iZ3JpZC1jb2x1bW46IDE7Ij48
L2Rpdj4KKyAgICA8ZGl2IHN0eWxlPSJncmlkLWNvbHVtbjogMjsiPjwvZGl2PgorICAgIDxkaXYg
Y2xhc3M9Imxhc3RDb2x1bW4iPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9ImF1dG9GaWxsR3Jp
ZFJvd3MiIGNsYXNzPSJncmlkIj48L2Rpdj4KKzxkaXYgaWQ9ImF1dG9GaXRHcmlkUm93cyIgY2xh
c3M9ImdyaWQiPgorICAgIDxkaXYgc3R5bGU9ImdyaWQtcm93OiAxOyI+PC9kaXY+CisgICAgPGRp
diBzdHlsZT0iZ3JpZC1yb3c6IDI7Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJsYXN0Um93Ij48
L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgorIHZhciBtYXhUcmFja3NGb3JUZXN0aW5nID0gMTAw
MDsgIC8vIEtlZXAgdGhpcyB2YWx1ZSBpbiBzeW5jIHdpdGggdGhlIG9uZXMgdXNlZCBpbiBDU1Mg
ZGVmaW5pdGlvbnMuCisgdmFyIGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImF1dG9GaWxsR3JpZENvbHMiKTsKKyB2YXIgYXV0b0ZpdEdyaWRFbGVtZW50
Q29scyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhdXRvRml0R3JpZENvbHMiKTsKKyB2YXIg
YXV0b0ZpbGxHcmlkRWxlbWVudFJvd3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYXV0b0Zp
bGxHcmlkUm93cyIpOworIHZhciBhdXRvRml0R3JpZEVsZW1lbnRSb3dzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImF1dG9GaXRHcmlkUm93cyIpOworIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldEdyaWRNYXhUcmFja3NMaW1pdChtYXhUcmFja3NGb3JU
ZXN0aW5nKTsKKworIGZ1bmN0aW9uIHRlc3RFbGVtZW50KGdyaWRFbGVtZW50LCBwcm9wZXJ0eSwg
bGVuZ3RoLCBjbGFzc05hbWVzKSB7CisgICAgIC8qIGdyaWRFbGVtZW50LnN0eWxlLmdyaWRUZW1w
bGF0ZSA9ICdub25lJzsqLworCisgICAgIGZvciAobGV0IGNsYXNzTmFtZSBvZiBjbGFzc05hbWVz
KQorICAgICAgICAgZ3JpZEVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpOworCisgICAg
IC8vIFNlZW1zIGxpa2UgdGhpcyBpcyBub3QgZW5vdWdoIHRvIHRyaWdnZXIgYSBwcm9wZXIgbGF5
b3V0OworCisgICAgIHZhciBwcm9wZXJ0eVZhbHVlID0gZ2V0Q29tcHV0ZWRTdHlsZShncmlkRWxl
bWVudCwgJycpLmdldFByb3BlcnR5VmFsdWUocHJvcGVydHkpOworICAgICBmb3IgKGxldCBjbGFz
c05hbWUgb2YgY2xhc3NOYW1lcykKKyAgICAgICAgIGdyaWRFbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoY2xhc3NOYW1lKTsKKworICAgICBpZiAocHJvcGVydHlWYWx1ZSA9PSAiIikgeworICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhsZW5ndGgsIDApOworICAgICAgICAgcmV0dXJuIFtdOworICAgICB9
CisKKyAgICAgdmFyIHRyYWNrcyA9IHByb3BlcnR5VmFsdWUuc3BsaXQoJyAnKTsKKyAgICAgYXNz
ZXJ0X2VxdWFscyh0cmFja3MubGVuZ3RoLCBsZW5ndGgpOworICAgICByZXR1cm4gdHJhY2tzOwor
IH0KKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBhdXRvRmlsbEdyaWQgPSB0ZXN0RWxl
bWVudChhdXRvRmlsbEdyaWRFbGVtZW50Q29scywgImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsIG1h
eFRyYWNrc0ZvclRlc3RpbmcsIFsid2lkZUdyaWQiLCAibG90c09mRml4ZWRSZXBlYXRXaXRoQXV0
b0ZpbGxDb2xzIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0RWxlbWVudChhdXRvRml0
R3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVz
dGluZywgWyJ3aWRlR3JpZCIsICJsb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRml0Q29scyJdKTsK
KyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0s
ICIxMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9yVGVz
dGluZyAtIDJdLCAiMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbMF0sICIx
MHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbMV0sICIycHgiKTsKKworICAg
ICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIy
MHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3Rp
bmcgLSAyXSwgIjdweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFswXSwgIjEw
cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRbMV0sICIycHgiKTsKKyB9LCAi
VGVzdCB0aGF0IHdlIGRvbid0IGdldCBtb3JlIHRoYW4ga0dyaWRNYXhUcmFja3MgcmVwZXRpdGlv
bnMgZXZlbiBvbiB2ZXJ5IHdpZGUgZ3JpZHMgKG5vcm1hbCB0cmFja3MgY2xhbXBlZCkuIik7CisK
KyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxHcmlkID0gdGVzdEVsZW1lbnQo
YXV0b0ZpbGxHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NG
b3JUZXN0aW5nLCBbInRhbGxHcmlkIiwgImxvdHNPZkZpeGVkUmVwZWF0V2l0aEF1dG9GaWxsUm93
cyJdKTsKKyAgICAgdmFyIGF1dG9GaXRHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpdEdyaWRFbGVt
ZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsidGFs
bEdyaWQiLCAibG90c09mRml4ZWRSZXBlYXRXaXRoQXV0b0ZpdFJvd3MiXSk7CisgICAgIGFzc2Vy
dF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMTBweCIpOwor
ICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwg
IjBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkWzBdLCAiMTBweCIpOworICAg
ICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkWzFdLCAiMnB4Iik7CisKKyAgICAgYXNzZXJ0X2Vx
dWFscyhhdXRvRmlsbEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMjBweCIpOworICAg
ICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICI3
cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRbMF0sICIxMHB4Iik7CisgICAg
IGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkWzFdLCAiMnB4Iik7CisgfSwgIlRlc3QgdGhhdCB3
ZSBkb24ndCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24g
dmVyeSB0YWxsIGdyaWRzIChub3JtYWwgdHJhY2tzIGNsYW1wZWQpLiIpOworCisgdGVzdChmdW5j
dGlvbigpIHsKKyAgICAgdmFyIGF1dG9GaWxsR3JpZCA9IHRlc3RFbGVtZW50KGF1dG9GaWxsR3Jp
ZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGlu
ZywgWyJ3aWRlR3JpZCIsICJsb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRmlsbENvbHNSZXZlcnNl
ZCJdKTsKKyAgICAgdmFyIGF1dG9GaXRHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpdEdyaWRFbGVt
ZW50Q29scywgImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsi
d2lkZUdyaWQiLCAibG90c09mRml4ZWRSZXBlYXRXaXRoQXV0b0ZpdENvbHNSZXZlcnNlZCJdKTsK
KworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAx
XSwgIjJweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRl
c3RpbmcgLSAyXSwgIjBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkWzBdLCAi
MXB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbMV0sICIxcHgiKTsKKworICAg
ICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIy
MHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3Rp
bmcgLSAyXSwgIjdweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFswXSwgIjFw
eCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFsxXSwgIjFweCIpOworIH0sICJU
ZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3JpZE1heFRyYWNrcyByZXBldGl0aW9u
cyBldmVuIG9uIHZlcnkgd2lkZSBncmlkcyAoYXV0byByZXBlYXQgdHJhY2tzIGNsYW1wZWQpLiIp
OworCisgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgdmFyIGF1dG9GaWxsR3JpZCA9IHRlc3RFbGVt
ZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRSb3dzLCAiZ3JpZC10ZW1wbGF0ZS1yb3dzIiwgbWF4VHJh
Y2tzRm9yVGVzdGluZywgWyJ0YWxsR3JpZCIsICJsb3RzT2ZGaXhlZFJlcGVhdFdpdGhBdXRvRmls
bFJvd3NSZXZlcnNlZCJdKTsKKyAgICAgdmFyIGF1dG9GaXRHcmlkID0gdGVzdEVsZW1lbnQoYXV0
b0ZpdEdyaWRFbGVtZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIG1heFRyYWNrc0ZvclRl
c3RpbmcsIFsidGFsbEdyaWQiLCAibG90c09mRml4ZWRSZXBlYXRXaXRoQXV0b0ZpdFJvd3NSZXZl
cnNlZCJdKTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRl
c3RpbmcgLSAxXSwgIjJweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRy
YWNrc0ZvclRlc3RpbmcgLSAyXSwgIjBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRH
cmlkWzBdLCAiMXB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbMV0sICIxcHgi
KTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5n
IC0gMV0sICIyMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNr
c0ZvclRlc3RpbmcgLSAyXSwgIjdweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3Jp
ZFswXSwgIjFweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFsxXSwgIjFweCIp
OworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3JpZE1heFRyYWNrcyBy
ZXBldGl0aW9ucyBldmVuIG9uIHZlcnkgdGFsbCBncmlkcyAoYXV0byByZXBlYXQgdHJhY2tzIGNs
YW1wZWQpLiIpOworCisgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgYXV0b0ZpbGxHcmlkRWxlbWVu
dENvbHMuc3R5bGUuZ3JpZEdhcCA9ICIxMDBweCI7CisgICAgIGF1dG9GaXRHcmlkRWxlbWVudENv
bHMuc3R5bGUuZ3JpZEdhcCA9ICIxMDBweCI7CisKKyAgICAgdmFyIGF1dG9GaWxsR3JpZCA9IHRl
c3RFbGVtZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
IiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWRlR3JpZCIsICJsb3RzT2ZBdXRvUmVwZWF0V2l0
aEF1dG9GaWxsQ29scyJdKTsKKyAgICAgdmFyIGF1dG9GaXRHcmlkID0gdGVzdEVsZW1lbnQoYXV0
b0ZpdEdyaWRFbGVtZW50Q29scywgImdyaWQtdGVtcGxhdGUtY29sdW1ucyIsIG1heFRyYWNrc0Zv
clRlc3RpbmcsIFsid2lkZUdyaWQiLCAibG90c09mQXV0b1JlcGVhdFdpdGhBdXRvRml0Q29scyJd
KTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRlc3Rpbmcg
LSAxXSwgIjEwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFttYXhUcmFja3NG
b3JUZXN0aW5nIC0gMl0sICIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbEdyaWRb
bWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMjBweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1
dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICI3cHgiKTsKKworICAgICBhdXRv
RmlsbEdyaWRFbGVtZW50Q29scy5zdHlsZS5ncmlkR2FwID0gIjEwMDAwMDBweCI7CisgICAgIGF1
dG9GaXRHcmlkRWxlbWVudENvbHMuc3R5bGUuZ3JpZEdhcCA9ICIxMDAwMDAwcHgiOworCisgICAg
IHRlc3RFbGVtZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1
bW5zIiwgMTMwLCBbIndpZGVHcmlkIiwgImxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpbGxDb2xz
Il0pOworICAgICB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1w
bGF0ZS1jb2x1bW5zIiwgODIsIFsid2lkZUdyaWQiLCAibG90c09mQXV0b1JlcGVhdFdpdGhBdXRv
Rml0Q29scyJdKTsKKworICAgICBhdXRvRmlsbEdyaWRFbGVtZW50Q29scy5zdHlsZS5ncmlkR2Fw
ID0gIjBweCI7CisgICAgIGF1dG9GaXRHcmlkRWxlbWVudENvbHMuc3R5bGUuZ3JpZEdhcCA9ICIw
cHgiOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3JpZE1heFRyYWNr
cyByZXBldGl0aW9ucyBldmVuIG9uIHZlcnkgd2lkZSBncmlkcyB3aXRoIGdhcHMuIik7CisKKyB0
ZXN0KGZ1bmN0aW9uKCkgeworICAgICBhdXRvRmlsbEdyaWRFbGVtZW50Um93cy5zdHlsZS5ncmlk
R2FwID0gIjEwMHB4IjsKKyAgICAgYXV0b0ZpdEdyaWRFbGVtZW50Um93cy5zdHlsZS5ncmlkR2Fw
ID0gIjEwMHB4IjsKKworICAgICB2YXIgYXV0b0ZpbGxHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0Zp
bGxHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0
aW5nLCBbInRhbGxHcmlkIiwgImxvdHNPZkF1dG9SZXBlYXRXaXRoQXV0b0ZpbGxSb3dzIl0pOwor
ICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRSb3dz
LCAiZ3JpZC10ZW1wbGF0ZS1yb3dzIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ0YWxsR3JpZCIs
ICJsb3RzT2ZBdXRvUmVwZWF0V2l0aEF1dG9GaXRSb3dzIl0pOworCisgICAgIGFzc2VydF9lcXVh
bHMoYXV0b0ZpdEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMTBweCIpOworICAgICBh
c3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjBweCIp
OworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0g
MV0sICIyMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0Zv
clRlc3RpbmcgLSAyXSwgIjdweCIpOworCisgICAgIGF1dG9GaWxsR3JpZEVsZW1lbnRSb3dzLnN0
eWxlLmdyaWRHYXAgPSAiMTAwMDAwMHB4IjsKKyAgICAgYXV0b0ZpdEdyaWRFbGVtZW50Um93cy5z
dHlsZS5ncmlkR2FwID0gIjEwMDAwMDBweCI7CisKKyAgICAgdGVzdEVsZW1lbnQoYXV0b0ZpbGxH
cmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCAxMzAsIFsidGFsbEdyaWQiLCAi
bG90c09mQXV0b1JlcGVhdFdpdGhBdXRvRmlsbFJvd3MiXSk7CisgICAgIHRlc3RFbGVtZW50KGF1
dG9GaXRHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCA4MiwgWyJ0YWxsR3Jp
ZCIsICJsb3RzT2ZBdXRvUmVwZWF0V2l0aEF1dG9GaXRSb3dzIl0pOworCisgICAgIGF1dG9GaWxs
R3JpZEVsZW1lbnRSb3dzLnN0eWxlLmdyaWRHYXAgPSAiMHB4IjsKKyAgICAgYXV0b0ZpdEdyaWRF
bGVtZW50Um93cy5zdHlsZS5ncmlkR2FwID0gIjBweCI7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24n
dCBnZXQgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB0
YWxsIGdyaWRzIHdpdGggZ2Fwcy4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBh
dXRvRmlsbENvbHMgPSB0ZXN0RWxlbWVudChhdXRvRmlsbEdyaWRFbGVtZW50Q29scywgImdyaWQt
dGVtcGxhdGUtY29sdW1ucyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsibG90c09mQXV0b1JlcGVh
dFdpdGhBdXRvRmlsbENvbHMiLCAibWluU2l6ZVdpZGVHcmlkIiwgIm1pbi1jb250ZW50Il0pOwor
ICAgICB2YXIgYXV0b0ZpdENvbHMgPSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRDb2xz
LCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJsb3RzT2ZB
dXRvUmVwZWF0V2l0aEF1dG9GaXRDb2xzIiwgIm1pblNpemVXaWRlR3JpZCIsICJtaW4tY29udGVu
dCJdKTsKKworICAgICAvLyBDaGVjayB0aGF0IGNsYW1waW5nIGF1dG8gcmVwZXRpdGlvbnMgZG9l
cyBub3QgcmVkdWNlIHRoZSBhbW91bnQgb2YgdGhlIG90aGVyIHRyYWNrcy4KKyAgICAgYXNzZXJ0
X2VxdWFscyhhdXRvRmlsbENvbHNbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMjBweCIpOwor
ICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsQ29sc1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0s
ICI3cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0Q29sc1ttYXhUcmFja3NGb3JUZXN0
aW5nIC0gMV0sICIxMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdENvbHNbbWF4VHJh
Y2tzRm9yVGVzdGluZyAtIDJdLCAiMHB4Iik7CisgfSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBnZXQg
bW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIHJlcGV0aXRpb25zIGV2ZW4gb24gdmVyeSB3aWRlIGdy
aWRzIHdpdGggZ2FwcyBhbmQgbWluLXdpZHRoLiIpOworCisgdGVzdChmdW5jdGlvbigpIHsKKyAg
ICAgdmFyIGF1dG9GaWxsUm93cyA9IHRlc3RFbGVtZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRSb3dz
LCAiZ3JpZC10ZW1wbGF0ZS1yb3dzIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJsb3RzT2ZBdXRv
UmVwZWF0V2l0aEF1dG9GaWxsUm93cyIsICJtaW5TaXplVGFsbEdyaWQiLCAibWluLWNvbnRlbnQi
XSk7CisgICAgIHZhciBhdXRvRml0Um93cyA9IHRlc3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVu
dFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbImxvdHNP
ZkF1dG9SZXBlYXRXaXRoQXV0b0ZpdFJvd3MiLCAibWluU2l6ZVRhbGxHcmlkIiwgIm1pbi1jb250
ZW50Il0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxSb3dzW21heFRyYWNrc0ZvclRl
c3RpbmcgLSAxXSwgIjIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbFJvd3NbbWF4
VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0Zp
dFJvd3NbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMTBweCIpOworICAgICBhc3NlcnRfZXF1
YWxzKGF1dG9GaXRSb3dzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjBweCIpOworIH0sICJU
ZXN0IHRoYXQgd2UgZG9uJ3QgZ2V0IG1vcmUgdGhhbiBrR3JpZE1heFRyYWNrcyByZXBldGl0aW9u
cyBldmVuIG9uIHZlcnkgdGFsbCBncmlkcyB3aXRoIGdhcHMgYW5kIG1pbi1oZWlnaHQuIik7CisK
KyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxSb3dzID0gdGVzdEVsZW1lbnQo
YXV0b0ZpbGxHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NG
b3JUZXN0aW5nLCBbImhlaWdodDI1ayIsICJhdXRvRmlsbFJvd3MyNXB4Il0pOworICAgICB2YXIg
YXV0b0ZpdFJvd3MgPSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRSb3dzLCAiZ3JpZC10
ZW1wbGF0ZS1yb3dzIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJoZWlnaHQyNWsiLCAiYXV0b0Zp
dFJvd3MyNXB4Il0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxSb3dzW21heFRyYWNr
c0ZvclRlc3RpbmcgLSAxXSwgIjhweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsUm93
c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICIxN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMo
YXV0b0ZpdFJvd3NbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiNXB4Iik7CisgICAgIGFzc2Vy
dF9lcXVhbHMoYXV0b0ZpdFJvd3NbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDJdLCAiMHB4Iik7Cisg
fSwgIlRlc3QgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHRoZXJlIGFyZSBleGFjdGx5IGtHcmlk
TWF4VHJhY2tzIGF1dG8gcmVwZWF0IHJvd3Mgb24gdmVyeSB0YWxsIGdyaWRzLiIpOworCisgdGVz
dChmdW5jdGlvbigpIHsKKyAgICAgdmFyIGF1dG9GaWxsQ29scyA9IHRlc3RFbGVtZW50KGF1dG9G
aWxsR3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9y
VGVzdGluZywgWyJ3aWR0aDI1ayIsICJhdXRvRmlsbENvbHMyNXB4Il0pOworICAgICB2YXIgYXV0
b0ZpdENvbHMgPSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1w
bGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWR0aDI1ayIsICJhdXRvRml0
Q29sczI1cHgiXSk7CisKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbENvbHNbbWF4VHJhY2tz
Rm9yVGVzdGluZyAtIDFdLCAiMjNweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsQ29s
c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICIycHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhh
dXRvRml0Q29sc1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICI1cHgiKTsKKyAgICAgYXNzZXJ0
X2VxdWFscyhhdXRvRml0Q29sc1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICIwcHgiKTsKKyB9
LCAiVGVzdCB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlcmUgYXJlIGV4YWN0bHkga0dyaWRN
YXhUcmFja3MgYXV0byByZXBlYXQgY29sdW1ucyBvbiB2ZXJ5IHdpZGUgZ3JpZHMuIik7CisKKyB0
ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxSb3dzID0gdGVzdEVsZW1lbnQoYXV0
b0ZpbGxHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JU
ZXN0aW5nLCBbImhlaWdodDI1ayIsICJhdXRvRmlsbFJvd3MyMDVweEZpeGVkNXB4Il0pOworICAg
ICB2YXIgYXV0b0ZpdFJvd3MgPSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRSb3dzLCAi
Z3JpZC10ZW1wbGF0ZS1yb3dzIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJoZWlnaHQyNWsiLCAi
YXV0b0ZpdFJvd3MyMDVweEZpeGVkNXB4Il0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0Zp
bGxSb3dzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjVweCIpOworICAgICBhc3NlcnRfZXF1
YWxzKGF1dG9GaWxsUm93c1ttYXhUcmFja3NGb3JUZXN0aW5nIC0gMl0sICIyMDBweCIpOworICAg
ICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRSb3dzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjcy
cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0Um93c1ttYXhUcmFja3NGb3JUZXN0aW5n
IC0gMl0sICIwcHgiKTsKKyB9LCAiVGVzdCB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlcmUg
YXJlIGV4YWN0bHkga0dyaWRNYXhUcmFja3MgKG5vcm1hbCBhbmQgYXV0by1yZXBlYXQpIHJvd3Mg
b24gdmVyeSB0YWxsIGdyaWRzLiIpOworCisgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgdmFyIGF1
dG9GaWxsQ29scyA9IHRlc3RFbGVtZW50KGF1dG9GaWxsR3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10
ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWR0aDI1ayIsICJhdXRv
RmlsbENvbHMyMDVweEZpeGVkNXB4Il0pOworICAgICB2YXIgYXV0b0ZpdENvbHMgPSB0ZXN0RWxl
bWVudChhdXRvRml0R3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4
VHJhY2tzRm9yVGVzdGluZywgWyJ3aWR0aDI1ayIsICJhdXRvRml0Q29sczIwNXB4Rml4ZWQ1cHgi
XSk7CisKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRmlsbENvbHNbbWF4VHJhY2tzRm9yVGVzdGlu
ZyAtIDFdLCAiNXB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxDb2xzW21heFRyYWNr
c0ZvclRlc3RpbmcgLSAyXSwgIjIwMHB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdENv
bHNbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiNzJweCIpOworICAgICBhc3NlcnRfZXF1YWxz
KGF1dG9GaXRDb2xzW21heFRyYWNrc0ZvclRlc3RpbmcgLSAyXSwgIjBweCIpOworIH0sICJUZXN0
IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVyZSBhcmUgZXhhY3RseSBrR3JpZE1heFRyYWNr
cyAobm9ybWFsIGFuZCBhdXRvLXJlcGVhdCkgY29sdW1ucyBvbiB2ZXJ5IHdpZGUgZ3JpZHMuIik7
CisKKyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxHcmlkID0gdGVzdEVsZW1l
bnQoYXV0b0ZpbGxHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFj
a3NGb3JUZXN0aW5nLCBbImhlaWdodDI1ayIsICJhdXRvRmlsbEFuZEFUaG91c2FuZEZpeGVkUm93
cyJdKTsKKyAgICAgdmFyIGF1dG9GaXRHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpdEdyaWRFbGVt
ZW50Um93cywgImdyaWQtdGVtcGxhdGUtcm93cyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsiaGVp
Z2h0MjVrIiwgImF1dG9GaXRBbmRBVGhvdXNhbmRGaXhlZFJvd3MiXSk7CisKKyAgICAgYXNzZXJ0
X2VxdWFscyhhdXRvRmlsbEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMzdweCIpOwor
ICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFswXSwgIjJweCIpOworICAgICBhc3NlcnRf
ZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjM3cHgiKTsKKyAg
ICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFswXSwgIjIwcHgiKTsKKyB9LCAiVGVzdCB0aGF0
IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlcmUgYXJlIGV4YWN0bHkga0dyaWRNYXhUcmFja3Mgbm9u
IGF1dG8tcmVwZWF0IHJvd3Mgb24gdmVyeSB0YWxsIGdyaWRzLiIpOworCisgdGVzdChmdW5jdGlv
bigpIHsKKyAgICAgdmFyIGF1dG9GaWxsR3JpZCA9IHRlc3RFbGVtZW50KGF1dG9GaWxsR3JpZEVs
ZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywg
WyJ3aWR0aDI1ayIsICJhdXRvRmlsbEFuZEFUaG91c2FuZEZpeGVkQ29scyJdKTsKKyAgICAgdmFy
IGF1dG9GaXRHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpdEdyaWRFbGVtZW50Q29scywgImdyaWQt
dGVtcGxhdGUtY29sdW1ucyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsid2lkdGgyNWsiLCAiYXV0
b0ZpdEFuZEFUaG91c2FuZEZpeGVkQ29scyJdKTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9G
aWxsR3JpZFttYXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICIzN3B4Iik7CisgICAgIGFzc2VydF9l
cXVhbHMoYXV0b0ZpbGxHcmlkWzBdLCAiMnB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0Zp
dEdyaWRbbWF4VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMzdweCIpOworICAgICBhc3NlcnRfZXF1
YWxzKGF1dG9GaXRHcmlkWzBdLCAiMjBweCIpOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jh
c2ggd2hlbiB0aGVyZSBhcmUgZXhhY3RseSBrR3JpZE1heFRyYWNrcyBub24gYXV0by1yZXBlYXQg
Y29sdW1ucyBvbiB2ZXJ5IHdpZGUgZ3JpZHMuIik7CisKKyB0ZXN0KGZ1bmN0aW9uKCkgeworICAg
ICB2YXIgYXV0b0ZpbGxHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpbGxHcmlkRWxlbWVudFJvd3Ms
ICJncmlkLXRlbXBsYXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbInRhbGxHcmlkIiwg
ImF1dG9GaWxsQW5kQVRob3VzYW5kRml4ZWRSb3dzIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQg
PSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRSb3dzLCAiZ3JpZC10ZW1wbGF0ZS1yb3dz
IiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ0YWxsR3JpZCIsICJhdXRvRml0QW5kQVRob3VzYW5k
Rml4ZWRSb3dzIl0pOworCisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpbGxHcmlkW21heFRyYWNr
c0ZvclRlc3RpbmcgLSAxXSwgIjJweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3Jp
ZFswXSwgIjJweCIpOworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaXRHcmlkW21heFRyYWNrc0Zv
clRlc3RpbmcgLSAxXSwgIjIwcHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0R3JpZFsw
XSwgIjIwcHgiKTsKKyB9LCAiVGVzdCB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gdGhlcmUgYXJl
IGV4YWN0bHkga0dyaWRNYXhUcmFja3Mgbm9uIGF1dG8tcmVwZWF0IHJvd3Mgb24gdmVyeSB0YWxs
IGdyaWRzIHdpdGggZW5vdWdoIHJvb20gZm9yIGF1dG8gcmVwZXRpdGlvbnMuIik7CisKKyB0ZXN0
KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0ZpbGxHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0Zp
bGxHcmlkRWxlbWVudENvbHMsICJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCBtYXhUcmFja3NGb3JU
ZXN0aW5nLCBbIndpZGVHcmlkIiwgImF1dG9GaWxsQW5kQVRob3VzYW5kRml4ZWRDb2xzIl0pOwor
ICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRDb2xz
LCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zIiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWRlR3Jp
ZCIsICJhdXRvRml0QW5kQVRob3VzYW5kRml4ZWRDb2xzIl0pOworCisgICAgIGFzc2VydF9lcXVh
bHMoYXV0b0ZpbGxHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjJweCIpOworICAgICBh
c3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFswXSwgIjJweCIpOworICAgICBhc3NlcnRfZXF1YWxz
KGF1dG9GaXRHcmlkW21heFRyYWNrc0ZvclRlc3RpbmcgLSAxXSwgIjIwcHgiKTsKKyAgICAgYXNz
ZXJ0X2VxdWFscyhhdXRvRml0R3JpZFswXSwgIjIwcHgiKTsKKyB9LCAiVGVzdCB0aGF0IHdlIGRv
bid0IGNyYXNoIHdoZW4gdGhlcmUgYXJlIGV4YWN0bHkga0dyaWRNYXhUcmFja3Mgbm9uIGF1dG8t
cmVwZWF0IGNvbHVtbnMgb24gdmVyeSB3aWRlIGdyaWRzIHdpdGggZW5vdWdoIHJvb20gZm9yIGF1
dG8gcmVwZXRpdGlvbnMuIik7CisKKyB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICB2YXIgYXV0b0Zp
bGxHcmlkID0gdGVzdEVsZW1lbnQoYXV0b0ZpbGxHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBs
YXRlLXJvd3MiLCBtYXhUcmFja3NGb3JUZXN0aW5nLCBbImhlaWdodDI1ayIsICJhdXRvRmlsbEFu
ZE1vcmVUaGFuVGhvdXNhbmRGaXhlZFJvd3MiXSk7CisgICAgIHZhciBhdXRvRml0R3JpZCA9IHRl
c3RFbGVtZW50KGF1dG9GaXRHcmlkRWxlbWVudFJvd3MsICJncmlkLXRlbXBsYXRlLXJvd3MiLCBt
YXhUcmFja3NGb3JUZXN0aW5nLCBbImhlaWdodDI1ayIsICJhdXRvRml0QW5kTW9yZVRoYW5UaG91
c2FuZEZpeGVkUm93cyJdKTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFttYXhU
cmFja3NGb3JUZXN0aW5nIC0gMV0sICI3MnB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0Zp
bGxHcmlkWzBdLCAiN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4VHJh
Y2tzRm9yVGVzdGluZyAtIDFdLCAiMTI1cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRvRml0
R3JpZFswXSwgIjdweCIpOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0aGVy
ZSBhcmUgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIG5vbiBhdXRvLXJlcGVhdCByb3dzIG9uIHZl
cnkgdGFsbCBncmlkcy4iKTsKKworIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgIHZhciBhdXRvRmls
bEdyaWQgPSB0ZXN0RWxlbWVudChhdXRvRmlsbEdyaWRFbGVtZW50Q29scywgImdyaWQtdGVtcGxh
dGUtY29sdW1ucyIsIG1heFRyYWNrc0ZvclRlc3RpbmcsIFsid2lkdGgyNWsiLCAiYXV0b0ZpbGxB
bmRNb3JlVGhhblRob3VzYW5kRml4ZWRDb2xzIl0pOworICAgICB2YXIgYXV0b0ZpdEdyaWQgPSB0
ZXN0RWxlbWVudChhdXRvRml0R3JpZEVsZW1lbnRDb2xzLCAiZ3JpZC10ZW1wbGF0ZS1jb2x1bW5z
IiwgbWF4VHJhY2tzRm9yVGVzdGluZywgWyJ3aWR0aDI1ayIsICJhdXRvRml0QW5kTW9yZVRoYW5U
aG91c2FuZEZpeGVkQ29scyJdKTsKKworICAgICBhc3NlcnRfZXF1YWxzKGF1dG9GaWxsR3JpZFtt
YXhUcmFja3NGb3JUZXN0aW5nIC0gMV0sICI3MnB4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0
b0ZpbGxHcmlkWzBdLCAiN3B4Iik7CisgICAgIGFzc2VydF9lcXVhbHMoYXV0b0ZpdEdyaWRbbWF4
VHJhY2tzRm9yVGVzdGluZyAtIDFdLCAiMTI1cHgiKTsKKyAgICAgYXNzZXJ0X2VxdWFscyhhdXRv
Rml0R3JpZFswXSwgIjdweCIpOworIH0sICJUZXN0IHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiB0
aGVyZSBhcmUgbW9yZSB0aGFuIGtHcmlkTWF4VHJhY2tzIG5vbiBhdXRvLXJlcGVhdCBjb2x1bW5z
IG9uIHZlcnkgd2lkZSBncmlkcy4iKTsKKworPC9zY3JpcHQ+Cg==
</data>
<flag name="review"
          id="327162"
          type_id="1"
          status="+"
          setter="rego"
    />
          </attachment>
      

    </bug>

</bugzilla>