<?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>130715</bug_id>
          
          <creation_ts>2014-03-25 03:17:38 -0700</creation_ts>
          <short_desc>[CSS Regions] Overflow selection doesn&apos;t work properly</short_desc>
          <delta_ts>2014-04-25 07:00:35 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>AdobeTracked</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116295</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Bucur">abucur</reporter>
          <assigned_to name="Radu Stavila">stavila</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hyatt</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994128</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-03-25 03:17:38 -0700</bug_when>
    <thetext>Overflow belonging to a region is selectable in the next region. The selection is also painted in two places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994129</commentid>
    <comment_count>1</comment_count>
      <attachid>227735</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-03-25 03:18:45 -0700</bug_when>
    <thetext>Created attachment 227735
Repro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001535</commentid>
    <comment_count>2</comment_count>
      <attachid>229541</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-04-17 06:56:49 -0700</bug_when>
    <thetext>Created attachment 229541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1001558</commentid>
    <comment_count>3</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-04-17 08:42:03 -0700</bug_when>
    <thetext>+ dhyatt

I think you had a problem with positionAtPoint in the new multi-col code. This patch seems to touch that area.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003024</commentid>
    <comment_count>4</comment_count>
      <attachid>229541</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-22 12:21:58 -0700</bug_when>
    <thetext>Comment on attachment 229541
Patch

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

I&apos;m kind of alarmed by the intrusiveness of this change. If there&apos;s no other way, then I would at least like it if you could avoid allowing the region to be null. We don&apos;t want people to mess up when they write new version of this method that have to recur into children.

&gt; Source/WebCore/rendering/RenderBlock.cpp:2419
&gt; +        if (!toRenderFlowThread(paintInfo-&gt;paintContainer)-&gt;objectShouldPaintInFlowRegion(this, paintInfo-&gt;renderNamedFlowFragment))

Consider renaming this method: objectShouldPaintInFlowRegion. You&apos;re using it for hit tests, so I don&apos;t think &quot;paint&quot; is a good term to be using.

&gt; Source/WebCore/rendering/RenderBlock.cpp:3233
&gt;      if (childrenInline())
&gt;          return positionForPointWithInlineChildren(pointInLogicalContents);

Why are inline children not affected by this issue? They can be in different regions.

&gt; Source/WebCore/rendering/RenderBlock.h:186
&gt; +    virtual VisiblePosition positionForPoint(const LayoutPoint&amp;, const RenderRegion* = nullptr) override;

It&apos;s really strange to me that this allows a nullptr. The problem I have with this is that someone could forget to pass the second argument when recurring into children, and it won&apos;t be a compile error. This seems fragile and error-prone to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003225</commentid>
    <comment_count>5</comment_count>
      <attachid>229964</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-04-23 01:41:49 -0700</bug_when>
    <thetext>Created attachment 229964
Patch implementing reviewer feedback - DO NOT LAND</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003228</commentid>
    <comment_count>6</comment_count>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-04-23 01:47:20 -0700</bug_when>
    <thetext>Created https://bugs.webkit.org/show_bug.cgi?id=132050 for the renaming of objectShouldPaintInFlowRegion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003640</commentid>
    <comment_count>7</comment_count>
      <attachid>229964</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-24 08:57:46 -0700</bug_when>
    <thetext>Comment on attachment 229964
Patch implementing reviewer feedback - DO NOT LAND

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

Close! One issue.

&gt; Source/WebCore/rendering/RenderMultiColumnSet.cpp:921
&gt; +                return multiColumnFlowThread()-&gt;positionForPoint(point, region);

This is wrong. You should be passing &quot;this&quot; in here... it&apos;s similar to what you did for RenderRegion.cpp.

&gt; Source/WebCore/rendering/RenderMultiColumnSet.cpp:958
&gt; +                return multiColumnFlowThread()-&gt;positionForPoint(point, region);

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003642</commentid>
    <comment_count>8</comment_count>
      <attachid>229964</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2014-04-24 09:01:04 -0700</bug_when>
    <thetext>Comment on attachment 229964
Patch implementing reviewer feedback - DO NOT LAND

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004016</commentid>
    <comment_count>9</comment_count>
      <attachid>230152</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-04-25 02:07:12 -0700</bug_when>
    <thetext>Created attachment 230152
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004075</commentid>
    <comment_count>10</comment_count>
      <attachid>230152</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-25 06:15:19 -0700</bug_when>
    <thetext>Comment on attachment 230152
Patch for landing

Rejecting attachment 230152 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 230152, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/5440042235330560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004077</commentid>
    <comment_count>11</comment_count>
      <attachid>230178</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-04-25 06:19:00 -0700</bug_when>
    <thetext>Created attachment 230178
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1004083</commentid>
    <comment_count>12</comment_count>
      <attachid>230178</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-25 06:56:43 -0700</bug_when>
    <thetext>Comment on attachment 230178
Patch for landing

Clearing flags on attachment: 230178

Committed r167803: &lt;http://trac.webkit.org/changeset/167803&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>227735</attachid>
            <date>2014-03-25 03:18:45 -0700</date>
            <delta_ts>2014-03-25 03:18:45 -0700</delta_ts>
            <desc>Repro</desc>
            <filename>range_test.html</filename>
            <type>text/html</type>
            <size>607</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5yZWdpb24gewoJCS13ZWJraXQtZmxvdy1mcm9tOiBm
bG93OwoJCWZsb2F0OiBsZWZ0OwoJCWJvcmRlcjogdGhpbiBzb2xpZCBibGFjazsKCX0KCgkuY29u
dGVudCB7CgkJLXdlYmtpdC1mbG93LWludG86IGZsb3c7Cgl9CgoJI29uZSB7CgkJeC13ZWJraXQt
cmVnaW9uLWJyZWFrLWFmdGVyOiBhbHdheXM7CgkJYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CgkJ
d2lkdGg6IDEwMHB4OwoJCWhlaWdodDogMTAwcHg7Cgl9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJy
ZWdpb24iIHN0eWxlPSJoZWlnaHQ6IDEyMHB4OyI+PC9kaXY+CjxkaXYgY2xhc3M9InJlZ2lvbiIg
c3R5bGU9ImhlaWdodDogNTAwcHg7Ij48L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRlbnQiPgoJPGRp
diBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz48L2Rpdj4KCTxkaXYgaWQ9InR3byI+PC9kaXY+CjwvZGl2Pg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229541</attachid>
            <date>2014-04-17 06:56:49 -0700</date>
            <delta_ts>2014-04-23 01:41:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>130715.patch</filename>
            <type>text/plain</type>
            <size>43910</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhOWRhMzg1Li43Njk0NWFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDQt
MTcgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVn
aW9uc10gT3ZlcmZsb3cgc2VsZWN0aW9uIGRvZXNuJ3Qgd29yayBwcm9wZXJseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIGhp
dC10ZXN0aW5nIGFuZCBwYWludGluZyBzZWxlY3Rpb24gZ2FwcyBpbiB0aGUgcmVnaW9uJ3Mgb3Zl
cmZsb3cgYXJlYS4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZs
b3ctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlv
bi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1vdmVy
Zmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Jl
Z2lvbnMvc2VsZWN0aW9uLWluLXRleHQtYWZ0ZXItb3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy5odG1s
OiBBZGRlZC4KKwogMjAxNC0wNC0xNyAgSW9uIFJvc2NhICA8cm9zY2FAYWRvYmUuY29tPgogCiAg
ICAgICAgIFtDU1MgQmxlbmRpbmddIElzb2xhdGlvbiBkZXNjZW5kYW50IGRlcGVuZGVudCBmbGFn
cyBhcmUgbm90IHVwZGF0ZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJlNDMzYgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ctZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDYzIEBACis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Cisg
ICAgZnVuY3Rpb24gb25Cb2R5TG9hZCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwor
CisgICAgICAgICAgICAvLyBUZXN0IHNlbGVjdGlvbiBvbiB0aGUgb3ZlcmZsb3cgYmVsb3cgdGhl
IGxhc3QgcmVnaW9uLgorICAgICAgICAgICAgdmFyIHJlZ2lvbiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZWdpb24xIik7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblggPSByZWdp
b24ub2Zmc2V0TGVmdCArIDIwOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zaXRpb25ZID0gcmVn
aW9uLm9mZnNldFRvcCArIDIwMDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFy
dFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9z
aXRpb25ZICsgNDA7CisKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9u
WCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAg
IC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRoaW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFy
Z2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4
OworICAgIH0KKworICAgICNyZWdpb24xCisgICAgeworICAgICAgICBoZWlnaHQ6IDEyMHB4Owor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAg
ICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAg
bGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEyN3B4OworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9z
dHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlMb2FkKCkiPgorICAgIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBU
ZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3IgdGhlIGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMg
aW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlv
bnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFzc2VzIGlmIHNlbGVjdGluZyB0aGUgdGV4dCB0
aGF0IG92ZXJmbG93cyB0aGUgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPnJlZ2lvbjwvc3Bhbj4g
cHJvcGVybHkgc2VsZWN0cyBhbmQgbm8gc2VsZWN0aW9uIGFydGlmYWN0cyBhcmUgdmlzaWJsZSBp
biB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+PC9kaXY+
CisgICAgPGJyLz4KKworICAgIDxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJyZWdpb24iPgorICAg
ICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAgICAgICAgICAgIDxkaXYgaWQ9Im9uZSI+QUFB
QTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxi
ci8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+
QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJl
Z2lvbiI+PC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQt
dGVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlv
bi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjRmODIwOWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ICAgIGZ1bmN0aW9uIG9uQm9keUxvYWQoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
KworICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3Rpb24gb24gdGhlIG92ZXJmbG93IGJlbG93IHRo
ZSBsYXN0IHJlZ2lvbi4KKyAgICAgICAgICAgIHZhciByZWdpb24gPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVnaW9uMiIpOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zaXRpb25YID0gcmVn
aW9uLm9mZnNldExlZnQgKyAyMDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWSA9IHJl
Z2lvbi5vZmZzZXRUb3AgKyAyMDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFy
dFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9z
aXRpb25ZICsgNjA7CisKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9u
WCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAg
IC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRoaW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFy
Z2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4
OworICAgIH0KKworICAgICNyZWdpb24xCisgICAgeworICAgICAgICBoZWlnaHQ6IDEyMHB4Owor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAg
ICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAg
bGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEyN3B4OworICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwor
ICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9z
dHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlMb2FkKCkiPgorICAgIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBU
ZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3IgdGhlIGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMg
aW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlv
bnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFzc2VzIGlmIHNlbGVjdGluZyBpbiB0aGUgc2Vj
b25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+IGhhcyBubyBlZmZlY3Qg
b24gdGhlIHRleHQgaW4gdGhlIGZpcnN0IDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248
L3NwYW4+LjwvZGl2PgorICAgIDxici8+CisKKyAgICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0i
cmVnaW9uIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+CisgICAgICAgICAgICA8ZGl2
IGlkPSJvbmUiPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIv
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9InJlZ2lv
bjIiIGNsYXNzPSJyZWdpb24iPjwvZGl2PgorPC9ib2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4t
b3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxl
Y3Rpb24taW4tb3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43OGU1NGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy5odG1sCkBAIC0wLDAg
KzEsNjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBv
bkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAg
ICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAg
IC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxvdyBiZWxvdyB0aGUgbGFzdCByZWdpb24u
CisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lv
bjIiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0
ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9w
ICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25YID0gc3RhcnRQb3NpdGlvblggKyAy
MDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblkgPSBzdGFydFBvc2l0aW9uWSArIDYwOwor
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc2l0aW9uWCwgc3Rh
cnRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRQb3NpdGlvblgsIGVuZFBvc2l0aW9u
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICB9
Cis8L3NjcmlwdD4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAucmVnaW9uIHsKKyAg
ICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7CisgICAgICAgIGJvcmRlcjogdGhpbiBzb2xp
ZCBibHVlOworICAgICAgICBtYXJnaW46IDVweDsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZl
OworICAgICAgICBsZWZ0OiAxcHg7CisgICAgfQorCisgICAgI3JlZ2lvbjEKKyAgICB7CisgICAg
ICAgIGhlaWdodDogMTIwcHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICAj
cmVnaW9uMgorICAgIHsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgcG9zaXRpb246
IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAxMjBweDsKKyAgICAgICAgdG9wOiAtMTI3cHg7Cisg
ICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICAuY29udGVudCB7CisgICAgICAgIC13
ZWJraXQtZmxvdy1pbnRvOiBmbG93OworICAgIH0KKworICAgICNvbmUgeworICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxib2R5IG9ubG9hZD0ib25Cb2R5TG9hZCgp
Ij4KKyAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTMwNzE1Ij5CdWcgMTMwNzE1IC0gVGVzdCB0aGF0IG92ZXJmbG93IGNvbnRlbnQgZm9yIHRoZSBm
aXJzdCBhbmQgbGFzdCByZWdpb25zIGluIHRoZSBjaGFpbiBpcyBjb3JyZWN0bHkgZGlzcGxheWVk
IGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvYT4KKyAgICA8ZGl2PlRoZSB0ZXN0IHBhc3NlcyBp
ZiBzZWxlY3RpbmcgaW4gdGhlIHNlY29uZCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9u
PC9zcGFuPiBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0ZXh0IGluIHRoZSBmaXJzdCA8c3BhbiBzdHls
ZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPi48L2Rpdj4KKyAgICA8YnIvPgorCisgICAgPGRp
diBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9u
MiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAg
ICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3cuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjJlNTE1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy5odG1sCkBAIC0wLDAgKzEs
NjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJv
ZHlMb2FkKCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAg
IHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8v
IFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxvdyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisg
ICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEi
KTsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsg
MjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsg
MjAwOworICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWCA9IHN0YXJ0UG9zaXRpb25YICsgMjA7
CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25ZID0gc3RhcnRQb3NpdGlvblkgKyA0MDsKKwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NpdGlvblgsIHN0YXJ0
UG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kUG9zaXRpb25YLCBlbmRQb3NpdGlvblkp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOworICAgICAgICB9CisgICAgfQor
PC9zY3JpcHQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnJlZ2lvbiB7CisgICAg
ICAgIC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OworICAgICAgICBib3JkZXI6IHRoaW4gc29saWQg
Ymx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAgICNyZWdpb24xCisgICAgeworICAgICAg
ICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI3Jl
Z2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEyN3B4OworICAg
ICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgLmNvbnRlbnQgeworICAgICAgICAtd2Vi
a2l0LWZsb3ctaW50bzogZmxvdzsKKyAgICB9CisKKyAgICAjb25lIHsKKyAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0
OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorCis8Ym9keSBvbmxvYWQ9Im9uQm9keUxvYWQoKSI+
CisgICAgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MDcxNSI+QnVnIDEzMDcxNSAtIFRlc3QgdGhhdCBvdmVyZmxvdyBjb250ZW50IGZvciB0aGUgZmly
c3QgYW5kIGxhc3QgcmVnaW9ucyBpbiB0aGUgY2hhaW4gaXMgY29ycmVjdGx5IGRpc3BsYXllZCBp
biBkaWZmZXJlbnQgc2l0dWF0aW9ucy48L2E+CisgICAgPGRpdj5UaGUgdGVzdCBwYXNzZXMgaWYg
c2VsZWN0aW5nIHRoZSB0ZXh0IHRoYXQgb3ZlcmZsb3dzIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6
Ymx1ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJseSBzZWxlY3RzIGFuZCBubyBzZWxlY3Rpb24gYXJ0
aWZhY3RzIGFyZSB2aXNpYmxlIGluIHRoZSBzZWNvbmQgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUi
PnJlZ2lvbjwvc3Bhbj48L2Rpdj4KKyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVnaW9uMSIg
Y2xhc3M9InJlZ2lvbiI+PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lv
biI+PC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAgICAgICAgPGRpdiBpZD0i
b25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVy
LW92ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZTI2ZGRmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxvdyBi
ZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9u
WCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlv
blkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25Y
ID0gc3RhcnRQb3NpdGlvblggKyAyMDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblkgPSBz
dGFydFBvc2l0aW9uWSArIDYwOworCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRQ
b3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKworPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KKyAgICAucmVnaW9uIHsKKyAgICAgICAgYm9yZGVyOiB0aGluIHNvbGlkIGJsdWU7CisgICAg
ICAgIG1hcmdpbjogNXB4OworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxl
ZnQ6IDFweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMQorICAgIHsKKyAgICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgICBoZWlnaHQ6IDExMHB4OworICAgIH0KKworICAgICNyZWdpb24yCisgICAg
eworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgICAgIGxlZnQ6IDEyMHB4OworICAgICAgICB0b3A6IC0xMjdweDsKKyAgICAgICAgd2lkdGg6
IDEwMHB4OworICAgIH0KKworICAgICNvbmUgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBn
cmVlbjsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAg
IH0KKzwvc3R5bGU+CisKKzxib2R5IG9ubG9hZD0ib25Cb2R5TG9hZCgpIj4KKyAgICA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1Ij5CdWcgMTMw
NzE1IC0gVGVzdCB0aGF0IG92ZXJmbG93IGNvbnRlbnQgZm9yIHRoZSBmaXJzdCBhbmQgbGFzdCBy
ZWdpb25zIGluIHRoZSBjaGFpbiBpcyBjb3JyZWN0bHkgZGlzcGxheWVkIGluIGRpZmZlcmVudCBz
aXR1YXRpb25zLjwvYT4KKyAgICA8ZGl2PlRoZSB0ZXN0IHBhc3NlcyBpZiBzZWxlY3RpbmcgaW4g
dGhlIHNlY29uZCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJs
eSBzZWxlY3RzIHRoZSBCQkJCIHRleHRzIGFuZCBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0ZXh0IGlu
IHRoZSBmaXJzdCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPi48L2Rpdj4K
KyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgorICAgICAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVn
aW9uIj4KKyAgICAgICAgPGRpdiBpZD0idHdvIj5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5C
QkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJC
PC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFm
dGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
c2VsZWN0aW9uLWluLXRleHQtYWZ0ZXItb3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODU3ZWRlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93
LWhpdC10ZXN0aW5nLmh0bWwKQEAgLTAsMCArMSw2OCBAQAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIG9uQm9keUxvYWQoKSB7CisgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKTsKKworICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3Rpb24gb24gdGhlIG92ZXJm
bG93IGJlbG93IHRoZSBsYXN0IHJlZ2lvbi4KKyAgICAgICAgICAgIHZhciByZWdpb24gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
aXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAyMDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRUb3AgKyAyMDsKKyAgICAgICAgICAgIHZhciBlbmRQb3Np
dGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9u
WSA9IHN0YXJ0UG9zaXRpb25ZICsgNjA7CisKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsK
KyAgICAgICAgYm9yZGVyOiB0aGluIHNvbGlkIGJsdWU7CisgICAgICAgIG1hcmdpbjogNXB4Owor
ICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDFweDsKKyAgICB9CisK
KyAgICAjcmVnaW9uMQorICAgIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWln
aHQ6IDExMHB4OworICAgIH0KKworICAgICNyZWdpb24yCisgICAgeworICAgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDEyMHB4
OworICAgICAgICB0b3A6IC0xMjdweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIH0KKwor
ICAgIC5jb250ZW50IHsKKyAgICAgICAgLXdlYmtpdC1mbG93LWludG86IGZsb3c7CisgICAgfQor
CisgICAgI29uZSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKwor
PGJvZHkgb25sb2FkPSJvbkJvZHlMb2FkKCkiPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQg
b3ZlcmZsb3cgY29udGVudCBmb3IgdGhlIGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNo
YWluIGlzIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgor
ICAgIDxkaXY+VGhlIHRlc3QgcGFzc2VzIGlmIHNlbGVjdGluZyBpbiB0aGUgc2Vjb25kIDxzcGFu
IHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+IHByb3Blcmx5IHNlbGVjdHMgdGhlIEJC
QkIgdGV4dHMgYW5kIGhhcyBubyBlZmZlY3Qgb24gdGhlIHRleHQgaW4gdGhlIGZpcnN0IDxzcGFu
IHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+LjwvZGl2PgorICAgIDxici8+CisKKyAg
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJy
ZWdpb24yIiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQi
PgorICAgICAgICA8ZGl2IGlkPSJvbmUiPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIv
PkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJ0d28iPkJCQkI8YnIvPkJC
QkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8
YnIvPkJCQkI8YnIvPkJCQkI8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA5ZDc1OTZlLi4yNWViYmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTQtMDQt
MTcgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVn
aW9uc10gT3ZlcmZsb3cgc2VsZWN0aW9uIGRvZXNuJ3Qgd29yayBwcm9wZXJseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBoaXQtdGVzdGluZywg
cGFpbnRpbmcgYmxvY2sgc2VsZWN0aW9uIGdhcHMgYW5kIHNlYXJjaGluZyBmb3IgdGhlIG5vZGUg
YXQgYSBzcGVjaWZpYyBwb2ludCBpbnNpZGUgYSBmbG93IHRocmVhZCwKKyAgICAgICAgdGhlIHJl
Z2lvbiByYW5nZSBvZiB0aGUgYm94IGJlaW5nIGNoZWNrZWQgbXVzdCBiZSB2YWxpZGF0ZWQgaW4g
b3JkZXIgdG8gbm90IHJldHVybiBmYWxzZSBwb3NpdGl2ZXMuIE90aGVyd2lzZSwgaGl0LXRlc3Rp
bmcKKyAgICAgICAgYXQgdGhlIHRvcCBvZiByZWdpb24gQiBjb3VsZCBoaXQgZWxlbWVudHMgdGhh
dCBvdmVyZmxvdyB0aGUgYm90dG9tIG9mIHJlZ2lvbiBBLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3cuaHRtbAorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpzZWxlY3Rpb25HYXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpub2Rl
QXRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjppc0NoaWxkSGl0VGVzdENhbmRpZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKTog
RGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250
cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwb3Np
dGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcklubGluZTo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpwb3NpdGlvbkZvclBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJlZ2lvbjo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJlZ2lvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQ
b2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OnBvc2l0aW9u
Rm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oOgorCiAy
MDE0LTA0LTE3ICBJb24gUm9zY2EgIDxyb3NjYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBC
bGVuZGluZ10gSXNvbGF0aW9uIGRlc2NlbmRhbnQgZGVwZW5kZW50IGZsYWdzIGFyZSBub3QgdXBk
YXRlZCBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmlu
ZGV4IGNiZGZhNzIuLjlkYjE0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcApAQCAtMjQxMyw2ICsyNDEzLDEyIEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxl
Y3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByCiAg
ICAgICAgIGxhc3RMb2dpY2FsUmlnaHQgPSBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQocm9v
dEJsb2NrLCBsb2dpY2FsSGVpZ2h0KCksIGNhY2hlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CisgICAgCisgICAgaWYgKHBhaW50SW5mbyAmJiBwYWludEluZm8tPnJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50ICYmIHBhaW50SW5mby0+cGFpbnRDb250YWluZXItPmlzUmVuZGVyRmxvd1Ro
cmVhZCgpKSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY3VycmVudCBvYmplY3QgaXMgYWN0
dWFsbHkgZmxvd2VkIGludG8gdGhlIHJlZ2lvbiBiZWluZyBwYWludGVkLgorICAgICAgICBpZiAo
IXRvUmVuZGVyRmxvd1RocmVhZChwYWludEluZm8tPnBhaW50Q29udGFpbmVyKS0+b2JqZWN0U2hv
dWxkUGFpbnRJbkZsb3dSZWdpb24odGhpcywgcGFpbnRJbmZvLT5yZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAgIGlmIChjaGls
ZHJlbklubGluZSgpKQogICAgICAgICByZXN1bHQgPSBpbmxpbmVTZWxlY3Rpb25HYXBzKHJvb3RC
bG9jaywgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgb2Zmc2V0RnJvbVJvb3RCbG9jaywgbGFz
dExvZ2ljYWxUb3AsIGxhc3RMb2dpY2FsTGVmdCwgbGFzdExvZ2ljYWxSaWdodCwgY2FjaGUsIHBh
aW50SW5mbyk7CkBAIC0yOTQ4LDYgKzI5NTQsMTUgQEAgYm9vbCBSZW5kZXJCbG9jazo6bm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UK
ICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZExvY2F0aW9uKGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9j
YXRpb24oKSk7CiAgICAgTGF5b3V0U2l6ZSBsb2NhbE9mZnNldCA9IHRvTGF5b3V0U2l6ZShhZGp1
c3RlZExvY2F0aW9uKTsKIAorICAgIC8vIElmIHdlIGFyZSBub3cgc2VhcmNoaW5nIGluc2lkZSBh
IHJlZ2lvbiwgbWFrZSBzdXJlIHRoaXMgZWxlbWVudAorICAgIC8vIGlzIGJlaW5nIGZyYWdtZW50
ZWQgaW50byB0aGlzIHJlZ2lvbi4KKyAgICBpZiAobG9jYXRpb25JbkNvbnRhaW5lci5yZWdpb24o
KSkgeworICAgICAgICBSZW5kZXJGbG93VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENv
bnRhaW5pbmdCbG9jaygpOworICAgICAgICBBU1NFUlQoZmxvd1RocmVhZCk7CisgICAgICAgIGlm
ICghZmxvd1RocmVhZC0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdpb24odGhpcywgbG9jYXRp
b25JbkNvbnRhaW5lci5yZWdpb24oKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCiAgICAgaWYgKCFpc1JlbmRlclZpZXcoKSkgewogICAgICAgICAvLyBDaGVjayBpZiB3ZSBu
ZWVkIHRvIGRvIGFueXRoaW5nIGF0IGFsbC4KICAgICAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd0Jv
eCA9IHZpc3VhbE92ZXJmbG93UmVjdCgpOwpAQCAtMzE4Miw3ICszMTk3LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKGNvbnN0IFJlbmRlckJveCYgYm94KQog
fQogCiAvLyBWYWxpZCBjYW5kaWRhdGVzIGluIGEgRmxvd1RocmVhZCBtdXN0IGJlIHJlbmRlcmVk
IGJ5IHRoZSByZWdpb24uCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNDaGlsZEhpdFRlc3RDYW5kaWRh
dGUoY29uc3QgUmVuZGVyQm94JiBib3gsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDaGlsZEhpdFRlc3RDYW5kaWRh
dGUoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQpCiB7CiAgICAgaWYgKCFpc0NoaWxkSGl0VGVzdENhbmRpZGF0
ZShib3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTkyLDEwICszMjA3LDEwIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZShjb25zdCBSZW5kZXJCb3gm
IGJveCwgUmVuZGVyUmVnaW9uKiByCiAgICAgcmV0dXJuIGJsb2NrLnJlZ2lvbkF0QmxvY2tPZmZz
ZXQocG9pbnQueSgpKSA9PSByZWdpb247CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9j
azo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitWaXNpYmxlUG9z
aXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50LCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBpZiAoaXNUYWJsZSgpKQot
ICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICAg
ICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwgcmVnaW9uKTsKIAog
ICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgd3Jv
bmcgd2hlbiB0aGUgb2JqZWN0J3Mgd3JpdGluZy1tb2RlIGRvZXNuJ3QgbWF0Y2ggdGhlIGxpbmUn
cyB3cml0aW5nLW1vZGUuCkBAIC0zMjE3LDggKzMyMzIsMTEgQEAgVmlzaWJsZVBvc2l0aW9uIFJl
bmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAg
ICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRX
aXRoSW5saW5lQ2hpbGRyZW4ocG9pbnRJbkxvZ2ljYWxDb250ZW50cyk7CiAKLSAgICBSZW5kZXJS
ZWdpb24qIHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQocG9pbnRJbkxvZ2ljYWxDb250ZW50
cy55KCkpOwogICAgIFJlbmRlckJveCogbGFzdENhbmRpZGF0ZUJveCA9IGxhc3RDaGlsZEJveCgp
OworCisgICAgaWYgKCFyZWdpb24pCisgICAgICAgIHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZz
ZXQocG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkpOworCiAgICAgd2hpbGUgKGxhc3RDYW5kaWRh
dGVCb3ggJiYgIWlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKCpsYXN0Q2FuZGlkYXRlQm94LCByZWdp
b24sIHBvaW50SW5Mb2dpY2FsQ29udGVudHMpKQogICAgICAgICBsYXN0Q2FuZGlkYXRlQm94ID0g
bGFzdENhbmRpZGF0ZUJveC0+cHJldmlvdXNTaWJsaW5nQm94KCk7CiAKQEAgLTMyNDAsNyArMzI1
OCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgfQogCiAgICAgLy8gV2Ugb25seSBnZXQgaGVyZSBp
ZiB0aGVyZSBhcmUgbm8gaGl0IHRlc3QgY2FuZGlkYXRlIGNoaWxkcmVuIGJlbG93IHRoZSBjbGlj
ay4KLSAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICBy
ZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOwogfQogCiB2
b2lkIFJlbmRlckJsb2NrOjpvZmZzZXRGb3JDb250ZW50cyhMYXlvdXRQb2ludCYgb2Zmc2V0KSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA0MmY2NTE1Li4y
YTE4NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMTgzLDcg
KzE4Myw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQgdGV4dEluZGVudE9mZnNldCgpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qID0g
bnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gQmxvY2sgZmxvd3Mgc3ViY2xhc3MgYXZh
aWxhYmxlV2lkdGggdG8gaGFuZGxlIG11bHRpIGNvbHVtbiBsYXlvdXQgKHNocmlua2luZyB0aGUg
d2lkdGggYXZhaWxhYmxlIHRvIGNoaWxkcmVuIHdoZW4gbGF5aW5nIG91dC4pCiAgICAgdmlydHVh
bCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBm
ZGZkYzZhLi45NmViYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmNwcApAQCAtMzE2MSwxMSArMzE2MSwxMSBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
QmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91
dAogICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CiB9CiAK
LVZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50KQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lv
biogcmVnaW9uKQogewogICAgIGlmIChhdXRvIGZyYWdtZW50ID0gcmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50LT5wb3NpdGlvbkZvclBvaW50KHBvaW50
KTsKLSAgICByZXR1cm4gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAg
ICAgICByZXR1cm4gZnJhZ21lbnQtPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lvbik7Cisg
ICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOwog
fQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCA2
MDE0ZWM1Li5iNDY0YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oCkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUxpbmVzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVPdmVyZmxvdyhM
YXlvdXRVbml0IG9sZENsaWVudEFmdGVyRWRnZSwgYm9vbCByZWNvbXB1dGVGbG9hdHMgPSBmYWxz
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdp
b24qID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0aW5nT2JqZWN0
cygpOwogICAgIHZvaWQgbWFya0FsbERlc2NlbmRhbnRzV2l0aEZsb2F0c0ZvckxheW91dChSZW5k
ZXJCb3gqIGZsb2F0VG9SZW1vdmUgPSBudWxscHRyLCBib29sIGluTGF5b3V0ID0gdHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGRmZWIyM2IuLjVkMjE0YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00MTI1LDcgKzQxMjUs
NyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6bG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiBib3gs
IGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdAogICAgIHJldHVybiByZWN0OwogfQogCi1WaXNp
YmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAg
ICAvLyBubyBjaGlsZHJlbi4uLnJldHVybiB0aGlzIHJlbmRlciBvYmplY3QncyBlbGVtZW50LCBp
ZiB0aGVyZSBpcyBvbmUsIGFuZCBvZmZzZXQgMAogICAgIGlmICghZmlyc3RDaGlsZCgpKQpAQCAt
NDE1Miw2ICs0MTUyLDEzIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJPYmplY3QgPSBmaXJzdENoaWxkKCk7IHJlbmRlck9iamVjdDsgcmVuZGVyT2JqZWN0ID0g
cmVuZGVyT2JqZWN0LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICghcmVuZGVyT2JqZWN0
LT5pc0JveCgpKQogICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKGlzUmVuZGVy
Rmxvd1RocmVhZCgpKSB7CisgICAgICAgICAgICBBU1NFUlQocmVnaW9uKTsKKyAgICAgICAgICAg
IGlmICghdG9SZW5kZXJGbG93VGhyZWFkKHRoaXMpLT5vYmplY3RTaG91bGRQYWludEluRmxvd1Jl
Z2lvbihyZW5kZXJPYmplY3QsIHJlZ2lvbikpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKwogICAgICAgICBSZW5kZXJCb3gqIHJlbmRlcmVyID0gdG9SZW5kZXJCb3gocmVu
ZGVyT2JqZWN0KTsKIAogICAgICAgICBpZiAoKCFyZW5kZXJlci0+Zmlyc3RDaGlsZCgpICYmICFy
ZW5kZXJlci0+aXNJbmxpbmUoKSAmJiAhcmVuZGVyZXItPmlzUmVuZGVyQmxvY2tGbG93KCkgKQpA
QCAtNDE2NSw4ICs0MTcyLDggQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgICAgIAogICAgICAgICBpZiAo
cG9pbnQueCgpIDw9IHJpZ2h0ICYmIHBvaW50LngoKSA+PSBsZWZ0ICYmIHBvaW50LnkoKSA8PSB0
b3AgJiYgcG9pbnQueSgpID49IGJvdHRvbSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5p
c1RhYmxlUm93KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wb3NpdGlvbkZv
clBvaW50KHBvaW50ICsgYWRqdXN0ZWRQb2ludCAtIHJlbmRlcmVyLT5sb2NhdGlvbk9mZnNldCgp
KTsKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChwb2ludCAt
IHJlbmRlcmVyLT5sb2NhdGlvbk9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVu
ZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQgKyBhZGp1c3RlZFBvaW50IC0gcmVuZGVyZXIt
PmxvY2F0aW9uT2Zmc2V0KCksIHJlZ2lvbik7CisgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXIt
PnBvc2l0aW9uRm9yUG9pbnQocG9pbnQgLSByZW5kZXJlci0+bG9jYXRpb25PZmZzZXQoKSwgcmVn
aW9uKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZpbmQgdGhlIGRpc3RhbmNlIGZyb20gKHgs
IHkpIHRvIHRoZSBib3guICBTcGxpdCB0aGUgc3BhY2UgYXJvdW5kIHRoZSBib3ggaW50byA4IHBp
ZWNlcwpAQCAtNDIwMyw3ICs0MjEwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgfQogICAgIAogICAg
IGlmIChjbG9zZXN0UmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBjbG9zZXN0UmVuZGVyZXItPnBv
c2l0aW9uRm9yUG9pbnQoYWRqdXN0ZWRQb2ludCAtIGNsb3Nlc3RSZW5kZXJlci0+bG9jYXRpb25P
ZmZzZXQoKSk7CisgICAgICAgIHJldHVybiBjbG9zZXN0UmVuZGVyZXItPnBvc2l0aW9uRm9yUG9p
bnQoYWRqdXN0ZWRQb2ludCAtIGNsb3Nlc3RSZW5kZXJlci0+bG9jYXRpb25PZmZzZXQoKSwgcmVn
aW9uKTsKICAgICAKICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShub25Qc2V1ZG9FbGVtZW50KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAppbmRleCBiZjYxOTRiLi5iYWE4ODNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCkBAIC01MTEsNyArNTExLDcgQEAgcHVibGljOgogCiAgICAgTGF5
b3V0UmVjdCBtYXNrQ2xpcFJlY3QoKTsKIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29u
c3QgUmVuZGVyUmVnaW9uKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgUmVuZGVyQmxvY2tG
bG93KiBvdXRlcm1vc3RCbG9ja0NvbnRhaW5pbmdGbG9hdGluZ09iamVjdCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApp
bmRleCA3NjhkMTg5Li45NDE2NTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lk
IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
CiAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0
IExheW91dFBvaW50JikKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiop
CiB7CiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAppbmRleCA3YzM1YTQ4Li45
NjEwNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1heEZp
bGVuYW1lV2lkdGgoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIHVwbG9hZEJ1dHRvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCmluZGV4IDc5ZWJkNDkuLmYyYjIwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC04NDEsNyArODQxLDcgQEAgYm9vbCBSZW5k
ZXJJbmxpbmU6OmhpdFRlc3RDdWxsZWRJbmxpbmUoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBS
ZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQor
VmlzaWJsZVBvc2l0aW9uIFJlbmRlcklubGluZTo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIC8vIEZJ
WE1FOiBEb2VzIG5vdCBkZWFsIHdpdGggcmVsYXRpdmUgb3Igc3RpY2t5IHBvc2l0aW9uZWQgaW5s
aW5lcyAoc2hvdWxkIGl0PykKICAgICBSZW5kZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2so
KTsKQEAgLTg2MSw3ICs4NjEsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAgICAgYyA9IHRvUmVu
ZGVyQmxvY2soYyktPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKTsKICAgICB9CiAgICAgCi0g
ICAgcmV0dXJuIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsK
KyAgICByZXR1cm4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQs
IHJlZ2lvbik7CiB9CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmgKaW5kZXggNmVjY2M0YS4uN2NhODg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0g
QXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFJlbmRlclJlZ2lvbiogPSBudWxscHRyKSBvdmVycmlkZSBmaW5hbDsKIAogICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBmcmFtZVJlY3RGb3JTdGlja3lQb3NpdGlvbmluZygpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IGE4MzFlNDcuLjJh
OGI3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
CkBAIC0xMjIsNyArMTIyLDcgQEAgYm9vbCBSZW5kZXJMaW5lQnJlYWs6OmNhbkJlU2VsZWN0aW9u
TGVhZigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5k
ZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKQorVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlckxpbmVCcmVhazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQ
b3NpdGlvbigwLCBET1dOU1RSRUFNKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuaAppbmRleCA1NWY0ZjU5Li44NmNmODE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jikgb3ZlcnJpZGUgZmluYWwgeyB9CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFJlbmRlclJlZ2lvbiogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGlu
dCBjYXJldE1pbk9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGNhcmV0
TWF4T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0
aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKaW5kZXggYTIzMjZlNy4uZjMxNzBjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBA
IC04NzcsNyArODc3LDcgQEAgdm9pZCBSZW5kZXJNdWx0aUNvbHVtblNldDo6YWRkT3ZlcmZsb3dG
cm9tQ2hpbGRyZW4oKQogICAgICAgICBhZGRWaXN1YWxPdmVyZmxvdyhsYXN0UmVjdCk7CiB9CiAK
LVZpc2libGVQb3NpdGlvbiBSZW5kZXJNdWx0aUNvbHVtblNldDo6cG9zaXRpb25Gb3JQb2ludChj
b25zdCBMYXlvdXRQb2ludCYgcGh5c2ljYWxQb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJN
dWx0aUNvbHVtblNldDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcGh5c2lj
YWxQb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgLy8gRGV0ZXJtaW5l
IHdoaWNoIGNvbHVtbnMgd2UgaW50ZXJzZWN0LgogICAgIExheW91dFVuaXQgY29sR2FwID0gY29s
dW1uR2FwKCk7CkBAIC05MjQsNyArOTI0LDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck11bHRp
Q29sdW1uU2V0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwaHlzaWMKICAg
ICAgICAgICAgICAgICBMYXlvdXRSZWN0IHBvcnRpb24gPSBmbG93VGhyZWFkUG9ydGlvblJlY3Qo
KTsKICAgICAgICAgICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUocG9ydGlvbik7CiAgICAgICAg
ICAgICAgICAgcG9pbnQubW92ZShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0VW5p
dCgpIDogcG9ydGlvbi54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwb3J0aW9uLnko
KSA6IExheW91dFVuaXQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG11bHRpQ29sdW1uRmxv
d1RocmVhZCgpLT5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lv
bik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgcG9z
aXRpb24uCkBAIC05NjEsNyArOTYxLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlck11bHRpQ29s
dW1uU2V0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwaHlzaWMKICAgICAg
ICAgICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUocG9ydGlvbik7CiAgICAgICAgICAgICAgICAg
cG9pbnQubW92ZShpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0VW5pdCgpIDogcG9y
dGlvbi54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwb3J0aW9uLnkoKSA6IExheW91
dFVuaXQoKSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgcmV0dXJuIG11bHRp
Q29sdW1uRmxvd1RocmVhZCgpLT5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnBvc2l0aW9uRm9yUG9pbnQocG9p
bnQsIHJlZ2lvbik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIE1vdmUgdG8gdGhl
IG5leHQgcG9zaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5oCmluZGV4IGRhMDA3N2UuLjdjZjhiNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCkBAIC0xNDAsNyArMTQwLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSZWdpb25Cb3VuZHNGcm9tRmxvd1Ro
cmVhZFBvcnRpb25SZWN0KGNvbnN0IExheW91dFBvaW50JiBsYXllck9mZnNldCwgTGF5b3V0UmVj
dCYgcmVnaW9uQm91bmRzKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgUmVuZGVyUmVnaW9uKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGEzMzgyMTMuLjMxOTFiNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMDEwLDcgKzIwMTAsNyBAQCB2
b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLVZpc2li
bGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmKQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6cG9zaXRpb25Gb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZVZpc2libGVQb3NpdGlvbihjYXJldE1pbk9mZnNldCgpLCBET1dOU1RSRUFNKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA0NDgyNGEwLi42ZjE1YzlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01OSw2ICs1OSw3IEBA
IGNsYXNzIFJlbmRlckdlb21ldHJ5TWFwOwogY2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOworY2xhc3Mg
UmVuZGVyUmVnaW9uOwogY2xhc3MgUmVuZGVyVGhlbWU7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsK
IGNsYXNzIFZpc2libGVQb3NpdGlvbjsKQEAgLTY0Nyw3ICs2NDgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExh
eW91dFBvaW50Jik7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0
QWN0aW9uKTsKIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKiA9IG51bGxw
dHIpOwogICAgIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9mZnNl
dCwgRUFmZmluaXR5KSBjb25zdDsKICAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggZWU0ZjE2Ny4uOWM5ZDNlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTEwNCwxMiArMTA0LDEyIEBAIExheW91
dFBvaW50IFJlbmRlclJlZ2lvbjo6bWFwUmVnaW9uUG9pbnRJbnRvRmxvd1RocmVhZENvb3JkaW5h
dGVzKGNvbnN0IExheW91dFBvCiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBwb2ludEluVGhyZWFkIDogcG9pbnRJblRocmVhZC50cmFuc3Bvc2VkUG9pbnQoKTsKIH0KIAot
VmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlZ2lvbjo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyUmVnaW9uOjpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdp
b24pCiB7CiAgICAgaWYgKCFpc1ZhbGlkKCkgfHwgIW1fZmxvd1RocmVhZC0+Zmlyc3RDaGlsZCgp
KSAvLyBjaGVja2luZyBmb3IgZW1wdHkgcmVnaW9uIGJsb2Nrcy4KLSAgICAgICAgcmV0dXJuIFJl
bmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICAgICAgcmV0dXJuIFJlbmRl
ckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOwogCi0gICAgcmV0dXJuIG1f
Zmxvd1RocmVhZC0+cG9zaXRpb25Gb3JQb2ludChtYXBSZWdpb25Qb2ludEludG9GbG93VGhyZWFk
Q29vcmRpbmF0ZXMocG9pbnQpKTsKKyAgICByZXR1cm4gbV9mbG93VGhyZWFkLT5wb3NpdGlvbkZv
clBvaW50KG1hcFJlZ2lvblBvaW50SW50b0Zsb3dUaHJlYWRDb29yZGluYXRlcyhwb2ludCksIHRo
aXMpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclJlZ2lvbjo6cGFnZUxvZ2ljYWxXaWR0aCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggMjVjOWZhYy4u
NzliYmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtMTI0
LDcgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5I
YXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcAppbmRleCAyZDFmYWQ3Li5hZjc1ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgc2V0UHJlZmVy
cmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRl
clJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK1Zp
c2libGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGNvZGUgaXMgYnVnZ3kgaWYgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaXMgcmVsYXRp
dmUgcG9zaXRpb25lZC4KICAgICBJbmxpbmVCb3gqIGJveCA9IGlubGluZUJveFdyYXBwZXIoKTsK
QEAgLTU0MSw3ICs1NDEsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgICAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKDEsIERPV05TVFJFQU0pOwogICAgIH0KIAotICAgIHJldHVybiBS
ZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAgIHJldHVybiBSZW5kZXJCb3g6
OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lvbik7CiB9CiAKIExheW91dFJlY3QgUmVuZGVy
UmVwbGFjZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDEwZTBjMjcuLjhiMDAz
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC03OSw3
ICs3OSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFJlbmRlclJlZ2lvbiogPSBudWxscHRyKSBvdmVycmlkZSBmaW5hbDsKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5k
ZXggM2VmZDI4Mi4uZGZlNTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
LmNwcApAQCAtNDMxLDcgKzQzMSw3IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFi
c29sdXRlUXVhZHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kCiAgICAgcmV0
dXJuIG1fbGluZUJveGVzLmFic29sdXRlUXVhZHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVuZCwg
dXNlU2VsZWN0aW9uSGVpZ2h0LCB3YXNGaXhlZCk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5k
ZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK1Zpc2li
bGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKikKIHsKICAgICBlbnN1cmVMaW5lQm94ZXMoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5kZXggYzVmYjM0My4uODAxYTg4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC03Miw3ICs3Miw3IEBA
IHB1YmxpYzoKIAogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IGFic29sdXRlUXVhZHNDbGlwcGVkVG9F
bGxpcHNpcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5k
ZXJSZWdpb24qID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzOEJpdCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmlzOEJpdCgpOyB9CiAgICAgY29uc3QgTENoYXIqIGNo
YXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+Y2hhcmFjdGVyczgoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5l
VGV4dC5jcHAKaW5kZXggZDBkM2E4Yi4uNWM4NDk5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xNjYsNyArMTY2
LDcgQEAgYm9vbCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFydHNOZXdUZXh0Q2h1
bmsoaW50IHBvc2l0aW9uKSBjb25zdAogICAgIHJldHVybiBpdC0+dmFsdWUueCAhPSBTVkdUZXh0
TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1ZSgpIHx8IGl0LT52YWx1ZS55ICE9IFNWR1RleHRM
YXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVlKCk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5k
ZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKikKIHsKICAgICBp
ZiAoIWZpcnN0VGV4dEJveCgpIHx8ICF0ZXh0TGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBjcmVh
dGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IDQ0YmQ2OTkuLjMxNTg1
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbmxpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCos
IGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRSZWN0IGxpbmVzQm91bmRpbmdCb3goKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBjcmVh
dGVUZXh0Qm94KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcAppbmRleCBhMGIxNGEwNi4uMTljNzlhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00NjUsNyArNDY1LDcg
QEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZpc2li
bGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiBwb2ludEluQ29udGVudHMpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbnRzLCBjb25zdCBS
ZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0gZmly
c3RSb290Qm94KCk7CiAgICAgaWYgKCFyb290Qm94KQpAQCAtNDc5LDcgKzQ3OSw3IEBAIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiBwb2ludEluQ29udGVuCiAgICAgaWYgKCFjbG9zZXN0Qm94KQogICAgICAgICByZXR1cm4g
Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOwogCi0gICAgcmV0dXJuIGNsb3Nl
c3RCb3gtPnJlbmRlcmVyKCkucG9zaXRpb25Gb3JQb2ludChMYXlvdXRQb2ludChwb2ludEluQ29u
dGVudHMueCgpLCBjbG9zZXN0Qm94LT55KCkpKTsKKyAgICByZXR1cm4gY2xvc2VzdEJveC0+cmVu
ZGVyZXIoKS5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBvaW50SW5Db250ZW50cy54KCks
IGNsb3Nlc3RCb3gtPnkoKSksIHJlZ2lvbik7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVGV4dDo6YWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAppbmRleCBm
NjQzYTE2Li45NzAzMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbik7Ci0gICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYpOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qID0gbnVsbHB0cik7CiAKICAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGxheW91dCgpOwo=
</data>
<flag name="review"
          id="253916"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229964</attachid>
            <date>2014-04-23 01:41:49 -0700</date>
            <delta_ts>2014-04-24 11:11:53 -0700</delta_ts>
            <desc>Patch implementing reviewer feedback - DO NOT LAND</desc>
            <filename>130715.patch</filename>
            <type>text/plain</type>
            <size>59802</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkYWJlZjcxLi5iZWQyNTJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDQt
MjMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVn
aW9uc10gT3ZlcmZsb3cgc2VsZWN0aW9uIGRvZXNuJ3Qgd29yayBwcm9wZXJseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIGhp
dC10ZXN0aW5nIGFuZCBwYWludGluZyBzZWxlY3Rpb24gZ2FwcyBpbiB0aGUgcmVnaW9uJ3Mgb3Zl
cmZsb3cgYXJlYS4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZs
b3ctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlv
bi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3cuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92
ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
cmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy5odG1s
OiBBZGRlZC4KKwogMjAxNC0wNC0yMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZy4gbWVkaWEgdGVzdHMg
aGFzIGJlZW4gYnJva2VuIHNpbmNlIHIxNjYzOTUgb24gYm90aCBFRkwgd2sxIGFuZCB3azIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92
ZXJmbG93LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YTJlNDMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxl
Y3Rpb24taW4tb3ZlcmZsb3ctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYzIEBACis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gb25Cb2R5TG9hZCgpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB2YXIgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCisgICAgICAgICAgICAvLyBUZXN0IHNlbGVjdGlv
biBvbiB0aGUgb3ZlcmZsb3cgYmVsb3cgdGhlIGxhc3QgcmVnaW9uLgorICAgICAgICAgICAgdmFy
IHJlZ2lvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NpdGlvblggPSByZWdpb24ub2Zmc2V0TGVmdCArIDIwOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zaXRpb25ZID0gcmVnaW9uLm9mZnNldFRvcCArIDIwMDsKKyAgICAgICAg
ICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAg
dmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNDA7CisKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRo
aW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAgICNyZWdpb24xCisgICAg
eworICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQor
CisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEy
N3B4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlM
b2FkKCkiPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3Ig
dGhlIGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNw
bGF5ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFz
c2VzIGlmIHNlbGVjdGluZyB0aGUgdGV4dCB0aGF0IG92ZXJmbG93cyB0aGUgPHNwYW4gc3R5bGU9
ImNvbG9yOmJsdWUiPnJlZ2lvbjwvc3Bhbj4gcHJvcGVybHkgc2VsZWN0cyBhbmQgbm8gc2VsZWN0
aW9uIGFydGlmYWN0cyBhcmUgdmlzaWJsZSBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xv
cjpibHVlIj5yZWdpb248L3NwYW4+PC9kaXY+CisgICAgPGJyLz4KKworICAgIDxkaXYgaWQ9InJl
Z2lvbjEiIGNsYXNzPSJyZWdpb24iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9Im9uZSI+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxi
ci8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+
QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFB
QTxici8+QUFBQTxici8+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAg
PGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmODIwOWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92
ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIG9uQm9keUxvYWQoKSB7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdmFyIHNlbGVjdGlv
biA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3Rp
b24gb24gdGhlIG92ZXJmbG93IGJlbG93IHRoZSBsYXN0IHJlZ2lvbi4KKyAgICAgICAgICAgIHZh
ciByZWdpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zaXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAyMDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRUb3AgKyAyMDsKKyAgICAgICAg
ICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAg
dmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNjA7CisKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRo
aW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAgICNyZWdpb24xCisgICAg
eworICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQor
CisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEy
N3B4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlM
b2FkKCkiPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3Ig
dGhlIGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNw
bGF5ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFz
c2VzIGlmIHNlbGVjdGluZyBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5y
ZWdpb248L3NwYW4+IGhhcyBubyBlZmZlY3Qgb24gdGhlIHRleHQgaW4gdGhlIGZpcnN0IDxzcGFu
IHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+LjwvZGl2PgorICAgIDxici8+CisKKyAg
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVnaW9uIj4KKyAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+CisgICAgICAgICAgICA8ZGl2IGlkPSJvbmUiPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIv
PkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2Rpdj4KKworICAgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJyZWdpb24iPjwvZGl2PgorPC9i
b2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ctaGl0LXRlc3Rpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGU1NGY2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxv
dy1oaXQtdGVzdGluZy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVy
ZmxvdyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c2l0aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9z
aXRpb25YID0gc3RhcnRQb3NpdGlvblggKyAyMDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlv
blkgPSBzdGFydFBvc2l0aW9uWSArIDYwOworCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhlbmRQb3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKworPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICAucmVnaW9uIHsKKyAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7
CisgICAgICAgIGJvcmRlcjogdGhpbiBzb2xpZCBibHVlOworICAgICAgICBtYXJnaW46IDVweDsK
KyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAxcHg7CisgICAgfQor
CisgICAgI3JlZ2lvbjEKKyAgICB7CisgICAgICAgIGhlaWdodDogMTIwcHg7CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMgorICAgIHsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAxMjBw
eDsKKyAgICAgICAgdG9wOiAtMTI3cHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisK
KyAgICAuY29udGVudCB7CisgICAgICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OworICAgIH0K
KworICAgICNvbmUgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+CisK
Kzxib2R5IG9ubG9hZD0ib25Cb2R5TG9hZCgpIj4KKyAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1Ij5CdWcgMTMwNzE1IC0gVGVzdCB0aGF0
IG92ZXJmbG93IGNvbnRlbnQgZm9yIHRoZSBmaXJzdCBhbmQgbGFzdCByZWdpb25zIGluIHRoZSBj
aGFpbiBpcyBjb3JyZWN0bHkgZGlzcGxheWVkIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvYT4K
KyAgICA8ZGl2PlRoZSB0ZXN0IHBhc3NlcyBpZiBzZWxlY3RpbmcgaW4gdGhlIHNlY29uZCA8c3Bh
biBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPiBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0
ZXh0IGluIHRoZSBmaXJzdCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPi48
L2Rpdj4KKyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+
PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisKKyAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICA8L2Rpdj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24t
aW4tb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4t
b3ZlcmZsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjJlNTE1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1p
bi1vdmVyZmxvdy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxv
dyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0
aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3Np
dGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjAwOworICAgICAgICAgICAgdmFyIGVuZFBvc2l0
aW9uWCA9IHN0YXJ0UG9zaXRpb25YICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25Z
ID0gc3RhcnRQb3NpdGlvblkgKyA0MDsKKworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NpdGlvblgsIHN0YXJ0UG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
ZW5kUG9zaXRpb25YLCBlbmRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgLnJlZ2lvbiB7CisgICAgICAgIC13ZWJraXQtZmxvdy1mcm9tOiBmbG93Owor
ICAgICAgICBib3JkZXI6IHRoaW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7Cisg
ICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKwor
ICAgICNyZWdpb24xCisgICAgeworICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgfQorCisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7
CisgICAgICAgIHRvcDogLTEyN3B4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisg
ICAgLmNvbnRlbnQgeworICAgICAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsKKyAgICB9CisK
KyAgICAjb25lIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorCis8
Ym9keSBvbmxvYWQ9Im9uQm9keUxvYWQoKSI+CisgICAgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDcxNSI+QnVnIDEzMDcxNSAtIFRlc3QgdGhhdCBv
dmVyZmxvdyBjb250ZW50IGZvciB0aGUgZmlyc3QgYW5kIGxhc3QgcmVnaW9ucyBpbiB0aGUgY2hh
aW4gaXMgY29ycmVjdGx5IGRpc3BsYXllZCBpbiBkaWZmZXJlbnQgc2l0dWF0aW9ucy48L2E+Cisg
ICAgPGRpdj5UaGUgdGVzdCBwYXNzZXMgaWYgc2VsZWN0aW5nIHRoZSB0ZXh0IHRoYXQgb3ZlcmZs
b3dzIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJseSBz
ZWxlY3RzIGFuZCBubyBzZWxlY3Rpb24gYXJ0aWZhY3RzIGFyZSB2aXNpYmxlIGluIHRoZSBzZWNv
bmQgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPnJlZ2lvbjwvc3Bhbj48L2Rpdj4KKyAgICA8YnIv
PgorCisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisgICAgPGRp
diBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJj
b250ZW50Ij4KKyAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1v
dmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2ZGRmMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1h
ZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNjUgQEAK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2Fk
KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBz
ZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qg
c2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxvdyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAg
ICAgICB2YXIgcmVnaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjA7Cisg
ICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25YID0gc3RhcnRQb3NpdGlvblggKyAyMDsKKyAgICAg
ICAgICAgIHZhciBlbmRQb3NpdGlvblkgPSBzdGFydFBvc2l0aW9uWSArIDYwOworCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlv
blkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRQb3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3Njcmlw
dD4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAucmVnaW9uIHsKKyAgICAgICAgYm9y
ZGVyOiB0aGluIHNvbGlkIGJsdWU7CisgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDFweDsKKyAgICB9CisKKyAgICAjcmVnaW9u
MQorICAgIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDExMHB4Owor
ICAgIH0KKworICAgICNyZWdpb24yCisgICAgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
ICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDEyMHB4OworICAgICAgICB0
b3A6IC0xMjdweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIH0KKworICAgICNvbmUgewor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxib2R5IG9ubG9hZD0i
b25Cb2R5TG9hZCgpIj4KKyAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTMwNzE1Ij5CdWcgMTMwNzE1IC0gVGVzdCB0aGF0IG92ZXJmbG93IGNvbnRl
bnQgZm9yIHRoZSBmaXJzdCBhbmQgbGFzdCByZWdpb25zIGluIHRoZSBjaGFpbiBpcyBjb3JyZWN0
bHkgZGlzcGxheWVkIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvYT4KKyAgICA8ZGl2PlRoZSB0
ZXN0IHBhc3NlcyBpZiBzZWxlY3RpbmcgaW4gdGhlIHNlY29uZCA8c3BhbiBzdHlsZT0iY29sb3I6
Ymx1ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJseSBzZWxlY3RzIHRoZSBCQkJCIHRleHRzIGFuZCBo
YXMgbm8gZWZmZWN0IG9uIHRoZSB0ZXh0IGluIHRoZSBmaXJzdCA8c3BhbiBzdHlsZT0iY29sb3I6
Ymx1ZSI+cmVnaW9uPC9zcGFuPi48L2Rpdj4KKyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVn
aW9uMSIgY2xhc3M9InJlZ2lvbiI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgorICAg
ICAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8
ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uIj4KKyAgICAgICAgPGRpdiBpZD0idHdvIj5C
QkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJC
PGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLXRleHQtYWZ0ZXItb3ZlcmZs
b3ctaGl0LXRlc3RpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODU3ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVj
dGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwKQEAgLTAsMCArMSw2
OCBAQAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIG9uQm9k
eUxvYWQoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgICAgICAgICAgLy8g
VGVzdCBzZWxlY3Rpb24gb24gdGhlIG92ZXJmbG93IGJlbG93IHRoZSBsYXN0IHJlZ2lvbi4KKyAg
ICAgICAgICAgIHZhciByZWdpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zaXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAy
MDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRUb3AgKyAy
MDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOwor
ICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNjA7CisKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBv
c2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwv
c2NyaXB0PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAg
ICAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsKKyAgICAgICAgYm9yZGVyOiB0aGluIHNvbGlkIGJs
dWU7CisgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgICAgIGxlZnQ6IDFweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMQorICAgIHsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDExMHB4OworICAgIH0KKworICAgICNyZWdp
b24yCisgICAgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBwb3NpdGlvbjogcmVs
YXRpdmU7CisgICAgICAgIGxlZnQ6IDEyMHB4OworICAgICAgICB0b3A6IC0xMjdweDsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgIH0KKworICAgIC5jb250ZW50IHsKKyAgICAgICAgLXdlYmtp
dC1mbG93LWludG86IGZsb3c7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlMb2FkKCkiPgor
ICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3
MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3IgdGhlIGZpcnN0
IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4g
ZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFzc2VzIGlmIHNl
bGVjdGluZyBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3Nw
YW4+IHByb3Blcmx5IHNlbGVjdHMgdGhlIEJCQkIgdGV4dHMgYW5kIGhhcyBubyBlZmZlY3Qgb24g
dGhlIHRleHQgaW4gdGhlIGZpcnN0IDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3Nw
YW4+LjwvZGl2PgorICAgIDxici8+CisKKyAgICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVn
aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uIj48L2Rpdj4K
KworICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgorICAgICAgICA8ZGl2IGlkPSJvbmUiPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIv
PkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPjwvZGl2PgorICAgICAg
ICA8ZGl2IGlkPSJ0d28iPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8
YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8L2Rpdj4KKyAgICA8
L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YTVmZjE5Li45NmJkNTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsODQgQEAKKzIwMTQtMDQtMjMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRv
YmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gT3ZlcmZsb3cgc2VsZWN0aW9uIGRvZXNu
J3Qgd29yayBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMwNzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBoaXQtdGVzdGluZywgcGFpbnRpbmcgYmxvY2sgc2VsZWN0aW9uIGdhcHMg
YW5kIHNlYXJjaGluZyBmb3IgdGhlIG5vZGUgYXQgYSBzcGVjaWZpYyBwb2ludCBpbnNpZGUgYSBm
bG93IHRocmVhZCwKKyAgICAgICAgdGhlIHJlZ2lvbiByYW5nZSBvZiB0aGUgYm94IGJlaW5nIGNo
ZWNrZWQgbXVzdCBiZSB2YWxpZGF0ZWQgaW4gb3JkZXIgdG8gbm90IHJldHVybiBmYWxzZSBwb3Np
dGl2ZXMuIE90aGVyd2lzZSwgaGl0LXRlc3RpbmcKKyAgICAgICAgYXQgdGhlIHRvcCBvZiByZWdp
b24gQiBjb3VsZCBoaXQgZWxlbWVudHMgdGhhdCBvdmVyZmxvdyB0aGUgYm90dG9tIG9mIHJlZ2lv
biBBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93
LWhpdC10ZXN0aW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24t
aW4tb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1p
bi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludCk6CisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
Y29udGFpbnMpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRM
aW5lUG9zaXRpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkT3JM
aW5rRnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnRUcmlwbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnNlbGVjdGlvbkV4dGVudFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6dmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2Fwcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
cG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjppc0NoaWxkSGl0VGVzdENhbmRpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRX
aXRoSW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpw
b3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBvc2l0aW9uRm9yUG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnBvc2l0aW9uRm9yUG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFj
ZWQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6OnBvc2l0aW9uRm9y
UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKwogMjAxNC0wNC0yMiAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDdXJzb3IgZG9lc24ndCBjaGFuZ2UgYmFjayB0byBw
b2ludGVyIHdoZW4gbGVhdmluZyB0aGUgU2FmYXJpIHdpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
aW5kZXggNzVhOTFjNC4uODM2ODNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0xODI0LDcg
KzE4MjQsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5nZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUodW5zaQogICAgIC8vIGl0ZXJhdGUgb3ZlciB0
aGUgbGluZXMKICAgICAvLyBGSVhNRTogdGhpcyBpcyB3cm9uZyB3aGVuIGxpbmVOdW1iZXIgaXMg
bGluZUNvdW50KzEsICBiZWNhdXNlIG5leHRMaW5lUG9zaXRpb24gdGFrZXMgeW91IHRvIHRoZQog
ICAgIC8vIGxhc3Qgb2Zmc2V0IG9mIHRoZSBsYXN0IGxpbmUKLSAgICBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvcyA9IG1fcmVuZGVyZXItPnZpZXcoKS5wb3NpdGlvbkZvclBvaW50KEludFBvaW50
KCkpOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gbV9yZW5kZXJlci0+dmlldygp
LnBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQoKSwgbnVsbHB0cik7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHNhdmVkVmlzaWJsZVBvczsKICAgICB3aGlsZSAoLS1saW5lQ291bnQpIHsKICAgICAgICAg
c2F2ZWRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsKQEAgLTIwMzIsNyArMjAzMiw3IEBAIFZpc2li
bGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQ
b2ludChjb25zdCBJbnRQb2luCiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGlubmVy
Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChwb2ludFJlc3VsdCk7CisgICAgcmV0
dXJuIGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChwb2ludFJlc3VsdCwg
bnVsbHB0cik7CiB9CiAKIC8vIE5PVEU6IENvbnNpZGVyIHByb3ZpZGluZyB0aGlzIHV0aWxpdHkg
bWV0aG9kIGFzIEFYIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMDA4ODgwZi4uMjA2
NzlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xNDIxLDcgKzE0MjEsNyBAQCBQYXNz
UmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkp
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQp
OworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24gPSByZW5kZXJlci0+cG9zaXRp
b25Gb3JQb2ludChsb2NhbFBvaW50LCBudWxscHRyKTsKICAgICBpZiAodmlzaWJsZVBvc2l0aW9u
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA0N2I2YmU2Li5iYzRmY2M2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTU4NSw3ICsxNTg1LDcgQEAg
Ym9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQog
ICAgIGlmICghaW5uZXJOb2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyhpbm5lck5v
ZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOwor
ICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKSk7CiAgICAgaWYgKHZp
c2libGVQb3MuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKaW5kZXggZTJmNzMzOS4uOTgwYWNiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtOTczLDcgKzk3Myw3
IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50CiAgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJl
ci5ub2RlKCk7CiAgICAgICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2Rl
KSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsK
LSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkxpbmUpOwor
ICAgICAgICByZXR1cm4gcmVuZGVyZXIucG9zaXRpb25Gb3JQb2ludChwb2ludEluTGluZSwgbnVs
bHB0cik7CiAgICAgfQogICAgIAogICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgcHJldmlvdXMgbGlu
ZS4gVGhpcyBtZWFucyB3ZSBtdXN0IGFscmVhZHkgYmUgb24gdGhlIGZpcnN0IGxpbmUuCkBAIC0x
MDMxLDcgKzEwMzEsNyBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50IGxpbgogICAgICAgICBOb2RlKiBu
b2RlID0gcmVuZGVyZXIubm9kZSgpOwogICAgICAgICBpZiAobm9kZSAmJiBlZGl0aW5nSWdub3Jl
c0NvbnRlbnQobm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9y
ZU5vZGUobm9kZSk7Ci0gICAgICAgIHJldHVybiByZW5kZXJlci5wb3NpdGlvbkZvclBvaW50KHBv
aW50SW5MaW5lKTsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnBvc2l0aW9uRm9yUG9pbnQocG9p
bnRJbkxpbmUsIG51bGxwdHIpOwogICAgIH0KIAogICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgbmV4
dCBsaW5lLiBUaGlzIG1lYW5zIHdlIG11c3QgYWxyZWFkeSBiZSBvbiB0aGUgbGFzdCBsaW5lLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDc2YzA0NTYuLmM0MmI2ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3VsdChjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwog
CiAgICAgaWYgKHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSkgewotICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9y
UG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
KHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9p
bnQoKSwgbnVsbHB0cikpOwogICAgICAgICBpZiAocG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAg
ICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBvcyk7CiAgICAgICAgICAgICBu
ZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShXb3JkR3JhbnVsYXJpdHkpOwpAQCAt
NTU2LDcgKzU1Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZE9yTGlu
a0Zyb21Nb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0CiAgICAgaWYgKHRhcmdldE5v
ZGUgJiYgdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSAmJiBtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0
KSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwogICAgICAgICBFbGVt
ZW50KiBVUkxFbGVtZW50ID0gcmVzdWx0LmhpdFRlc3RSZXN1bHQoKS5VUkxFbGVtZW50KCk7Ci0g
ICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRp
b25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKSk7CisgICAgICAgIFZpc2libGVQb3NpdGlv
biBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9j
YWxQb2ludCgpLCBudWxscHRyKSk7CiAgICAgICAgIGlmIChwb3MuaXNOb3ROdWxsKCkgJiYgcG9z
LmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoVVJMRWxl
bWVudCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uOjpzZWxl
Y3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoVVJMRWxlbWVudCk7CiAKQEAgLTU5Miw3ICs1OTIsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29u
c3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBW
aXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbjsKLSAgICBWaXNpYmxlUG9zaXRpb24gcG9zKHRh
cmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoZXZlbnQubG9jYWxQb2ludCgp
KSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3Np
dGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgIGlmIChwb3Mu
aXNOb3ROdWxsKCkpIHsKICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihw
b3MpOwogICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0eShQYXJhZ3Jh
cGhHcmFudWxhcml0eSk7CkBAIC02MjcsNyArNjI3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFIKICAgICAgICAgfQogICAgIH0KIAotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKHRh
cmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoZXZlbnQubG9jYWxQb2ludCgp
KSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIo
KS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAgICBp
ZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAgICAgdmlzaWJsZVBvcyA9IFZpc2libGVQb3Np
dGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUodGFyZ2V0Tm9kZSksIERPV05TVFJFQU0p
OwogICAgIFBvc2l0aW9uIHBvcyA9IHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKTsKQEAgLTg2
MCw3ICs4NjAsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHNlbGVjdGlvbkV4dGVudFJlc3Bl
Y3RpbmdFZGl0aW5nQm91bmRhcnkoY29uc3QgVmlzaWJsZVNlbAogICAgICAgICB0YXJnZXROb2Rl
ID0gZWRpdGFibGVFbGVtZW50OwogICAgIH0KIAotICAgIHJldHVybiB0YXJnZXROb2RlLT5yZW5k
ZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHNlbGVjdGlvbkVuZFBvaW50KTsKKyAgICByZXR1cm4g
dGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChzZWxlY3Rpb25FbmRQb2lu
dCwgbnVsbHB0cik7CiB9CiAKIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JN
b3VzZURyYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsdCkKQEAgLTkwNiwxMSAr
OTA2LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWco
Y29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJlc3VsCiAgICAgICAgIG5ld1NlbGVjdGlvbi5z
ZXRFeHRlbnQocG9zaXRpb25BZnRlck5vZGUocm9vdFVzZXJTZWxlY3RBbGxGb3JNb3VzZVByZXNz
Tm9kZSkuZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIFJlc2V0IGJhc2UgZm9yIHVzZXIgc2VsZWN0IGFsbCB3aGVuIGJhc2UgaXMg
aW5zaWRlIHVzZXItc2VsZWN0LWFsbCBhcmVhIGFuZCBleHRlbnQgPCBiYXNlLgotICAgICAgICBp
ZiAocm9vdFVzZXJTZWxlY3RBbGxGb3JNb3VzZVByZXNzTm9kZSAmJiBjb21wYXJlUG9zaXRpb25z
KHRhcmdldC0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChoaXRUZXN0UmVzdWx0LmxvY2Fs
UG9pbnQoKSksIG1fbW91c2VQcmVzc05vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQo
bV9kcmFnU3RhcnRQb3MpKSA8IDApCisgICAgICAgIGlmIChyb290VXNlclNlbGVjdEFsbEZvck1v
dXNlUHJlc3NOb2RlICYmIGNvbXBhcmVQb3NpdGlvbnModGFyZ2V0LT5yZW5kZXJlcigpLT5wb3Np
dGlvbkZvclBvaW50KGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKSwgbV9tb3Vz
ZVByZXNzTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChtX2RyYWdTdGFydFBvcywg
bnVsbHB0cikpIDwgMCkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5zZXRCYXNlKHBvc2l0aW9u
QWZ0ZXJOb2RlKHJvb3RVc2VyU2VsZWN0QWxsRm9yTW91c2VQcmVzc05vZGUpLmRvd25zdHJlYW0o
Q2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKICAgICAgICAgCiAgICAgICAgIE5vZGUqIHJvb3RV
c2VyU2VsZWN0QWxsRm9yVGFyZ2V0ID0gUG9zaXRpb246OnJvb3RVc2VyU2VsZWN0QWxsRm9yTm9k
ZSh0YXJnZXQpOwotICAgICAgICBpZiAocm9vdFVzZXJTZWxlY3RBbGxGb3JUYXJnZXQgJiYgbV9t
b3VzZVByZXNzTm9kZS0+cmVuZGVyZXIoKSAmJiBjb21wYXJlUG9zaXRpb25zKHRhcmdldC0+cmVu
ZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSksIG1f
bW91c2VQcmVzc05vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQobV9kcmFnU3RhcnRQ
b3MpKSA8IDApCisgICAgICAgIGlmIChyb290VXNlclNlbGVjdEFsbEZvclRhcmdldCAmJiBtX21v
dXNlUHJlc3NOb2RlLT5yZW5kZXJlcigpICYmIGNvbXBhcmVQb3NpdGlvbnModGFyZ2V0LT5yZW5k
ZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpLCBudWxs
cHRyKSwgbV9tb3VzZVByZXNzTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChtX2Ry
YWdTdGFydFBvcywgbnVsbHB0cikpIDwgMCkKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5zZXRF
eHRlbnQocG9zaXRpb25CZWZvcmVOb2RlKHJvb3RVc2VyU2VsZWN0QWxsRm9yVGFyZ2V0KS51cHN0
cmVhbShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwogICAgICAgICBlbHNlIGlmIChyb290VXNl
clNlbGVjdEFsbEZvclRhcmdldCAmJiBtX21vdXNlUHJlc3NOb2RlLT5yZW5kZXJlcigpKQogICAg
ICAgICAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVudChwb3NpdGlvbkFmdGVyTm9kZShyb290VXNl
clNlbGVjdEFsbEZvclRhcmdldCkuZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkp
OwpAQCAtOTgyLDcgKzk4Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVh
c2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgICAgIE5v
ZGUqIG5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7CiAgICAgICAgIGJvb2wgY2FyZXRCcm93c2lu
ZyA9IG1fZnJhbWUuc2V0dGluZ3MoKS5jYXJldEJyb3dzaW5nRW5hYmxlZCgpOwogICAgICAgICBp
ZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpICYmIChjYXJldEJyb3dzaW5nIHx8IG5vZGUtPmhh
c0VkaXRhYmxlU3R5bGUoKSkpIHsKLSAgICAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSBu
b2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQoKSk7Cisg
ICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0gbm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRp
b25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCksIG51bGxwdHIpOwogICAgICAgICAgICAgbmV3
U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3MpOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggMjM3NDUxZS4uOWRkNzlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAg
LTg1Myw3ICs4NTMsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWU6OnZpc2libGVQb3NpdGlvbkZv
clBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAgIGF1dG8gcmVuZGVyZXIgPSBu
b2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IHJlbmRlcmVy
LT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkpOworICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zID0gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2Fs
UG9pbnQoKSwgbnVsbHB0cik7CiAgICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCiAgICAgICAg
IHZpc2libGVQb3MgPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9kZSk7CiAgICAgcmV0
dXJuIHZpc2libGVQb3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApp
bmRleCBkZDVjNDAwLi5kNmFhNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKQEAgLTI0MTIsNiArMjQxMiwxMiBAQCBHYXBSZWN0cyBSZW5kZXJCbG9jazo6c2Vs
ZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcgog
ICAgICAgICBsYXN0TG9naWNhbFJpZ2h0ID0gbG9naWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJv
b3RCbG9jaywgbG9naWNhbEhlaWdodCgpLCBjYWNoZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQorICAgIAorICAgIGlmIChwYWludEluZm8gJiYgcGFpbnRJbmZvLT5yZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudCAmJiBwYWludEluZm8tPnBhaW50Q29udGFpbmVyLT5pc1JlbmRlckZsb3dU
aHJlYWQoKSkgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGFj
dHVhbGx5IGZsb3dlZCBpbnRvIHRoZSByZWdpb24gYmVpbmcgcGFpbnRlZC4KKyAgICAgICAgaWYg
KCF0b1JlbmRlckZsb3dUaHJlYWQocGFpbnRJbmZvLT5wYWludENvbnRhaW5lciktPm9iamVjdFNo
b3VsZFBhaW50SW5GbG93UmVnaW9uKHRoaXMsIHBhaW50SW5mby0+cmVuZGVyTmFtZWRGbG93RnJh
Z21lbnQpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBpZiAoY2hp
bGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmVzdWx0ID0gaW5saW5lU2VsZWN0aW9uR2Fwcyhyb290
QmxvY2ssIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIG9mZnNldEZyb21Sb290QmxvY2ssIGxh
c3RMb2dpY2FsVG9wLCBsYXN0TG9naWNhbExlZnQsIGxhc3RMb2dpY2FsUmlnaHQsIGNhY2hlLCBw
YWludEluZm8pOwpAQCAtMjk0Nyw2ICsyOTUzLDE1IEBAIGJvb2wgUmVuZGVyQmxvY2s6Om5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
CiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2NhdGlvbihhY2N1bXVsYXRlZE9mZnNldCArIGxv
Y2F0aW9uKCkpOwogICAgIExheW91dFNpemUgbG9jYWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRq
dXN0ZWRMb2NhdGlvbik7CiAKKyAgICAvLyBJZiB3ZSBhcmUgbm93IHNlYXJjaGluZyBpbnNpZGUg
YSByZWdpb24sIG1ha2Ugc3VyZSB0aGlzIGVsZW1lbnQKKyAgICAvLyBpcyBiZWluZyBmcmFnbWVu
dGVkIGludG8gdGhpcyByZWdpb24uCisgICAgaWYgKGxvY2F0aW9uSW5Db250YWluZXIucmVnaW9u
KCkpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRD
b250YWluaW5nQmxvY2soKTsKKyAgICAgICAgQVNTRVJUKGZsb3dUaHJlYWQpOworICAgICAgICBp
ZiAoIWZsb3dUaHJlYWQtPm9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9uKHRoaXMsIGxvY2F0
aW9uSW5Db250YWluZXIucmVnaW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKwogICAgIGlmICghaXNSZW5kZXJWaWV3KCkpIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgd2Ug
bmVlZCB0byBkbyBhbnl0aGluZyBhdCBhbGwuCiAgICAgICAgIExheW91dFJlY3Qgb3ZlcmZsb3dC
b3ggPSB2aXN1YWxPdmVyZmxvd1JlY3QoKTsKQEAgLTMxNDAsNyArMzE1NSw3IEBAIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKFJlbmRl
ckJsb2NrJiBwYXJlbnQsCiAgICAgLy8gSWYgdGhpcyBpcyBhbiBhbm9ueW1vdXMgcmVuZGVyZXIs
IHdlIGp1c3QgcmVjdXIgbm9ybWFsbHkKICAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQ9IGNoaWxk
Lm5vblBzZXVkb0VsZW1lbnQoKTsKICAgICBpZiAoIWNoaWxkRWxlbWVudCkKLSAgICAgICAgcmV0
dXJuIGNoaWxkLnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkNoaWxkQ29vcmRpbmF0ZXMpOworICAg
ICAgICByZXR1cm4gY2hpbGQucG9zaXRpb25Gb3JQb2ludChwb2ludEluQ2hpbGRDb29yZGluYXRl
cywgbnVsbHB0cik7CiAKICAgICAvLyBPdGhlcndpc2UsIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRo
ZSBlZGl0YWJpbGl0eSBvZiB0aGUgcGFyZW50IGFuZCBjaGlsZCBhZ3JlZS4KICAgICAvLyBJZiB0
aGV5IGRvbid0IGFncmVlLCB0aGVuIHdlIHJldHVybiBhIHZpc2libGUgcG9zaXRpb24ganVzdCBi
ZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaWxkCkBAIC0zMTUwLDcgKzMxNjUsNyBAQCBWaXNpYmxlUG9z
aXRpb24gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyhSZW5kZXJC
bG9jayYgcGFyZW50LAogCiAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbiBhbmNlc3RvciB0byBj
aGVjayBlZGl0YWJpbGl0eSBvbiwgb3IgZWRpdGFiaWxpdHkgaXMgdW5jaGFuZ2VkLCB3ZSByZWN1
ciBsaWtlIG5vcm1hbAogICAgIGlmIChpc0VkaXRpbmdCb3VuZGFyeShhbmNlc3RvciwgY2hpbGQp
KQotICAgICAgICByZXR1cm4gY2hpbGQucG9zaXRpb25Gb3JQb2ludChwb2ludEluQ2hpbGRDb29y
ZGluYXRlcyk7CisgICAgICAgIHJldHVybiBjaGlsZC5wb3NpdGlvbkZvclBvaW50KHBvaW50SW5D
aGlsZENvb3JkaW5hdGVzLCBudWxscHRyKTsKICAgICAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
Ly8gT24gaU9TIHdlIHdhbnQgdG8gY29uc3RyYWluIFZpc2libGVQb3NpdGlvbnMgdG8gdGhlIGVk
aXRhYmxlIHJlZ2lvbiBjbG9zZXN0IHRvIHRoZSBpbnB1dCBwb3NpdGlvbiwgc28KQEAgLTMxNjks
NyArMzE4NCw3IEBAIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0Vk
aXRpbmdCb3VuZGFyaWVzKFJlbmRlckJsb2NrJiBwYXJlbnQsCiAgICAgcmV0dXJuIGFuY2VzdG9y
LT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRFbGVtZW50LT5ub2RlSW5kZXgoKSArIDEsIFVQ
U1RSRUFNKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBv
aW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JikKK1Zpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwpAQCAtMzE4MSw3ICszMTk2LDcg
QEAgc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKGNvbnN0IFJlbmRl
ckJveCYgYm94KQogfQogCiAvLyBWYWxpZCBjYW5kaWRhdGVzIGluIGEgRmxvd1RocmVhZCBtdXN0
IGJlIHJlbmRlcmVkIGJ5IHRoZSByZWdpb24uCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNDaGlsZEhp
dFRlc3RDYW5kaWRhdGUoY29uc3QgUmVuZGVyQm94JiBib3gsIFJlbmRlclJlZ2lvbiogcmVnaW9u
LCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDaGlsZEhp
dFRlc3RDYW5kaWRhdGUoY29uc3QgUmVuZGVyQm94JiBib3gsIGNvbnN0IFJlbmRlclJlZ2lvbiog
cmVnaW9uLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiB7CiAgICAgaWYgKCFpc0NoaWxkSGl0
VGVzdENhbmRpZGF0ZShib3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTkxLDEwICsz
MjA2LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZShjb25z
dCBSZW5kZXJCb3gmIGJveCwgUmVuZGVyUmVnaW9uKiByCiAgICAgcmV0dXJuIGJsb2NrLnJlZ2lv
bkF0QmxvY2tPZmZzZXQocG9pbnQueSgpKSA9PSByZWdpb247CiB9CiAKLVZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQp
CitWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBpZiAo
aXNUYWJsZSgpKQotICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBv
aW50KTsKKyAgICAgICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwg
cmVnaW9uKTsKIAogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgc2VlbXMgd3Jvbmcgd2hlbiB0aGUgb2JqZWN0J3Mgd3JpdGluZy1tb2RlIGRvZXNuJ3QgbWF0
Y2ggdGhlIGxpbmUncyB3cml0aW5nLW1vZGUuCkBAIC0zMjE0LDEwICszMjI5LDEzIEBAIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQpCiAgICAgICAgIHBvaW50SW5Mb2dpY2FsQ29udGVudHMgPSBwb2ludEluTG9naWNh
bENvbnRlbnRzLnRyYW5zcG9zZWRQb2ludCgpOwogCiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkp
Ci0gICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKHBvaW50
SW5Mb2dpY2FsQ29udGVudHMpOworICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFdpdGhJ
bmxpbmVDaGlsZHJlbihwb2ludEluTG9naWNhbENvbnRlbnRzLCByZWdpb24pOwogCi0gICAgUmVu
ZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KHBvaW50SW5Mb2dpY2FsQ29u
dGVudHMueSgpKTsKICAgICBSZW5kZXJCb3gqIGxhc3RDYW5kaWRhdGVCb3ggPSBsYXN0Q2hpbGRC
b3goKTsKKworICAgIGlmICghcmVnaW9uKQorICAgICAgICByZWdpb24gPSByZWdpb25BdEJsb2Nr
T2Zmc2V0KHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpKTsKKwogICAgIHdoaWxlIChsYXN0Q2Fu
ZGlkYXRlQm94ICYmICFpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZSgqbGFzdENhbmRpZGF0ZUJveCwg
cmVnaW9uLCBwb2ludEluTG9naWNhbENvbnRlbnRzKSkKICAgICAgICAgbGFzdENhbmRpZGF0ZUJv
eCA9IGxhc3RDYW5kaWRhdGVCb3gtPnByZXZpb3VzU2libGluZ0JveCgpOwogCkBAIC0zMjM5LDcg
KzMyNTcsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIH0KIAogICAgIC8vIFdlIG9ubHkgZ2V0IGhl
cmUgaWYgdGhlcmUgYXJlIG5vIGhpdCB0ZXN0IGNhbmRpZGF0ZSBjaGlsZHJlbiBiZWxvdyB0aGUg
Y2xpY2suCi0gICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCk7Cisg
ICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwgcmVnaW9uKTsKIH0K
IAogdm9pZCBSZW5kZXJCbG9jazo6b2Zmc2V0Rm9yQ29udGVudHMoTGF5b3V0UG9pbnQmIG9mZnNl
dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggNDJmNjUx
NS4uZjQyZDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTE4
Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9u
Kikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gQmxvY2sgZmxvd3Mgc3ViY2xhc3MgYXZhaWxhYmxl
V2lkdGggdG8gaGFuZGxlIG11bHRpIGNvbHVtbiBsYXlvdXQgKHNocmlua2luZyB0aGUgd2lkdGgg
YXZhaWxhYmxlIHRvIGNoaWxkcmVuIHdoZW4gbGF5aW5nIG91dC4pCiAgICAgdmlydHVhbCBMYXlv
dXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwpAQCAt
NTQzLDcgKzU0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGp1c3RQb2ludFRvQ29sdW1uQ29u
dGVudHMoTGF5b3V0UG9pbnQmKSBjb25zdDsKICAgICAKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6
IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5k
ZXJCbG9ja0Zsb3cKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50
V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50Jik7CisgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlv
dXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVDb2x1bW5Db3VudEFuZFdpZHRoKCk7CiAgICAgdm9pZCBtYWtlQ2hpbGRyZW5Bbm9ueW1vdXND
b2x1bW5CbG9ja3MoUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCwgUmVuZGVyQmxvY2sqIG5ld0Js
b2NrQm94LCBSZW5kZXJPYmplY3QqIG5ld0NoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggMWQzZTMxNC4uMTEzZGE4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMwOTIsNyArMzA5
Miw3IEBAIFBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JCb3goSW5saW5lQm94
ICpib3gsIGJvb2wgc3RhcnQpIGNvbnN0CiAgICAgcmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihib3gtPnJlbmRlcmVyKCkubm9uUHNldWRvTm9kZSgpLCBzdGFydCA/IHRleHRCb3gt
PnN0YXJ0KCkgOiB0ZXh0Qm94LT5zdGFydCgpICsgdGV4dEJveC0+bGVuKCkpOwogfQogCi1WaXNp
YmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNo
aWxkcmVuKGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTG9naWNhbENvbnRlbnRzKQorVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGls
ZHJlbihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkxvZ2ljYWxDb250ZW50cywgY29uc3QgUmVu
ZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgQVNTRVJUKGNoaWxkcmVuSW5saW5lKCkpOwogCkBA
IC0zMTA5LDYgKzMxMDksOSBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3Np
dGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgIFJvb3RJbmxp
bmVCb3gqIGZpcnN0Um9vdEJveFdpdGhDaGlsZHJlbiA9IDA7CiAgICAgUm9vdElubGluZUJveCog
bGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4gPSAwOwogICAgIGZvciAoUm9vdElubGluZUJveCogcm9v
dCA9IGZpcnN0Um9vdEJveCgpOyByb290OyByb290ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkgewor
ICAgICAgICBpZiAocmVnaW9uICYmIHJvb3QtPmNvbnRhaW5pbmdSZWdpb24oKSAhPSByZWdpb24p
CisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBpZiAoIXJvb3QtPmZpcnN0TGVhZkNo
aWxkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFmaXJzdFJvb3RCb3hX
aXRoQ2hpbGRyZW4pCkBAIC0zMTY1LDcgKzMxNjgsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
QmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91
dAogICAgICAgICAgICAgcG9pbnQgPSBwb2ludC50cmFuc3Bvc2VkUG9pbnQoKTsKICAgICAgICAg
aWYgKGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkuaXNSZXBsYWNlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoKnRoaXMsIHRv
UmVuZGVyQm94KGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkpLCBwb2ludCk7Ci0gICAgICAgIHJldHVy
biBjbG9zZXN0Qm94LT5yZW5kZXJlcigpLnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAgICAg
ICByZXR1cm4gY2xvc2VzdEJveC0+cmVuZGVyZXIoKS5wb3NpdGlvbkZvclBvaW50KHBvaW50LCBu
dWxscHRyKTsKICAgICB9CiAKICAgICBpZiAobGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKQEAg
LTMxODIsMTEgKzMxODUsMTEgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9z
aXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlvdXQKICAgICByZXR1cm4g
Y3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOwogfQogCi1WaXNpYmxlUG9zaXRp
b24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBw
b2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsK
ICAgICBpZiAoYXV0byBmcmFnbWVudCA9IHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkpCi0gICAg
ICAgIHJldHVybiBmcmFnbWVudC0+cG9zaXRpb25Gb3JQb2ludChwb2ludCk7Ci0gICAgcmV0dXJu
IFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICAgICAgcmV0dXJuIGZy
YWdtZW50LT5wb3NpdGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOworICAgIHJldHVybiBSZW5k
ZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwgcmVnaW9uKTsKIH0KIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggMWFiM2NlZi4uZmJiYTRh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjg1
LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVMaW5lcygpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCBvbGRD
bGllbnRBZnRlckVkZ2UsIGJvb2wgcmVjb21wdXRlRmxvYXRzID0gZmFsc2UpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0aW5nT2JqZWN0cygpOwogICAgIHZvaWQgbWFya0FsbERl
c2NlbmRhbnRzV2l0aEZsb2F0c0ZvckxheW91dChSZW5kZXJCb3gqIGZsb2F0VG9SZW1vdmUgPSBu
dWxscHRyLCBib29sIGluTGF5b3V0ID0gdHJ1ZSk7CkBAIC01MTAsNyArNTEwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgTGF5b3V0VW5pdCYgbGFzdExvZ2ljYWxUb3AsIExheW91dFVuaXQmIGxhc3RM
b2dpY2FsTGVmdCwgTGF5b3V0VW5pdCYgbGFzdExvZ2ljYWxSaWdodCwgY29uc3QgTG9naWNhbFNl
bGVjdGlvbk9mZnNldENhY2hlcyYsIGNvbnN0IFBhaW50SW5mbyopIG92ZXJyaWRlOwogICAgIAog
ICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9yQm94KElubGluZUJveCosIGJvb2wgc3RhcnQgPSB0cnVl
KSBjb25zdDsKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50V2l0
aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTG9naWNhbENvbnRlbnRz
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50
V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiBwb2ludEluTG9naWNhbENvbnRl
bnRzLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRk
Rm9jdXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBj
b25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCopIG92ZXJyaWRlOwogCiAvLyBGSVhNRS1CTE9DS0ZMT1c6IFRoZXNlIG1ldGhvZHMg
aGF2ZSBpbXBsZW1lbnRhdGlvbnMgaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKaW5kZXggYjdlM2RjYi4uMDhiNmE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKQEAgLTQxMzAsNyArNDEzMCw3IEBAIExheW91dFJlY3QgUmVuZGVyQm94Ojpsb2Nh
bENhcmV0UmVjdChJbmxpbmVCb3gqIGJveCwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0CiAg
ICAgcmV0dXJuIHJlY3Q7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJCb3g6OnBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQorVmlzaWJsZVBvc2l0aW9uIFJlbmRl
ckJveDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJl
bmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIC8vIG5vIGNoaWxkcmVuLi4ucmV0dXJuIHRoaXMg
cmVuZGVyIG9iamVjdCdzIGVsZW1lbnQsIGlmIHRoZXJlIGlzIG9uZSwgYW5kIG9mZnNldCAwCiAg
ICAgaWYgKCFmaXJzdENoaWxkKCkpCkBAIC00MTU3LDYgKzQxNTcsMTMgQEAgVmlzaWJsZVBvc2l0
aW9uIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQp
CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IGZpcnN0Q2hpbGQoKTsgcmVu
ZGVyT2JqZWN0OyByZW5kZXJPYmplY3QgPSByZW5kZXJPYmplY3QtPm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgaWYgKCFyZW5kZXJPYmplY3QtPmlzQm94KCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICBpZiAoaXNSZW5kZXJGbG93VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChyZWdpb24pOworICAgICAgICAgICAgaWYgKCF0b1JlbmRlckZsb3dUaHJlYWQodGhpcykt
Pm9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9uKHJlbmRlck9iamVjdCwgcmVnaW9uKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIFJlbmRlckJveCog
cmVuZGVyZXIgPSB0b1JlbmRlckJveChyZW5kZXJPYmplY3QpOwogCiAgICAgICAgIGlmICgoIXJl
bmRlcmVyLT5maXJzdENoaWxkKCkgJiYgIXJlbmRlcmVyLT5pc0lubGluZSgpICYmICFyZW5kZXJl
ci0+aXNSZW5kZXJCbG9ja0Zsb3coKSApCkBAIC00MTcwLDggKzQxNzcsOCBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCkKICAgICAgICAgCiAgICAgICAgIGlmIChwb2ludC54KCkgPD0gcmlnaHQgJiYgcG9pbnQueCgp
ID49IGxlZnQgJiYgcG9pbnQueSgpIDw9IHRvcCAmJiBwb2ludC55KCkgPj0gYm90dG9tKSB7CiAg
ICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGFibGVSb3coKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQgKyBhZGp1c3RlZFBvaW50IC0g
cmVuZGVyZXItPmxvY2F0aW9uT2Zmc2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVy
LT5wb3NpdGlvbkZvclBvaW50KHBvaW50IC0gcmVuZGVyZXItPmxvY2F0aW9uT2Zmc2V0KCkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChwb2ludCAr
IGFkanVzdGVkUG9pbnQgLSByZW5kZXJlci0+bG9jYXRpb25PZmZzZXQoKSwgcmVnaW9uKTsKKyAg
ICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChwb2ludCAtIHJlbmRl
cmVyLT5sb2NhdGlvbk9mZnNldCgpLCByZWdpb24pOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
RmluZCB0aGUgZGlzdGFuY2UgZnJvbSAoeCwgeSkgdG8gdGhlIGJveC4gIFNwbGl0IHRoZSBzcGFj
ZSBhcm91bmQgdGhlIGJveCBpbnRvIDggcGllY2VzCkBAIC00MjA4LDcgKzQyMTUsNyBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkKICAgICB9CiAgICAgCiAgICAgaWYgKGNsb3Nlc3RSZW5kZXJlcikKLSAgICAgICAg
cmV0dXJuIGNsb3Nlc3RSZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChhZGp1c3RlZFBvaW50IC0g
Y2xvc2VzdFJlbmRlcmVyLT5sb2NhdGlvbk9mZnNldCgpKTsKKyAgICAgICAgcmV0dXJuIGNsb3Nl
c3RSZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChhZGp1c3RlZFBvaW50IC0gY2xvc2VzdFJlbmRl
cmVyLT5sb2NhdGlvbk9mZnNldCgpLCByZWdpb24pOwogICAgIAogICAgIHJldHVybiBjcmVhdGVW
aXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vblBzZXVkb0VsZW1l
bnQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGJmNjE5NGIu
LjI0MDNjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTUxMSw3ICs1
MTEsNyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRSZWN0IG1hc2tDbGlwUmVjdCgpOwogCi0gICAg
dmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAog
ICAgIFJlbmRlckJsb2NrRmxvdyogb3V0ZXJtb3N0QmxvY2tDb250YWluaW5nRmxvYXRpbmdPYmpl
Y3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAKaW5kZXggNzY4ZDE4OS4uOTQxNjU3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yNDYs
NyArMjQ2LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6Y29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKQogICAgIHNldFByZWZlcnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxz
ZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2w6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25z
dCBSZW5kZXJSZWdpb24qKQogewogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgK
aW5kZXggN2MzNWE0OC4uMWQ1YTRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToK
IAogICAgIGludCBtYXhGaWxlbmFtZVdpZHRoKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAogICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIHVwbG9hZEJ1dHRvbigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDQyZTg2YjcuLjkyZmEyNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC04NDUsMTQgKzg0NSwxNCBAQCBi
b29sIFJlbmRlcklubGluZTo6aGl0VGVzdEN1bGxlZElubGluZShjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgSGl0VGVzdFJlcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmlzaWJsZVBv
c2l0aW9uIFJlbmRlcklubGluZTo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYg
cG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAg
ICAgLy8gRklYTUU6IERvZXMgbm90IGRlYWwgd2l0aCByZWxhdGl2ZSBvciBzdGlja3kgcG9zaXRp
b25lZCBpbmxpbmVzIChzaG91bGQgaXQ/KQogICAgIFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5p
bmdCbG9jaygpOwogICAgIGlmIChmaXJzdExpbmVCb3goKSkgewogICAgICAgICAvLyBUaGlzIGlu
bGluZSBhY3R1YWxseSBoYXMgYSBsaW5lIGJveC4gIFdlIG11c3QgaGF2ZSBjbGlja2VkIGluIHRo
ZSBib3JkZXIvcGFkZGluZyBvZiBvbmUgb2YgdGhlc2UgYm94ZXMuICBXZQogICAgICAgICAvLyBz
aG91bGQgdHJ5IHRvIGZpbmQgYSByZXN1bHQgYnkgYXNraW5nIG91ciBjb250YWluaW5nIGJsb2Nr
LgotICAgICAgICByZXR1cm4gY2ItPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAgICAgICBy
ZXR1cm4gY2ItPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lvbik7CiAgICAgfQogCiAgICAg
Ly8gVHJhbnNsYXRlIHRoZSBjb29yZHMgZnJvbSB0aGUgcHJlLWFub255bW91cyBibG9jayB0byB0
aGUgcG9zdC1hbm9ueW1vdXMgYmxvY2suCkBAIC04NjEsMTEgKzg2MSwxMSBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVySW5saW5lOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBw
b2ludCkKICAgICB3aGlsZSAoYykgewogICAgICAgICBSZW5kZXJCb3gqIGNvbnRCbG9jayA9IGMt
PmlzSW5saW5lKCkgPyBjLT5jb250YWluaW5nQmxvY2soKSA6IHRvUmVuZGVyQmxvY2soYyk7CiAg
ICAgICAgIGlmIChjLT5pc0lubGluZSgpIHx8IGMtPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgICAg
IHJldHVybiBjLT5wb3NpdGlvbkZvclBvaW50KHBhcmVudEJsb2NrUG9pbnQgLSBjb250QmxvY2st
PmxvY2F0aW9uT2Zmc2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGMtPnBvc2l0aW9uRm9yUG9p
bnQocGFyZW50QmxvY2tQb2ludCAtIGNvbnRCbG9jay0+bG9jYXRpb25PZmZzZXQoKSwgcmVnaW9u
KTsKICAgICAgICAgYyA9IHRvUmVuZGVyQmxvY2soYyktPmlubGluZUVsZW1lbnRDb250aW51YXRp
b24oKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpwb3Np
dGlvbkZvclBvaW50KHBvaW50KTsKKyAgICByZXR1cm4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBv
c2l0aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lvbik7CiB9CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKaW5kZXggNmVjY2M0YS4uNWM2ZWRkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtMTQ0LDcgKzE0NCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBN
YXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlDb250YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9
IDApIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNo
TWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9y
VG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlIGZp
bmFsOwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGZyYW1lUmVjdEZvclN0aWNreVBvc2l0aW9u
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbGluZXNCb3VuZGluZ0JveCgpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXgg
YTgzMWU0Ny4uMmE4Yjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBib29sIFJlbmRlckxpbmVCcmVhazo6Y2Fu
QmVTZWxlY3Rpb25MZWFmKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVmlzaWJsZVBv
c2l0aW9uIFJlbmRlckxpbmVCcmVhazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyTGluZUJyZWFrOjpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikKIHsKICAgICByZXR1cm4gY3Jl
YXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IDU1ZjRmNTkuLjAyYjE3NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKQEAgLTU4LDcgKzU4LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbCB7IH0KIAotICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBp
bnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCBjYXJl
dE1heE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVj
dGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmluZGV4IGI0MzhiMDEuLmQzYTlhZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApA
QCAtODcxLDcgKzg3MSw3IEBAIHZvaWQgUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OmFkZE92ZXJmbG93
RnJvbUNoaWxkcmVuKCkKICAgICAgICAgYWRkVmlzdWFsT3ZlcmZsb3cobGFzdFJlY3QpOwogfQog
Ci1WaXNpYmxlUG9zaXRpb24gUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBoeXNpY2FsUG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVy
TXVsdGlDb2x1bW5TZXQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBoeXNp
Y2FsUG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIC8vIERldGVybWlu
ZSB3aGljaCBjb2x1bW5zIHdlIGludGVyc2VjdC4KICAgICBMYXlvdXRVbml0IGNvbEdhcCA9IGNv
bHVtbkdhcCgpOwpAQCAtOTE4LDcgKzkxOCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJNdWx0
aUNvbHVtblNldDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcGh5c2ljCiAg
ICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBwb3J0aW9uID0gZmxvd1RocmVhZFBvcnRpb25SZWN0
KCk7CiAgICAgICAgICAgICAgICAgZmxpcEZvcldyaXRpbmdNb2RlKHBvcnRpb24pOwogICAgICAg
ICAgICAgICAgIHBvaW50Lm1vdmUoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFVu
aXQoKSA6IHBvcnRpb24ueCgpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcG9ydGlvbi55
KCkgOiBMYXlvdXRVbml0KCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBtdWx0aUNvbHVtbkZs
b3dUaHJlYWQoKS0+cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wb3NpdGlvbkZvclBvaW50KHBvaW50LCByZWdp
b24pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHBv
c2l0aW9uLgpAQCAtOTU1LDcgKzk1NSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJNdWx0aUNv
bHVtblNldDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcGh5c2ljCiAgICAg
ICAgICAgICAgICAgZmxpcEZvcldyaXRpbmdNb2RlKHBvcnRpb24pOwogICAgICAgICAgICAgICAg
IHBvaW50Lm1vdmUoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IExheW91dFVuaXQoKSA6IHBv
cnRpb24ueCgpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcG9ydGlvbi55KCkgOiBMYXlv
dXRVbml0KCkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHJldHVybiBtdWx0
aUNvbHVtbkZsb3dUaHJlYWQoKS0+cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wb3NpdGlvbkZvclBvaW50KHBv
aW50LCByZWdpb24pOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBNb3ZlIHRvIHRo
ZSBuZXh0IHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5TZXQuaAppbmRleCA5NTY3NjFjLi4zNjM0ZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaApAQCAtMTQyLDcgKzE0Miw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmVnaW9uQm91bmRzRnJvbUZsb3dU
aHJlYWRQb3J0aW9uUmVjdChjb25zdCBMYXlvdXRQb2ludCYgbGF5ZXJPZmZzZXQsIExheW91dFJl
Y3QmIHJlZ2lvbkJvdW5kcykgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYs
IGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggYTAwMzA3Yy4uY2M5OTAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE5OTksNyArMTk5OSw3IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpkZXN0cm95KCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJl
bmRlck9iamVjdDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpCitWaXNpYmxl
UG9zaXRpb24gUmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUmVuZGVyUmVnaW9uKikKIHsKICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKGNhcmV0TWluT2Zmc2V0KCksIERPV05TVFJFQU0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGNhOGE2ZGUuLjhmNWEyYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmVuZGVy
R2VvbWV0cnlNYXA7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlckxheWVyTW9kZWxP
YmplY3Q7CiBjbGFzcyBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ7CitjbGFzcyBSZW5kZXJSZWdpb247
CiBjbGFzcyBSZW5kZXJUaGVtZTsKIGNsYXNzIFNlbGVjdGlvblN1YnRyZWVSb290OwogY2xhc3Mg
VHJhbnNmb3JtU3RhdGU7CkBAIC02NDgsNyArNjQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2lu
dCYpOwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7
CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50Jik7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopOwogICAgIFZpc2libGVQ
b3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9mZnNldCwgRUFmZmluaXR5KSBjb25z
dDsKICAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFBvc2l0
aW9uJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
aW5kZXggMDg4Y2ExZS4uM2E1NmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvbi5jcHAKQEAgLTEwNCwxMiArMTA0LDEyIEBAIExheW91dFBvaW50IFJlbmRlclJlZ2lv
bjo6bWFwUmVnaW9uUG9pbnRJbnRvRmxvd1RocmVhZENvb3JkaW5hdGVzKGNvbnN0IExheW91dFBv
CiAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwb2ludEluVGhyZWFkIDog
cG9pbnRJblRocmVhZC50cmFuc3Bvc2VkUG9pbnQoKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJl
bmRlclJlZ2lvbjo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitW
aXNpYmxlUG9zaXRpb24gUmVuZGVyUmVnaW9uOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgaWYgKCFp
c1ZhbGlkKCkgfHwgIW1fZmxvd1RocmVhZC0+Zmlyc3RDaGlsZCgpKSAvLyBjaGVja2luZyBmb3Ig
ZW1wdHkgcmVnaW9uIGJsb2Nrcy4KLSAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlv
bkZvclBvaW50KHBvaW50KTsKKyAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZv
clBvaW50KHBvaW50LCByZWdpb24pOwogCi0gICAgcmV0dXJuIG1fZmxvd1RocmVhZC0+cG9zaXRp
b25Gb3JQb2ludChtYXBSZWdpb25Qb2ludEludG9GbG93VGhyZWFkQ29vcmRpbmF0ZXMocG9pbnQp
KTsKKyAgICByZXR1cm4gbV9mbG93VGhyZWFkLT5wb3NpdGlvbkZvclBvaW50KG1hcFJlZ2lvblBv
aW50SW50b0Zsb3dUaHJlYWRDb29yZGluYXRlcyhwb2ludCksIHRoaXMpOwogfQogCiBMYXlvdXRV
bml0IFJlbmRlclJlZ2lvbjo6cGFnZUxvZ2ljYWxXaWR0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKaW5kZXggMjVjOWZhYy4uMTRkNGFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlR2VuZXJhdGVkQ2hpbGRy
ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9v
bCBoYXNBdXRvTG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDJkMWZhZDcuLmFm
NzVmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcApA
QCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OmNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkKICAgICBzZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkoZmFsc2Up
OwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxhY2Vk
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVy
UmVnaW9uKiByZWdpb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBpcyBidWdneSBpZiB0
aGUgcmVwbGFjZWQgZWxlbWVudCBpcyByZWxhdGl2ZSBwb3NpdGlvbmVkLgogICAgIElubGluZUJv
eCogYm94ID0gaW5saW5lQm94V3JhcHBlcigpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIFZpc2libGVQ
b3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQpCiAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMSwgRE9XTlNU
UkVBTSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChw
b2ludCk7CisgICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwgcmVn
aW9uKTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmgKaW5kZXggMTBlMGMyNy4uMmFiZTYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3Zl
cnJpZGUgZmluYWw7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwCmluZGV4IDQ3OTc5MzAuLjYzZjUyM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCBWZWN0b3I8RmxvYXRR
dWFkPiBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9yUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZAogICAgIHJldHVybiBtX2xpbmVCb3hlcy5hYnNvbHV0ZVF1YWRzRm9yUmFuZ2Uo
KnRoaXMsIHN0YXJ0LCBlbmQsIHVzZVNlbGVjdGlvbkhlaWdodCwgd2FzRml4ZWQpOwogfQogCi1W
aXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAg
ZW5zdXJlTGluZUJveGVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmlu
ZGV4IDUzZmJmZWYuLmY5MTQ3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQu
aApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBhYnNv
bHV0ZVF1YWRzQ2xpcHBlZFRvRWxsaXBzaXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzOEJp
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmlzOEJpdCgpOyB9CiAgICAgY29uc3Qg
TENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+Y2hhcmFj
dGVyczgoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggZDBkM2E4Yi4uNWM4NDk5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0x
NjYsNyArMTY2LDcgQEAgYm9vbCBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjaGFyYWN0ZXJTdGFydHNO
ZXdUZXh0Q2h1bmsoaW50IHBvc2l0aW9uKSBjb25zdAogICAgIHJldHVybiBpdC0+dmFsdWUueCAh
PSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1ZSgpIHx8IGl0LT52YWx1ZS55ICE9
IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVlKCk7CiB9CiAKLVZpc2libGVQb3Np
dGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiBwb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKikK
IHsKICAgICBpZiAoIWZpcnN0VGV4dEJveCgpIHx8ICF0ZXh0TGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IDQ0YmQ2
OTkuLjZjNzg4ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5oCkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdJbmxpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94Kiwg
aW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIEludFJlY3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IGNyZWF0
ZVRleHRCb3goKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuY3BwCmluZGV4IGEwYjE0YTA2Li4xOWM3OWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ2NSw3ICs0NjUsNyBA
QCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50SW5Db250ZW50cykKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGVudHMsIGNvbnN0IFJl
bmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIFJvb3RJbmxpbmVCb3gqIHJvb3RCb3ggPSBmaXJz
dFJvb3RCb3goKTsKICAgICBpZiAoIXJvb3RCb3gpCkBAIC00NzksNyArNDc5LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50SW5Db250ZW4KICAgICBpZiAoIWNsb3Nlc3RCb3gpCiAgICAgICAgIHJldHVybiBj
cmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CiAKLSAgICByZXR1cm4gY2xvc2Vz
dEJveC0+cmVuZGVyZXIoKS5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50KHBvaW50SW5Db250
ZW50cy54KCksIGNsb3Nlc3RCb3gtPnkoKSkpOworICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5k
ZXJlcigpLnBvc2l0aW9uRm9yUG9pbnQoTGF5b3V0UG9pbnQocG9pbnRJbkNvbnRlbnRzLngoKSwg
Y2xvc2VzdEJveC0+eSgpKSwgcmVnaW9uKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdUZXh0OjphYnNv
bHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGY2
NDNhMTYuLjBkZDQ3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKTsKLSAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
Jik7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopOwogCiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBs
YXlvdXQoKTsK
</data>
<flag name="review"
          id="254327"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230152</attachid>
            <date>2014-04-25 02:07:12 -0700</date>
            <delta_ts>2014-04-25 06:19:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>130715.patch</filename>
            <type>text/plain</type>
            <size>59710</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZWI2Y2Q5Li5kODFhNjczIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDQt
MjMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVn
aW9uc10gT3ZlcmZsb3cgc2VsZWN0aW9uIGRvZXNuJ3Qgd29yayBwcm9wZXJseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIGhp
dC10ZXN0aW5nIGFuZCBwYWludGluZyBzZWxlY3Rpb24gZ2FwcyBpbiB0aGUgcmVnaW9uJ3Mgb3Zl
cmZsb3cgYXJlYS4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZs
b3ctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlv
bi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3cuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92
ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
cmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy5odG1s
OiBBZGRlZC4KKwogMjAxNC0wNC0yNSAgSW9uIFJvc2NhICA8cm9zY2FAYWRvYmUuY29tPgogCiAg
ICAgICAgIEluY29tcGxldGUgYm9keSBwYWludGluZyB3aGVuIHVzaW5nIGJsZW5kIG1vZGVzCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92
ZXJmbG93LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YTJlNDMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxl
Y3Rpb24taW4tb3ZlcmZsb3ctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYzIEBACis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gb25Cb2R5TG9hZCgpIHsKKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB2YXIgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCisgICAgICAgICAgICAvLyBUZXN0IHNlbGVjdGlv
biBvbiB0aGUgb3ZlcmZsb3cgYmVsb3cgdGhlIGxhc3QgcmVnaW9uLgorICAgICAgICAgICAgdmFy
IHJlZ2lvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NpdGlvblggPSByZWdpb24ub2Zmc2V0TGVmdCArIDIwOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zaXRpb25ZID0gcmVnaW9uLm9mZnNldFRvcCArIDIwMDsKKyAgICAgICAg
ICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAg
dmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNDA7CisKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRo
aW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAgICNyZWdpb24xCisgICAg
eworICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQor
CisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEy
N3B4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlM
b2FkKCkiPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3Ig
dGhlIGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNw
bGF5ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFz
c2VzIGlmIHNlbGVjdGluZyB0aGUgdGV4dCB0aGF0IG92ZXJmbG93cyB0aGUgPHNwYW4gc3R5bGU9
ImNvbG9yOmJsdWUiPnJlZ2lvbjwvc3Bhbj4gcHJvcGVybHkgc2VsZWN0cyBhbmQgbm8gc2VsZWN0
aW9uIGFydGlmYWN0cyBhcmUgdmlzaWJsZSBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xv
cjpibHVlIj5yZWdpb248L3NwYW4+PC9kaXY+CisgICAgPGJyLz4KKworICAgIDxkaXYgaWQ9InJl
Z2lvbjEiIGNsYXNzPSJyZWdpb24iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9Im9uZSI+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxi
ci8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+
QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFB
QTxici8+QUFBQTxici8+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAg
PGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmODIwOWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92
ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIG9uQm9keUxvYWQoKSB7Cisg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdmFyIHNlbGVjdGlv
biA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3Rp
b24gb24gdGhlIG92ZXJmbG93IGJlbG93IHRoZSBsYXN0IHJlZ2lvbi4KKyAgICAgICAgICAgIHZh
ciByZWdpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zaXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAyMDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRUb3AgKyAyMDsKKyAgICAgICAg
ICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAg
dmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNjA7CisKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRo
aW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiBy
ZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAgICNyZWdpb24xCisgICAg
eworICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQor
CisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEy
N3B4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
IGhlaWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlM
b2FkKCkiPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3Ig
dGhlIGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNw
bGF5ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFz
c2VzIGlmIHNlbGVjdGluZyBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5y
ZWdpb248L3NwYW4+IGhhcyBubyBlZmZlY3Qgb24gdGhlIHRleHQgaW4gdGhlIGZpcnN0IDxzcGFu
IHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+LjwvZGl2PgorICAgIDxici8+CisKKyAg
ICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVnaW9uIj4KKyAgICAgICAgPGRpdiBjbGFzcz0i
Y29udGVudCI+CisgICAgICAgICAgICA8ZGl2IGlkPSJvbmUiPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIv
PkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2Rpdj4KKworICAgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJyZWdpb24iPjwvZGl2PgorPC9i
b2R5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ctaGl0LXRlc3Rpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGU1NGY2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxv
dy1oaXQtdGVzdGluZy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVy
ZmxvdyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c2l0aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9z
aXRpb25YID0gc3RhcnRQb3NpdGlvblggKyAyMDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlv
blkgPSBzdGFydFBvc2l0aW9uWSArIDYwOworCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhlbmRQb3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVVwKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKworPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICAucmVnaW9uIHsKKyAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7
CisgICAgICAgIGJvcmRlcjogdGhpbiBzb2xpZCBibHVlOworICAgICAgICBtYXJnaW46IDVweDsK
KyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAxcHg7CisgICAgfQor
CisgICAgI3JlZ2lvbjEKKyAgICB7CisgICAgICAgIGhlaWdodDogMTIwcHg7CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMgorICAgIHsKKyAgICAgICAgaGVpZ2h0
OiAyMDBweDsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAxMjBw
eDsKKyAgICAgICAgdG9wOiAtMTI3cHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisK
KyAgICAuY29udGVudCB7CisgICAgICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OworICAgIH0K
KworICAgICNvbmUgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+CisK
Kzxib2R5IG9ubG9hZD0ib25Cb2R5TG9hZCgpIj4KKyAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1Ij5CdWcgMTMwNzE1IC0gVGVzdCB0aGF0
IG92ZXJmbG93IGNvbnRlbnQgZm9yIHRoZSBmaXJzdCBhbmQgbGFzdCByZWdpb25zIGluIHRoZSBj
aGFpbiBpcyBjb3JyZWN0bHkgZGlzcGxheWVkIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvYT4K
KyAgICA8ZGl2PlRoZSB0ZXN0IHBhc3NlcyBpZiBzZWxlY3RpbmcgaW4gdGhlIHNlY29uZCA8c3Bh
biBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPiBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0
ZXh0IGluIHRoZSBmaXJzdCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPi48
L2Rpdj4KKyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+
PC9kaXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisKKyAg
ICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICA8L2Rpdj4K
KzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24t
aW4tb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4t
b3ZlcmZsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjJlNTE1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1p
bi1vdmVyZmxvdy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxv
dyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0
aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3Np
dGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjAwOworICAgICAgICAgICAgdmFyIGVuZFBvc2l0
aW9uWCA9IHN0YXJ0UG9zaXRpb25YICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25Z
ID0gc3RhcnRQb3NpdGlvblkgKyA0MDsKKworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NpdGlvblgsIHN0YXJ0UG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
ZW5kUG9zaXRpb25YLCBlbmRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VVcCgpOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CisgICAgLnJlZ2lvbiB7CisgICAgICAgIC13ZWJraXQtZmxvdy1mcm9tOiBmbG93Owor
ICAgICAgICBib3JkZXI6IHRoaW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7Cisg
ICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKwor
ICAgICNyZWdpb24xCisgICAgeworICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgfQorCisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDog
MjAwcHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7
CisgICAgICAgIHRvcDogLTEyN3B4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisg
ICAgLmNvbnRlbnQgeworICAgICAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsKKyAgICB9CisK
KyAgICAjb25lIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAgIHdp
ZHRoOiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorCis8
Ym9keSBvbmxvYWQ9Im9uQm9keUxvYWQoKSI+CisgICAgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDcxNSI+QnVnIDEzMDcxNSAtIFRlc3QgdGhhdCBv
dmVyZmxvdyBjb250ZW50IGZvciB0aGUgZmlyc3QgYW5kIGxhc3QgcmVnaW9ucyBpbiB0aGUgY2hh
aW4gaXMgY29ycmVjdGx5IGRpc3BsYXllZCBpbiBkaWZmZXJlbnQgc2l0dWF0aW9ucy48L2E+Cisg
ICAgPGRpdj5UaGUgdGVzdCBwYXNzZXMgaWYgc2VsZWN0aW5nIHRoZSB0ZXh0IHRoYXQgb3ZlcmZs
b3dzIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJseSBz
ZWxlY3RzIGFuZCBubyBzZWxlY3Rpb24gYXJ0aWZhY3RzIGFyZSB2aXNpYmxlIGluIHRoZSBzZWNv
bmQgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPnJlZ2lvbjwvc3Bhbj48L2Rpdj4KKyAgICA8YnIv
PgorCisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisgICAgPGRp
diBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJj
b250ZW50Ij4KKyAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1v
dmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2ZGRmMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1h
ZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNjUgQEAK
KzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2Fk
KCkgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBz
ZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qg
c2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxvdyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAg
ICAgICB2YXIgcmVnaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjA7Cisg
ICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25YID0gc3RhcnRQb3NpdGlvblggKyAyMDsKKyAgICAg
ICAgICAgIHZhciBlbmRQb3NpdGlvblkgPSBzdGFydFBvc2l0aW9uWSArIDYwOworCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlv
blkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhlbmRQb3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3Njcmlw
dD4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAucmVnaW9uIHsKKyAgICAgICAgYm9y
ZGVyOiB0aGluIHNvbGlkIGJsdWU7CisgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICBwb3Np
dGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDFweDsKKyAgICB9CisKKyAgICAjcmVnaW9u
MQorICAgIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDExMHB4Owor
ICAgIH0KKworICAgICNyZWdpb24yCisgICAgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAg
ICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDEyMHB4OworICAgICAgICB0
b3A6IC0xMjdweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIH0KKworICAgICNvbmUgewor
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxib2R5IG9ubG9hZD0i
b25Cb2R5TG9hZCgpIj4KKyAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTMwNzE1Ij5CdWcgMTMwNzE1IC0gVGVzdCB0aGF0IG92ZXJmbG93IGNvbnRl
bnQgZm9yIHRoZSBmaXJzdCBhbmQgbGFzdCByZWdpb25zIGluIHRoZSBjaGFpbiBpcyBjb3JyZWN0
bHkgZGlzcGxheWVkIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvYT4KKyAgICA8ZGl2PlRoZSB0
ZXN0IHBhc3NlcyBpZiBzZWxlY3RpbmcgaW4gdGhlIHNlY29uZCA8c3BhbiBzdHlsZT0iY29sb3I6
Ymx1ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJseSBzZWxlY3RzIHRoZSBCQkJCIHRleHRzIGFuZCBo
YXMgbm8gZWZmZWN0IG9uIHRoZSB0ZXh0IGluIHRoZSBmaXJzdCA8c3BhbiBzdHlsZT0iY29sb3I6
Ymx1ZSI+cmVnaW9uPC9zcGFuPi48L2Rpdj4KKyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVn
aW9uMSIgY2xhc3M9InJlZ2lvbiI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgorICAg
ICAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8
ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uIj4KKyAgICAgICAgPGRpdiBpZD0idHdvIj5C
QkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJC
PGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9y
ZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLXRleHQtYWZ0ZXItb3ZlcmZs
b3ctaGl0LXRlc3RpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ODU3ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVj
dGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwKQEAgLTAsMCArMSw2
OCBAQAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIG9uQm9k
eUxvYWQoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAg
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgICAgICAgICAgLy8g
VGVzdCBzZWxlY3Rpb24gb24gdGhlIG92ZXJmbG93IGJlbG93IHRoZSBsYXN0IHJlZ2lvbi4KKyAg
ICAgICAgICAgIHZhciByZWdpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIp
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zaXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAy
MDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRUb3AgKyAy
MDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOwor
ICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNjA7CisKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBv
c2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwv
c2NyaXB0PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAg
ICAtd2Via2l0LWZsb3ctZnJvbTogZmxvdzsKKyAgICAgICAgYm9yZGVyOiB0aGluIHNvbGlkIGJs
dWU7CisgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgICAgIGxlZnQ6IDFweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMQorICAgIHsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDExMHB4OworICAgIH0KKworICAgICNyZWdp
b24yCisgICAgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBwb3NpdGlvbjogcmVs
YXRpdmU7CisgICAgICAgIGxlZnQ6IDEyMHB4OworICAgICAgICB0b3A6IC0xMjdweDsKKyAgICAg
ICAgd2lkdGg6IDEwMHB4OworICAgIH0KKworICAgIC5jb250ZW50IHsKKyAgICAgICAgLXdlYmtp
dC1mbG93LWludG86IGZsb3c7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDog
MTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlMb2FkKCkiPgor
ICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3
MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3IgdGhlIGZpcnN0
IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4g
ZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFzc2VzIGlmIHNl
bGVjdGluZyBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3Nw
YW4+IHByb3Blcmx5IHNlbGVjdHMgdGhlIEJCQkIgdGV4dHMgYW5kIGhhcyBubyBlZmZlY3Qgb24g
dGhlIHRleHQgaW4gdGhlIGZpcnN0IDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3Nw
YW4+LjwvZGl2PgorICAgIDxici8+CisKKyAgICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVn
aW9uIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uIj48L2Rpdj4K
KworICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgorICAgICAgICA8ZGl2IGlkPSJvbmUiPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIv
PkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPjwvZGl2PgorICAgICAg
ICA8ZGl2IGlkPSJ0d28iPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8
YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8L2Rpdj4KKyAgICA8
L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjkxNTA0Li5lMTM3OWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsODQgQEAKKzIwMTQtMDQtMjMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRv
YmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gT3ZlcmZsb3cgc2VsZWN0aW9uIGRvZXNu
J3Qgd29yayBwcm9wZXJseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMwNzE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2hlbiBoaXQtdGVzdGluZywgcGFpbnRpbmcgYmxvY2sgc2VsZWN0aW9uIGdhcHMg
YW5kIHNlYXJjaGluZyBmb3IgdGhlIG5vZGUgYXQgYSBzcGVjaWZpYyBwb2ludCBpbnNpZGUgYSBm
bG93IHRocmVhZCwKKyAgICAgICAgdGhlIHJlZ2lvbiByYW5nZSBvZiB0aGUgYm94IGJlaW5nIGNo
ZWNrZWQgbXVzdCBiZSB2YWxpZGF0ZWQgaW4gb3JkZXIgdG8gbm90IHJldHVybiBmYWxzZSBwb3Np
dGl2ZXMuIE90aGVyd2lzZSwgaGl0LXRlc3RpbmcKKyAgICAgICAgYXQgdGhlIHRvcCBvZiByZWdp
b24gQiBjb3VsZCBoaXQgZWxlbWVudHMgdGhhdCBvdmVyZmxvdyB0aGUgYm90dG9tIG9mIHJlZ2lv
biBBLgorCisgICAgICAgIFRlc3RzOiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93
LWhpdC10ZXN0aW5nLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24t
aW4tb3ZlcmZsb3cuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1p
bi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwKKworICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludCk6CisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6
Y29udGFpbnMpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRM
aW5lUG9zaXRpb24pOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdvcmRGcm9tSGl0VGVzdFJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkT3JM
aW5rRnJvbU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnRUcmlwbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhh
bmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OnNlbGVjdGlvbkV4dGVudFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcnkpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6dmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2Fwcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6
cG9zaXRpb25Gb3JQb2ludFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcmllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjppc0NoaWxkSGl0VGVzdENhbmRpZGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRX
aXRoSW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpw
b3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBvc2l0aW9uRm9yUG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW5saW5lOjpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5TZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNldC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZWdpb246OnBvc2l0aW9uRm9yUG9p
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFj
ZWQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNl
ZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6OnBvc2l0aW9uRm9y
UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuaDoKKwogMjAxNC0wNC0yNSAgSW9uIFJvc2NhICA8cm9zY2FA
YWRvYmUuY29tPgogCiAgICAgICAgIEluY29tcGxldGUgYm9keSBwYWludGluZyB3aGVuIHVzaW5n
IGJsZW5kIG1vZGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA3NWE5MWM0Li44MzY4M2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTE4MjQsNyArMTgyNCw3IEBAIFZpc2libGVQb3NpdGlv
blJhbmdlIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvblJhbmdlRm9y
TGluZSh1bnNpCiAgICAgLy8gaXRlcmF0ZSBvdmVyIHRoZSBsaW5lcwogICAgIC8vIEZJWE1FOiB0
aGlzIGlzIHdyb25nIHdoZW4gbGluZU51bWJlciBpcyBsaW5lQ291bnQrMSwgIGJlY2F1c2UgbmV4
dExpbmVQb3NpdGlvbiB0YWtlcyB5b3UgdG8gdGhlCiAgICAgLy8gbGFzdCBvZmZzZXQgb2YgdGhl
IGxhc3QgbGluZQotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gbV9yZW5kZXJlci0+
dmlldygpLnBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQoKSk7CisgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3MgPSBtX3JlbmRlcmVyLT52aWV3KCkucG9zaXRpb25Gb3JQb2ludChJbnRQb2lu
dCgpLCBudWxscHRyKTsKICAgICBWaXNpYmxlUG9zaXRpb24gc2F2ZWRWaXNpYmxlUG9zOwogICAg
IHdoaWxlICgtLWxpbmVDb3VudCkgewogICAgICAgICBzYXZlZFZpc2libGVQb3MgPSB2aXNpYmxl
UG9zOwpAQCAtMjAzMiw3ICsyMDMyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW4KICNlbmRp
ZgogICAgIH0KICAgICAKLSAgICByZXR1cm4gaW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlv
bkZvclBvaW50KHBvaW50UmVzdWx0KTsKKyAgICByZXR1cm4gaW5uZXJOb2RlLT5yZW5kZXJlcigp
LT5wb3NpdGlvbkZvclBvaW50KHBvaW50UmVzdWx0LCBudWxscHRyKTsKIH0KIAogLy8gTk9URTog
Q29uc2lkZXIgcHJvdmlkaW5nIHRoaXMgdXRpbGl0eSBtZXRob2QgYXMgQVggQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCA0YjY4ZjVlLi4zMGIzMzA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTE0MjEsNyArMTQyMSw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IERvY3VtZW50Ojpj
YXJldFJhbmdlRnJvbVBvaW50KGludCB4LCBpbnQgeSkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0gcmVuZGVy
ZXItPnBvc2l0aW9uRm9yUG9pbnQobG9jYWxQb2ludCk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQsIG51
bGxwdHIpOwogICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2Vs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmlu
ZGV4IGJhYzJkZjkuLmE5ODMyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCkBAIC0xNTg1LDcgKzE1ODUsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpjb250
YWlucyhjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgaWYgKCFpbm5lck5vZGUgfHwgIWlu
bmVyTm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25G
b3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3MoaW5uZXJOb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2Nh
bFBvaW50KCksIG51bGxwdHIpKTsKICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcAppbmRleCBlMmY3MzM5Li45ODBhY2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwCkBAIC05NzMsNyArOTczLDcgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzTGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBp
bnQKICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLm5vZGUoKTsKICAgICAgICAgaWYgKG5v
ZGUgJiYgZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpKQogICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwotICAgICAgICByZXR1cm4gcmVuZGVyZXIu
cG9zaXRpb25Gb3JQb2ludChwb2ludEluTGluZSk7CisgICAgICAgIHJldHVybiByZW5kZXJlci5w
b3NpdGlvbkZvclBvaW50KHBvaW50SW5MaW5lLCBudWxscHRyKTsKICAgICB9CiAgICAgCiAgICAg
Ly8gQ291bGQgbm90IGZpbmQgYSBwcmV2aW91cyBsaW5lLiBUaGlzIG1lYW5zIHdlIG11c3QgYWxy
ZWFkeSBiZSBvbiB0aGUgZmlyc3QgbGluZS4KQEAgLTEwMzEsNyArMTAzMSw3IEBAIFZpc2libGVQ
b3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBv
c2l0aW9uLCBpbnQgbGluCiAgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci5ub2RlKCk7CiAg
ICAgICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKICAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsKLSAgICAgICAgcmV0
dXJuIHJlbmRlcmVyLnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkxpbmUpOworICAgICAgICByZXR1
cm4gcmVuZGVyZXIucG9zaXRpb25Gb3JQb2ludChwb2ludEluTGluZSwgbnVsbHB0cik7CiAgICAg
fQogCiAgICAgLy8gQ291bGQgbm90IGZpbmQgYSBuZXh0IGxpbmUuIFRoaXMgbWVhbnMgd2UgbXVz
dCBhbHJlYWR5IGJlIG9uIHRoZSBsYXN0IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAKaW5kZXggYzlkNWQ0Yy4uODczMTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9z
ZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsCiAgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb247CiAKICAgICBpZiAodGFyZ2V0Tm9kZSAmJiB0
YXJnZXROb2RlLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFy
Z2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgp
KSk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+
cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKSk7CiAgICAgICAg
IGlmIChwb3MuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2li
bGVTZWxlY3Rpb24ocG9zKTsKICAgICAgICAgICAgIG5ld1NlbGVjdGlvbi5leHBhbmRVc2luZ0dy
YW51bGFyaXR5KFdvcmRHcmFudWxhcml0eSk7CkBAIC01NTYsNyArNTU2LDcgQEAgdm9pZCBFdmVu
dEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkT3JMaW5rRnJvbU1vdXNlRXZlbnQoY29uc3QgTW91
c2VFdmVudFdpdGhIaXQKICAgICBpZiAodGFyZ2V0Tm9kZSAmJiB0YXJnZXROb2RlLT5yZW5kZXJl
cigpICYmIG1fbW91c2VEb3duTWF5U3RhcnRTZWxlY3QpIHsKICAgICAgICAgVmlzaWJsZVNlbGVj
dGlvbiBuZXdTZWxlY3Rpb247CiAgICAgICAgIEVsZW1lbnQqIFVSTEVsZW1lbnQgPSByZXN1bHQu
aGl0VGVzdFJlc3VsdCgpLlVSTEVsZW1lbnQoKTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBv
cyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2NhbFBv
aW50KCkpKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyh0YXJnZXROb2RlLT5yZW5kZXJl
cigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCksIG51bGxwdHIpKTsKICAg
ICAgICAgaWYgKHBvcy5pc05vdE51bGwoKSAmJiBwb3MuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNh
dGVkTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihVUkxFbGVtZW50KSkKICAgICAgICAgICAgIG5ld1Nl
bGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShV
UkxFbGVtZW50KTsKIApAQCAtNTkyLDcgKzU5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVNb3VzZVByZXNzRXZlbnRUcmlwbGVDbGljayhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RS
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0
aW9uOwotICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCkpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
cG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoZXZlbnQubG9jYWxQ
b2ludCgpLCBudWxscHRyKSk7CiAgICAgaWYgKHBvcy5pc05vdE51bGwoKSkgewogICAgICAgICBu
ZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHBvcyk7CiAgICAgICAgIG5ld1NlbGVjdGlv
bi5leHBhbmRVc2luZ0dyYW51bGFyaXR5KFBhcmFncmFwaEdyYW51bGFyaXR5KTsKQEAgLTYyNyw3
ICs2MjcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xl
Q2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UgogICAgICAgICB9CiAgICAgfQogCi0g
ICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCkpKTsKKyAgICBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvcyh0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50
LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQog
ICAgICAgICB2aXNpYmxlUG9zID0gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZSh0YXJnZXROb2RlKSwgRE9XTlNUUkVBTSk7CiAgICAgUG9zaXRpb24gcG9zID0gdmlz
aWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwpAQCAtODYwLDcgKzg2MCw3IEBAIHN0YXRpYyBWaXNp
YmxlUG9zaXRpb24gc2VsZWN0aW9uRXh0ZW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyeShjb25z
dCBWaXNpYmxlU2VsCiAgICAgICAgIHRhcmdldE5vZGUgPSBlZGl0YWJsZUVsZW1lbnQ7CiAgICAg
fQogCi0gICAgcmV0dXJuIHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQo
c2VsZWN0aW9uRW5kUG9pbnQpOworICAgIHJldHVybiB0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5w
b3NpdGlvbkZvclBvaW50KHNlbGVjdGlvbkVuZFBvaW50LCBudWxscHRyKTsKIH0KIAogdm9pZCBF
dmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhjb25zdCBIaXRUZXN0UmVz
dWx0JiBoaXRUZXN0UmVzdWx0KQpAQCAtOTA2LDExICs5MDYsMTEgQEAgdm9pZCBFdmVudEhhbmRs
ZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRU
ZXN0UmVzdWwKICAgICAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVudChwb3NpdGlvbkFmdGVyTm9k
ZShyb290VXNlclNlbGVjdEFsbEZvck1vdXNlUHJlc3NOb2RlKS5kb3duc3RyZWFtKENhbkNyb3Nz
RWRpdGluZ0JvdW5kYXJ5KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmVzZXQgYmFzZSBm
b3IgdXNlciBzZWxlY3QgYWxsIHdoZW4gYmFzZSBpcyBpbnNpZGUgdXNlci1zZWxlY3QtYWxsIGFy
ZWEgYW5kIGV4dGVudCA8IGJhc2UuCi0gICAgICAgIGlmIChyb290VXNlclNlbGVjdEFsbEZvck1v
dXNlUHJlc3NOb2RlICYmIGNvbXBhcmVQb3NpdGlvbnModGFyZ2V0LT5yZW5kZXJlcigpLT5wb3Np
dGlvbkZvclBvaW50KGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpKSwgbV9tb3VzZVByZXNzTm9k
ZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChtX2RyYWdTdGFydFBvcykpIDwgMCkKKyAg
ICAgICAgaWYgKHJvb3RVc2VyU2VsZWN0QWxsRm9yTW91c2VQcmVzc05vZGUgJiYgY29tcGFyZVBv
c2l0aW9ucyh0YXJnZXQtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQoaGl0VGVzdFJlc3Vs
dC5sb2NhbFBvaW50KCksIG51bGxwdHIpLCBtX21vdXNlUHJlc3NOb2RlLT5yZW5kZXJlcigpLT5w
b3NpdGlvbkZvclBvaW50KG1fZHJhZ1N0YXJ0UG9zLCBudWxscHRyKSkgPCAwKQogICAgICAgICAg
ICAgbmV3U2VsZWN0aW9uLnNldEJhc2UocG9zaXRpb25BZnRlck5vZGUocm9vdFVzZXJTZWxlY3RB
bGxGb3JNb3VzZVByZXNzTm9kZSkuZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkp
OwogICAgICAgICAKICAgICAgICAgTm9kZSogcm9vdFVzZXJTZWxlY3RBbGxGb3JUYXJnZXQgPSBQ
b3NpdGlvbjo6cm9vdFVzZXJTZWxlY3RBbGxGb3JOb2RlKHRhcmdldCk7Ci0gICAgICAgIGlmIChy
b290VXNlclNlbGVjdEFsbEZvclRhcmdldCAmJiBtX21vdXNlUHJlc3NOb2RlLT5yZW5kZXJlcigp
ICYmIGNvbXBhcmVQb3NpdGlvbnModGFyZ2V0LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50
KGhpdFRlc3RSZXN1bHQubG9jYWxQb2ludCgpKSwgbV9tb3VzZVByZXNzTm9kZS0+cmVuZGVyZXIo
KS0+cG9zaXRpb25Gb3JQb2ludChtX2RyYWdTdGFydFBvcykpIDwgMCkKKyAgICAgICAgaWYgKHJv
b3RVc2VyU2VsZWN0QWxsRm9yVGFyZ2V0ICYmIG1fbW91c2VQcmVzc05vZGUtPnJlbmRlcmVyKCkg
JiYgY29tcGFyZVBvc2l0aW9ucyh0YXJnZXQtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQo
aGl0VGVzdFJlc3VsdC5sb2NhbFBvaW50KCksIG51bGxwdHIpLCBtX21vdXNlUHJlc3NOb2RlLT5y
ZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KG1fZHJhZ1N0YXJ0UG9zLCBudWxscHRyKSkgPCAw
KQogICAgICAgICAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVudChwb3NpdGlvbkJlZm9yZU5vZGUo
cm9vdFVzZXJTZWxlY3RBbGxGb3JUYXJnZXQpLnVwc3RyZWFtKENhbkNyb3NzRWRpdGluZ0JvdW5k
YXJ5KSk7CiAgICAgICAgIGVsc2UgaWYgKHJvb3RVc2VyU2VsZWN0QWxsRm9yVGFyZ2V0ICYmIG1f
bW91c2VQcmVzc05vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uc2V0
RXh0ZW50KHBvc2l0aW9uQWZ0ZXJOb2RlKHJvb3RVc2VyU2VsZWN0QWxsRm9yVGFyZ2V0KS5kb3du
c3RyZWFtKENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CkBAIC05ODIsNyArOTgyLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KGNvbnN0IE1vdXNlRXZlbnRX
aXRoSGl0VGVzdFJlc3VsdHMmIGUKICAgICAgICAgTm9kZSogbm9kZSA9IGV2ZW50LnRhcmdldE5v
ZGUoKTsKICAgICAgICAgYm9vbCBjYXJldEJyb3dzaW5nID0gbV9mcmFtZS5zZXR0aW5ncygpLmNh
cmV0QnJvd3NpbmdFbmFibGVkKCk7CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUtPnJlbmRlcmVy
KCkgJiYgKGNhcmV0QnJvd3NpbmcgfHwgbm9kZS0+aGFzRWRpdGFibGVTdHlsZSgpKSkgewotICAg
ICAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyA9IG5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9u
Rm9yUG9pbnQoZXZlbnQubG9jYWxQb2ludCgpKTsKKyAgICAgICAgICAgIFZpc2libGVQb3NpdGlv
biBwb3MgPSBub2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9p
bnQoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0
aW9uKHBvcyk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCAyMzc0NTFlLi45
ZGQ3OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtODUzLDcgKzg1Myw3IEBAIFZpc2libGVQ
b3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZy
YW1lUG9pbnQpCiAgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0
LmxvY2FsUG9pbnQoKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSByZW5kZXJl
ci0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKTsKICAgICBp
ZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAgICAgdmlzaWJsZVBvcyA9IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShub2RlKTsKICAgICByZXR1cm4gdmlzaWJsZVBvczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGNmNjIyMGMuLjY2N2EzMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjQxMiw2ICsyNDEy
LDEyIEBAIEdhcFJlY3RzIFJlbmRlckJsb2NrOjpzZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiBy
b290QmxvY2ssIGNvbnN0IExheW91dFBvaW50JiByCiAgICAgICAgIGxhc3RMb2dpY2FsUmlnaHQg
PSBsb2dpY2FsUmlnaHRTZWxlY3Rpb25PZmZzZXQocm9vdEJsb2NrLCBsb2dpY2FsSGVpZ2h0KCks
IGNhY2hlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CisgICAgCisgICAgaWYgKHBh
aW50SW5mbyAmJiBwYWludEluZm8tPnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50ICYmIHBhaW50SW5m
by0+cGFpbnRDb250YWluZXItPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgY3VycmVudCBvYmplY3QgaXMgYWN0dWFsbHkgZmxvd2VkIGludG8gdGhlIHJl
Z2lvbiBiZWluZyBwYWludGVkLgorICAgICAgICBpZiAoIXRvUmVuZGVyRmxvd1RocmVhZChwYWlu
dEluZm8tPnBhaW50Q29udGFpbmVyKS0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdpb24odGhp
cywgcGFpbnRJbmZvLT5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KIAogICAgIGlmIChjaGlsZHJlbklubGluZSgpKQogICAgICAgICBy
ZXN1bHQgPSBpbmxpbmVTZWxlY3Rpb25HYXBzKHJvb3RCbG9jaywgcm9vdEJsb2NrUGh5c2ljYWxQ
b3NpdGlvbiwgb2Zmc2V0RnJvbVJvb3RCbG9jaywgbGFzdExvZ2ljYWxUb3AsIGxhc3RMb2dpY2Fs
TGVmdCwgbGFzdExvZ2ljYWxSaWdodCwgY2FjaGUsIHBhaW50SW5mbyk7CkBAIC0yOTQ3LDYgKzI5
NTMsMTUgQEAgYm9vbCBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UKICAgICBMYXlvdXRQb2ludCBhZGp1c3Rl
ZExvY2F0aW9uKGFjY3VtdWxhdGVkT2Zmc2V0ICsgbG9jYXRpb24oKSk7CiAgICAgTGF5b3V0U2l6
ZSBsb2NhbE9mZnNldCA9IHRvTGF5b3V0U2l6ZShhZGp1c3RlZExvY2F0aW9uKTsKIAorICAgIC8v
IElmIHdlIGFyZSBub3cgc2VhcmNoaW5nIGluc2lkZSBhIHJlZ2lvbiwgbWFrZSBzdXJlIHRoaXMg
ZWxlbWVudAorICAgIC8vIGlzIGJlaW5nIGZyYWdtZW50ZWQgaW50byB0aGlzIHJlZ2lvbi4KKyAg
ICBpZiAobG9jYXRpb25JbkNvbnRhaW5lci5yZWdpb24oKSkgeworICAgICAgICBSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkID0gZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOworICAgICAg
ICBBU1NFUlQoZmxvd1RocmVhZCk7CisgICAgICAgIGlmICghZmxvd1RocmVhZC0+b2JqZWN0U2hv
dWxkUGFpbnRJbkZsb3dSZWdpb24odGhpcywgbG9jYXRpb25JbkNvbnRhaW5lci5yZWdpb24oKSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKCFpc1JlbmRlclZp
ZXcoKSkgewogICAgICAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIGRvIGFueXRoaW5nIGF0IGFs
bC4KICAgICAgICAgTGF5b3V0UmVjdCBvdmVyZmxvd0JveCA9IHZpc3VhbE92ZXJmbG93UmVjdCgp
OwpAQCAtMzE0MCw3ICszMTU1LDcgQEAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRS
ZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVuZGVyQmxvY2smIHBhcmVudCwKICAgICAvLyBJ
ZiB0aGlzIGlzIGFuIGFub255bW91cyByZW5kZXJlciwgd2UganVzdCByZWN1ciBub3JtYWxseQog
ICAgIEVsZW1lbnQqIGNoaWxkRWxlbWVudD0gY2hpbGQubm9uUHNldWRvRWxlbWVudCgpOwogICAg
IGlmICghY2hpbGRFbGVtZW50KQotICAgICAgICByZXR1cm4gY2hpbGQucG9zaXRpb25Gb3JQb2lu
dChwb2ludEluQ2hpbGRDb29yZGluYXRlcyk7CisgICAgICAgIHJldHVybiBjaGlsZC5wb3NpdGlv
bkZvclBvaW50KHBvaW50SW5DaGlsZENvb3JkaW5hdGVzLCBudWxscHRyKTsKIAogICAgIC8vIE90
aGVyd2lzZSwgZmlyc3QgbWFrZSBzdXJlIHRoYXQgdGhlIGVkaXRhYmlsaXR5IG9mIHRoZSBwYXJl
bnQgYW5kIGNoaWxkIGFncmVlLgogICAgIC8vIElmIHRoZXkgZG9uJ3QgYWdyZWUsIHRoZW4gd2Ug
cmV0dXJuIGEgdmlzaWJsZSBwb3NpdGlvbiBqdXN0IGJlZm9yZSBvciBhZnRlciB0aGUgY2hpbGQK
QEAgLTMxNTAsNyArMzE2NSw3IEBAIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50UmVz
cGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKFJlbmRlckJsb2NrJiBwYXJlbnQsCiAKICAgICAvLyBJ
ZiB3ZSBjYW4ndCBmaW5kIGFuIGFuY2VzdG9yIHRvIGNoZWNrIGVkaXRhYmlsaXR5IG9uLCBvciBl
ZGl0YWJpbGl0eSBpcyB1bmNoYW5nZWQsIHdlIHJlY3VyIGxpa2Ugbm9ybWFsCiAgICAgaWYgKGlz
RWRpdGluZ0JvdW5kYXJ5KGFuY2VzdG9yLCBjaGlsZCkpCi0gICAgICAgIHJldHVybiBjaGlsZC5w
b3NpdGlvbkZvclBvaW50KHBvaW50SW5DaGlsZENvb3JkaW5hdGVzKTsKKyAgICAgICAgcmV0dXJu
IGNoaWxkLnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkNoaWxkQ29vcmRpbmF0ZXMsIG51bGxwdHIp
OwogICAgIAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBPbiBpT1Mgd2Ugd2FudCB0byBjb25z
dHJhaW4gVmlzaWJsZVBvc2l0aW9ucyB0byB0aGUgZWRpdGFibGUgcmVnaW9uIGNsb3Nlc3QgdG8g
dGhlIGlucHV0IHBvc2l0aW9uLCBzbwpAQCAtMzE2OSw3ICszMTg0LDcgQEAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMoUmVuZGVyQmxv
Y2smIHBhcmVudCwKICAgICByZXR1cm4gYW5jZXN0b3ItPmNyZWF0ZVZpc2libGVQb3NpdGlvbihj
aGlsZEVsZW1lbnQtPm5vZGVJbmRleCgpICsgMSwgVVBTVFJFQU0pOwogfQogCi1WaXNpYmxlUG9z
aXRpb24gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29u
c3QgTGF5b3V0UG9pbnQmKQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZv
clBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVy
UmVnaW9uKikKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CkBAIC0zMTgxLDcgKzMxOTYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXND
aGlsZEhpdFRlc3RDYW5kaWRhdGUoY29uc3QgUmVuZGVyQm94JiBib3gpCiB9CiAKIC8vIFZhbGlk
IGNhbmRpZGF0ZXMgaW4gYSBGbG93VGhyZWFkIG11c3QgYmUgcmVuZGVyZWQgYnkgdGhlIHJlZ2lv
bi4KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZShjb25zdCBSZW5k
ZXJCb3gmIGJveCwgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IExheW91dFBvaW50JiBwb2lu
dCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZShjb25zdCBSZW5k
ZXJCb3gmIGJveCwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24sIGNvbnN0IExheW91dFBvaW50
JiBwb2ludCkKIHsKICAgICBpZiAoIWlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKGJveCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMxOTEsMTAgKzMyMDYsMTAgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzQ2hpbGRIaXRUZXN0Q2FuZGlkYXRlKGNvbnN0IFJlbmRlckJveCYgYm94LCBSZW5kZXJS
ZWdpb24qIHIKICAgICByZXR1cm4gYmxvY2sucmVnaW9uQXRCbG9ja09mZnNldChwb2ludC55KCkp
ID09IHJlZ2lvbjsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJC
bG9jazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJl
bmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIGlmIChpc1RhYmxlKCkpCi0gICAgICAgIHJldHVy
biBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAgICAgICByZXR1cm4gUmVu
ZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOwogCiAgICAgaWYgKGlzUmVw
bGFjZWQoKSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyB3cm9uZyB3aGVuIHRoZSBv
YmplY3QncyB3cml0aW5nLW1vZGUgZG9lc24ndCBtYXRjaCB0aGUgbGluZSdzIHdyaXRpbmctbW9k
ZS4KQEAgLTMyMTQsMTAgKzMyMjksMTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrOjpw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAgICAgcG9pbnRJ
bkxvZ2ljYWxDb250ZW50cyA9IHBvaW50SW5Mb2dpY2FsQ29udGVudHMudHJhbnNwb3NlZFBvaW50
KCk7CiAKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9u
Rm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4ocG9pbnRJbkxvZ2ljYWxDb250ZW50cyk7CisgICAg
ICAgIHJldHVybiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKHBvaW50SW5Mb2dp
Y2FsQ29udGVudHMsIHJlZ2lvbik7CiAKLSAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHJlZ2lv
bkF0QmxvY2tPZmZzZXQocG9pbnRJbkxvZ2ljYWxDb250ZW50cy55KCkpOwogICAgIFJlbmRlckJv
eCogbGFzdENhbmRpZGF0ZUJveCA9IGxhc3RDaGlsZEJveCgpOworCisgICAgaWYgKCFyZWdpb24p
CisgICAgICAgIHJlZ2lvbiA9IHJlZ2lvbkF0QmxvY2tPZmZzZXQocG9pbnRJbkxvZ2ljYWxDb250
ZW50cy55KCkpOworCiAgICAgd2hpbGUgKGxhc3RDYW5kaWRhdGVCb3ggJiYgIWlzQ2hpbGRIaXRU
ZXN0Q2FuZGlkYXRlKCpsYXN0Q2FuZGlkYXRlQm94LCByZWdpb24sIHBvaW50SW5Mb2dpY2FsQ29u
dGVudHMpKQogICAgICAgICBsYXN0Q2FuZGlkYXRlQm94ID0gbGFzdENhbmRpZGF0ZUJveC0+cHJl
dmlvdXNTaWJsaW5nQm94KCk7CiAKQEAgLTMyMzksNyArMzI1Nyw3IEBAIFZpc2libGVQb3NpdGlv
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQp
CiAgICAgfQogCiAgICAgLy8gV2Ugb25seSBnZXQgaGVyZSBpZiB0aGVyZSBhcmUgbm8gaGl0IHRl
c3QgY2FuZGlkYXRlIGNoaWxkcmVuIGJlbG93IHRoZSBjbGljay4KLSAgICByZXR1cm4gUmVuZGVy
Qm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3Np
dGlvbkZvclBvaW50KHBvaW50LCByZWdpb24pOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpvZmZz
ZXRGb3JDb250ZW50cyhMYXlvdXRQb2ludCYgb2Zmc2V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCA0MmY2NTE1Li5mNDJkNTc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMTgzLDcgKzE4Myw3IEBAIHB1YmxpYzoKIAog
ICAgIExheW91dFVuaXQgdGV4dEluZGVudE9mZnNldCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKICAgICAKICAgICAv
LyBCbG9jayBmbG93cyBzdWJjbGFzcyBhdmFpbGFibGVXaWR0aCB0byBoYW5kbGUgbXVsdGkgY29s
dW1uIGxheW91dCAoc2hyaW5raW5nIHRoZSB3aWR0aCBhdmFpbGFibGUgdG8gY2hpbGRyZW4gd2hl
biBsYXlpbmcgb3V0LikKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdp
ZHRoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CkBAIC01NDMsNyArNTQzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkanVzdFBvaW50VG9Db2x1bW5Db250ZW50cyhMYXlvdXRQb2ludCYpIGNvbnN0
OwogICAgIAogICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24gd2hl
biBhbGwgY2FsbGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdwotICAgIHZpcnR1YWwg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3Qg
TGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBv
aW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVn
aW9uKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUNvbHVtbkNvdW50QW5kV2lkdGgoKTsK
ICAgICB2b2lkIG1ha2VDaGlsZHJlbkFub255bW91c0NvbHVtbkJsb2NrcyhSZW5kZXJPYmplY3Qq
IGJlZm9yZUNoaWxkLCBSZW5kZXJCbG9jayogbmV3QmxvY2tCb3gsIFJlbmRlck9iamVjdCogbmV3
Q2hpbGQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApp
bmRleCAxZDNlMzE0Li4xMTNkYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcApAQCAtMzA5Miw3ICszMDkyLDcgQEAgUG9zaXRpb24gUmVuZGVyQmxv
Y2tGbG93Ojpwb3NpdGlvbkZvckJveChJbmxpbmVCb3ggKmJveCwgYm9vbCBzdGFydCkgY29uc3QK
ICAgICByZXR1cm4gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGJveC0+cmVuZGVyZXIoKS5u
b25Qc2V1ZG9Ob2RlKCksIHN0YXJ0ID8gdGV4dEJveC0+c3RhcnQoKSA6IHRleHRCb3gtPnN0YXJ0
KCkgKyB0ZXh0Qm94LT5sZW4oKSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zs
b3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0UG9pbnQm
IHBvaW50SW5Mb2dpY2FsQ29udGVudHMpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93
Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiBw
b2ludEluTG9naWNhbENvbnRlbnRzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAg
ICBBU1NFUlQoY2hpbGRyZW5JbmxpbmUoKSk7CiAKQEAgLTMxMDksNiArMzEwOSw5IEBAIFZpc2li
bGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hp
bGRyZW4oY29uc3QgTGF5b3V0CiAgICAgUm9vdElubGluZUJveCogZmlyc3RSb290Qm94V2l0aENo
aWxkcmVuID0gMDsKICAgICBSb290SW5saW5lQm94KiBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbiA9
IDA7CiAgICAgZm9yIChSb290SW5saW5lQm94KiByb290ID0gZmlyc3RSb290Qm94KCk7IHJvb3Q7
IHJvb3QgPSByb290LT5uZXh0Um9vdEJveCgpKSB7CisgICAgICAgIGlmIChyZWdpb24gJiYgcm9v
dC0+Y29udGFpbmluZ1JlZ2lvbigpICE9IHJlZ2lvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CiAgICAgICAgIGlmICghcm9vdC0+Zmlyc3RMZWFmQ2hpbGQoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICBpZiAoIWZpcnN0Um9vdEJveFdpdGhDaGlsZHJlbikKQEAgLTMxNjUsNyAr
MzE2OCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9p
bnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0CiAgICAgICAgICAgICBwb2ludCA9IHBv
aW50LnRyYW5zcG9zZWRQb2ludCgpOwogICAgICAgICBpZiAoY2xvc2VzdEJveC0+cmVuZGVyZXIo
KS5pc1JlcGxhY2VkKCkpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25Gb3JQb2ludFJlc3Bl
Y3RpbmdFZGl0aW5nQm91bmRhcmllcygqdGhpcywgdG9SZW5kZXJCb3goY2xvc2VzdEJveC0+cmVu
ZGVyZXIoKSksIHBvaW50KTsKLSAgICAgICAgcmV0dXJuIGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCku
cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CisgICAgICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5k
ZXJlcigpLnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIG51bGxwdHIpOwogICAgIH0KIAogICAgIGlm
IChsYXN0Um9vdEJveFdpdGhDaGlsZHJlbikgewpAQCAtMzE4MiwxMSArMzE4NSwxMSBAQCBWaXNp
YmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNo
aWxkcmVuKGNvbnN0IExheW91dAogICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwg
RE9XTlNUUkVBTSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9ja0Zsb3c6OnBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQorVmlzaWJsZVBvc2l0aW9uIFJl
bmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIGlmIChhdXRvIGZyYWdtZW50ID0g
cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQoKSkKLSAgICAgICAgcmV0dXJuIGZyYWdtZW50LT5wb3Np
dGlvbkZvclBvaW50KHBvaW50KTsKLSAgICByZXR1cm4gUmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9y
UG9pbnQocG9pbnQpOworICAgICAgICByZXR1cm4gZnJhZ21lbnQtPnBvc2l0aW9uRm9yUG9pbnQo
cG9pbnQsIHJlZ2lvbik7CisgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50
KHBvaW50LCByZWdpb24pOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaAppbmRleCAxYWIzY2VmLi5mYmJhNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC0yODUsNyArMjg1LDcgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUxpbmVzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVPdmVyZmxvdyhMYXlvdXRVbml0IG9sZENsaWVudEFmdGVyRWRnZSwgYm9vbCByZWNv
bXB1dGVGbG9hdHMgPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
LCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVtb3ZlRmxvYXRp
bmdPYmplY3RzKCk7CiAgICAgdm9pZCBtYXJrQWxsRGVzY2VuZGFudHNXaXRoRmxvYXRzRm9yTGF5
b3V0KFJlbmRlckJveCogZmxvYXRUb1JlbW92ZSA9IG51bGxwdHIsIGJvb2wgaW5MYXlvdXQgPSB0
cnVlKTsKQEAgLTUxMCw3ICs1MTAsNyBAQCBwcml2YXRlOgogICAgICAgICBMYXlvdXRVbml0JiBs
YXN0TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYgbGFzdExvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBs
YXN0TG9naWNhbFJpZ2h0LCBjb25zdCBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzJiwgY29u
c3QgUGFpbnRJbmZvKikgb3ZlcnJpZGU7CiAgICAgCiAgICAgUG9zaXRpb24gcG9zaXRpb25Gb3JC
b3goSW5saW5lQm94KiwgYm9vbCBzdGFydCA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMsIGNvbnN0IFJlbmRlclJlZ2lvbiop
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNo
aWxkcmVuKFZlY3RvcjxJbnRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlv
bmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Kikgb3ZlcnJpZGU7CiAKIC8v
IEZJWE1FLUJMT0NLRkxPVzogVGhlc2UgbWV0aG9kcyBoYXZlIGltcGxlbWVudGF0aW9ucyBpbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzMDgwYTdjLi4wZmNlZjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDEyOSw3ICs0MTI5
LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0KElubGluZUJveCogYm94
LCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQKICAgICByZXR1cm4gcmVjdDsKIH0KIAotVmlz
aWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAg
ICAgLy8gbm8gY2hpbGRyZW4uLi5yZXR1cm4gdGhpcyByZW5kZXIgb2JqZWN0J3MgZWxlbWVudCwg
aWYgdGhlcmUgaXMgb25lLCBhbmQgb2Zmc2V0IDAKICAgICBpZiAoIWZpcnN0Q2hpbGQoKSkKQEAg
LTQxNTYsNiArNDE1NiwxMyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICBmb3IgKFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0ID0gZmlyc3RDaGlsZCgpOyByZW5kZXJPYmplY3Q7IHJlbmRlck9iamVjdCA9
IHJlbmRlck9iamVjdC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoIXJlbmRlck9iamVj
dC0+aXNCb3goKSkKICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChpc1JlbmRl
ckZsb3dUaHJlYWQoKSkgeworICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbik7CisgICAgICAgICAg
ICBpZiAoIXRvUmVuZGVyRmxvd1RocmVhZCh0aGlzKS0+b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dS
ZWdpb24ocmVuZGVyT2JqZWN0LCByZWdpb24pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKICAgICAgICAgUmVuZGVyQm94KiByZW5kZXJlciA9IHRvUmVuZGVyQm94KHJl
bmRlck9iamVjdCk7CiAKICAgICAgICAgaWYgKCghcmVuZGVyZXItPmZpcnN0Q2hpbGQoKSAmJiAh
cmVuZGVyZXItPmlzSW5saW5lKCkgJiYgIXJlbmRlcmVyLT5pc1JlbmRlckJsb2NrRmxvdygpICkK
QEAgLTQxNjksOCArNDE3Niw4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCb3g6OnBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgICAgICAKICAgICAgICAgaWYg
KHBvaW50LngoKSA8PSByaWdodCAmJiBwb2ludC54KCkgPj0gbGVmdCAmJiBwb2ludC55KCkgPD0g
dG9wICYmIHBvaW50LnkoKSA+PSBib3R0b20pIHsKICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+
aXNUYWJsZVJvdygpKQotICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9zaXRpb25G
b3JQb2ludChwb2ludCArIGFkanVzdGVkUG9pbnQgLSByZW5kZXJlci0+bG9jYXRpb25PZmZzZXQo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQg
LSByZW5kZXJlci0+bG9jYXRpb25PZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KHBvaW50ICsgYWRqdXN0ZWRQb2ludCAtIHJlbmRlcmVy
LT5sb2NhdGlvbk9mZnNldCgpLCByZWdpb24pOworICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVy
LT5wb3NpdGlvbkZvclBvaW50KHBvaW50IC0gcmVuZGVyZXItPmxvY2F0aW9uT2Zmc2V0KCksIHJl
Z2lvbik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGaW5kIHRoZSBkaXN0YW5jZSBmcm9tICh4
LCB5KSB0byB0aGUgYm94LiAgU3BsaXQgdGhlIHNwYWNlIGFyb3VuZCB0aGUgYm94IGludG8gOCBw
aWVjZXMKQEAgLTQyMDcsNyArNDIxNCw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCb3g6OnBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIH0KICAgICAKICAg
ICBpZiAoY2xvc2VzdFJlbmRlcmVyKQotICAgICAgICByZXR1cm4gY2xvc2VzdFJlbmRlcmVyLT5w
b3NpdGlvbkZvclBvaW50KGFkanVzdGVkUG9pbnQgLSBjbG9zZXN0UmVuZGVyZXItPmxvY2F0aW9u
T2Zmc2V0KCkpOworICAgICAgICByZXR1cm4gY2xvc2VzdFJlbmRlcmVyLT5wb3NpdGlvbkZvclBv
aW50KGFkanVzdGVkUG9pbnQgLSBjbG9zZXN0UmVuZGVyZXItPmxvY2F0aW9uT2Zmc2V0KCksIHJl
Z2lvbik7CiAgICAgCiAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUobm9uUHNldWRvRWxlbWVudCgpKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMTIxODFlNi4uMjk4ZDA5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaApAQCAtNTEyLDcgKzUxMiw3IEBAIHB1YmxpYzoKIAogICAgIExh
eW91dFJlY3QgbWFza0NsaXBSZWN0KCk7CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCiAgICAgUmVuZGVyQmxvY2tGbG93KiBvdXRl
cm1vc3RCbG9ja0NvbnRhaW5pbmdGbG9hdGluZ09iamVjdCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCBlM2U5
YTllLi44MmVlMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFJlbmRlckZp
bGVVcGxvYWRDb250cm9sOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgc2V0
UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9u
IFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JikKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAppbmRleCA3YzM1YTQ4Li4xZDVhNGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2wuaApAQCAtNTcsNyArNTcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1heEZpbGVuYW1lV2lk
dGgoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWaXNpYmxl
UG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRl
clJlZ2lvbiopIG92ZXJyaWRlOwogCiAgICAgSFRNTElucHV0RWxlbWVudCogdXBsb2FkQnV0dG9u
KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5k
ZXggNDJlODZiNy4uOTJmYTI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKQEAgLTg0NSwxNCArODQ1LDE0IEBAIGJvb2wgUmVuZGVySW5saW5lOjpoaXRUZXN0
Q3VsbGVkSW5saW5lKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpwb3Np
dGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK1Zpc2libGVQb3NpdGlvbiBS
ZW5kZXJJbmxpbmU6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBj
b25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICAvLyBGSVhNRTogRG9lcyBub3QgZGVh
bCB3aXRoIHJlbGF0aXZlIG9yIHN0aWNreSBwb3NpdGlvbmVkIGlubGluZXMgKHNob3VsZCBpdD8p
CiAgICAgUmVuZGVyQmxvY2sqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7CiAgICAgaWYgKGZpcnN0
TGluZUJveCgpKSB7CiAgICAgICAgIC8vIFRoaXMgaW5saW5lIGFjdHVhbGx5IGhhcyBhIGxpbmUg
Ym94LiAgV2UgbXVzdCBoYXZlIGNsaWNrZWQgaW4gdGhlIGJvcmRlci9wYWRkaW5nIG9mIG9uZSBv
ZiB0aGVzZSBib3hlcy4gIFdlCiAgICAgICAgIC8vIHNob3VsZCB0cnkgdG8gZmluZCBhIHJlc3Vs
dCBieSBhc2tpbmcgb3VyIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgICAgIHJldHVybiBjYi0+cG9z
aXRpb25Gb3JQb2ludChwb2ludCk7CisgICAgICAgIHJldHVybiBjYi0+cG9zaXRpb25Gb3JQb2lu
dChwb2ludCwgcmVnaW9uKTsKICAgICB9CiAKICAgICAvLyBUcmFuc2xhdGUgdGhlIGNvb3JkcyBm
cm9tIHRoZSBwcmUtYW5vbnltb3VzIGJsb2NrIHRvIHRoZSBwb3N0LWFub255bW91cyBibG9jay4K
QEAgLTg2MSwxMSArODYxLDExIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJJbmxpbmU6OnBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIHdoaWxlIChjKSB7CiAg
ICAgICAgIFJlbmRlckJveCogY29udEJsb2NrID0gYy0+aXNJbmxpbmUoKSA/IGMtPmNvbnRhaW5p
bmdCbG9jaygpIDogdG9SZW5kZXJCbG9jayhjKTsKICAgICAgICAgaWYgKGMtPmlzSW5saW5lKCkg
fHwgYy0+Zmlyc3RDaGlsZCgpKQotICAgICAgICAgICAgcmV0dXJuIGMtPnBvc2l0aW9uRm9yUG9p
bnQocGFyZW50QmxvY2tQb2ludCAtIGNvbnRCbG9jay0+bG9jYXRpb25PZmZzZXQoKSk7CisgICAg
ICAgICAgICByZXR1cm4gYy0+cG9zaXRpb25Gb3JQb2ludChwYXJlbnRCbG9ja1BvaW50IC0gY29u
dEJsb2NrLT5sb2NhdGlvbk9mZnNldCgpLCByZWdpb24pOwogICAgICAgICBjID0gdG9SZW5kZXJC
bG9jayhjKS0+aW5saW5lRWxlbWVudENvbnRpbnVhdGlvbigpOwogICAgIH0KICAgICAKLSAgICBy
ZXR1cm4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAg
IHJldHVybiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwgcmVn
aW9uKTsKIH0KIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaAppbmRleCA2ZWNjYzRhLi41YzZlZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MgPSBBcHBs
eUNvbnRhaW5lckZsaXAsIGJvb2wqIHdhc0ZpeGVkID0gMCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlN
YXAmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIExheW91
dFJlY3QgZnJhbWVSZWN0Rm9yU3RpY2t5UG9zaXRpb25pbmcoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiBsaW5lc0JvdW5kaW5nQm94KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCBhODMxZTQ3Li4yYThiNzUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMTIyLDcgKzEy
Miw3IEBAIGJvb2wgUmVuZGVyTGluZUJyZWFrOjpjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyTGluZUJyZWFrOjpw
b3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JikKK1Zpc2libGVQb3NpdGlvbiBSZW5k
ZXJMaW5lQnJlYWs6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJSZWdpb24qKQogewogICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgRE9X
TlNUUkVBTSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgK
aW5kZXggNTVmNGY1OS4uMDJiMTc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJy
aWRlIGZpbmFsIHsgfQogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJS
ZWdpb24qKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNldCgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1u
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAKaW5kZXggNjhjMDJhNC4uZDg1YTQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCkBAIC04NjcsNyArODY3LDcgQEAgdm9pZCBS
ZW5kZXJNdWx0aUNvbHVtblNldDo6YWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKQogICAgICAgICBh
ZGRWaXN1YWxPdmVyZmxvdyhsYXN0UmVjdCk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJN
dWx0aUNvbHVtblNldDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcGh5c2lj
YWxQb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJNdWx0aUNvbHVtblNldDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcGh5c2ljYWxQb2ludCwgY29uc3QgUmVuZGVyUmVn
aW9uKikKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggY29sdW1ucyB3ZSBpbnRlcnNlY3QuCiAg
ICAgTGF5b3V0VW5pdCBjb2xHYXAgPSBjb2x1bW5HYXAoKTsKQEAgLTkxNCw3ICs5MTQsNyBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBoeXNpYwogICAgICAgICAgICAgICAgIExheW91dFJlY3QgcG9ydGlv
biA9IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpOwogICAgICAgICAgICAgICAgIGZsaXBGb3JXcml0
aW5nTW9kZShwb3J0aW9uKTsKICAgICAgICAgICAgICAgICBwb2ludC5tb3ZlKGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBMYXlvdXRVbml0KCkgOiBwb3J0aW9uLngoKSwgaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IHBvcnRpb24ueSgpIDogTGF5b3V0VW5pdCgpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnBvc2l0aW9uRm9yUG9pbnQocG9p
bnQpOworICAgICAgICAgICAgICAgIHJldHVybiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cG9z
aXRpb25Gb3JQb2ludChwb2ludCwgdGhpcyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IC8vIE1vdmUgdG8gdGhlIG5leHQgcG9zaXRpb24uCkBAIC05NTEsNyArOTUxLDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlck11bHRpQ29sdW1uU2V0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwaHlzaWMKICAgICAgICAgICAgICAgICBmbGlwRm9yV3JpdGluZ01vZGUocG9y
dGlvbik7CiAgICAgICAgICAgICAgICAgcG9pbnQubW92ZShpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gTGF5b3V0VW5pdCgpIDogcG9ydGlvbi54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBwb3J0aW9uLnkoKSA6IExheW91dFVuaXQoKSk7CiAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wb3NpdGlvbkZvclBv
aW50KHBvaW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFk
KCktPnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIHRoaXMpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaAppbmRleCA5NTY3NjFjLi4zNjM0ZmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5T
ZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQu
aApAQCAtMTQyLDcgKzE0Miw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
UmVnaW9uQm91bmRzRnJvbUZsb3dUaHJlYWRQb3J0aW9uUmVjdChjb25zdCBMYXlvdXRQb2ludCYg
bGF5ZXJPZmZzZXQsIExheW91dFJlY3QmIHJlZ2lvbkJvdW5kcykgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggY2ZiYWM1Ni4uZmZjMGVmNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yMDAxLDcgKzIw
MDEsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAgICAgZGVsZXRlIHRoaXM7CiB9
CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmKQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6cG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbihjYXJldE1pbk9mZnNldCgpLCBET1dOU1RSRUFNKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBlNTgwM2UwLi42
M2YzYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01OSw2
ICs1OSw3IEBAIGNsYXNzIFJlbmRlckdlb21ldHJ5TWFwOwogY2xhc3MgUmVuZGVyTGF5ZXI7CiBj
bGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFk
OworY2xhc3MgUmVuZGVyUmVnaW9uOwogY2xhc3MgUmVuZGVyVGhlbWU7CiBjbGFzcyBTZWxlY3Rp
b25TdWJ0cmVlUm9vdDsKIGNsYXNzIFRyYW5zZm9ybVN0YXRlOwpAQCAtNjQ4LDcgKzY0OSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0UmVz
dWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJS
ZWdpb24qKTsKICAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKGludCBv
ZmZzZXQsIEVBZmZpbml0eSkgY29uc3Q7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwCmluZGV4IDA4OGNhMWUuLjNhNTZiODEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCkBAIC0xMDQsMTIgKzEwNCwxMiBAQCBM
YXlvdXRQb2ludCBSZW5kZXJSZWdpb246Om1hcFJlZ2lvblBvaW50SW50b0Zsb3dUaHJlYWRDb29y
ZGluYXRlcyhjb25zdCBMYXlvdXRQbwogICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gcG9pbnRJblRocmVhZCA6IHBvaW50SW5UaHJlYWQudHJhbnNwb3NlZFBvaW50KCk7CiB9
CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJSZWdpb246OnBvc2l0aW9uRm9yUG9pbnQoY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50KQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlZ2lvbjo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiog
cmVnaW9uKQogewogICAgIGlmICghaXNWYWxpZCgpIHx8ICFtX2Zsb3dUaHJlYWQtPmZpcnN0Q2hp
bGQoKSkgLy8gY2hlY2tpbmcgZm9yIGVtcHR5IHJlZ2lvbiBibG9ja3MuCi0gICAgICAgIHJldHVy
biBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CisgICAgICAgIHJldHVybiBS
ZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwgcmVnaW9uKTsKIAotICAgIHJldHVy
biBtX2Zsb3dUaHJlYWQtPnBvc2l0aW9uRm9yUG9pbnQobWFwUmVnaW9uUG9pbnRJbnRvRmxvd1Ro
cmVhZENvb3JkaW5hdGVzKHBvaW50KSk7CisgICAgcmV0dXJuIG1fZmxvd1RocmVhZC0+cG9zaXRp
b25Gb3JQb2ludChtYXBSZWdpb25Qb2ludEludG9GbG93VGhyZWFkQ29vcmRpbmF0ZXMocG9pbnQp
LCB0aGlzKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJSZWdpb246OnBhZ2VMb2dpY2FsV2lkdGgo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IDI1Yzlm
YWMuLjE0ZDRhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJS
ZWdpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAg
LTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxk
cmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2Vk
LmNwcAppbmRleCAyZDFmYWQ3Li5hZjc1ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSZXBsYWNlZC5jcHAKQEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIFJlbmRlclJlcGxh
Y2VkOjpjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgc2V0UHJlZmVycmVkTG9n
aWNhbFdpZHRoc0RpcnR5KGZhbHNlKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxh
Y2VkOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK1Zpc2libGVQ
b3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGNvZGUgaXMgYnVnZ3kgaWYgdGhlIHJlcGxhY2VkIGVsZW1lbnQgaXMgcmVsYXRpdmUgcG9z
aXRpb25lZC4KICAgICBJbmxpbmVCb3gqIGJveCA9IGlubGluZUJveFdyYXBwZXIoKTsKQEAgLTU0
MSw3ICs1NDEsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgICAgICByZXR1cm4gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uKDEsIERPV05TVFJFQU0pOwogICAgIH0KIAotICAgIHJldHVybiBSZW5kZXJC
b3g6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAgIHJldHVybiBSZW5kZXJCb3g6OnBvc2l0
aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lvbik7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyUmVwbGFj
ZWQ6OnNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDEwZTBjMjcuLjJhYmU2MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBAIC03OSw3ICs3OSw3
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlIGZpbmFsOwogICAgIAogICAgIHZpcnR1YWwgYm9v
bCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA0Nzk3OTMwLi42M2Y1
MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC00MzEsNyAr
NDMxLDcgQEAgVmVjdG9yPEZsb2F0UXVhZD4gUmVuZGVyVGV4dDo6YWJzb2x1dGVRdWFkc0ZvclJh
bmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQKICAgICByZXR1cm4gbV9saW5lQm94ZXMu
YWJzb2x1dGVRdWFkc0ZvclJhbmdlKCp0aGlzLCBzdGFydCwgZW5kLCB1c2VTZWxlY3Rpb25IZWln
aHQsIHdhc0ZpeGVkKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQorVmlzaWJsZVBvc2l0aW9uIFJlbmRl
clRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBS
ZW5kZXJSZWdpb24qKQogewogICAgIGVuc3VyZUxpbmVCb3hlcygpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCA1M2ZiZmVmLi5mOTE0Nzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogCiAgICAg
VmVjdG9yPEZsb2F0UXVhZD4gYWJzb2x1dGVRdWFkc0NsaXBwZWRUb0VsbGlwc2lzKCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJy
aWRlOwogCiAgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3RleHQuaW1wbCgpLT5p
czhCaXQoKTsgfQogICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dC5pbXBsKCktPmNoYXJhY3RlcnM4KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCmluZGV4IGQwZDNhOGIuLjVj
ODQ5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGJvb2wgUmVuZGVyU1ZHSW5saW5l
VGV4dDo6Y2hhcmFjdGVyU3RhcnRzTmV3VGV4dENodW5rKGludCBwb3NpdGlvbikgY29uc3QKICAg
ICByZXR1cm4gaXQtPnZhbHVlLnggIT0gU1ZHVGV4dExheW91dEF0dHJpYnV0ZXM6OmVtcHR5VmFs
dWUoKSB8fCBpdC0+dmFsdWUueSAhPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlczo6ZW1wdHlWYWx1
ZSgpOwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHSW5saW5lVGV4dDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVy
U1ZHSW5saW5lVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQs
IGNvbnN0IFJlbmRlclJlZ2lvbiopCiB7CiAgICAgaWYgKCFmaXJzdFRleHRCb3goKSB8fCAhdGV4
dExlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05T
VFJFQU0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZVRleHQuaAppbmRleCA0NGJkNjk5Li42Yzc4OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaApAQCAtNTksNyArNTksNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlzU1ZHSW5saW5lVGV4dCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29u
c3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2Fs
Q2FyZXRSZWN0KElubGluZUJveCosIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lID0gMCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBJbnRSZWN0IGxpbmVz
Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVUZXh0Qm94PiBjcmVhdGVUZXh0Qm94KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBhMGIxNGEwNi4uMTlj
NzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
Y3BwCkBAIC00NjUsNyArNDY1LDcgQEAgYm9vbCBSZW5kZXJTVkdUZXh0Ojpub2RlQXRQb2ludChj
b25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXQKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGVudHMpCitWaXNpYmxlUG9zaXRp
b24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnRJbkNvbnRlbnRzLCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBSb290SW5s
aW5lQm94KiByb290Qm94ID0gZmlyc3RSb290Qm94KCk7CiAgICAgaWYgKCFyb290Qm94KQpAQCAt
NDc5LDcgKzQ3OSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJTVkdUZXh0Ojpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGVuCiAgICAgaWYgKCFjbG9zZXN0
Qm94KQogICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0p
OwogCi0gICAgcmV0dXJuIGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkucG9zaXRpb25Gb3JQb2ludChM
YXlvdXRQb2ludChwb2ludEluQ29udGVudHMueCgpLCBjbG9zZXN0Qm94LT55KCkpKTsKKyAgICBy
ZXR1cm4gY2xvc2VzdEJveC0+cmVuZGVyZXIoKS5wb3NpdGlvbkZvclBvaW50KExheW91dFBvaW50
KHBvaW50SW5Db250ZW50cy54KCksIGNsb3Nlc3RCb3gtPnkoKSksIHJlZ2lvbik7CiB9CiAKIHZv
aWQgUmVuZGVyU1ZHVGV4dDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RleHQuaAppbmRleCBmNjQzYTE2Li4wZGQ0N2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwg
SGl0VGVzdEFjdGlvbik7Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYpOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKTsK
IAogICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cg==
</data>
<flag name="commit-queue"
          id="254562"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230178</attachid>
            <date>2014-04-25 06:19:00 -0700</date>
            <delta_ts>2014-04-25 06:56:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>130715.patch</filename>
            <type>text/plain</type>
            <size>59705</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZWI2Y2Q5Li4yYzc0ODgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDQt
MjMgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVn
aW9uc10gT3ZlcmZsb3cgc2VsZWN0aW9uIGRvZXNuJ3Qgd29yayBwcm9wZXJseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGF2aWQgSHlhdHQuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIGhpdC10
ZXN0aW5nIGFuZCBwYWludGluZyBzZWxlY3Rpb24gZ2FwcyBpbiB0aGUgcmVnaW9uJ3Mgb3ZlcmZs
b3cgYXJlYS4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ct
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1p
bi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3cuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJm
bG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVn
aW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy5odG1sOiBB
ZGRlZC4KKwogMjAxNC0wNC0yNSAgSW9uIFJvc2NhICA8cm9zY2FAYWRvYmUuY29tPgogCiAgICAg
ICAgIEluY29tcGxldGUgYm9keSBwYWludGluZyB3aGVuIHVzaW5nIGJsZW5kIG1vZGVzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJmbG93LWV4
cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJm
bG93LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJl
NDMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rp
b24taW4tb3ZlcmZsb3ctZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDYzIEBACis8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgZnVuY3Rpb24gb25Cb2R5TG9hZCgpIHsKKyAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICB2YXIgc2VsZWN0aW9uID0g
d2luZG93LmdldFNlbGVjdGlvbigpOworCisgICAgICAgICAgICAvLyBUZXN0IHNlbGVjdGlvbiBv
biB0aGUgb3ZlcmZsb3cgYmVsb3cgdGhlIGxhc3QgcmVnaW9uLgorICAgICAgICAgICAgdmFyIHJl
Z2lvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWdpb24xIik7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NpdGlvblggPSByZWdpb24ub2Zmc2V0TGVmdCArIDIwOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zaXRpb25ZID0gcmVnaW9uLm9mZnNldFRvcCArIDIwMDsKKyAgICAgICAgICAg
IHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAgdmFy
IGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNDA7CisKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRoaW4g
c29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAgICNyZWdpb24xCisgICAgewor
ICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisg
ICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEyN3B4
OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlMb2Fk
KCkiPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3IgdGhl
IGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNwbGF5
ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFzc2Vz
IGlmIHNlbGVjdGluZyB0aGUgdGV4dCB0aGF0IG92ZXJmbG93cyB0aGUgPHNwYW4gc3R5bGU9ImNv
bG9yOmJsdWUiPnJlZ2lvbjwvc3Bhbj4gcHJvcGVybHkgc2VsZWN0cyBhbmQgbm8gc2VsZWN0aW9u
IGFydGlmYWN0cyBhcmUgdmlzaWJsZSBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpi
bHVlIj5yZWdpb248L3NwYW4+PC9kaXY+CisgICAgPGJyLz4KKworICAgIDxkaXYgaWQ9InJlZ2lv
bjEiIGNsYXNzPSJyZWdpb24iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9Im9uZSI+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+
QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFB
QTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxici8+QUFBQTxi
ci8+QUFBQTxici8+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisgICAgPGRp
diBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+Cis8L2JvZHk+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Nl
bGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmODIwOWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92ZXJm
bG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIG9uQm9keUxvYWQoKSB7CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdmFyIHNlbGVjdGlvbiA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgICAgICAgICAgLy8gVGVzdCBzZWxlY3Rpb24g
b24gdGhlIG92ZXJmbG93IGJlbG93IHRoZSBsYXN0IHJlZ2lvbi4KKyAgICAgICAgICAgIHZhciBy
ZWdpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zaXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAyMDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRUb3AgKyAyMDsKKyAgICAgICAgICAg
IHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAgICAgICAgICAgdmFy
IGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNjA7CisKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0aW9uWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorCis8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICBib3JkZXI6IHRoaW4g
c29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAgICNyZWdpb24xCisgICAgewor
ICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisg
ICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7CisgICAgICAgIHRvcDogLTEyN3B4
OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlMb2Fk
KCkiPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzA3MTUiPkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3IgdGhl
IGZpcnN0IGFuZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNwbGF5
ZWQgaW4gZGlmZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFzc2Vz
IGlmIHNlbGVjdGluZyBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdp
b248L3NwYW4+IGhhcyBubyBlZmZlY3Qgb24gdGhlIHRleHQgaW4gdGhlIGZpcnN0IDxzcGFuIHN0
eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+LjwvZGl2PgorICAgIDxici8+CisKKyAgICA8
ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVnaW9uIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29u
dGVudCI+CisgICAgICAgICAgICA8ZGl2IGlkPSJvbmUiPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIv
PkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rp
dj4KKworICAgIDxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJyZWdpb24iPjwvZGl2PgorPC9ib2R5
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3ZlcmZsb3ctaGl0LXRlc3RpbmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGU1NGY2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1o
aXQtdGVzdGluZy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxv
dyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0
aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3Np
dGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRp
b25YID0gc3RhcnRQb3NpdGlvblggKyAyMDsKKyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblkg
PSBzdGFydFBvc2l0aW9uWSArIDYwOworCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhl
bmRQb3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVVwKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKworPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICAucmVnaW9uIHsKKyAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7Cisg
ICAgICAgIGJvcmRlcjogdGhpbiBzb2xpZCBibHVlOworICAgICAgICBtYXJnaW46IDVweDsKKyAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAxcHg7CisgICAgfQorCisg
ICAgI3JlZ2lvbjEKKyAgICB7CisgICAgICAgIGhlaWdodDogMTIwcHg7CisgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMgorICAgIHsKKyAgICAgICAgaGVpZ2h0OiAy
MDBweDsKKyAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICBsZWZ0OiAxMjBweDsK
KyAgICAgICAgdG9wOiAtMTI3cHg7CisgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICB9CisKKyAg
ICAuY29udGVudCB7CisgICAgICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OworICAgIH0KKwor
ICAgICNvbmUgeworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxi
b2R5IG9ubG9hZD0ib25Cb2R5TG9hZCgpIj4KKyAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwNzE1Ij5CdWcgMTMwNzE1IC0gVGVzdCB0aGF0IG92
ZXJmbG93IGNvbnRlbnQgZm9yIHRoZSBmaXJzdCBhbmQgbGFzdCByZWdpb25zIGluIHRoZSBjaGFp
biBpcyBjb3JyZWN0bHkgZGlzcGxheWVkIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvYT4KKyAg
ICA8ZGl2PlRoZSB0ZXN0IHBhc3NlcyBpZiBzZWxlY3RpbmcgaW4gdGhlIHNlY29uZCA8c3BhbiBz
dHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPiBoYXMgbm8gZWZmZWN0IG9uIHRoZSB0ZXh0
IGluIHRoZSBmaXJzdCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPi48L2Rp
dj4KKyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+PC9k
aXY+CisgICAgPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisKKyAgICA8
ZGl2IGNsYXNzPSJjb250ZW50Ij4KKyAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICA8L2Rpdj4KKzwv
Ym9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4t
b3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tb3Zl
cmZsb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjJlNTE1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1v
dmVyZmxvdy5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkgeworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2VsZWN0aW9uIG9uIHRoZSBvdmVyZmxvdyBi
ZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAgICB2YXIgcmVnaW9uID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlZ2lvbjEiKTsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9u
WCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NpdGlv
blkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjAwOworICAgICAgICAgICAgdmFyIGVuZFBvc2l0aW9u
WCA9IHN0YXJ0UG9zaXRpb25YICsgMjA7CisgICAgICAgICAgICB2YXIgZW5kUG9zaXRpb25ZID0g
c3RhcnRQb3NpdGlvblkgKyA0MDsKKworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NpdGlvblgsIHN0YXJ0UG9zaXRpb25ZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5k
UG9zaXRpb25YLCBlbmRQb3NpdGlvblkpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VV
cCgpOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CisgICAgLnJlZ2lvbiB7CisgICAgICAgIC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OworICAg
ICAgICBib3JkZXI6IHRoaW4gc29saWQgYmx1ZTsKKyAgICAgICAgbWFyZ2luOiA1cHg7CisgICAg
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMXB4OworICAgIH0KKworICAg
ICNyZWdpb24xCisgICAgeworICAgICAgICBoZWlnaHQ6IDEyMHB4OworICAgICAgICB3aWR0aDog
MTAwcHg7CisgICAgfQorCisgICAgI3JlZ2lvbjIKKyAgICB7CisgICAgICAgIGhlaWdodDogMjAw
cHg7CisgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgbGVmdDogMTIwcHg7Cisg
ICAgICAgIHRvcDogLTEyN3B4OworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgfQorCisgICAg
LmNvbnRlbnQgeworICAgICAgICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsKKyAgICB9CisKKyAg
ICAjb25lIHsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9Cis8L3N0eWxlPgorCis8Ym9k
eSBvbmxvYWQ9Im9uQm9keUxvYWQoKSI+CisgICAgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDcxNSI+QnVnIDEzMDcxNSAtIFRlc3QgdGhhdCBvdmVy
ZmxvdyBjb250ZW50IGZvciB0aGUgZmlyc3QgYW5kIGxhc3QgcmVnaW9ucyBpbiB0aGUgY2hhaW4g
aXMgY29ycmVjdGx5IGRpc3BsYXllZCBpbiBkaWZmZXJlbnQgc2l0dWF0aW9ucy48L2E+CisgICAg
PGRpdj5UaGUgdGVzdCBwYXNzZXMgaWYgc2VsZWN0aW5nIHRoZSB0ZXh0IHRoYXQgb3ZlcmZsb3dz
IHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJseSBzZWxl
Y3RzIGFuZCBubyBzZWxlY3Rpb24gYXJ0aWZhY3RzIGFyZSB2aXNpYmxlIGluIHRoZSBzZWNvbmQg
PHNwYW4gc3R5bGU9ImNvbG9yOmJsdWUiPnJlZ2lvbjwvc3Bhbj48L2Rpdj4KKyAgICA8YnIvPgor
CisgICAgPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisgICAgPGRpdiBp
ZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbiI+PC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJjb250
ZW50Ij4KKyAgICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz5BQUFBPGJyLz48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRlci1vdmVy
Zmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLWV4cGVjdGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2ZGRmMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4dC1hZnRl
ci1vdmVyZmxvdy1oaXQtdGVzdGluZy1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBmdW5jdGlvbiBvbkJvZHlMb2FkKCkg
eworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHZhciBzZWxl
Y3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CisKKyAgICAgICAgICAgIC8vIFRlc3Qgc2Vs
ZWN0aW9uIG9uIHRoZSBvdmVyZmxvdyBiZWxvdyB0aGUgbGFzdCByZWdpb24uCisgICAgICAgICAg
ICB2YXIgcmVnaW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlZ2lvbjIiKTsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc2l0aW9uWCA9IHJlZ2lvbi5vZmZzZXRMZWZ0ICsgMjA7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NpdGlvblkgPSByZWdpb24ub2Zmc2V0VG9wICsgMjA7CisgICAg
ICAgICAgICB2YXIgZW5kUG9zaXRpb25YID0gc3RhcnRQb3NpdGlvblggKyAyMDsKKyAgICAgICAg
ICAgIHZhciBlbmRQb3NpdGlvblkgPSBzdGFydFBvc2l0aW9uWSArIDYwOworCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc2l0aW9uWCwgc3RhcnRQb3NpdGlvblkp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhlbmRQb3NpdGlvblgsIGVuZFBvc2l0aW9uWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4K
KworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAucmVnaW9uIHsKKyAgICAgICAgYm9yZGVy
OiB0aGluIHNvbGlkIGJsdWU7CisgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDFweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMQor
ICAgIHsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDExMHB4OworICAg
IH0KKworICAgICNyZWdpb24yCisgICAgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAg
ICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgIGxlZnQ6IDEyMHB4OworICAgICAgICB0b3A6
IC0xMjdweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAgIH0KKworICAgICNvbmUgeworICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDEwMHB4OworICAg
ICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKzwvc3R5bGU+CisKKzxib2R5IG9ubG9hZD0ib25C
b2R5TG9hZCgpIj4KKyAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMwNzE1Ij5CdWcgMTMwNzE1IC0gVGVzdCB0aGF0IG92ZXJmbG93IGNvbnRlbnQg
Zm9yIHRoZSBmaXJzdCBhbmQgbGFzdCByZWdpb25zIGluIHRoZSBjaGFpbiBpcyBjb3JyZWN0bHkg
ZGlzcGxheWVkIGluIGRpZmZlcmVudCBzaXR1YXRpb25zLjwvYT4KKyAgICA8ZGl2PlRoZSB0ZXN0
IHBhc3NlcyBpZiBzZWxlY3RpbmcgaW4gdGhlIHNlY29uZCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1
ZSI+cmVnaW9uPC9zcGFuPiBwcm9wZXJseSBzZWxlY3RzIHRoZSBCQkJCIHRleHRzIGFuZCBoYXMg
bm8gZWZmZWN0IG9uIHRoZSB0ZXh0IGluIHRoZSBmaXJzdCA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1
ZSI+cmVnaW9uPC9zcGFuPi48L2Rpdj4KKyAgICA8YnIvPgorCisgICAgPGRpdiBpZD0icmVnaW9u
MSIgY2xhc3M9InJlZ2lvbiI+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgorICAgICAg
ICAgICAgPGRpdiBpZD0ib25lIj5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5B
QUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFB
PGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJyLz5BQUFBPGJy
Lz5BQUFBPGJyLz48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2
IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uIj4KKyAgICAgICAgPGRpdiBpZD0idHdvIj5CQkJC
PGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPGJy
Lz5CQkJCPGJyLz5CQkJCPGJyLz5CQkJCPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL3NlbGVjdGlvbi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLXRleHQtYWZ0ZXItb3ZlcmZsb3ct
aGl0LXRlc3RpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODU3
ZWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlv
bi1pbi10ZXh0LWFmdGVyLW92ZXJmbG93LWhpdC10ZXN0aW5nLmh0bWwKQEAgLTAsMCArMSw2OCBA
QAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGZ1bmN0aW9uIG9uQm9keUxv
YWQoKSB7CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdmFy
IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworICAgICAgICAgICAgLy8gVGVz
dCBzZWxlY3Rpb24gb24gdGhlIG92ZXJmbG93IGJlbG93IHRoZSBsYXN0IHJlZ2lvbi4KKyAgICAg
ICAgICAgIHZhciByZWdpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMiIpOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zaXRpb25YID0gcmVnaW9uLm9mZnNldExlZnQgKyAyMDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc2l0aW9uWSA9IHJlZ2lvbi5vZmZzZXRUb3AgKyAyMDsK
KyAgICAgICAgICAgIHZhciBlbmRQb3NpdGlvblggPSBzdGFydFBvc2l0aW9uWCArIDIwOworICAg
ICAgICAgICAgdmFyIGVuZFBvc2l0aW9uWSA9IHN0YXJ0UG9zaXRpb25ZICsgNjA7CisKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zaXRpb25YLCBzdGFydFBvc2l0
aW9uWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGVuZFBvc2l0aW9uWCwgZW5kUG9zaXRpb25ZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgfQorICAgIH0KKzwvc2Ny
aXB0PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5yZWdpb24geworICAgICAgICAt
d2Via2l0LWZsb3ctZnJvbTogZmxvdzsKKyAgICAgICAgYm9yZGVyOiB0aGluIHNvbGlkIGJsdWU7
CisgICAgICAgIG1hcmdpbjogNXB4OworICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAg
ICAgIGxlZnQ6IDFweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMQorICAgIHsKKyAgICAgICAgd2lk
dGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDExMHB4OworICAgIH0KKworICAgICNyZWdpb24y
CisgICAgeworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBwb3NpdGlvbjogcmVsYXRp
dmU7CisgICAgICAgIGxlZnQ6IDEyMHB4OworICAgICAgICB0b3A6IC0xMjdweDsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgIH0KKworICAgIC5jb250ZW50IHsKKyAgICAgICAgLXdlYmtpdC1m
bG93LWludG86IGZsb3c7CisgICAgfQorCisgICAgI29uZSB7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogMTAw
cHg7CisgICAgfQorPC9zdHlsZT4KKworPGJvZHkgb25sb2FkPSJvbkJvZHlMb2FkKCkiPgorICAg
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzA3MTUi
PkJ1ZyAxMzA3MTUgLSBUZXN0IHRoYXQgb3ZlcmZsb3cgY29udGVudCBmb3IgdGhlIGZpcnN0IGFu
ZCBsYXN0IHJlZ2lvbnMgaW4gdGhlIGNoYWluIGlzIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gZGlm
ZmVyZW50IHNpdHVhdGlvbnMuPC9hPgorICAgIDxkaXY+VGhlIHRlc3QgcGFzc2VzIGlmIHNlbGVj
dGluZyBpbiB0aGUgc2Vjb25kIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+
IHByb3Blcmx5IHNlbGVjdHMgdGhlIEJCQkIgdGV4dHMgYW5kIGhhcyBubyBlZmZlY3Qgb24gdGhl
IHRleHQgaW4gdGhlIGZpcnN0IDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlIj5yZWdpb248L3NwYW4+
LjwvZGl2PgorICAgIDxici8+CisKKyAgICA8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVnaW9u
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uIj48L2Rpdj4KKwor
ICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgorICAgICAgICA8ZGl2IGlkPSJvbmUiPkFBQUE8YnIv
PkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFB
QUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8
YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPkFBQUE8YnIvPjwvZGl2PgorICAgICAgICA8
ZGl2IGlkPSJ0d28iPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIv
PkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8YnIvPkJCQkI8L2Rpdj4KKyAgICA8L2Rp
dj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZjkxNTA0Li42MjI2MTI2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDg0IEBACisyMDE0LTA0LTIzICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2Jl
LmNvbT4KKworICAgICAgICBbQ1NTIFJlZ2lvbnNdIE92ZXJmbG93IHNlbGVjdGlvbiBkb2Vzbid0
IHdvcmsgcHJvcGVybHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMDcxNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEh5YXR0LgorCisgICAg
ICAgIFdoZW4gaGl0LXRlc3RpbmcsIHBhaW50aW5nIGJsb2NrIHNlbGVjdGlvbiBnYXBzIGFuZCBz
ZWFyY2hpbmcgZm9yIHRoZSBub2RlIGF0IGEgc3BlY2lmaWMgcG9pbnQgaW5zaWRlIGEgZmxvdyB0
aHJlYWQsCisgICAgICAgIHRoZSByZWdpb24gcmFuZ2Ugb2YgdGhlIGJveCBiZWluZyBjaGVja2Vk
IG11c3QgYmUgdmFsaWRhdGVkIGluIG9yZGVyIHRvIG5vdCByZXR1cm4gZmFsc2UgcG9zaXRpdmVz
LiBPdGhlcndpc2UsIGhpdC10ZXN0aW5nCisgICAgICAgIGF0IHRoZSB0b3Agb2YgcmVnaW9uIEIg
Y291bGQgaGl0IGVsZW1lbnRzIHRoYXQgb3ZlcmZsb3cgdGhlIGJvdHRvbSBvZiByZWdpb24gQS4K
KworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi1pbi1vdmVyZmxvdy1oaXQt
dGVzdGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uLWluLW92
ZXJmbG93Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24taW4tdGV4
dC1hZnRlci1vdmVyZmxvdy1oaXQtdGVzdGluZy5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlv
bkZvclBvaW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQpOgorICAgICAgICAqIGVkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNvbnRh
aW5zKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwcmV2aW91c0xpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpuZXh0TGluZVBv
c2l0aW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkRnJvbUhpdFRlc3RSZXN1bHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zy
b21Nb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2spOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpoYW5kbGVNb3VzZVByZXNzRXZlbnRTaW5nbGVDbGljayk6CisgICAgICAgIChXZWJDb3JlOjpz
ZWxlY3Rpb25FeHRlbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpc2libGVQb3Np
dGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OnNlbGVjdGlvbkdhcHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnBvc2l0
aW9uRm9yUG9pbnRSZXNwZWN0aW5nRWRpdGluZ0JvdW5kYXJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElu
bGluZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6cG9zaXRp
b25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpwb3NpdGlvbkZvclBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcklu
bGluZTo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck11
bHRpQ29sdW1uU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck11bHRpQ29sdW1uU2V0
Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1
bW5TZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck9iamVjdDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpwb3NpdGlvbkZvclBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpw
b3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojpwb3NpdGlvbkZvclBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0Lmg6CisKIDIwMTQtMDQtMjUgIElvbiBSb3NjYSAgPHJvc2NhQGFkb2Jl
LmNvbT4KIAogICAgICAgICBJbmNvbXBsZXRlIGJvZHkgcGFpbnRpbmcgd2hlbiB1c2luZyBibGVu
ZCBtb2RlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNzVhOTFjNC4uODM2ODNlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCkBAIC0xODI0LDcgKzE4MjQsNyBAQCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25SYW5nZUZvckxpbmUo
dW5zaQogICAgIC8vIGl0ZXJhdGUgb3ZlciB0aGUgbGluZXMKICAgICAvLyBGSVhNRTogdGhpcyBp
cyB3cm9uZyB3aGVuIGxpbmVOdW1iZXIgaXMgbGluZUNvdW50KzEsICBiZWNhdXNlIG5leHRMaW5l
UG9zaXRpb24gdGFrZXMgeW91IHRvIHRoZQogICAgIC8vIGxhc3Qgb2Zmc2V0IG9mIHRoZSBsYXN0
IGxpbmUKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IG1fcmVuZGVyZXItPnZpZXco
KS5wb3NpdGlvbkZvclBvaW50KEludFBvaW50KCkpOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zID0gbV9yZW5kZXJlci0+dmlldygpLnBvc2l0aW9uRm9yUG9pbnQoSW50UG9pbnQoKSwg
bnVsbHB0cik7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHNhdmVkVmlzaWJsZVBvczsKICAgICB3aGls
ZSAoLS1saW5lQ291bnQpIHsKICAgICAgICAgc2F2ZWRWaXNpYmxlUG9zID0gdmlzaWJsZVBvczsK
QEAgLTIwMzIsNyArMjAzMiw3IEBAIFZpc2libGVQb3NpdGlvbiBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2luCiAjZW5kaWYKICAg
ICB9CiAgICAgCi0gICAgcmV0dXJuIGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQ
b2ludChwb2ludFJlc3VsdCk7CisgICAgcmV0dXJuIGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9z
aXRpb25Gb3JQb2ludChwb2ludFJlc3VsdCwgbnVsbHB0cik7CiB9CiAKIC8vIE5PVEU6IENvbnNp
ZGVyIHByb3ZpZGluZyB0aGlzIHV0aWxpdHkgbWV0aG9kIGFzIEFYIEFQSQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggNGI2OGY1ZS4uMzBiMzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0xNDIxLDcgKzE0MjEsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRS
YW5nZUZyb21Qb2ludChpbnQgeCwgaW50IHkpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbiA9IHJlbmRlcmVyLT5w
b3NpdGlvbkZvclBvaW50KGxvY2FsUG9pbnQpOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb24gPSByZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChsb2NhbFBvaW50LCBudWxscHRy
KTsKICAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBi
YWMyZGY5Li5hOTgzMmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1l
U2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcApAQCAtMTU4NSw3ICsxNTg1LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMo
Y29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAgIGlmICghaW5uZXJOb2RlIHx8ICFpbm5lck5v
ZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvcyhpbm5lck5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9p
bnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
KGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2lu
dCgpLCBudWxscHRyKSk7CiAgICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAKaW5kZXggZTJmNzMzOS4uOTgwYWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVVuaXRzLmNwcApAQCAtOTczLDcgKzk3Myw3IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xp
bmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50CiAg
ICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci5ub2RlKCk7CiAgICAgICAgIGlmIChub2RlICYm
IGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnBvc2l0
aW9uRm9yUG9pbnQocG9pbnRJbkxpbmUpOworICAgICAgICByZXR1cm4gcmVuZGVyZXIucG9zaXRp
b25Gb3JQb2ludChwb2ludEluTGluZSwgbnVsbHB0cik7CiAgICAgfQogICAgIAogICAgIC8vIENv
dWxkIG5vdCBmaW5kIGEgcHJldmlvdXMgbGluZS4gVGhpcyBtZWFucyB3ZSBtdXN0IGFscmVhZHkg
YmUgb24gdGhlIGZpcnN0IGxpbmUuCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBWaXNpYmxlUG9zaXRp
b24gbmV4dExpbmVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlv
biwgaW50IGxpbgogICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXIubm9kZSgpOwogICAgICAg
ICBpZiAobm9kZSAmJiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSk7Ci0gICAgICAgIHJldHVybiBy
ZW5kZXJlci5wb3NpdGlvbkZvclBvaW50KHBvaW50SW5MaW5lKTsKKyAgICAgICAgcmV0dXJuIHJl
bmRlcmVyLnBvc2l0aW9uRm9yUG9pbnQocG9pbnRJbkxpbmUsIG51bGxwdHIpOwogICAgIH0KIAog
ICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgbmV4dCBsaW5lLiBUaGlzIG1lYW5zIHdlIG11c3QgYWxy
ZWFkeSBiZSBvbiB0aGUgbGFzdCBsaW5lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CmluZGV4IGM5ZDVkNGMuLjg3MzEyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvc2VzdFdv
cmRGcm9tSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bAogICAgIFZpc2li
bGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwogCiAgICAgaWYgKHRhcmdldE5vZGUgJiYgdGFyZ2V0
Tm9kZS0+cmVuZGVyZXIoKSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKHRhcmdldE5v
ZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSkpOwor
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0
aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cikpOwogICAgICAgICBpZiAo
cG9zLmlzTm90TnVsbCgpKSB7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxlU2Vs
ZWN0aW9uKHBvcyk7CiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxh
cml0eShXb3JkR3JhbnVsYXJpdHkpOwpAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpzZWxlY3RDbG9zZXN0V29yZE9yTGlua0Zyb21Nb3VzZUV2ZW50KGNvbnN0IE1vdXNlRXZl
bnRXaXRoSGl0CiAgICAgaWYgKHRhcmdldE5vZGUgJiYgdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSAm
JiBtX21vdXNlRG93bk1heVN0YXJ0U2VsZWN0KSB7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
bmV3U2VsZWN0aW9uOwogICAgICAgICBFbGVtZW50KiBVUkxFbGVtZW50ID0gcmVzdWx0LmhpdFRl
c3RSZXN1bHQoKS5VUkxFbGVtZW50KCk7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFy
Z2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgp
KSk7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+
cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKSk7CiAgICAgICAg
IGlmIChwb3MuaXNOb3ROdWxsKCkgJiYgcG9zLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5v
ZGUoKS0+aXNEZXNjZW5kYW50T2YoVVJMRWxlbWVudCkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rp
b24gPSBWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoVVJMRWxl
bWVudCk7CiAKQEAgLTU5Miw3ICs1OTIsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50VHJpcGxlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UgogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbjsK
LSAgICBWaXNpYmxlUG9zaXRpb24gcG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9u
Rm9yUG9pbnQoZXZlbnQubG9jYWxQb2ludCgpKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHBvcyh0
YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGV2ZW50LmxvY2FsUG9pbnQo
KSwgbnVsbHB0cikpOwogICAgIGlmIChwb3MuaXNOb3ROdWxsKCkpIHsKICAgICAgICAgbmV3U2Vs
ZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihwb3MpOwogICAgICAgICBuZXdTZWxlY3Rpb24uZXhw
YW5kVXNpbmdHcmFudWxhcml0eShQYXJhZ3JhcGhHcmFudWxhcml0eSk7CkBAIC02MjcsNyArNjI3
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudFNpbmdsZUNsaWNr
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFIKICAgICAgICAgfQogICAgIH0KIAotICAgIFZp
c2libGVQb3NpdGlvbiB2aXNpYmxlUG9zKHRhcmdldE5vZGUtPnJlbmRlcmVyKCktPnBvc2l0aW9u
Rm9yUG9pbnQoZXZlbnQubG9jYWxQb2ludCgpKSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3ModGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2Nh
bFBvaW50KCksIG51bGxwdHIpKTsKICAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKICAgICAg
ICAgdmlzaWJsZVBvcyA9IFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5v
ZGUodGFyZ2V0Tm9kZSksIERPV05TVFJFQU0pOwogICAgIFBvc2l0aW9uIHBvcyA9IHZpc2libGVQ
b3MuZGVlcEVxdWl2YWxlbnQoKTsKQEAgLTg2MCw3ICs4NjAsNyBAQCBzdGF0aWMgVmlzaWJsZVBv
c2l0aW9uIHNlbGVjdGlvbkV4dGVudFJlc3BlY3RpbmdFZGl0aW5nQm91bmRhcnkoY29uc3QgVmlz
aWJsZVNlbAogICAgICAgICB0YXJnZXROb2RlID0gZWRpdGFibGVFbGVtZW50OwogICAgIH0KIAot
ICAgIHJldHVybiB0YXJnZXROb2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KHNlbGVj
dGlvbkVuZFBvaW50KTsKKyAgICByZXR1cm4gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRp
b25Gb3JQb2ludChzZWxlY3Rpb25FbmRQb2ludCwgbnVsbHB0cik7CiB9CiAKIHZvaWQgRXZlbnRI
YW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYg
aGl0VGVzdFJlc3VsdCkKQEAgLTkwNiwxMSArOTA2LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1
cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgaGl0VGVzdFJl
c3VsCiAgICAgICAgIG5ld1NlbGVjdGlvbi5zZXRFeHRlbnQocG9zaXRpb25BZnRlck5vZGUocm9v
dFVzZXJTZWxlY3RBbGxGb3JNb3VzZVByZXNzTm9kZSkuZG93bnN0cmVhbShDYW5Dcm9zc0VkaXRp
bmdCb3VuZGFyeSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFJlc2V0IGJhc2UgZm9yIHVz
ZXIgc2VsZWN0IGFsbCB3aGVuIGJhc2UgaXMgaW5zaWRlIHVzZXItc2VsZWN0LWFsbCBhcmVhIGFu
ZCBleHRlbnQgPCBiYXNlLgotICAgICAgICBpZiAocm9vdFVzZXJTZWxlY3RBbGxGb3JNb3VzZVBy
ZXNzTm9kZSAmJiBjb21wYXJlUG9zaXRpb25zKHRhcmdldC0+cmVuZGVyZXIoKS0+cG9zaXRpb25G
b3JQb2ludChoaXRUZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSksIG1fbW91c2VQcmVzc05vZGUtPnJl
bmRlcmVyKCktPnBvc2l0aW9uRm9yUG9pbnQobV9kcmFnU3RhcnRQb3MpKSA8IDApCisgICAgICAg
IGlmIChyb290VXNlclNlbGVjdEFsbEZvck1vdXNlUHJlc3NOb2RlICYmIGNvbXBhcmVQb3NpdGlv
bnModGFyZ2V0LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGhpdFRlc3RSZXN1bHQubG9j
YWxQb2ludCgpLCBudWxscHRyKSwgbV9tb3VzZVByZXNzTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRp
b25Gb3JQb2ludChtX2RyYWdTdGFydFBvcywgbnVsbHB0cikpIDwgMCkKICAgICAgICAgICAgIG5l
d1NlbGVjdGlvbi5zZXRCYXNlKHBvc2l0aW9uQWZ0ZXJOb2RlKHJvb3RVc2VyU2VsZWN0QWxsRm9y
TW91c2VQcmVzc05vZGUpLmRvd25zdHJlYW0oQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKICAg
ICAgICAgCiAgICAgICAgIE5vZGUqIHJvb3RVc2VyU2VsZWN0QWxsRm9yVGFyZ2V0ID0gUG9zaXRp
b246OnJvb3RVc2VyU2VsZWN0QWxsRm9yTm9kZSh0YXJnZXQpOwotICAgICAgICBpZiAocm9vdFVz
ZXJTZWxlY3RBbGxGb3JUYXJnZXQgJiYgbV9tb3VzZVByZXNzTm9kZS0+cmVuZGVyZXIoKSAmJiBj
b21wYXJlUG9zaXRpb25zKHRhcmdldC0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChoaXRU
ZXN0UmVzdWx0LmxvY2FsUG9pbnQoKSksIG1fbW91c2VQcmVzc05vZGUtPnJlbmRlcmVyKCktPnBv
c2l0aW9uRm9yUG9pbnQobV9kcmFnU3RhcnRQb3MpKSA8IDApCisgICAgICAgIGlmIChyb290VXNl
clNlbGVjdEFsbEZvclRhcmdldCAmJiBtX21vdXNlUHJlc3NOb2RlLT5yZW5kZXJlcigpICYmIGNv
bXBhcmVQb3NpdGlvbnModGFyZ2V0LT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBvaW50KGhpdFRl
c3RSZXN1bHQubG9jYWxQb2ludCgpLCBudWxscHRyKSwgbV9tb3VzZVByZXNzTm9kZS0+cmVuZGVy
ZXIoKS0+cG9zaXRpb25Gb3JQb2ludChtX2RyYWdTdGFydFBvcywgbnVsbHB0cikpIDwgMCkKICAg
ICAgICAgICAgIG5ld1NlbGVjdGlvbi5zZXRFeHRlbnQocG9zaXRpb25CZWZvcmVOb2RlKHJvb3RV
c2VyU2VsZWN0QWxsRm9yVGFyZ2V0KS51cHN0cmVhbShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkp
OwogICAgICAgICBlbHNlIGlmIChyb290VXNlclNlbGVjdEFsbEZvclRhcmdldCAmJiBtX21vdXNl
UHJlc3NOb2RlLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgbmV3U2VsZWN0aW9uLnNldEV4dGVu
dChwb3NpdGlvbkFmdGVyTm9kZShyb290VXNlclNlbGVjdEFsbEZvclRhcmdldCkuZG93bnN0cmVh
bShDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwpAQCAtOTgyLDcgKzk4Miw3IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJiBlCiAgICAgICAgIE5vZGUqIG5vZGUgPSBldmVudC50YXJnZXROb2RlKCk7
CiAgICAgICAgIGJvb2wgY2FyZXRCcm93c2luZyA9IG1fZnJhbWUuc2V0dGluZ3MoKS5jYXJldEJy
b3dzaW5nRW5hYmxlZCgpOwogICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5yZW5kZXJlcigpICYm
IChjYXJldEJyb3dzaW5nIHx8IG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkpIHsKLSAgICAgICAg
ICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSBub2RlLT5yZW5kZXJlcigpLT5wb3NpdGlvbkZvclBv
aW50KGV2ZW50LmxvY2FsUG9pbnQoKSk7CisgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9z
ID0gbm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2ludChldmVudC5sb2NhbFBvaW50KCks
IG51bGxwdHIpOwogICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihw
b3MpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggMjM3NDUxZS4uOWRkNzlm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTg1Myw3ICs4NTMsNyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBv
aW50KQogICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVu
ZGVyZXIpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvcyA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2Nh
bFBvaW50KCkpOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gcmVuZGVyZXItPnBv
c2l0aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSwgbnVsbHB0cik7CiAgICAgaWYgKHZp
c2libGVQb3MuaXNOdWxsKCkpCiAgICAgICAgIHZpc2libGVQb3MgPSBmaXJzdFBvc2l0aW9uSW5P
ckJlZm9yZU5vZGUobm9kZSk7CiAgICAgcmV0dXJuIHZpc2libGVQb3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBjZjYyMjBjLi42NjdhMzI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI0MTIsNiArMjQxMiwxMiBA
QCBHYXBSZWN0cyBSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwcyhSZW5kZXJCbG9jayYgcm9vdEJs
b2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcgogICAgICAgICBsYXN0TG9naWNhbFJpZ2h0ID0gbG9n
aWNhbFJpZ2h0U2VsZWN0aW9uT2Zmc2V0KHJvb3RCbG9jaywgbG9naWNhbEhlaWdodCgpLCBjYWNo
ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQorICAgIAorICAgIGlmIChwYWludElu
Zm8gJiYgcGFpbnRJbmZvLT5yZW5kZXJOYW1lZEZsb3dGcmFnbWVudCAmJiBwYWludEluZm8tPnBh
aW50Q29udGFpbmVyLT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgeworICAgICAgICAvLyBNYWtlIHN1
cmUgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGFjdHVhbGx5IGZsb3dlZCBpbnRvIHRoZSByZWdpb24g
YmVpbmcgcGFpbnRlZC4KKyAgICAgICAgaWYgKCF0b1JlbmRlckZsb3dUaHJlYWQocGFpbnRJbmZv
LT5wYWludENvbnRhaW5lciktPm9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9uKHRoaXMsIHBh
aW50SW5mby0+cmVuZGVyTmFtZWRGbG93RnJhZ21lbnQpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CiAKICAgICBpZiAoY2hpbGRyZW5JbmxpbmUoKSkKICAgICAgICAgcmVzdWx0
ID0gaW5saW5lU2VsZWN0aW9uR2Fwcyhyb290QmxvY2ssIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRp
b24sIG9mZnNldEZyb21Sb290QmxvY2ssIGxhc3RMb2dpY2FsVG9wLCBsYXN0TG9naWNhbExlZnQs
IGxhc3RMb2dpY2FsUmlnaHQsIGNhY2hlLCBwYWludEluZm8pOwpAQCAtMjk0Nyw2ICsyOTUzLDE1
IEBAIGJvb2wgUmVuZGVyQmxvY2s6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1CiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRMb2Nh
dGlvbihhY2N1bXVsYXRlZE9mZnNldCArIGxvY2F0aW9uKCkpOwogICAgIExheW91dFNpemUgbG9j
YWxPZmZzZXQgPSB0b0xheW91dFNpemUoYWRqdXN0ZWRMb2NhdGlvbik7CiAKKyAgICAvLyBJZiB3
ZSBhcmUgbm93IHNlYXJjaGluZyBpbnNpZGUgYSByZWdpb24sIG1ha2Ugc3VyZSB0aGlzIGVsZW1l
bnQKKyAgICAvLyBpcyBiZWluZyBmcmFnbWVudGVkIGludG8gdGhpcyByZWdpb24uCisgICAgaWYg
KGxvY2F0aW9uSW5Db250YWluZXIucmVnaW9uKCkpIHsKKyAgICAgICAgUmVuZGVyRmxvd1RocmVh
ZCogZmxvd1RocmVhZCA9IGZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKKyAgICAgICAgQVNT
RVJUKGZsb3dUaHJlYWQpOworICAgICAgICBpZiAoIWZsb3dUaHJlYWQtPm9iamVjdFNob3VsZFBh
aW50SW5GbG93UmVnaW9uKHRoaXMsIGxvY2F0aW9uSW5Db250YWluZXIucmVnaW9uKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGlmICghaXNSZW5kZXJWaWV3KCkp
IHsKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byBkbyBhbnl0aGluZyBhdCBhbGwuCiAg
ICAgICAgIExheW91dFJlY3Qgb3ZlcmZsb3dCb3ggPSB2aXN1YWxPdmVyZmxvd1JlY3QoKTsKQEAg
LTMxNDAsNyArMzE1NSw3IEBAIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50UmVzcGVj
dGluZ0VkaXRpbmdCb3VuZGFyaWVzKFJlbmRlckJsb2NrJiBwYXJlbnQsCiAgICAgLy8gSWYgdGhp
cyBpcyBhbiBhbm9ueW1vdXMgcmVuZGVyZXIsIHdlIGp1c3QgcmVjdXIgbm9ybWFsbHkKICAgICBF
bGVtZW50KiBjaGlsZEVsZW1lbnQ9IGNoaWxkLm5vblBzZXVkb0VsZW1lbnQoKTsKICAgICBpZiAo
IWNoaWxkRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGNoaWxkLnBvc2l0aW9uRm9yUG9pbnQocG9p
bnRJbkNoaWxkQ29vcmRpbmF0ZXMpOworICAgICAgICByZXR1cm4gY2hpbGQucG9zaXRpb25Gb3JQ
b2ludChwb2ludEluQ2hpbGRDb29yZGluYXRlcywgbnVsbHB0cik7CiAKICAgICAvLyBPdGhlcndp
c2UsIGZpcnN0IG1ha2Ugc3VyZSB0aGF0IHRoZSBlZGl0YWJpbGl0eSBvZiB0aGUgcGFyZW50IGFu
ZCBjaGlsZCBhZ3JlZS4KICAgICAvLyBJZiB0aGV5IGRvbid0IGFncmVlLCB0aGVuIHdlIHJldHVy
biBhIHZpc2libGUgcG9zaXRpb24ganVzdCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNoaWxkCkBAIC0z
MTUwLDcgKzMxNjUsNyBAQCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFJlc3BlY3Rp
bmdFZGl0aW5nQm91bmRhcmllcyhSZW5kZXJCbG9jayYgcGFyZW50LAogCiAgICAgLy8gSWYgd2Ug
Y2FuJ3QgZmluZCBhbiBhbmNlc3RvciB0byBjaGVjayBlZGl0YWJpbGl0eSBvbiwgb3IgZWRpdGFi
aWxpdHkgaXMgdW5jaGFuZ2VkLCB3ZSByZWN1ciBsaWtlIG5vcm1hbAogICAgIGlmIChpc0VkaXRp
bmdCb3VuZGFyeShhbmNlc3RvciwgY2hpbGQpKQotICAgICAgICByZXR1cm4gY2hpbGQucG9zaXRp
b25Gb3JQb2ludChwb2ludEluQ2hpbGRDb29yZGluYXRlcyk7CisgICAgICAgIHJldHVybiBjaGls
ZC5wb3NpdGlvbkZvclBvaW50KHBvaW50SW5DaGlsZENvb3JkaW5hdGVzLCBudWxscHRyKTsKICAg
ICAKICNpZiBQTEFURk9STShJT1MpCiAgICAgLy8gT24gaU9TIHdlIHdhbnQgdG8gY29uc3RyYWlu
IFZpc2libGVQb3NpdGlvbnMgdG8gdGhlIGVkaXRhYmxlIHJlZ2lvbiBjbG9zZXN0IHRvIHRoZSBp
bnB1dCBwb3NpdGlvbiwgc28KQEAgLTMxNjksNyArMzE4NCw3IEBAIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbkZvclBvaW50UmVzcGVjdGluZ0VkaXRpbmdCb3VuZGFyaWVzKFJlbmRlckJsb2NrJiBw
YXJlbnQsCiAgICAgcmV0dXJuIGFuY2VzdG9yLT5jcmVhdGVWaXNpYmxlUG9zaXRpb24oY2hpbGRF
bGVtZW50LT5ub2RlSW5kZXgoKSArIDEsIFVQU1RSRUFNKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9u
IFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExh
eW91dFBvaW50JikKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2lu
dFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lv
biopCiB7CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOwpAQCAtMzE4MSw3ICszMTk2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2hpbGRI
aXRUZXN0Q2FuZGlkYXRlKGNvbnN0IFJlbmRlckJveCYgYm94KQogfQogCiAvLyBWYWxpZCBjYW5k
aWRhdGVzIGluIGEgRmxvd1RocmVhZCBtdXN0IGJlIHJlbmRlcmVkIGJ5IHRoZSByZWdpb24uCi1z
dGF0aWMgaW5saW5lIGJvb2wgaXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUoY29uc3QgUmVuZGVyQm94
JiBib3gsIFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitz
dGF0aWMgaW5saW5lIGJvb2wgaXNDaGlsZEhpdFRlc3RDYW5kaWRhdGUoY29uc3QgUmVuZGVyQm94
JiBib3gsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uLCBjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQpCiB7CiAgICAgaWYgKCFpc0NoaWxkSGl0VGVzdENhbmRpZGF0ZShib3gpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0zMTkxLDEwICszMjA2LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp
c0NoaWxkSGl0VGVzdENhbmRpZGF0ZShjb25zdCBSZW5kZXJCb3gmIGJveCwgUmVuZGVyUmVnaW9u
KiByCiAgICAgcmV0dXJuIGJsb2NrLnJlZ2lvbkF0QmxvY2tPZmZzZXQocG9pbnQueSgpKSA9PSBy
ZWdpb247CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2s6
OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJS
ZWdpb24qIHJlZ2lvbikKIHsKICAgICBpZiAoaXNUYWJsZSgpKQotICAgICAgICByZXR1cm4gUmVu
ZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICAgICAgcmV0dXJuIFJlbmRlckJv
eDo6cG9zaXRpb25Gb3JQb2ludChwb2ludCwgcmVnaW9uKTsKIAogICAgIGlmIChpc1JlcGxhY2Vk
KCkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2VlbXMgd3Jvbmcgd2hlbiB0aGUgb2JqZWN0
J3Mgd3JpdGluZy1tb2RlIGRvZXNuJ3QgbWF0Y2ggdGhlIGxpbmUncyB3cml0aW5nLW1vZGUuCkBA
IC0zMjE0LDEwICszMjI5LDEzIEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJCbG9jazo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgICAgIHBvaW50SW5Mb2dp
Y2FsQ29udGVudHMgPSBwb2ludEluTG9naWNhbENvbnRlbnRzLnRyYW5zcG9zZWRQb2ludCgpOwog
CiAgICAgaWYgKGNoaWxkcmVuSW5saW5lKCkpCi0gICAgICAgIHJldHVybiBwb3NpdGlvbkZvclBv
aW50V2l0aElubGluZUNoaWxkcmVuKHBvaW50SW5Mb2dpY2FsQ29udGVudHMpOworICAgICAgICBy
ZXR1cm4gcG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihwb2ludEluTG9naWNhbENv
bnRlbnRzLCByZWdpb24pOwogCi0gICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSByZWdpb25BdEJs
b2NrT2Zmc2V0KHBvaW50SW5Mb2dpY2FsQ29udGVudHMueSgpKTsKICAgICBSZW5kZXJCb3gqIGxh
c3RDYW5kaWRhdGVCb3ggPSBsYXN0Q2hpbGRCb3goKTsKKworICAgIGlmICghcmVnaW9uKQorICAg
ICAgICByZWdpb24gPSByZWdpb25BdEJsb2NrT2Zmc2V0KHBvaW50SW5Mb2dpY2FsQ29udGVudHMu
eSgpKTsKKwogICAgIHdoaWxlIChsYXN0Q2FuZGlkYXRlQm94ICYmICFpc0NoaWxkSGl0VGVzdENh
bmRpZGF0ZSgqbGFzdENhbmRpZGF0ZUJveCwgcmVnaW9uLCBwb2ludEluTG9naWNhbENvbnRlbnRz
KSkKICAgICAgICAgbGFzdENhbmRpZGF0ZUJveCA9IGxhc3RDYW5kaWRhdGVCb3gtPnByZXZpb3Vz
U2libGluZ0JveCgpOwogCkBAIC0zMjM5LDcgKzMyNTcsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVu
ZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogICAg
IH0KIAogICAgIC8vIFdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgYXJlIG5vIGhpdCB0ZXN0IGNh
bmRpZGF0ZSBjaGlsZHJlbiBiZWxvdyB0aGUgY2xpY2suCi0gICAgcmV0dXJuIFJlbmRlckJveDo6
cG9zaXRpb25Gb3JQb2ludChwb2ludCk7CisgICAgcmV0dXJuIFJlbmRlckJveDo6cG9zaXRpb25G
b3JQb2ludChwb2ludCwgcmVnaW9uKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6b2Zmc2V0Rm9y
Q29udGVudHMoTGF5b3V0UG9pbnQmIG9mZnNldCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKaW5kZXggNDJmNjUxNS4uZjQyZDU3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAKICAgICBM
YXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gQmxv
Y2sgZmxvd3Mgc3ViY2xhc3MgYXZhaWxhYmxlV2lkdGggdG8gaGFuZGxlIG11bHRpIGNvbHVtbiBs
YXlvdXQgKHNocmlua2luZyB0aGUgd2lkdGggYXZhaWxhYmxlIHRvIGNoaWxkcmVuIHdoZW4gbGF5
aW5nIG91dC4pCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOwpAQCAtNTQzLDcgKzU0Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhZGp1c3RQb2ludFRvQ29sdW1uQ29udGVudHMoTGF5b3V0UG9pbnQmKSBjb25zdDsKICAg
ICAKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxs
IGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKLSAgICB2aXJ0dWFsIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91
dFBvaW50Jik7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludFdp
dGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiop
OwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVDb2x1bW5Db3VudEFuZFdpZHRoKCk7CiAgICAg
dm9pZCBtYWtlQ2hpbGRyZW5Bbm9ueW1vdXNDb2x1bW5CbG9ja3MoUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCwgUmVuZGVyQmxvY2sqIG5ld0Jsb2NrQm94LCBSZW5kZXJPYmplY3QqIG5ld0NoaWxk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXgg
MWQzZTMxNC4uMTEzZGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKQEAgLTMwOTIsNyArMzA5Miw3IEBAIFBvc2l0aW9uIFJlbmRlckJsb2NrRmxv
dzo6cG9zaXRpb25Gb3JCb3goSW5saW5lQm94ICpib3gsIGJvb2wgc3RhcnQpIGNvbnN0CiAgICAg
cmV0dXJuIGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihib3gtPnJlbmRlcmVyKCkubm9uUHNl
dWRvTm9kZSgpLCBzdGFydCA/IHRleHRCb3gtPnN0YXJ0KCkgOiB0ZXh0Qm94LT5zdGFydCgpICsg
dGV4dEJveC0+bGVuKCkpOwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpw
b3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiBwb2lu
dEluTG9naWNhbENvbnRlbnRzKQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9z
aXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJlbihjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJ
bkxvZ2ljYWxDb250ZW50cywgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgQVNT
RVJUKGNoaWxkcmVuSW5saW5lKCkpOwogCkBAIC0zMTA5LDYgKzMxMDksOSBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
KGNvbnN0IExheW91dAogICAgIFJvb3RJbmxpbmVCb3gqIGZpcnN0Um9vdEJveFdpdGhDaGlsZHJl
biA9IDA7CiAgICAgUm9vdElubGluZUJveCogbGFzdFJvb3RCb3hXaXRoQ2hpbGRyZW4gPSAwOwog
ICAgIGZvciAoUm9vdElubGluZUJveCogcm9vdCA9IGZpcnN0Um9vdEJveCgpOyByb290OyByb290
ID0gcm9vdC0+bmV4dFJvb3RCb3goKSkgeworICAgICAgICBpZiAocmVnaW9uICYmIHJvb3QtPmNv
bnRhaW5pbmdSZWdpb24oKSAhPSByZWdpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAg
ICAgICBpZiAoIXJvb3QtPmZpcnN0TGVhZkNoaWxkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKCFmaXJzdFJvb3RCb3hXaXRoQ2hpbGRyZW4pCkBAIC0zMTY1LDcgKzMxNjgs
NyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0
aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dAogICAgICAgICAgICAgcG9pbnQgPSBwb2ludC50
cmFuc3Bvc2VkUG9pbnQoKTsKICAgICAgICAgaWYgKGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkuaXNS
ZXBsYWNlZCgpKQogICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uRm9yUG9pbnRSZXNwZWN0aW5n
RWRpdGluZ0JvdW5kYXJpZXMoKnRoaXMsIHRvUmVuZGVyQm94KGNsb3Nlc3RCb3gtPnJlbmRlcmVy
KCkpLCBwb2ludCk7Ci0gICAgICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5kZXJlcigpLnBvc2l0
aW9uRm9yUG9pbnQocG9pbnQpOworICAgICAgICByZXR1cm4gY2xvc2VzdEJveC0+cmVuZGVyZXIo
KS5wb3NpdGlvbkZvclBvaW50KHBvaW50LCBudWxscHRyKTsKICAgICB9CiAKICAgICBpZiAobGFz
dFJvb3RCb3hXaXRoQ2hpbGRyZW4pIHsKQEAgLTMxODIsMTEgKzMxODUsMTEgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlckJsb2NrRmxvdzo6cG9zaXRpb25Gb3JQb2ludFdpdGhJbmxpbmVDaGlsZHJl
bihjb25zdCBMYXlvdXQKICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05T
VFJFQU0pOwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJC
bG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25z
dCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICBpZiAoYXV0byBmcmFnbWVudCA9IHJlbmRl
ck5hbWVkRmxvd0ZyYWdtZW50KCkpCi0gICAgICAgIHJldHVybiBmcmFnbWVudC0+cG9zaXRpb25G
b3JQb2ludChwb2ludCk7Ci0gICAgcmV0dXJuIFJlbmRlckJsb2NrOjpwb3NpdGlvbkZvclBvaW50
KHBvaW50KTsKKyAgICAgICAgcmV0dXJuIGZyYWdtZW50LT5wb3NpdGlvbkZvclBvaW50KHBvaW50
LCByZWdpb24pOworICAgIHJldHVybiBSZW5kZXJCbG9jazo6cG9zaXRpb25Gb3JQb2ludChwb2lu
dCwgcmVnaW9uKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmgKaW5kZXggMWFiM2NlZi4uZmJiYTRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtMjg1LDcgKzI4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVMaW5lcygpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlT3ZlcmZsb3coTGF5b3V0VW5pdCBvbGRDbGllbnRBZnRlckVkZ2UsIGJvb2wgcmVjb21wdXRl
RmxvYXRzID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29u
c3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbW92ZUZsb2F0aW5nT2Jq
ZWN0cygpOwogICAgIHZvaWQgbWFya0FsbERlc2NlbmRhbnRzV2l0aEZsb2F0c0ZvckxheW91dChS
ZW5kZXJCb3gqIGZsb2F0VG9SZW1vdmUgPSBudWxscHRyLCBib29sIGluTGF5b3V0ID0gdHJ1ZSk7
CkBAIC01MTAsNyArNTEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTGF5b3V0VW5pdCYgbGFzdExv
Z2ljYWxUb3AsIExheW91dFVuaXQmIGxhc3RMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCYgbGFzdExv
Z2ljYWxSaWdodCwgY29uc3QgTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcyYsIGNvbnN0IFBh
aW50SW5mbyopIG92ZXJyaWRlOwogICAgIAogICAgIFBvc2l0aW9uIHBvc2l0aW9uRm9yQm94KElu
bGluZUJveCosIGJvb2wgc3RhcnQgPSB0cnVlKSBjb25zdDsKLSAgICB2aXJ0dWFsIFZpc2libGVQ
b3NpdGlvbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBv
aW50JiBwb2ludEluTG9naWNhbENvbnRlbnRzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZpc2li
bGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91
dFBvaW50JiBwb2ludEluTG9naWNhbENvbnRlbnRzLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJl
bihWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9m
ZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIG92ZXJyaWRlOwogCiAvLyBGSVhN
RS1CTE9DS0ZMT1c6IFRoZXNlIG1ldGhvZHMgaGF2ZSBpbXBsZW1lbnRhdGlvbnMgaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggMzA4MGE3Yy4uMGZjZWY4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQxMjksNyArNDEyOSw3IEBA
IExheW91dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqIGJveCwgaW50
IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0CiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLVZpc2libGVQ
b3NpdGlvbiBSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50KQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVnaW9uKQogewogICAgIC8v
IG5vIGNoaWxkcmVuLi4ucmV0dXJuIHRoaXMgcmVuZGVyIG9iamVjdCdzIGVsZW1lbnQsIGlmIHRo
ZXJlIGlzIG9uZSwgYW5kIG9mZnNldCAwCiAgICAgaWYgKCFmaXJzdENoaWxkKCkpCkBAIC00MTU2
LDYgKzQxNTYsMTMgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJlbmRl
ck9iamVjdCA9IGZpcnN0Q2hpbGQoKTsgcmVuZGVyT2JqZWN0OyByZW5kZXJPYmplY3QgPSByZW5k
ZXJPYmplY3QtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKCFyZW5kZXJPYmplY3QtPmlz
Qm94KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaXNSZW5kZXJGbG93
VGhyZWFkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChyZWdpb24pOworICAgICAgICAgICAgaWYg
KCF0b1JlbmRlckZsb3dUaHJlYWQodGhpcyktPm9iamVjdFNob3VsZFBhaW50SW5GbG93UmVnaW9u
KHJlbmRlck9iamVjdCwgcmVnaW9uKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCiAgICAgICAgIFJlbmRlckJveCogcmVuZGVyZXIgPSB0b1JlbmRlckJveChyZW5kZXJP
YmplY3QpOwogCiAgICAgICAgIGlmICgoIXJlbmRlcmVyLT5maXJzdENoaWxkKCkgJiYgIXJlbmRl
cmVyLT5pc0lubGluZSgpICYmICFyZW5kZXJlci0+aXNSZW5kZXJCbG9ja0Zsb3coKSApCkBAIC00
MTY5LDggKzQxNzYsOCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAgICAgCiAgICAgICAgIGlmIChwb2lu
dC54KCkgPD0gcmlnaHQgJiYgcG9pbnQueCgpID49IGxlZnQgJiYgcG9pbnQueSgpIDw9IHRvcCAm
JiBwb2ludC55KCkgPj0gYm90dG9tKSB7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzVGFi
bGVSb3coKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXItPnBvc2l0aW9uRm9yUG9p
bnQocG9pbnQgKyBhZGp1c3RlZFBvaW50IC0gcmVuZGVyZXItPmxvY2F0aW9uT2Zmc2V0KCkpOwot
ICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KHBvaW50IC0gcmVu
ZGVyZXItPmxvY2F0aW9uT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJl
ci0+cG9zaXRpb25Gb3JQb2ludChwb2ludCArIGFkanVzdGVkUG9pbnQgLSByZW5kZXJlci0+bG9j
YXRpb25PZmZzZXQoKSwgcmVnaW9uKTsKKyAgICAgICAgICAgIHJldHVybiByZW5kZXJlci0+cG9z
aXRpb25Gb3JQb2ludChwb2ludCAtIHJlbmRlcmVyLT5sb2NhdGlvbk9mZnNldCgpLCByZWdpb24p
OwogICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCB0aGUgZGlzdGFuY2UgZnJvbSAoeCwgeSkg
dG8gdGhlIGJveC4gIFNwbGl0IHRoZSBzcGFjZSBhcm91bmQgdGhlIGJveCBpbnRvIDggcGllY2Vz
CkBAIC00MjA3LDcgKzQyMTQsNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICB9CiAgICAgCiAgICAgaWYg
KGNsb3Nlc3RSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGNsb3Nlc3RSZW5kZXJlci0+cG9zaXRp
b25Gb3JQb2ludChhZGp1c3RlZFBvaW50IC0gY2xvc2VzdFJlbmRlcmVyLT5sb2NhdGlvbk9mZnNl
dCgpKTsKKyAgICAgICAgcmV0dXJuIGNsb3Nlc3RSZW5kZXJlci0+cG9zaXRpb25Gb3JQb2ludChh
ZGp1c3RlZFBvaW50IC0gY2xvc2VzdFJlbmRlcmVyLT5sb2NhdGlvbk9mZnNldCgpLCByZWdpb24p
OwogICAgIAogICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKG5vblBzZXVkb0VsZW1lbnQoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCmluZGV4IDEyMTgxZTYuLjI5OGQwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmgKQEAgLTUxMiw3ICs1MTIsNyBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXRS
ZWN0IG1hc2tDbGlwUmVjdCgpOwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAogICAgIFJlbmRlckJsb2NrRmxvdyogb3V0ZXJtb3N0
QmxvY2tDb250YWluaW5nRmxvYXRpbmdPYmplY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggZTNlOWE5ZS4u
ODJlZTA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIHNldFByZWZl
cnJlZExvZ2ljYWxXaWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYp
CitWaXNpYmxlUG9zaXRpb24gUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKQogewogICAgIHJldHVy
biBWaXNpYmxlUG9zaXRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgKaW5kZXggN2MzNWE0OC4uMWQ1YTRjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmgK
QEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBtYXhGaWxlbmFtZVdpZHRoKCkg
Y29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdp
b24qKSBvdmVycmlkZTsKIAogICAgIEhUTUxJbnB1dEVsZW1lbnQqIHVwbG9hZEJ1dHRvbigpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDQy
ZTg2YjcuLjkyZmEyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCkBAIC04NDUsMTQgKzg0NSwxNCBAQCBib29sIFJlbmRlcklubGluZTo6aGl0VGVzdEN1bGxl
ZElubGluZShjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlcwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlcklubGluZTo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVy
SW5saW5lOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3Qg
UmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgLy8gRklYTUU6IERvZXMgbm90IGRlYWwgd2l0
aCByZWxhdGl2ZSBvciBzdGlja3kgcG9zaXRpb25lZCBpbmxpbmVzIChzaG91bGQgaXQ/KQogICAg
IFJlbmRlckJsb2NrKiBjYiA9IGNvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChmaXJzdExpbmVC
b3goKSkgewogICAgICAgICAvLyBUaGlzIGlubGluZSBhY3R1YWxseSBoYXMgYSBsaW5lIGJveC4g
IFdlIG11c3QgaGF2ZSBjbGlja2VkIGluIHRoZSBib3JkZXIvcGFkZGluZyBvZiBvbmUgb2YgdGhl
c2UgYm94ZXMuICBXZQogICAgICAgICAvLyBzaG91bGQgdHJ5IHRvIGZpbmQgYSByZXN1bHQgYnkg
YXNraW5nIG91ciBjb250YWluaW5nIGJsb2NrLgotICAgICAgICByZXR1cm4gY2ItPnBvc2l0aW9u
Rm9yUG9pbnQocG9pbnQpOworICAgICAgICByZXR1cm4gY2ItPnBvc2l0aW9uRm9yUG9pbnQocG9p
bnQsIHJlZ2lvbik7CiAgICAgfQogCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBjb29yZHMgZnJvbSB0
aGUgcHJlLWFub255bW91cyBibG9jayB0byB0aGUgcG9zdC1hbm9ueW1vdXMgYmxvY2suCkBAIC04
NjEsMTEgKzg2MSwxMSBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVySW5saW5lOjpwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICB3aGlsZSAoYykgewogICAgICAg
ICBSZW5kZXJCb3gqIGNvbnRCbG9jayA9IGMtPmlzSW5saW5lKCkgPyBjLT5jb250YWluaW5nQmxv
Y2soKSA6IHRvUmVuZGVyQmxvY2soYyk7CiAgICAgICAgIGlmIChjLT5pc0lubGluZSgpIHx8IGMt
PmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgICAgIHJldHVybiBjLT5wb3NpdGlvbkZvclBvaW50KHBh
cmVudEJsb2NrUG9pbnQgLSBjb250QmxvY2stPmxvY2F0aW9uT2Zmc2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuIGMtPnBvc2l0aW9uRm9yUG9pbnQocGFyZW50QmxvY2tQb2ludCAtIGNvbnRCbG9j
ay0+bG9jYXRpb25PZmZzZXQoKSwgcmVnaW9uKTsKICAgICAgICAgYyA9IHRvUmVuZGVyQmxvY2so
YyktPmlubGluZUVsZW1lbnRDb250aW51YXRpb24oKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJu
IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICByZXR1
cm4gUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lvbik7
CiB9CiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgK
aW5kZXggNmVjY2M0YS4uNWM2ZWRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1h
cExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzID0gQXBwbHlDb250
YWluZXJGbGlwLCBib29sKiB3YXNGaXhlZCA9IDApIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZv
clBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBW
aXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0
IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0
IGZyYW1lUmVjdEZvclN0aWNreVBvc2l0aW9uaW5nKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gbGluZXNCb3VuZGluZ0JveCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTgzMWU0Ny4uMmE4Yjc1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTEyMiw3ICsxMjIsNyBA
QCBib29sIFJlbmRlckxpbmVCcmVhazo6Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlckxpbmVCcmVhazo6cG9zaXRp
b25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyTGlu
ZUJyZWFrOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVy
UmVnaW9uKikKIHsKICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJF
QU0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4
IDU1ZjRmNTkuLjAyYjE3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBm
aW5hbCB7IH0KIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9u
Kikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGludCBjYXJldE1heE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwCmlu
ZGV4IDY4YzAyYTQuLmQ4NWE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uU2V0LmNwcApAQCAtODY3LDcgKzg2Nyw3IEBAIHZvaWQgUmVuZGVy
TXVsdGlDb2x1bW5TZXQ6OmFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkKICAgICAgICAgYWRkVmlz
dWFsT3ZlcmZsb3cobGFzdFJlY3QpOwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyTXVsdGlD
b2x1bW5TZXQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBoeXNpY2FsUG9p
bnQpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyTXVsdGlDb2x1bW5TZXQ6OnBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmIHBoeXNpY2FsUG9pbnQsIGNvbnN0IFJlbmRlclJlZ2lvbiop
CiB7CiAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGNvbHVtbnMgd2UgaW50ZXJzZWN0LgogICAgIExh
eW91dFVuaXQgY29sR2FwID0gY29sdW1uR2FwKCk7CkBAIC05MTQsNyArOTE0LDcgQEAgVmlzaWJs
ZVBvc2l0aW9uIFJlbmRlck11bHRpQ29sdW1uU2V0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiBwaHlzaWMKICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHBvcnRpb24gPSBm
bG93VGhyZWFkUG9ydGlvblJlY3QoKTsKICAgICAgICAgICAgICAgICBmbGlwRm9yV3JpdGluZ01v
ZGUocG9ydGlvbik7CiAgICAgICAgICAgICAgICAgcG9pbnQubW92ZShpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gTGF5b3V0VW5pdCgpIDogcG9ydGlvbi54KCksIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBwb3J0aW9uLnkoKSA6IExheW91dFVuaXQoKSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5wb3NpdGlvbkZvclBvaW50KHBvaW50KTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCktPnBvc2l0aW9u
Rm9yUG9pbnQocG9pbnQsIHRoaXMpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBN
b3ZlIHRvIHRoZSBuZXh0IHBvc2l0aW9uLgpAQCAtOTUxLDcgKzk1MSw3IEBAIFZpc2libGVQb3Np
dGlvbiBSZW5kZXJNdWx0aUNvbHVtblNldDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcGh5c2ljCiAgICAgICAgICAgICAgICAgZmxpcEZvcldyaXRpbmdNb2RlKHBvcnRpb24p
OwogICAgICAgICAgICAgICAgIHBvaW50Lm1vdmUoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IExheW91dFVuaXQoKSA6IHBvcnRpb24ueCgpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
cG9ydGlvbi55KCkgOiBMYXlvdXRVbml0KCkpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIHJldHVybiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKS0+cG9zaXRpb25Gb3JQb2ludChw
b2ludCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG11bHRpQ29sdW1uRmxvd1RocmVhZCgpLT5w
b3NpdGlvbkZvclBvaW50KHBvaW50LCB0aGlzKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgLy8gTW92ZSB0byB0aGUgbmV4dCBwb3NpdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKaW5kZXggOTU2NzYxYy4uMzYzNGZmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU2V0LmgKQEAg
LTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFJlZ2lv
bkJvdW5kc0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxheWVy
T2Zmc2V0LCBMYXlvdXRSZWN0JiByZWdpb25Cb3VuZHMpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGNmYmFjNTYuLmZmYzBlZjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjAwMSw3ICsyMDAxLDcg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi1W
aXNpYmxlUG9zaXRpb24gUmVuZGVyT2JqZWN0Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JikKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OnBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKQogewogICAgIHJldHVybiBj
cmVhdGVWaXNpYmxlUG9zaXRpb24oY2FyZXRNaW5PZmZzZXQoKSwgRE9XTlNUUkVBTSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZTU4MDNlMC4uNjNmM2Ey
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNTksNiArNTks
NyBAQCBjbGFzcyBSZW5kZXJHZW9tZXRyeU1hcDsKIGNsYXNzIFJlbmRlckxheWVyOwogY2xhc3Mg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlck5hbWVkRmxvd1RocmVhZDsKK2Ns
YXNzIFJlbmRlclJlZ2lvbjsKIGNsYXNzIFJlbmRlclRoZW1lOwogY2xhc3MgU2VsZWN0aW9uU3Vi
dHJlZVJvb3Q7CiBjbGFzcyBUcmFuc2Zvcm1TdGF0ZTsKQEAgLTY0OCw3ICs2NDksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYg
bG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
LCBIaXRUZXN0QWN0aW9uKTsKIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9u
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlv
biBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9u
Kik7CiAgICAgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbihpbnQgb2Zmc2V0
LCBFQWZmaW5pdHkpIGNvbnN0OwogICAgIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9z
aXRpb24oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVnaW9uLmNwcAppbmRleCAwODhjYTFlLi4zYTU2YjgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcApAQCAtMTA0LDEyICsxMDQsMTIgQEAgTGF5b3V0
UG9pbnQgUmVuZGVyUmVnaW9uOjptYXBSZWdpb25Qb2ludEludG9GbG93VGhyZWFkQ29vcmRpbmF0
ZXMoY29uc3QgTGF5b3V0UG8KICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IHBvaW50SW5UaHJlYWQgOiBwb2ludEluVGhyZWFkLnRyYW5zcG9zZWRQb2ludCgpOwogfQogCi1W
aXNpYmxlUG9zaXRpb24gUmVuZGVyUmVnaW9uOjpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiBwb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJSZWdpb246OnBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lv
bikKIHsKICAgICBpZiAoIWlzVmFsaWQoKSB8fCAhbV9mbG93VGhyZWFkLT5maXJzdENoaWxkKCkp
IC8vIGNoZWNraW5nIGZvciBlbXB0eSByZWdpb24gYmxvY2tzLgotICAgICAgICByZXR1cm4gUmVu
ZGVyQmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQpOworICAgICAgICByZXR1cm4gUmVuZGVy
QmxvY2s6OnBvc2l0aW9uRm9yUG9pbnQocG9pbnQsIHJlZ2lvbik7CiAKLSAgICByZXR1cm4gbV9m
bG93VGhyZWFkLT5wb3NpdGlvbkZvclBvaW50KG1hcFJlZ2lvblBvaW50SW50b0Zsb3dUaHJlYWRD
b29yZGluYXRlcyhwb2ludCkpOworICAgIHJldHVybiBtX2Zsb3dUaHJlYWQtPnBvc2l0aW9uRm9y
UG9pbnQobWFwUmVnaW9uUG9pbnRJbnRvRmxvd1RocmVhZENvb3JkaW5hdGVzKHBvaW50KSwgdGhp
cyk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyUmVnaW9uOjpwYWdlTG9naWNhbFdpZHRoKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAppbmRleCAyNWM5ZmFjLi4x
NGQ0YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCkBAIC0xMjQs
NyArMTI0LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhbkhh
dmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIGhhc0F1dG9Mb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
aW5kZXggMmQxZmFkNy4uYWY3NWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUmVwbGFjZWQuY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQogICAgIHNldFByZWZlcnJlZExvZ2ljYWxX
aWR0aHNEaXJ0eShmYWxzZSk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJSZXBsYWNlZDo6
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCitWaXNpYmxlUG9zaXRp
b24gUmVuZGVyUmVwbGFjZWQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBv
aW50LCBjb25zdCBSZW5kZXJSZWdpb24qIHJlZ2lvbikKIHsKICAgICAvLyBGSVhNRTogVGhpcyBj
b2RlIGlzIGJ1Z2d5IGlmIHRoZSByZXBsYWNlZCBlbGVtZW50IGlzIHJlbGF0aXZlIHBvc2l0aW9u
ZWQuCiAgICAgSW5saW5lQm94KiBib3ggPSBpbmxpbmVCb3hXcmFwcGVyKCk7CkBAIC01NDEsNyAr
NTQxLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclJlcGxhY2VkOjpwb3NpdGlvbkZvclBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQ
b3NpdGlvbigxLCBET1dOU1RSRUFNKTsKICAgICB9CiAKLSAgICByZXR1cm4gUmVuZGVyQm94Ojpw
b3NpdGlvbkZvclBvaW50KHBvaW50KTsKKyAgICByZXR1cm4gUmVuZGVyQm94Ojpwb3NpdGlvbkZv
clBvaW50KHBvaW50LCByZWdpb24pOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlclJlcGxhY2VkOjpz
ZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAppbmRleCAxMGUwYzI3Li4yYWJlNjE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaApAQCAtNzksNyArNzksNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJSZWdpb24qKSBvdmVycmlkZSBmaW5hbDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2Fu
QmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNDc5NzkzMC4uNjNmNTIzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtNDMxLDcgKzQzMSw3
IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IFJlbmRlclRleHQ6OmFic29sdXRlUXVhZHNGb3JSYW5nZSh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kCiAgICAgcmV0dXJuIG1fbGluZUJveGVzLmFic29s
dXRlUXVhZHNGb3JSYW5nZSgqdGhpcywgc3RhcnQsIGVuZCwgdXNlU2VsZWN0aW9uSGVpZ2h0LCB3
YXNGaXhlZCk7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Ojpwb3NpdGlvbkZvclBv
aW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVy
UmVnaW9uKikKIHsKICAgICBlbnN1cmVMaW5lQm94ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmgKaW5kZXggNTNmYmZlZi4uZjkxNDc3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKIAogICAgIFZlY3Rv
cjxGbG9hdFF1YWQ+IGFic29sdXRlUXVhZHNDbGlwcGVkVG9FbGxpcHNpcygpIGNvbnN0OwogCi0g
ICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9y
UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0LmltcGwoKS0+aXM4Qml0
KCk7IH0KICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHQuaW1wbCgpLT5jaGFyYWN0ZXJzOCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRleCBkMGQzYThiLi41Yzg0OTky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGlu
ZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIFJlbmRlclNWR0lubGluZVRleHQ6
OmNoYXJhY3RlclN0YXJ0c05ld1RleHRDaHVuayhpbnQgcG9zaXRpb24pIGNvbnN0CiAgICAgcmV0
dXJuIGl0LT52YWx1ZS54ICE9IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzOjplbXB0eVZhbHVlKCkg
fHwgaXQtPnZhbHVlLnkgIT0gU1ZHVGV4dExheW91dEF0dHJpYnV0ZXM6OmVtcHR5VmFsdWUoKTsK
IH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR0lubGluZVRleHQ6OnBvc2l0aW9uRm9yUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQorVmlzaWJsZVBvc2l0aW9uIFJlbmRlclNWR0lu
bGluZVRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBjb25z
dCBSZW5kZXJSZWdpb24qKQogewogICAgIGlmICghZmlyc3RUZXh0Qm94KCkgfHwgIXRleHRMZW5n
dGgoKSkKICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFN
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5s
aW5lVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVU
ZXh0LmgKaW5kZXggNDRiZDY5OS4uNmM3ODhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NWR0lubGluZVRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBWaXNp
YmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJl
bmRlclJlZ2lvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0
UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhU
b0VuZE9mTGluZSA9IDApIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50UmVjdCBsaW5lc0JvdW5k
aW5nQm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5s
aW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXggYTBiMTRhMDYuLjE5Yzc5YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApA
QCAtNDY1LDcgKzQ2NSw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1WaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbnRzKQorVmlzaWJsZVBvc2l0aW9uIFJl
bmRlclNWR1RleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50SW5D
b250ZW50cywgY29uc3QgUmVuZGVyUmVnaW9uKiByZWdpb24pCiB7CiAgICAgUm9vdElubGluZUJv
eCogcm9vdEJveCA9IGZpcnN0Um9vdEJveCgpOwogICAgIGlmICghcm9vdEJveCkKQEAgLTQ3OSw3
ICs0NzksNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyU1ZHVGV4dDo6cG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRlbgogICAgIGlmICghY2xvc2VzdEJveCkK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsKIAot
ICAgIHJldHVybiBjbG9zZXN0Qm94LT5yZW5kZXJlcigpLnBvc2l0aW9uRm9yUG9pbnQoTGF5b3V0
UG9pbnQocG9pbnRJbkNvbnRlbnRzLngoKSwgY2xvc2VzdEJveC0+eSgpKSk7CisgICAgcmV0dXJu
IGNsb3Nlc3RCb3gtPnJlbmRlcmVyKCkucG9zaXRpb25Gb3JQb2ludChMYXlvdXRQb2ludChwb2lu
dEluQ29udGVudHMueCgpLCBjbG9zZXN0Qm94LT55KCkpLCByZWdpb24pOwogfQogCiB2b2lkIFJl
bmRlclNWR1RleHQ6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29s
KiB3YXNGaXhlZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmgKaW5kZXggZjY0M2ExNi4uMGRkNDdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRl
c3RBY3Rpb24pOwotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKik7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>